NAV
cURL Python C#

Introducción

Integra tu aplicación con Facturación Electrónica. Este API de Dátil te permite emitir todos los tipos de comprobantes electrónicos: facturas, retenciones, notas de crédito, notas de débito y guías de remisión.

El API de Dátil está diseñado como un servicio web REST. De esta manera resulta sencillo conversar con nuestra interfaz utilizando cualquier librería en cualquier lenguaje que provea un cliente HTTP, ya que utilizamos componentes del estándar como los verbos y los códigos de respuesta.

Todos las operaciones responden en formato JSON, incluso los errores.

Dátil se encarga de todo el proceso de emisión del comprobante. El proceso de emisión bajo condiciones normales, toma entre 3 a 5 segundos. Luego de ese período bastará con consultar el comprobante para conocer su estado.

Operaciones

Una operación REST está formada por la combinación de un verbo HTTP, la URL base del servicio y la ruta de la operación. Las cuales se encuentran descritas en cada sección donde se describe una función del API. Esta operación, por ejemplo, emite una factura:

POST https://link.datil.co/invoices/issue

La URI anterior en conjunto con la información en formato JSON como cuerpo del requerimiento y las cabeceras HTTP necesarias, conforman el requerimiento.

Proceso de emisión

Comprende las siguientes fases:

  1. Creación: Se registra el comprobante para posterior referencia.
  2. Firmado: Utilizando el certificado de firma electrónica y un algoritmo de firma digital, el comprobante es firmado para que el SRI pueda verificar su legitimidad.
  3. Envío SRI: El comprobante es enviado al SRI para ser procesado.
  4. Consulta de autorización SRI: Luego de un período de espera, Dátil consulta la autorización del comprobante.
  5. Envío por email: Se envía el comprobante al correo del receptor del comprobante, si una dirección de correo electrónico válida fue provista al momento de emitir el comprobante.

Autenticación

Para obtener la clave del API, inicia sesión con tu cuenta en app.datil.co, ve a la opción Configuración la sección “API Key”.

Dátil utiliza claves para autorizar el acceso al API. La clave debe estar incluída en todos los requerimientos en una cabecera:

X-Key: <clave-del-api>

Para emitir o re-emitir un comprobante se requiere también la clave del certificado de firma electrónica. Esta clave deberá ser provista en una cabecera:

X-Password: <clave-certificado-firma>

Facturas

Emisión de una factura

Operación

POST /invoices/issue

Requerimiento

Requerimiento de ejemplo

curl -v https://link.datil.co/invoices/issue \
-H "Content-Type: application/json" \
-H "X-Key: <API-key>" \
-H "X-Password: <clave-certificado-firma>" \
-d '{
  "ambiente":1,
  "tipo_emision":1,
  "secuencial":148,
  "fecha_emision":"2015-02-28T11:28:56.782Z",
  "emisor":{
    "ruc":"0910000000001",
    "obligado_contabilidad":true,
    "contribuyente_especial":"12345",
    "nombre_comercial":"XYZ Corp",
    "razon_social":"XYZ Corporación S.A.",
    "direccion":"Av. Primera 234 y calle 5ta",
    "establecimiento":{
      "punto_emision":"002",
      "codigo":"001",
      "direccion":"Av. Primera 234 y calle 5ta"
    }
  },
  "moneda":"USD",
  "informacion_adicional":{
    "Tiempo de entrega":"5 días"
  },
  "totales":{
    "total_sin_impuestos":4359.54,
    "impuestos":[
      {
        "base_imponible":0.0,
        "valor":0.0,
        "codigo":"2",
        "codigo_porcentaje":"0"
      },
      {
        "base_imponible":4359.54,
        "valor":523.14,
        "codigo":"2",
        "codigo_porcentaje":"2"
      }
    ],
    "importe_total":4882.68,
    "propina":0.0,
    "descuento":0.0
  },
  "comprador":{
    "email":"juan.perez@xyz.com",
    "identificacion":"0987654321",
    "tipo_identificacion":"05",
    "razon_social":"Juan Pérez",
    "direccion":"Calle única Numero 987",
    "telefono":"046029400"
  },
  "items":[
    {
      "cantidad":622.0,
      "codigo_principal": "ZNC",
      "codigo_auxiliar": "050",
      "precio_unitario": 7.01,
      "descripcion": "Zanahoria granel  50 Kg.",
      "precio_total_sin_impuestos": 4360.22,
      "impuestos": [
        {
          "base_imponible":4359.54,
          "valor":523.14,
          "tarifa":12.0,
          "codigo":"2",
          "codigo_porcentaje":"2"
        }
      ],
      "detalles_adicionales": {
        "Peso":"5000.0000"
      },
      "descuento": 0.0,
      "unidad_medida": "Kilos"
    }
  ],
  "valor_retenido_iva": 70.40,
  "valor_retenido_renta": 29.60,
  "credito": {
    "fecha_vencimiento": "2015-03-28",
    "monto": 34.21
  },
  "pagos": [
    {
      "medio": "cheque",
      "total": 4882.68,
      "propiedades": {
        "numero": "1234567890",
        "banco": "Banco Pacífico"
      }
    }
  ],
  "compensaciones": [
    {
      "codigo": 1,
      "tarifa": 2,
      "valor": 2.00
    }
  ],
  "exportacion": {
    "incoterm": {
      "termino": "CIF",
      "lugar": "Guayaquil",
      "total_sin_impuestos": "CIF"
    },
    "origen": {
      "codigo_pais":"EC",
      "puerto": "Guayaquil"
    },
    "destino": {
      "codigo_pais":"CN",
      "puerto": "China"
    },
    "codigo_pais_adquisicion": "EC",
    "totales": {
      "flete_internacional": 1000.00,
      "seguro_internacional": 200.00,
      "gastos_aduaneros": 800,
      "otros_gastos_transporte": 350.00
    }
  }
}'
import requests, json

factura = {
  "ambiente":1,
  "tipo_emision":1,
  "secuencial":148,
  "fecha_emision":"2015-02-28T11:28:56.782Z",
  "emisor":{
    "ruc":"0910000000001",
    "obligado_contabilidad":true,
    "contribuyente_especial":"12345",
    "nombre_comercial":"XYZ Corp",
    "razon_social":"XYZ Corporación S.A.",
    "direccion":"Av. Primera 234 y calle 5ta",
    "establecimiento":{
      "punto_emision":"002",
      "codigo":"001",
      "direccion":"Av. Primera 234 y calle 5ta"
    }
  },
  "moneda":"USD",
  "informacion_adicional":{
    "Tiempo de entrega":"5 días"
  },
  "totales":{
    "total_sin_impuestos":4359.54,
    "impuestos":[
      {
        "base_imponible":0.0,
        "valor":0.0,
        "codigo":"2",
        "codigo_porcentaje":"0"
      },
      {
        "base_imponible":4359.54,
        "valor":523.14,
        "codigo":"2",
        "codigo_porcentaje":"2"
      }
    ],
    "importe_total":4882.68,
    "propina":0.0,
    "descuento":0.0
  },
  "comprador":{
    "email":"juan.perez@xyz.com",
    "identificacion":"0987654321",
    "tipo_identificacion":"05",
    "razon_social":"Juan Pérez",
    "direccion":"Calle única Numero 987",
    "telefono":"046029400"
  },
  "items":[
    {
      "cantidad":622.0,
      "codigo_principal":"ZNC",
      "codigo_auxiliar": "050",
      "precio_unitario": 7.01,
      "descripcion": "Zanahoria granel  50 Kg.",
      "precio_total_sin_impuestos": 4360.22,
      "impuestos": [
        {
          "base_imponible":4359.54,
          "valor":523.14,
          "tarifa":12.0,
          "codigo":"2",
          "codigo_porcentaje":"2"
        }
      ],
      "detalles_adicionales": {
        "Peso":"5000.0000"
      },
      "descuento": 0.0,
      "unidad_medida": "Kilos"
    }
  ],
  "valor_retenido_iva": 70.40,
  "valor_retenido_renta": 29.60,
  "credito": {
    "fecha_vencimiento": "2015-03-28",
    "monto": 34.21
  },
  "pagos": [
    {
      "medio": "cheque",
      "total": 4882.68,
      "propiedades": {
        "numero": "1234567890",
        "banco": "Banco Pacífico"
      }
    }
  ],
  "compensaciones": [
    {
      "codigo": 1,
      "tarifa": 2,
      "valor": 2.00
    }
  ],
  "exportacion": {
    "incoterm": {
      "termino": "CIF",
      "lugar": "Guayaquil",
      "total_sin_impuestos": "CIF"
    },
    "origen": {
      "codigo_pais":"EC",
      "puerto": "Guayaquil"
    },
    "destino": {
      "codigo_pais":"CN",
      "puerto": "China"
    },
    "codigo_pais_adquisicion": "EC",
    "totales": {
      "flete_internacional": 1000.00,
      "seguro_internacional": 200.00,
      "gastos_aduaneros": 800,
      "otros_gastos_transporte": 350.00
    }
  }
}
cabeceras = {
    'x-key': '<clave-del-api>',
    'x-password': '<clave-certificado-firma>',
    'content-type': 'application/json'}
respuesta = requests.post(
    "https://link.datil.co/invoices/issue",
    headers = cabeceras,
    data = json.dumps(factura))
using RestSharp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DatilClient {
  class InvoicingServiceClient {
    static void Main(string[] args) {

      // Este ejemplo utiliza RestSharp
      // Para instalar anda al menú: tools > Library Package Manager > Package Manager Console
      // copia y pega y presiona enter: Install-Package RestSharp

      var client = new RestClient("https://link.datil.co/");
      var request = new RestRequest("invoices/issue", Method.POST);
      request.AddHeader("X-Key", "<clave-del-api>");
      request.AddHeader("X-Password", "<clave-certificado-firma>");
      request.AddHeader("Content-Type", "application/json");
      request.RequestFormat = DataFormat.Json;

      var body = (@"{
        ""ambiente"":1,
        ""tipo_emision"":1,
        ""secuencial"":148,
        ""fecha_emision"":""2015-02-28T11:28:56.782Z"",
        ""emisor"":{
          ""ruc"":""0910000000001"",
          ""obligado_contabilidad"":true,
          ""contribuyente_especial"":""12345"",
          ""nombre_comercial"":""XYZ Corp"",
          ""razon_social"":""XYZ Corporación S.A."",
          ""direccion"":""Av. Primera 234 y calle 5ta"",
          ""establecimiento"":{
            ""punto_emision"":""002"",
            ""codigo"":""001"",
            ""direccion"":""Av. Primera 234 y calle 5ta""
          }
        },
        ""moneda"":""USD"",
        ""informacion_adicional"":{
          ""Tiempo de entrega"":""5 días""
        },
        ""totales"":{
          ""total_sin_impuestos"":4359.54,
          ""impuestos"":[
            {
              ""base_imponible"":0.0,
              ""valor"":0.0,
              ""codigo"":""2"",
              ""codigo_porcentaje"":""0""
            },
            {
              ""base_imponible"":4359.54,
              ""valor"":523.14,
              ""codigo"":""2"",
              ""codigo_porcentaje"":""2""
            }
          ],
          ""importe_total"":4882.68,
          ""propina"":0.0,
          ""descuento"":0.0
        },
        ""comprador"":{
          ""email"":""juan.perez@xyz.com"",
          ""identificacion"":""0987654321"",
          ""tipo_identificacion"":""05"",
          ""razon_social"":""Juan Pérez"",
          ""direccion"":""Calle única Numero 987"",
          ""telefono"":""046029400""
        },
        ""items"":[
          {
            ""cantidad"":622.0,
            ""codigo_principal"":""ZNC"",
            ""codigo_auxiliar"": ""050"",
            ""precio_unitario"": 7.01,
            ""descripcion"": ""Zanahoria granel  50 Kg."",
            ""precio_total_sin_impuestos"": 4360.22,
            ""impuestos"": [
              {
                ""base_imponible"":4359.54,
                ""valor"":523.14,
                ""tarifa"":12.0,
                ""codigo"":""2"",
                ""codigo_porcentaje"":""2""
              }
            ],
            ""detalles_adicionales"": {
              ""Peso"":""5000.0000""
            },
            ""descuento"": 0.0,
            ""unidad_medida"": ""Kilos""
          }
      ],
        ""valor_retenido_iva"": 70.40,
        ""valor_retenido_renta"": 29.60,
        ""credito"": {
            ""fecha_vencimiento"": ""2015-03-28"",
            ""monto"": 34.21
        },
      ""pagos"": [
        {
          ""medio"": ""cheque"",
          ""total"": 4882.68,
          ""propiedades"": {
            ""numero"": ""1234567890"",
            ""banco"": "Banco Pacífico""
          }
        }
      ],
        ""compensaciones"": [
        {
              ""codigo"": 1,
              ""tarifa"": 2,
              ""valor"": 2.00
        }
      ],
      ""exportacion"": {
        ""incoterm"": {
          ""termino"": ""CIF"",
          ""lugar"": ""Guayaquil"",
          ""total_sin_impuestos"": 10.25
        },
        ""origen"": {
          ""codigo_pais"":""EC"",
          ""puerto"": ""Guayaquil""
        },
        ""destino"": {
          ""codigo_pais"":""CN"",
          ""puerto"": ""China""
        },
        ""codigo_pais_adquisicion"": ""EC"",
        ""totales"": {
          ""flete_internacional"": 1000.00,
          ""seguro_internacional"": 200.00,
          ""gastos_aduaneros"": 800,
          ""otros_gastos_transporte"": 350.00
        }
      }");
      request.AddParameter("application/json", body, ParameterType.RequestBody);
      IRestResponse response = client.Execute(request);

      Console.WriteLine(response.Content);
      Console.ReadLine();
    }
  }
}

Para la emisión de una factura se debe enviar la información completa del comprobante en el cuerpo del requerimiento en formato JSON.

Parámetro Tipo Descripción
secuencial string Número de secuencia de la factura. Requerido
emisor emisor Información completa del emisor. Requerido
moneda string Código ISO de la moneda. Requerido
fecha_emision string Fecha de emisión en formato AAAA-MM-DDHoraZonaHoraria, definido en el estándar ISO8601.
guia_remision string Número de guía de remisión asociada a esta factura en formato 001-002-000000003 ([0-9]{3}-[0-9]{3}-[0-9]{9})
ambiente integer Pruebas: 1.
Producción 2.
Requerido
totales objeto tipo totales Listado de totales. Requerido
comprador objeto tipo persona Información del comprador. Requerido
tipo_emision integer Emisión normal: 1.
Emisión por indisponibilidad: 2
Requerido
items listado de objetos tipo item Items incluídos en la factura. Requerido
version string Versión del formato de comprobantes electrónicos de SRI. Si no se especifica, se utilizará la última revisión del formato implementada,
clave_acceso string La clave de acceso representa un identificador único del comprobante. Si esta información no es provista, Dátil la generará.
¿Cómo generar la clave de acceso?
informacion_adicional objeto Información adicional adjunta al comprobante en forma de diccionario. Ejemplo:
{"plan": "Inicial", "vigencia": "1 mes"}
valor_retenido_iva float Valor retenido por IVA
valor_retenido_renta float Valor retenido por renta
retenciones Listado de objetos de tipo retencion Retenciones incluídas en la factura. Caso específico de Retenciones en la Comercializadores / Distribuidores de derivados del Petróleo y Retención presuntiva de IVA a los Editores, Distribuidores y Voceadores que participan en la comercialización de periódicos y/o revistas.
pagos Listado de objetos tipo pagos Listado de formas de pago aplicables a la factura. Requerido
credito Objeto de tipo credito Información del crédito directo otorgado al cliente.
compensaciones Objeto de tipo compensación solidaria Solo para las provincias de Manabí y Esmeraldas según la Ley Orgánica de Solidaridad y de Corresponsabilidad Ciudadana
exportacion Objeto de tipo exportacion Solo para facturas de exportación

Totales

Parámetro Tipo Descripción
total_sin_impuestos float Total antes de los impuestos. Requerido
descuento_adicional float Descuento aplicado al subtotal de la factura expresado en valor monetario.
descuento float Suma de los descuentos de cada ítem y del descuento adicional. Requerido
propina float Propina total, llamado también servicio. Requerido
importe_total float Total incluyendo impuestos. Requerido
impuestos listado de objetos total impuesto Listado de impuesto totalizados. Requerido

Pagos

Parámetro Tipo Descripción
fecha string Fecha de recepción del pago en formato AAAA-MM-DDHoraZonaHoraria, definido en el estándar ISO8601. Si no es especificado se utiliza la fecha y hora actual.
medio string Código del tipo de forma de pago. Requerido
total float Total aplicable a la forma de pago especificada. Requerido
propiedades objeto Información adicional adjunta al pago en forma de diccionario. Ejemplo:
{"plazo": "30", "unidad_tiempo": "dias"}

Crédito

Parámetro Tipo Descripción
fecha_vencimiento string Fecha de vencimiento en formato AAAA-MM-DD, definido en el estándar ISO8601. Requerido
monto float Monto otorgado de crédito. Requerido

Compensación solidaria

Parámetro Tipo Descripción
codigo int Código del porcentaje de IVA . Requerido
tarifa int Porcentaje de compensación. Requerido
valor float Valor de la compensación. Requerido

Exportación

Parámetro Tipo Descripción
incoterm Objeto de tipo incoterm Información del Incoterm . Requerido
origen Objeto de tipo origen de exportación Origen de la exportación . Requerido
destino Objeto de tipo destino de exportación Destino de la exportación. Requerido
codigo_pais_adquisicion string Código de dos caracteres del país de adquisición según ISO_3166
totales Objecto de tipo totales de exportación Totales de la exportación

Incoterm

Parámetro Tipo Descripción
termino string Código de 3 letras correspondiente al Incoterm. Requerido
lugar string Lugar Incoterm. Requerido
total_sin_impuestos string Total sin impuestos del incoterm. Requerido

Origen de exportación

Parámetro Tipo Descripción
codigo_pais string Código de dos caracteres del país origen según ISO_3166. Requerido
puerto string Puerto de origen . Requerido

Destino de exportación

Parámetro Tipo Descripción
codigo_pais string Código de dos caracteres del país destino según ISO_3166
puerto string Puerto de destino. . Requerido

Totales de exportación

Parámetro Tipo Descripción
flete_internacional float Total del flete internacional.
seguro_internacional float Total del seguro internacional.
gastos_aduaneros float Total de los gastos aduaneros.
otros_gastos_transporte float Total de otros gastos de transporte.

Emisión a partir de XML

POST /invoices/issue/xml

Requerimiento a partir de XML

Para la emisión de una factura a partir de un xml se debe enviar contenido del archivo xml como parámetro en el cuerpo del requerimiento en formato JSON.

Parámetro Tipo Descripción
xml string Contenido del archivo xml. Requerido

Requerimiento de ejemplo


import requests, json

factura = { 
    "xml" : "<?xml ... "
}

cabeceras = {
    'x-key': '<clave-del-api>',
    'x-password': '<clave-certificado-firma>',
    'content-type': 'application/json'}
respuesta = requests.post(
    "https://link.datil.co/invoices/issue/xml",
    headers = cabeceras,
    data = json.dumps(factura))

Respuesta

Respuesta de ejemplo

{
  "id": "abcdef09876123cea56784f01",
  "ambiente":1,
  "tipo_emision":1,
  "secuencial":148,
  "fecha_emision":"2015-02-28T11:28:56.782Z",
  "clave_acceso": "2802201501091000000000120010010000100451993736618",
  "emisor":{
    "ruc": "0910000000001",
    "obligado_contabilidad": true,
    "contribuyente_especial": "12345",
    "nombre_comercial": "XYZ Corp",
    "razon_social": "XYZ Corporación S.A.",
    "direccion": "Av. Primera 234 y calle 5ta",
    "establecimiento": {
      "punto_emision": "002",
      "codigo": "001",
      "direccion": "Av. Primera 234 y calle 5ta"
    }
  },
  "moneda": "USD",
  "informacion_adicional": {
    "Tiempo de entrega": "5 días"
  },
  "totales": {
    "total_sin_impuestos": 4359.54,
    "impuestos": [
      {
        "base_imponible": 0.0,
        "valor": 0.0,
        "codigo": "2",
        "codigo_porcentaje": "0"
      },
      {
        "base_imponible": 4359.54,
        "valor": 523.14,
        "codigo": "2",
        "codigo_porcentaje": "2"
      }
    ],
    "importe_total": 4882.68,
    "propina": 0.0,
    "descuento": 0.0
  },
  "comprador": {
    "email": "juan.perez@xyz.com",
    "identificacion": "0987654321",
    "tipo_identificacion": "05",
    "razon_social": "Juan Pérez",
    "direccion": "Calle única Numero 987",
    "telefono": "046029400"
  },
  "items":[
    {
      "cantidad": 622.0,
      "codigo_principal": "ZNC",
      "codigo_auxiliar": "050",
      "precio_unitario": 7.01,
      "descripcion": "Zanahoria granel  50 Kg.",
      "precio_total_sin_impuestos": 4360.22,
      "impuestos":[
        {
          "base_imponible": 4359.54,
          "valor": 523.14,
          "tarifa": 12.0,
          "codigo": "2",
          "codigo_porcentaje": "2"
        }
      ],
      "detalles_adicionales": {
        "Peso": "5000.0000"
      },
      "descuento": 0.0,
      "unidad_medida": "Kilos"
    }
  ],
  "valor_retenido_iva": 70.40,
  "valor_retenido_renta": 29.60,
  "credito": {
    "fecha_vencimiento": "2015-03-28",
    "monto": 34.21
  },
  "pagos": [
    {
      "medio": "cheque",
      "total": 4882.68,
      "propiedades": {
        "numero": "1234567890",
        "banco": "Banco Pacífico"
      }
    }
  ],
  "compensaciones": [
    {
      "codigo": 1,
      "tarifa": 2,
      "valor": 2.00
    }
  ],
  "exportacion": {
    "incoterm": {
      "termino": "CIF",
      "lugar": "Guayaquil",
      "total_sin_impuestos": "CIF"
    },
    "origen": {
      "codigo_pais":"EC",
      "puerto": "Guayaquil"
    },
    "destino": {
      "codigo_pais":"CN",
      "puerto": "China"
    },
    "codigo_pais_adquisicion": "EC",
    "totales": {
      "flete_internacional": 1000.00,
      "seguro_internacional": 200.00,
      "gastos_aduaneros": 800,
      "otros_gastos_transporte": 350.00
    }
  }
}

Retorna un objeto tipo factura que incluye un nuevo parámetro id, el cual identifica de manera única a la factura. El campo clave_acceso generado también se incluirá como parte de la respuesta.

Consulta de una factura

Consulta una factura para obtener toda la información del comprobante, incluyendo el estado del mismo. El parámetro estado de la respuesta obtenida al invocar esta operación, indica el estado actual del comprobante.

Si es necesario conocer en detalle, en que estado del proceso de emisión, se debe examinar los parámetros envio_sri y autorizacion_sri de la respuesta.

Operación

GET /invoices/<invoice-id>

Requerimiento

Requerimiento de ejemplo

curl -v https://link.datil.co/invoices/<id-factura> \
-H "Content-Type: application/json" \
-H "X-Key: <clave-del-api>" \
-H "X-Password: <clave-certificado-firma>" \
import requests
cabeceras = {'x-key': '<clave-del-api>'}
respuesta = requests.get(
    'https://link.datil.co/invoices/<id-factura>',
    headers = cabeceras)
using RestSharp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DatilClient {
  class InvoicingServiceClient {
    static void Main(string[] args) {

      var client = new RestClient("https://link.datil.co/");
      var idFactura = "<id-factura>";
      var request = new RestRequest("invoices/" + idFactura, Method.GET);
      request.AddHeader("X-Key", "<clave-del-api>");

      IRestResponse response = client.Execute(request);

      Console.WriteLine(response.Content);
    }
  }
}

Reemplaza en la ruta <invoice-ID> por el id de la factura que necesitas consultar.

Respuesta

Respuesta de ejemplo

{
    "id": "abcf12343faad06785",
    "secuencial": "16",
    "fecha_emision": "2016-05-15",
    "version": "1.0.0",
    "clave_acceso": "1505201501099271255400110011000000000162092727615",
    "emisor": {
        "ruc": "0992712554001",
        "razon_social": "DATILMEDIA S.A.",
        "nombre_comercial": "Dátil",
        "direccion": null,
        "obligado_contabilidad": true,
        "contribuyente_especial": "",
        "establecimiento": {
            "codigo": "001",
            "direccion": "V.E. 112 Y CIRCUNVALACION NORTE",
            "punto_emision": "100"
        }
    },
    "estado": "AUTORIZADO",
    "correos_enviados": [
        {
            "fecha_envio": "2015-05-15T16:36:48.274604",
            "destinatarios": "juanantonioplaza@datilmedia.com"
        }
    ],
    "guia_remision": "",
    "moneda": "USD",
    "informacion_adicional": [],
    "ambiente": "1",
    "totales": {
        "total_sin_impuestos": "150.00",
        "descuento": "0.00",
        "propina": "0.00",
        "impuestos": [
            {
                "codigo": 2,
                "codigo_porcentaje": "2",
                "base_imponible": "150.00",
                "valor": "18.00"
            }
        ],
        "importe_total": "168.00"
    },
    "comprador": {
        "razon_social": "Carlos L. Plaza",
        "identificacion": "0900102222",
        "tipo_identificacion": 1,
        "email": "cplaza@gye593.com",
        "direccion": "Calle Uno y Calle Dos",
        "telefono": "043334445"
    },
    "envio_sri": {
        "mensajes": [],
        "estado": "RECIBIDA",
        "fecha": ""
    },
    "tipo_emision": "1",
    "items": [
        {
            "detalles_adicionales": {
                "Estadía": "2 noches",
                "Habitación": "203"
            },
            "cantidad": "1.000000",
            "codigo_principal": "HAB",
            "codigo_auxiliar": "DOB",
            "descripcion": "Habitación doble",
            "precio_unitario": "150.000000",
            "descuento": "0.00",
            "precio_total_sin_impuestos": "",
            "impuestos": [
                {
                    "tarifa": "12.00",
                    "codigo": "2",
                    "codigo_porcentaje": "2",
                    "base_imponible": "150.00",
                    "valor": "18.00"
                }
            ],
            "unidad_medida": "Kilos"
        }
    ],
    "valor_retenido_iva": 70.40,
    "valor_retenido_renta": 29.60,
    "credito": {
        "fecha_vencimiento": "2016-06-28",
        "monto": 34.21
    },    
    "pagos": [
      {
        "medio": "cheque",
        "total": 4882.68,
        "propiedades": {
          "numero": "1234567890",
          "banco": "Banco Pacífico"
        }
      }
    ],
    "compensaciones": [
      {
        "codigo": 1,
        "tarifa": 2,
        "valor": 2.00
      }
    ],
    "exportacion": {
      "incoterm": {
        "termino": "CIF",
        "lugar": "Guayaquil",
        "total_sin_impuestos": "CIF"
      },
      "origen": {
        "codigo_pais":"EC",
        "puerto": "Guayaquil"
      },
      "destino": {
        "codigo_pais":"CN",
        "puerto": "China"
      },
      "codigo_pais_adquisicion": "EC",
      "totales": {
        "flete_internacional": 1000.00,
        "seguro_internacional": 200.00,
        "gastos_aduaneros": 800,
        "otros_gastos_transporte": 350.00
      }
    }
    "autorizacion": {
        "estado": "AUTORIZADO",
        "mensajes": [
            {
                "identificador": "60",
                "mensaje": "ESTE PROCESO FUE REALIZADO EN EL AMBIENTE DE PRUEBAS",
                "tipo": "INFORMATIVO",
                "informacion_adicional": ""
            }
        ],
        "numero": "1505201516323509927125540010266935227",
        "fecha": "2015-05-15T16:32:35.000380"
    }
}
Parámetro Tipo Descripción
secuencial string Número de secuencia de la factura.
estado string Posibles valores: AUTORIZADO, NO AUTORIZADO, ENVIADO, DEVUELTO, RECIBIDO
fecha_emision string Fecha de emisión en formato AAAA-MM-DDHoraZonaHoraria, definido en el estándar ISO8601.
clave_acceso string La clave de acceso representa un identificador único del comprobante. Si esta información no es provista, Dátil la generará.
¿Cómo generar la clave de acceso?
envio_sri objeto tipo envio sri Información luego de enviar el comprobante.
autorizacion objeto tipo autorizacion sri Información de la autorización.org/html/rfc3339#section-5.6).
emisor objeto tipo emisor Información completa del emisor.
moneda string Código ISO de la moneda.
ambiente integer Pruebas: 1.
Producción 2.
totales objeto tipo totales Listado de totales.
comprador objeto persona Información del comprador.
tipo_emision integer Emisión normal: 1.
Emisión por indisponibilidad: 2
items listado de objetos tipo item Items incluídos en la factura.
pagos listado de objetos tipo pagos Listado de formas de pago aplicables a la factura.
credito Objeto de tipo credito Información del crédito directo otorgado al cliente.
version string Versión de la especificación, opciones válidas: 1.0.0, 1.1.0

Re-emisión de una factura

Operación

POST /invoices/:id/reissue

Requerimiento

Esta operación debe ser utilizada para corregir comprobantes NO AUTORIZADOS o DEVUELTOS por el Servicio de Rentas Internas.

En la URL de esta opción se debe incluir el id de la factura recibida al momento de emitirla.

El cuerpo del requerimiento es un objeto factura con los datos corregidos para que pueda ser procesado y autorizado.

Respuesta

Retornará un error si el comprobante se encuentra autorizado.

Notas de Crédito

Emisión de una nota de crédito

Operación

POST /credit-notes/issue

Requerimiento

Requerimiento de ejemplo

curl -v https://link.datil.co/credit-notes/issue \
-H "Content-Type: application/json" \
-H "X-Key: <API-key>" \
-H "X-Password: <clave-certificado-firma>" \
-d '{
  "ambiente":1,
  "tipo_emision":1,
  "secuencial":148,
  "fecha_emision":"2015-02-28T11:28:56.782Z",
  "emisor":{
    "ruc":"0910000000001",
    "obligado_contabilidad":true,
    "contribuyente_especial":"12345",
    "nombre_comercial":"XYZ Corp",
    "razon_social":"XYZ Corporación S.A.",
    "direccion":"Av. Primera 234 y calle 5ta",
    "establecimiento":{
      "punto_emision":"002",
      "codigo":"001",
      "direccion":"Av. Primera 234 y calle 5ta"
    }
  },
  "moneda":"USD",
  "informacion_adicional":{
    "Tiempo de entrega":"5 días"
  },
  "totales":{
    "total_sin_impuestos":4359.54,
    "impuestos":[
      {
        "base_imponible":0.0,
        "valor":0.0,
        "codigo":"2",
        "codigo_porcentaje":"0"
      },
      {
        "base_imponible":4359.54,
        "valor":523.14,
        "codigo":"2",
        "codigo_porcentaje":"2"
      }
    ],
    "importe_total":4882.68
  },
  "fecha_emision_documento_modificado": "2015-02-27T11:28:56.782Z",
  "numero_documento_modificado": "001-002-000058473",
  "tipo_documento_modificado": "01",
  "motivo": "Devolución de produtos",
  "comprador":{
    "email":"juan.perez@xyz.com",
    "identificacion":"0987654321",
    "tipo_identificacion":"05",
    "razon_social":"Juan Pérez",
    "direccion":"Calle única Numero 987",
    "telefono":"046029400"
  },
  "items":[
    {
      "cantidad":622.0,
      "codigo_principal": "ZNC",
      "codigo_auxiliar": "050",
      "precio_unitario": 7.01,
      "descripcion": "Zanahoria granel  50 Kg.",
      "precio_total_sin_impuestos": 4360.22,
      "impuestos": [
        {
          "base_imponible":4359.54,
          "valor":523.14,
          "tarifa":12.0,
          "codigo":"2",
          "codigo_porcentaje":"2"
        }
      ],
      "detalles_adicionales": {
        "Peso":"5000.0000"
      },
      "descuento": 0.0
    }
  ]
}'
import requests, json

nota_credito = {
  "ambiente":1,
  "tipo_emision":1,
  "secuencial":148,
  "fecha_emision":"2015-02-28T11:28:56.782Z",
  "emisor":{
    "ruc":"0910000000001",
    "obligado_contabilidad":true,
    "contribuyente_especial":"12345",
    "nombre_comercial":"XYZ Corp",
    "razon_social":"XYZ Corporación S.A.",
    "direccion":"Av. Primera 234 y calle 5ta",
    "establecimiento":{
      "punto_emision":"002",
      "codigo":"001",
      "direccion":"Av. Primera 234 y calle 5ta"
    }
  },
  "moneda":"USD",
  "informacion_adicional":{
    "Tiempo de entrega":"5 días"
  },
  "totales":{
    "total_sin_impuestos":4359.54,
    "impuestos":[
      {
        "base_imponible":0.0,
        "valor":0.0,
        "codigo":"2",
        "codigo_porcentaje":"0"
      },
      {
        "base_imponible":4359.54,
        "valor":523.14,
        "codigo":"2",
        "codigo_porcentaje":"2"
      }
    ],
    "importe_total":4882.68
  },
  "fecha_emision_documento_modificado": "2015-02-27T11:28:56.782Z",
  "numero_documento_modificado": "001-002-000058473",
  "tipo_documento_modificado": "01",
  "motivo": "Devolución de produtos",
  "comprador":{
    "email":"juan.perez@xyz.com",
    "identificacion":"0987654321",
    "tipo_identificacion":"05",
    "razon_social":"Juan Pérez",
    "direccion":"Calle única Numero 987",
    "telefono":"046029400"
  },
  "items":[
    {
      "cantidad":622.0,
      "codigo_principal":"ZNC",
      "codigo_auxiliar": "050",
      "precio_unitario": 7.01,
      "descripcion": "Zanahoria granel  50 Kg.",
      "precio_total_sin_impuestos": 4360.22,
      "impuestos": [
        {
          "base_imponible":4359.54,
          "valor":523.14,
          "tarifa":12.0,
          "codigo":"2",
          "codigo_porcentaje":"2"
        }
      ],
      "detalles_adicionales": {
        "Peso":"5000.0000"
      },
      "descuento": 0.0
    }
  ]
}
cabeceras = {
    'x-key': '<clave-del-api>',
    'x-password': '<clave-certificado-firma>',
    'content-type': 'application/json'}
respuesta = requests.post(
    "https://link.datil.co/credit-notes/issue",
    headers = cabeceras,
    data = json.dumps(nota_credito))
using RestSharp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DatilClient {
  class InvoicingServiceClient {
    static void Main(string[] args) {

      // Este ejemplo utiliza RestSharp 
      // Para instalar anda al menú: tools > Library Package Manager > Package Manager Console
      // copia y pega y presiona enter: Install-Package RestSharp

      var client = new RestClient("https://link.datil.co/");
      var request = new RestRequest("credit-notes/issue", Method.POST);
      request.AddHeader("X-Key", "<clave-del-api>");
      request.AddHeader("X-Password", "<clave-certificado-firma>");

      request.AddBody(@"{
        ""ambiente"":1,
        ""tipo_emision"":1,
        ""secuencial"":148,
        ""fecha_emision"":""2015-02-28T11:28:56.782Z"",
        ""emisor"":{
          ""ruc"":""0910000000001"",
          ""obligado_contabilidad"":true,
          ""contribuyente_especial"":""12345"",
          ""nombre_comercial"":""XYZ Corp"",
          ""razon_social"":""XYZ Corporación S.A."",
          ""direccion"":""Av. Primera 234 y calle 5ta"",
          ""establecimiento"":{
            ""punto_emision"":""002"",
            ""codigo"":""001"",
            ""direccion"":""Av. Primera 234 y calle 5ta""
          }
        },
        ""moneda"":""USD"",
        ""informacion_adicional"":{
          ""Tiempo de entrega"":""5 días""
        },
        ""totales"":{
          ""total_sin_impuestos"":4359.54,
          ""impuestos"":[
            {
              ""base_imponible"":0.0,
              ""valor"":0.0,
              ""codigo"":""2"",
              ""codigo_porcentaje"":""0""
            },
            {
              ""base_imponible"":4359.54,
              ""valor"":523.14,
              ""codigo"":""2"",
              ""codigo_porcentaje"":""2""
            }
          ],
          ""importe_total"":4882.68
        },
        ""comprador"":{
          ""email"":""juan.perez@xyz.com"",
          ""identificacion"":""0987654321"",
          ""tipo_identificacion"":""05"",
          ""razon_social"":""Juan Pérez"",
          ""direccion"":""Calle única Numero 987"",
          ""telefono"":""046029400""
        },
        ""items"":[
          {
            ""cantidad"":622.0,
            ""codigo_principal"":""ZNC""
            ""codigo_auxiliar"": ""050"",
            ""precio_unitario"": 7.01,
            ""descripcion"": ""Zanahoria granel  50 Kg."",
            ""precio_total_sin_impuestos"": 4360.22,
            ""impuestos"": [
              {
                ""base_imponible"":4359.54,
                ""valor"":523.14,
                ""tarifa"":12.0,
                ""codigo"":""2"",
                ""codigo_porcentaje"":""2""
              }
            ],
            ""detalles_adicionales"": {
              ""Peso"":""5000.0000""
            },
            ""descuento"": 0.0
          }
        ]
      }");

      IRestResponse response = client.Execute(request);

      Console.WriteLine(response.Content);
      Console.ReadLine();
    }
  }
}

Para la emisión de una nota de crédito se debe enviar la información completa del comprobante en el cuerpo del requerimiento en formato JSON.

Parámetro Tipo Descripción
secuencial string Número de secuencia de la nota de crédito. Requerido
emisor emisor Información completa del emisor. Requerido
moneda string Código ISO de la moneda. Requerido
fecha_emision string Fecha de emisión en formato AAAA-MM-DDHoraZonaHoraria, definido en el estándar ISO8601.
ambiente integer Pruebas: 1.
Producción 2.
Requerido
comprador objeto tipo persona Información del comprador.
totales objeto tipo totales Listado de totales. Requerido
fecha_emision_documento_modificado string Fecha de emisión en formato AAAA-MM-DDHoraZonaHoraria, definido en el estándar ISO8601. Requerido
numero_documento_modificado string Número completo del documento que se está afectando. Normalmente facturas. Ejm: 001-002-010023098 Requerido
tipo_documento_modificado string Códigos de tipos de documentos. Requerido
motivo string Motivo de la operación. Ejm: Devolución de producto. Requerido
tipo_emision integer Emisión normal: 1.
Emisión por indisponibilidad: 2
Requerido
items listado de objetos tipo item Items incluídos en la nota de crédito. Requerido
version string Versión del formato de comprobantes electrónicos de SRI. Si no se especifica, se utilizará la última revisión del formato implementada,
clave_acceso string La clave de acceso representa un identificador único del comprobante. Si esta información no es provista, Dátil la generará.
¿Cómo generar la clave de acceso?
informacion_adicional objeto Información adicional adjunta al comprobante en forma de diccionario. Ejemplo:
{"plan": "Inicial", "vigencia": "1 mes"}

Totales

Parámetro Tipo Descripción
total_sin_impuestos float Total antes de los impuestos. Requerido
importe_total float Total incluyendo impuestos. Requerido
impuestos listado de objetos total impuesto Listado de impuesto totalizados. Requerido

Respuesta

Respuesta de ejemplo

{
  "id": "abcdef09876123cea56784f01",
  "ambiente":1,
  "tipo_emision":1,
  "secuencial":148,
  "fecha_emision":"2015-02-28T11:28:56.782Z",
  "clave_acceso": "2802201501091000000000120010010000100451993736618",
  "emisor":{
    "ruc": "0910000000001",
    "obligado_contabilidad": true,
    "contribuyente_especial": "12345",
    "nombre_comercial": "XYZ Corp",
    "razon_social": "XYZ Corporación S.A.",
    "direccion": "Av. Primera 234 y calle 5ta",
    "establecimiento": {
      "punto_emision": "002",
      "codigo": "001",
      "direccion": "Av. Primera 234 y calle 5ta"
    }
  },
  "moneda": "USD",
  "informacion_adicional": {
    "Tiempo de entrega": "5 días"
  },
  "totales": {
    "total_sin_impuestos": 4359.54,
    "impuestos": [
      {
        "base_imponible": 0.0,
        "valor": 0.0,
        "codigo": "2",
        "codigo_porcentaje": "0"
      },
      {
        "base_imponible": 4359.54,
        "valor": 523.14,
        "codigo": "2",
        "codigo_porcentaje": "2"
      }
    ],
    "importe_total": 4882.68
  },
  "comprador": {
    "email": "juan.perez@xyz.com",
    "identificacion": "0987654321",
    "tipo_identificacion": "05",
    "razon_social": "Juan Pérez",
    "direccion": "Calle única Numero 987",
    "telefono": "046029400"
  },
  "items":[
    {
      "cantidad": 622.0,
      "codigo_principal": "ZNC",
      "codigo_auxiliar": "050",
      "precio_unitario": 7.01,
      "descripcion": "Zanahoria granel  50 Kg.",
      "precio_total_sin_impuestos": 4360.22,
      "impuestos":[
        {
          "base_imponible": 4359.54,
          "valor": 523.14,
          "tarifa": 12.0,
          "codigo": "2",
          "codigo_porcentaje": "2"
        }
      ],
      "detalles_adicionales": {
        "Peso": "5000.0000"
      },
      "descuento": 0.0
    }
  ]
}

Retorna un objeto tipo nota de crédito que incluye un nuevo parámetro id, el cual identifica de manera única a la nota de crédito. El campo clave_acceso generado también se incluirá como parte de la respuesta.

Consulta de una nota de crédito

Consulta una nota de crédito para obtener toda la información del comprobante, incluyendo el estado del mismo. El parámetro estado de la respuesta obtenida al invocar esta operación, indica el estado actual del comprobante.

Si es necesario conocer en detalle, en que estado del proceso de emisión, se debe examinar los parámetros envio_sri y autorizacion_sri de la respuesta.

Operación

GET /credit-notes/<invoice-id>

Requerimiento

Requerimiento de ejemplo

curl -v https://link.datil.co/credit-notes/<id-notacredito> \
-H "Content-Type: application/json" \
-H "X-Key: <clave-del-api>" \
-H "X-Password: <clave-certificado-firma>" \
import requests
cabeceras = {'x-key': '<clave-del-api>'}
respuesta = requests.get(
    'https://link.datil.co/credit-notes/<id-notacredito>',
    headers = cabeceras)
using RestSharp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DatilClient {
  class InvoicingServiceClient {
    static void Main(string[] args) {

      var client = new RestClient("https://link.datil.co/");
      var idNotaCredito = "<id-notacredito>";
      var request = new RestRequest("invoices/" + idNotaCredito, Method.GET);
      request.AddHeader("X-Key", "<clave-del-api>");

      IRestResponse response = client.Execute(request);

      Console.WriteLine(response.Content);
    }
  }
}

Reemplaza en la ruta <invoice-ID> por el id de la nota de crédito que necesitas consultar.

Respuesta

Respuesta de ejemplo

{
    "id": "abcf12343faad06785",
    "secuencial": "16",
    "fecha_emision": "2015-05-15",
    "version": "1.0.0",
    "clave_acceso": "1505201501099271255400110011000000000162092727615",
    "emisor": {
        "ruc": "0992712554001",
        "razon_social": "DATILMEDIA S.A.",
        "nombre_comercial": "Dátil",
        "direccion": null,
        "obligado_contabilidad": true,
        "contribuyente_especial": "",
        "establecimiento": {
            "codigo": "001",
            "direccion": "V.E. 112 Y CIRCUNVALACION NORTE",
            "punto_emision": "100"
        }
    },
    "estado": "AUTORIZADO",
    "correos_enviados": [
        {
            "fecha_envio": "2015-05-15T16:36:48.274604",
            "destinatarios": "juanantonioplaza@datilmedia.com"
        }
    ],
    "guia_remision": "",
    "moneda": "USD",
    "informacion_adicional": [],
    "ambiente": "1",
    "totales": {
        "total_sin_impuestos": "150.00",
        "impuestos": [
            {
                "codigo": 2,
                "codigo_porcentaje": "2",
                "base_imponible": "150.00",
                "valor": "18.00"
            }
        ],
        "importe_total": "168.00"
    },
    "comprador": {
        "razon_social": "Carlos L. Plaza",
        "identificacion": "0900102222",
        "tipo_identificacion": 1,
        "email": "cplaza@gye593.com",
        "direccion": "Calle Uno y Calle Dos",
        "telefono": "043334445"
    },
    "envio_sri": {
        "mensajes": [],
        "estado": "RECIBIDA",
        "fecha": ""
    },
    "tipo_emision": "1",
    "items": [
        {
            "detalles_adicionales": {
                "Estadía": "2 noches",
                "Habitación": "203"
            },
            "cantidad": "1.000000",
            "codigo_principal": "HAB",
            "codigo_auxiliar": "DOB",
            "descripcion": "Habitación doble",
            "precio_unitario": "150.000000",
            "descuento": "0.00",
            "precio_total_sin_impuestos": "",
            "impuestos": [
                {
                    "tarifa": "12.00",
                    "codigo": "2",
                    "codigo_porcentaje": "2",
                    "base_imponible": "150.00",
                    "valor": "18.00"
                }
            ]
        }
    ],
    "autorizacion": {
        "estado": "AUTORIZADO",
        "mensajes": [
            {
                "identificador": "60",
                "mensaje": "ESTE PROCESO FUE REALIZADO EN EL AMBIENTE DE PRUEBAS",
                "tipo": "INFORMATIVO",
                "informacion_adicional": ""
            }
        ],
        "numero": "1505201516323509927125540010266935227",
        "fecha": "2015-05-15T16:32:35.000380"
    }
}
Parámetro Tipo Descripción
secuencial string Número de secuencia de la nota de crédito.
estado string Posibles valores: AUTORIZADO, NO AUTORIZADO, ENVIADO, DEVUELTO, RECIBIDO
fecha_emision string Fecha de emisión en formato AAAA-MM-DDHoraZonaHoraria, definido en el estándar [ISO8601](http://tools.ietf.
clave_acceso string La clave de acceso representa un identificador único del comprobante. Si esta información no es provista, Dátil la generará.
¿Cómo generar la clave de acceso?
envio_sri objeto tipo envio sri Información luego de enviar el comprobante.
autorizacion objeto tipo autorizacion sri Información de la autorización.org/html/rfc3339#section-5.6).
emisor objeto tipo emisor Información completa del emisor.
moneda string Código ISO de la moneda.
ambiente integer Pruebas: 1.
Producción 2.
totales objeto tipo totales Listado de totales.
comprador objeto tipo persona Información del comprador.
tipo_emision integer Emisión normal: 1.
Emisión por indisponibilidad: 2
items listado de objetos tipo item Items incluídos en la nota de crédito.
version string Versión de la especificación, opciones válidas: 1.0.0, 1.1.0

Comprobantes de Retención

Emisión de una retención

Operación

POST /retentions/issue

Requerimiento

Requerimiento de ejemplo

curl -v https://link.datil.co/retentions/issue \
-H "Content-Type: application/json" \
-H "X-Key: <API-key>" \
-H "X-Password: <clave-certificado-firma>" \
-d '{
  "ambiente":1,
  "tipo_emision":1,
  "secuencial":14,
  "fecha_emision":"2015-12-25T11:28:56.782Z",
  "periodo_fiscal":"12/2015",
  "emisor":{
    "ruc":"0910000000001",
    "obligado_contabilidad":true,
    "contribuyente_especial":"12345",
    "nombre_comercial":"XYZ Corp",
    "razon_social":"XYZ Corporación S.A.",
    "direccion":"Av. Primera 234 y calle 5ta",
    "establecimiento":{
      "punto_emision":"002",
      "codigo":"001",
      "direccion":"Av. Primera 234 y calle 5ta"
    }
  },
  "informacion_adicional":{
    "Envíada al correo electónico":"contabilidad@xyz.com"
  },
  "items":[
    {
      "base_imponible": 4226.4,
      "codigo": 1,
      "codigo_porcentaje": "312",
      "fecha_emision_documento_sustento": "2015-12-04T00:00:00-05:19",
      "numero_documento_sustento": "011-007-000000251",
      "porcentaje": 1.0,
      "tipo_documento_sustento": "01",
      "valor_retenido": 42.26
    }
  ]
  "sujeto":{
    "email":"contabilidad@email.com",
    "identificacion":"0987654321",
    "tipo_identificacion":"05",
    "razon_social":"Juan Pérez",
    "direccion":"Calle única Numero 987",
    "telefono":"046029400"
  }
}'
import requests, json

retencion = {
  "ambiente":1,
  "tipo_emision":1,
  "secuencial":14,
  "fecha_emision":"2015-12-25T11:28:56.782Z",
  "periodo_fiscal":"12/2015",
  "emisor":{
    "ruc":"0910000000001",
    "obligado_contabilidad":true,
    "contribuyente_especial":"12345",
    "nombre_comercial":"XYZ Corp",
    "razon_social":"XYZ Corporación S.A.",
    "direccion":"Av. Primera 234 y calle 5ta",
    "establecimiento":{
      "punto_emision":"002",
      "codigo":"001",
      "direccion":"Av. Primera 234 y calle 5ta"
    }
  },
  "informacion_adicional":{
    "Envíada al correo electónico":"contabilidad@xyz.com"
  },
  "items":[
    {
      "base_imponible": 4226.4,
      "codigo": 1,
      "codigo_porcentaje": "312",
      "fecha_emision_documento_sustento": "2015-12-04T00:00:00-05:19",
      "numero_documento_sustento": "011-007-000000251",
      "porcentaje": 1.0,
      "tipo_documento_sustento": "01",
      "valor_retenido": 42.26
    }
  ],
  "sujeto":{
    "email":"contabilidad@email.com",
    "identificacion":"0987654321",
    "tipo_identificacion":"05",
    "razon_social":"Juan Pérez",
    "direccion":"Calle única Numero 987",
    "telefono":"046029400"
  }
}
cabeceras = {
    'x-key': '<clave-del-api>',
    'x-password': '<clave-certificado-firma>',
    'content-type': 'application/json'}
respuesta = requests.post(
    "https://link.datil.co/retentions/issue",
    headers = cabeceras,
    data = json.dumps(retencion))
using RestSharp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DatilClient {
  class InvoicingServiceClient {
    static void Main(string[] args) {

      // Este ejemplo utiliza RestSharp 
      // Para instalar anda al menú: tools > Library Package Manager > Package Manager Console
      // copia y pega y presiona enter: Install-Package RestSharp

      var client = new RestClient("https://link.datil.co/");
      var request = new RestRequest("invoices/issue", Method.POST);
      request.AddHeader("X-Key", "<clave-del-api>");
      request.AddHeader("X-Password", "<clave-certificado-firma>");

      request.AddBody(@"{
        ""ambiente"":1,
        ""tipo_emision"":1,
        ""secuencial"":14,
        ""fecha_emision"":""2015-12-25T11:28:56.782Z"",
        ""periodo_fiscal"":""12/2015"",
        ""emisor"":{
          ""ruc"":""0910000000001"",
          ""obligado_contabilidad"":true,
          ""contribuyente_especial"":""12345"",
          ""nombre_comercial"":""XYZ Corp"",
          ""razon_social"":""XYZ Corporación S.A."",
          ""direccion"":""Av. Primera 234 y calle 5ta"",
          ""establecimiento"":{
            ""punto_emision"":""002"",
            ""codigo"":""001"",
            ""direccion"":""Av. Primera 234 y calle 5ta""
          }
        },
        ""informacion_adicional"":{
          ""Envíada al correo electónico"":""contabilidad@xyz.com""
        },
        ""items"":[
          {
            ""base_imponible"": 4226.4,
            ""codigo"": 1,
            ""codigo_porcentaje"": ""312"",
            ""fecha_emision_documento_sustento"": ""2015-12-04T00:00:00-05:19"",
            ""numero_documento_sustento"": ""011007000000251"",
            ""porcentaje"": 1.0,
            ""tipo_documento_sustento"": ""01"",
            ""valor_retenido"": 42.26
          }
        ],
        ""sujeto"":{
          ""email"":""contabilidad@email.com"",
          ""identificacion"":""0987654321"",
          ""tipo_identificacion"":""05"",
          ""razon_social"":""Juan Pérez"",
          ""direccion"":""Calle única Numero 987"",
          ""telefono"":""046029400""
        }
      }");

      IRestResponse response = client.Execute(request);

      Console.WriteLine(response.Content);
      Console.ReadLine();
    }
  }
}

Para la emisión de una nota de crédito se debe enviar la información completa del comprobante en el cuerpo del requerimiento en formato JSON.

Parámetro Tipo Descripción
secuencial string Número de secuencia de la nota de crédito. Requerido
emisor emisor Información completa del emisor. Requerido
fecha_emision string Fecha de emisión en formato AAAA-MM-DDHoraZonaHoraria, definido en el estándar ISO8601.
periodo_fiscal string Mes y año en el siguiente formato MM/AAAA. Ejm: 12/2015 Requerido
ambiente integer Pruebas: 1.
Producción 2.
Requerido
impuestos vector de objetos tipo impuesto Listado de impuestos retenidos. Requerido
tipo_emision integer Emisión normal: 1.
Emisión por indisponibilidad: 2
Requerido
version string Versión del formato de comprobantes electrónicos de SRI. Si no se especifica, se utilizará la última revisión del formato implementada,
clave_acceso string La clave de acceso representa un identificador único del comprobante. Si esta información no es provista, Dátil la generará.
¿Cómo generar la clave de acceso?
informacion_adicional objeto Información adicional adjunta al comprobante en forma de diccionario. Ejemplo:
{"Email": "contabilidad@empresa.com"}

Impuesto Retenido

Parámetro Tipo Descripción
base_imponible float Base imponible, máximo 2 cifras decimales. Requerido
codigo string Código de tipo de impuesto. Requerido
codigo_porcentaje string Código del porcentaje a aplicar dentro del tipo de impuesto Requerido
porcentaje float Porcentaje establecido para el impuesto
valor_retenido float Valor retenido, multiplicación de la base imponible por el porcentaje de retención, máximo 2 cifras decimales. Requerido
fecha_emision_documento_sustento string Fecha de emisión en formato AAAA-MM-DDHoraZonaHoraria, definido en el estándar ISO8601. Requerido
numero_documento_sustento string Número completo del documento sobre el que se aplica la retención. Ejm: 001-002-592738007
tipo_documento_sustento string Códigos de tipos de documentos. Requerido

Respuesta

Respuesta de ejemplo

{
  "id": "abcdef09876123cea56784f01",
  "clave_acceso": "2802201501091000000000120010010000100451993736618",
  "ambiente":1,
  "tipo_emision":1,
  "secuencial":14,
  "fecha_emision":"2015-12-25T11:28:56.782Z",
  "periodo_fiscal":"12/2015",
  "emisor":{
    "ruc":"0910000000001",
    "obligado_contabilidad":true,
    "contribuyente_especial":"12345",
    "nombre_comercial":"XYZ Corp",
    "razon_social":"XYZ Corporación S.A.",
    "direccion":"Av. Primera 234 y calle 5ta",
    "establecimiento":{
      "punto_emision":"002",
      "codigo":"001",
      "direccion":"Av. Primera 234 y calle 5ta"
    }
  },
  "informacion_adicional":{
    "Envíada al correo electónico":"contabilidad@xyz.com"
  },
  "items":[
    {
      "base_imponible": 4226.4,
      "codigo": 1,
      "codigo_porcentaje": "312",
      "fecha_emision_documento_sustento": "2015-12-04T00:00:00-05:19",
      "numero_documento_sustento": "011-007-000000251",
      "porcentaje": 1.0,
      "tipo_documento_sustento": "01",
      "valor_retenido": 42.26
    }
  ],
  "sujeto":{
    "email":"contabilidad@email.com",
    "identificacion":"0987654321",
    "tipo_identificacion":"05",
    "razon_social":"Juan Pérez",
    "direccion":"Calle única Numero 987",
    "telefono":"046029400"
  }
}

Retorna un objeto tipo retención que incluye un nuevo parámetro id, el cual identifica de manera única a la nota de crédito. El campo clave_acceso generado también se incluirá como parte de la respuesta.

Consulta de un Comprobante de Retención

Consulta una nota de crédito para obtener toda la información del comprobante, incluyendo el estado del mismo. El parámetro estado de la respuesta obtenida al invocar esta operación, indica el estado actual del comprobante.

Si es necesario conocer en detalle, en que estado del proceso de emisión, se debe examinar los parámetros envio_sri y autorizacion_sri de la respuesta.

Operación

GET /retentions/<receipt-id>

Requerimiento

Requerimiento de ejemplo

curl -v https://link.datil.co/retentions/<id-retencion> \
-H "Content-Type: application/json" \
-H "X-Key: <clave-del-api>" \
-H "X-Password: <clave-certificado-firma>" \
import requests
cabeceras = {'x-key': '<clave-del-api>'}
respuesta = requests.get(
    'https://link.datil.co/retentions/<id-retencion>',
    headers = cabeceras)
using RestSharp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DatilClient {
  class InvoicingServiceClient {
    static void Main(string[] args) {

      var client = new RestClient("https://link.datil.co/");
      var idNotaCredito = "<id-retencion>";
      var request = new RestRequest("invoices/" + idNotaCredito, Method.GET);
      request.AddHeader("X-Key", "<clave-del-api>");

      IRestResponse response = client.Execute(request);

      Console.WriteLine(response.Content);
    }
  }
}

Reemplaza en la ruta <receipt-id> por el id de la nota de crédito que necesitas consultar.

Respuesta

Respuesta de ejemplo

{
    "id": "abcf12343faad06785abcf12343faad0",
    "secuencial": "16",
    "fecha_emision": "2015-05-15",
    "version": "1.0.0",
    "clave_acceso": "1505201501099271255400110011000000000162092727615",
    "emisor": {
        "ruc": "0992712554001",
        "razon_social": "DATILMEDIA S.A.",
        "nombre_comercial": "Dátil",
        "direccion": null,
        "obligado_contabilidad": true,
        "contribuyente_especial": "",
        "establecimiento": {
            "codigo": "001",
            "direccion": "V.E. 112 Y CIRCUNVALACION NORTE",
            "punto_emision": "100"
        }
    },
    "estado": "AUTORIZADO",
    "items":[
      {
        "base_imponible": 4226.4,
        "codigo": 1,
        "codigo_porcentaje": "312",
        "fecha_emision_documento_sustento": "2015-12-04T00:00:00-05:19",
        "numero_documento_sustento": "011007000000251",
        "porcentaje": 1.0,
        "tipo_documento_sustento": "01",
        "valor_retenido": 42.26
      }
    ],
    "correos_enviados": [
        {
            "fecha_envio": "2015-05-15T16:36:48.274604",
            "destinatarios": "juanantonioplaza@datilmedia.com"
        }
    ],
    "informacion_adicional": {},
    "ambiente": "1",
    "sujeto": {
        "razon_social": "Carlos L. Plaza",
        "identificacion": "0900102222",
        "tipo_identificacion": 1,
        "email": "cplaza@gye593.com",
        "direccion": "Calle Uno y Calle Dos",
        "telefono": "043334445"
    },
    "envio_sri": {
        "mensajes": [],
        "estado": "RECIBIDA",
        "fecha": ""
    },
    "tipo_emision": "1",
    "autorizacion": {
        "estado": "AUTORIZADO",
        "mensajes": [
            {
                "identificador": "60",
                "mensaje": "ESTE PROCESO FUE REALIZADO EN EL AMBIENTE DE PRUEBAS",
                "tipo": "INFORMATIVO",
                "informacion_adicional": ""
            }
        ],
        "numero": "1505201516323509927125540010266935227",
        "fecha": "2015-05-15T16:32:35.000380"
    }
}
Parámetro Tipo Descripción
secuencial string Número de secuencia de la nota de crédito.
estado string Posibles valores: AUTORIZADO, NO AUTORIZADO, ENVIADO, DEVUELTO, RECIBIDO
fecha_emision string Fecha de emisión en formato AAAA-MM-DDHoraZonaHoraria, definido en el estándar [ISO8601](http://tools.ietf.
clave_acceso string La clave de acceso representa un identificador único del comprobante. Si esta información no es provista, Dátil la generará.
¿Cómo generar la clave de acceso?
envio_sri objeto tipo envio sri Información luego de enviar el comprobante.
autorizacion objeto tipo autorizacion sri Información de la autorización.org/html/rfc3339#section-5.6).
emisor objeto tipo emisor Información completa del emisor.
ambiente integer Pruebas: 1.
Producción 2.
items vector de objetos tipo impuesto Listado de impuestos retenidos. Requerido
sujeto objeto persona Información del sujeto al que se le retiene.
tipo_emision integer Emisión normal: 1.
Emisión por indisponibilidad: 2
version string Versión de la especificación, opciones válidas: 1.0.0, 1.1.0

Guías de Remisión

Emisión de una guía de remisión

Operación

POST /waybills/issue

Requerimiento

Requerimiento de ejemplo

curl -v https://link.datil.co/waybills/issue \
-H "Content-Type: application/json" \
-H "X-Key: <API-key>" \
-H "X-Password: <clave-certificado-firma>" \
-d '{
  "ambiente":1,
  "tipo_emision":1,
  "secuencial":50,
  "fecha_inicio_transporte":"2015-02-28T11:28:56.782Z",
  "fecha_fin_transporte":"2015-02-28T11:28:56.782Z",
  "direccion_partida": "Victor Emilio Estrada",
  "emisor":{
    "ruc":"0910000000001",
    "obligado_contabilidad":true,
    "contribuyente_especial":"12345",
    "nombre_comercial":"XYZ Corp",
    "razon_social":"XYZ Corporación S.A.",
    "direccion":"Av. Primera 234 y calle 5ta",
    "establecimiento":{
      "punto_emision":"002",
      "codigo":"001",
      "direccion":"Av. Primera 234 y calle 5ta"
    }
  },
  "informacion_adicional":{
    "Tiempo de entrega":"5 días"
  },
  "transportista":{
    "email":"juan.perez@xyz.com",
    "identificacion":"0987654321",
    "tipo_identificacion":"05",
    "razon_social":"Juan Pérez",
    "direccion":"Calle única Numero 987",
    "telefono":"04 6029400",
    "placa":"GSM-0123"
  },
  "destinatarios": [{
    "identificacion":"0987654321",
    "tipo_identificacion":"05",
    "razon_social":"Juan Pérez",
    "direccion":"Calle única Numero 987",
    "email":"juan.perez@xyz.com",
    "telefono":"046029400",
    "fecha_emision_documento_sustento": "2015-02-27T11:28:56.782Z",
    "numero_documento_sustento": "001-001-000000008",
    "numero_autorizacion_documento_sustento": "0123456789",
    "motivo_traslado": "Venta",
    "tipo_documento_sustento": "01",
    "ruta": "GYE - UIO",
    "documento_aduanero_unico": "",
    "codigo_establecimiento_destino": "001",
    "items": [{
      "cantidad": 1.0,
      "codigo_principal": "SPS",
      "codigo_auxiliar": "001",
      "descripcion": "Playstation 4",
      "detalles_adicionales": {
        "numero": "DFGDG2342-2",
        "serie": "1-2014-2"
      }
    }]
  }]
}'
import requests, json

guia_remision = {
  "ambiente":1,
  "tipo_emision":1,
  "secuencial":50,
  "fecha_inicio_transporte":"2015-02-28T11:28:56.782Z",
  "fecha_fin_transporte":"2015-02-28T11:28:56.782Z",
  "direccion_partida": "Victor Emilio Estrada",
  "emisor":{
    "ruc":"0910000000001",
    "obligado_contabilidad":true,
    "contribuyente_especial":"12345",
    "nombre_comercial":"XYZ Corp",
    "razon_social":"XYZ Corporación S.A.",
    "direccion":"Av. Primera 234 y calle 5ta",
    "establecimiento":{
      "punto_emision":"002",
      "codigo":"001",
      "direccion":"Av. Primera 234 y calle 5ta"
    }
  },
  "informacion_adicional":{
    "Tiempo de entrega":"5 días"
  },
  "transportista":{
    "email":"juan.perez@xyz.com",
    "identificacion":"0987654321",
    "tipo_identificacion":"05",
    "razon_social":"Juan Pérez",
    "direccion":"Calle única Numero 987",
    "telefono":"04 6029400",
    "placa":"GSM-0123"
  },
  "destinatarios": [{
    "identificacion":"0987654321",
    "tipo_identificacion":"05",
    "razon_social":"Juan Pérez",
    "direccion":"Calle única Numero 987",
    "email":"juan.perez@xyz.com",
    "telefono":"046029400",
    "fecha_emision_documento_sustento": "2015-02-27T11:28:56.782Z",
    "numero_documento_sustento": "001-001-000000008",
    "numero_autorizacion_documento_sustento": "0123456789",
    "motivo_traslado": "Venta",
    "tipo_documento_sustento": "01",
    "ruta": "GYE - UIO",
    "documento_aduanero_unico": "",
    "codigo_establecimiento_destino": "001",
    "items": [{
      "cantidad": 1.0,
      "codigo_principal": "SPS",
      "codigo_auxiliar": "001",
      "descripcion": "Playstation 4",
      "detalles_adicionales": {
        "numero": "DFGDG2342-2",
        "serie": "1-2014-2"
      }
    }]
  }]
}
cabeceras = {
    'x-key': '<clave-del-api>',
    'x-password': '<clave-certificado-firma>',
    'content-type': 'application/json'}
respuesta = requests.post(
    "https://link.datil.co/waybills/issue",
    headers = cabeceras,
    data = json.dumps(guia_remision))
using RestSharp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DatilClient {
  class InvoicingServiceClient {
    static void Main(string[] args) {

      // Este ejemplo utiliza RestSharp 
      // Para instalar anda al menú: tools > Library Package Manager > Package Manager Console
      // copia y pega y presiona enter: Install-Package RestSharp

      var client = new RestClient("https://link.datil.co/");
      var request = new RestRequest("waybills/issue", Method.POST);
      request.AddHeader("X-Key", "<clave-del-api>");
      request.AddHeader("X-Password", "<clave-certificado-firma>");

      request.AddBody(@"{
        ""ambiente"":1,
        ""tipo_emision"":1,
        ""secuencial"":50,
        ""fecha_inicio_transporte"":""2015-02-28T11:28:56.782Z"",
        ""fecha_fin_transporte"":""2015-02-28T11:28:56.782Z"",
        ""direccion_partida"": ""Victor Emilio Estrada"",
        ""emisor"":{
          ""ruc"":""0910000000001"",
          ""obligado_contabilidad"":true,
          ""contribuyente_especial"":""12345"",
          ""nombre_comercial"":""XYZ Corp"",
          ""razon_social"":""XYZ Corporación S.A."",
          ""direccion"":""Av. Primera 234 y calle 5ta"",
          ""establecimiento"":{
            ""punto_emision"":""002"",
            ""codigo"":""001"",
            ""direccion"":""Av. Primera 234 y calle 5ta""
          }
        },
        ""informacion_adicional"":{
          ""Tiempo de entrega"":""5 días""
        },
        ""transportista"":{
          ""email"":""juan.perez@xyz.com"",
          ""identificacion"":""0987654321"",
          ""tipo_identificacion"":""05"",
          ""razon_social"":""Juan Pérez"",
          ""direccion"":""Calle única Numero 987"",
          ""telefono"":""04 6029400"",
          ""placa"":""GSM-0123""
        },
        ""destinatarios"": [{
          ""identificacion"":""0987654321"",
          ""tipo_identificacion"":""05"",
          ""razon_social"":""Juan Pérez"",
          ""direccion"":""Calle única Numero 987"",
          ""email"":""juan.perez@xyz.com"",
          ""telefono"":""046029400"",
          ""fecha_emision_documento_sustento"": ""2015-02-27T11:28:56.782Z"",
          ""numero_documento_sustento"": ""001-001-000000008"",
          ""numero_autorizacion_documento_sustento"": ""0123456789"",
          ""motivo_traslado"": ""Venta"",
          ""tipo_documento_sustento"": ""01"",
          ""ruta"": ""GYE - UIO"",
          ""documento_aduanero_unico"": """",
          ""codigo_establecimiento_destino"": ""001"",
          ""items"": [{
            ""cantidad"": 1.0,
            ""codigo_principal"": ""SPS"",
            ""codigo_auxiliar"": ""001"",
            ""descripcion"": ""Playstation 4"",
            ""detalles_adicionales"": {
              ""numero"": ""DFGDG2342-2"",
              ""serie"": ""1-2014-2""
            }
          }]
        }]
      }");

      IRestResponse response = client.Execute(request);

      Console.WriteLine(response.Content);
      Console.ReadLine();
    }
  }
}

Para la emisión de una guía de remisión se debe enviar la información completa del comprobante en el cuerpo del requerimiento en formato JSON.

Parámetro Tipo Descripción
secuencial string Número de secuencia de la guía de remisión. Requerido
emisor emisor Información completa del emisor. Requerido
fecha_inicio_transporte string Fecha de emisión en formato AAAA-MM-DDHoraZonaHoraria, definido en el estándar ISO8601.
fecha_fin_transporte string Fecha de emisión en formato AAAA-MM-DDHoraZonaHoraria, definido en el estándar ISO8601.
direccion_partida string Dirección de partida
transportista objeto tipo transportista Información de la persona que transporta la carga
ambiente integer Pruebas: 1.
Producción 2.
Requerido
tipo_emision integer Emisión normal: 1.
Emisión por indisponibilidad: 2
Requerido
destinatarios listado de objetos tipo destinatario Descripción de destinatarios y la mercadería transportada. Requerido
version string Versión del formato de comprobantes electrónicos de SRI. Si no se especifica, se utilizará la última revisión del formato implementada,
clave_acceso string La clave de acceso representa un identificador único del comprobante. Si esta información no es provista, Dátil la generará.
¿Cómo generar la clave de acceso?
informacion_adicional objeto Información adicional adjunta al comprobante en forma de diccionario. Ejemplo:
{"email": "juan@empresa.com", "Carga asegurada por": "Securitas"}

Destinatario

Parámetro Tipo Descripción
razon_social string Razón social del comprador. Máximo 300 caracteres. Requerido
identificacion string De 5 a 20 caracteres. Requerido
tipo_identificacion string Ver tabla de tipos de identificación Requerido
email string Correo electrónico del destinatario.
telefono string Teléfono.
direccion string Dirección
ruta string Ruta de transporte. Máximo 300 caracteres.
documento_aduanero_unico string Máximo 20 caracteres.
fecha_emision_documento_sustento string Fecha de emisión en formato AAAA-MM-DDHoraZonaHoraria, definido en el estándar ISO8601. Requerido
numero_documento_sustento string Número completo del documento que detalla la mercadería a transportar. Normalmente facturas. Ejm: 001-002-010023098 Requerido
codigo_establecimiento_destino string Número establecimiento que recibe la entrega. Ejm: 002 Requerido
tipo_documento_sustento string Ver códigos de tipos de documentos. Requerido
motivo_traslado string Motivo del traslado. Ejm: Entrega de mercadería. Requerido
numero_autorizacion_documento_sustento string Autorización del documento de sustento.
items arreglo de objetos tipo item destinatario Items transportados

Item destinatario

Parámetro Tipo Descripción
descripcion string Descripción del ítem. Requerido
codigo_principal string Código alfanumérico de uso del comercio. Máximo 25 caracteres.
codigo_auxiliar string Código alfanumérico de uso del comercio. Máximo 25 caracteres.
cantidad float Cantidad de items. Requerido
detalles_adicionales object Diccionario de datos de carácter adicional. Ejemplo:
{"marca": "Ferrari", "chasis": "UANEI832-NAU101"}

Transportista

Parámetro Tipo Descripción
razon_social string Razón social. Máximo 300 caracteres. Requerido
identificacion string De 5 a 20 caracteres. Requerido
tipo_identificacion string Ver tabla de tipos de identificación Requerido
email string Correo electrónico. Máximo 300 caracteres. Requerido
telefono string Teléfono.
direccion string Dirección
placa string Placa del vehículo

Respuesta

Respuesta de ejemplo

{
  "id": "abcfde09817263847cdaef8493018fef",
  "clave_acceso":"2802201501091000000000120010010000100451993736618",
  "ambiente":1,
  "tipo_emision":1,
  "secuencial":50,
  "fecha_inicio_transporte":"2015-02-28T11:28:56.782Z",
  "fecha_fin_transporte":"2015-02-28T11:28:56.782Z",
  "emisor":{
    "ruc":"0910000000001",
    "obligado_contabilidad":true,
    "contribuyente_especial":"12345",
    "nombre_comercial":"XYZ Corp",
    "razon_social":"XYZ Corporación S.A.",
    "direccion":"Av. Primera 234 y calle 5ta",
    "establecimiento":{
      "punto_emision":"002",
      "codigo":"001",
      "direccion":"Av. Primera 234 y calle 5ta"
    }
  },
  "informacion_adicional":{
    "Tiempo de entrega":"5 días"
  },
  "transportista":{
    "email":"juan.perez@xyz.com",
    "identificacion":"0987654321",
    "tipo_identificacion":"05",
    "razon_social":"Juan Pérez",
    "direccion":"Calle única Numero 987",
    "telefono":"04 6029400",
    "placa":"GSM-0123"
  },
  "destinatarios": [{
    "identificacion":"0987654321",
    "tipo_identificacion":"05",
    "razon_social":"Juan Pérez",
    "direccion":"Calle única Numero 987",
    "email":"juan.perez@xyz.com",
    "telefono":"046029400",
    "fecha_emision_documento_sustento": "2015-02-27T11:28:56.782Z",
    "numero_documento_sustento": "001-001-000000008",
    "numero_autorizacion_documento_sustento": "0123456789",
    "motivo_traslado": "Venta",
    "tipo_documento_sustento": "01",
    "ruta": "GYE - UIO",
    "documento_aduanero_unico": "",
    "codigo_establecimiento_destino": "001",
    "items": [{
      "cantidad": 1.0,
      "codigo_principal": "SPS",
      "codigo_auxiliar": "001",
      "descripcion": "Playstation 4",
      "detalles_adicionales": {
        "numero": "DFGDG2342-2",
        "serie": "1-2014-2"
      }
    }]
  }]
}

Retorna un objeto tipo guía de remisión que incluye un nuevo parámetro id, el cual identifica de manera única a la guía de remisión. El campo clave_acceso generado también se incluirá como parte de la respuesta.

Consulta de una guía de remisión

Consulta una guía de remisión para obtener toda la información del comprobante, incluyendo el estado del mismo. El parámetro estado de la respuesta obtenida al invocar esta operación, indica el estado actual del comprobante.

Si es necesario conocer en detalle, en que estado del proceso de emisión, se debe examinar los parámetros envio_sri y autorizacion_sri de la respuesta.

Operación

GET /waybills/<receipt-id>

Requerimiento

Requerimiento de ejemplo

curl -v https://link.datil.co/waybills/<id-notacredito> \
-H "Content-Type: application/json" \
-H "X-Key: <clave-del-api>" \
-H "X-Password: <clave-certificado-firma>" \
import requests
cabeceras = {'x-key': '<clave-del-api>'}
respuesta = requests.get(
    'https://link.datil.co/waybills/<id-notacredito>',
    headers = cabeceras)
using RestSharp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DatilClient {
  class InvoicingServiceClient {
    static void Main(string[] args) {

      var client = new RestClient("https://link.datil.co/");
      var idNotaCredito = "<id-notacredito>";
      var request = new RestRequest("invoices/" + idNotaCredito, Method.GET);
      request.AddHeader("X-Key", "<clave-del-api>");

      IRestResponse response = client.Execute(request);

      Console.WriteLine(response.Content);
    }
  }
}

Reemplaza en la ruta <receipt-id> por el id de la guía de remisión que necesitas consultar.

Respuesta

Respuesta de ejemplo

{
    "id": "abcf12343faad06785",
    "secuencial": "16",
    "fecha_emision": "2015-05-15",
    "version": "1.0.0",
    "clave_acceso": "1505201501099271255400110011000000000162092727615",
    "emisor": {
        "ruc": "0992712554001",
        "razon_social": "DATILMEDIA S.A.",
        "nombre_comercial": "Dátil",
        "direccion": null,
        "obligado_contabilidad": true,
        "contribuyente_especial": "",
        "establecimiento": {
            "codigo": "001",
            "direccion": "V.E. 112 Y CIRCUNVALACION NORTE",
            "punto_emision": "100"
        }
    },
    "estado": "AUTORIZADO",
    "correos_enviados": [
        {
            "fecha_envio": "2015-05-15T16:36:48.274604",
            "destinatarios": "juanantonioplaza@datilmedia.com"
        }
    ],
    "guia_remision": "",
    "informacion_adicional": [],
    "ambiente": "1",
    "totales": {
        "total_sin_impuestos": "150.00",
        "descuento": "0.00",
        "propina": "0.00",
        "impuestos": [
            {
                "codigo": 2,
                "codigo_porcentaje": "2",
                "base_imponible": "150.00",
                "valor": "18.00"
            }
        ],
        "importe_total": "168.00"
    },
    "comprador": {
        "razon_social": "Carlos L. Plaza",
        "identificacion": "0900102222",
        "tipo_identificacion": 1,
        "email": "cplaza@gye593.com",
        "direccion": "Calle Uno y Calle Dos",
        "telefono": "043334445"
    },
    "envio_sri": {
        "mensajes": [],
        "estado": "RECIBIDA",
        "fecha": ""
    },
    "tipo_emision": "1",
    "items": [
        {
            "detalles_adicionales": {
                "Estadía": "2 noches",
                "Habitación": "203"
            },
            "cantidad": "1.000000",
            "codigo_principal": "HAB",
            "codigo_auxiliar": "DOB",
            "descripcion": "Habitación doble",
            "precio_unitario": "150.000000",
            "descuento": "0.00",
            "precio_total_sin_impuestos": "",
            "impuestos": [
                {
                    "tarifa": "12.00",
                    "codigo": "2",
                    "codigo_porcentaje": "2",
                    "base_imponible": "150.00",
                    "valor": "18.00"
                }
            ]
        }
    ],
    "autorizacion": {
        "estado": "AUTORIZADO",
        "mensajes": [
            {
                "identificador": "60",
                "mensaje": "ESTE PROCESO FUE REALIZADO EN EL AMBIENTE DE PRUEBAS",
                "tipo": "INFORMATIVO",
                "informacion_adicional": ""
            }
        ],
        "numero": "1505201516323509927125540010266935227",
        "fecha": "2015-05-15T16:32:35.000380"
    }
}
Parámetro Tipo Descripción
secuencial string Número de secuencia de la guía de remisión. Requerido
emisor emisor Información completa del emisor. Requerido
fecha_inicio_transporte string Fecha de emisión en formato AAAA-MM-DDHoraZonaHoraria, definido en el estándar ISO8601.
fecha_fin_transporte string Fecha de emisión en formato AAAA-MM-DDHoraZonaHoraria, definido en el estándar ISO8601.
direccion_partida string Dirección de partida
transportista objeto tipo Transportista Información de la persona que transporta la carga
ambiente integer Pruebas: 1.
Producción 2.
Requerido
tipo_emision integer Emisión normal: 1.
Emisión por indisponibilidad: 2
Requerido
destinatarios listado de objetos tipo destinatario Descripción de destinatarios y la mercadería transportada. Requerido
version string Versión del formato de comprobantes electrónicos de SRI. Si no se especifica, se utilizará la última revisión del formato implementada,
clave_acceso string La clave de acceso representa un identificador único del comprobante. Si esta información no es provista, Dátil la generará.
¿Cómo generar la clave de acceso?
envio_sri objeto tipo envio sri Información luego de enviar el comprobante.
autorizacion objeto tipo autorizacion sri Información de la autorización.org/html/rfc3339#section-5.6)
informacion_adicional objeto Información adicional adjunta al comprobante en forma de diccionario. Ejemplo:
{"email": "juan@empresa.com", "Carga asegurada por": "Securitas"}

Notas de Débito

Emisión de una nota de débito

Operación

POST /debit-notes/issue

Requerimiento

Requerimiento de ejemplo

curl -v https://link.datil.co/debit-notes/issue \
-H "Content-Type: application/json" \
-H "X-Key: <API-key>" \
-H "X-Password: <clave-certificado-firma>" \
-d '{
  "ambiente":1,
  "tipo_emision":1,
  "secuencial":148,
  "fecha_emision":"2015-02-28T11:28:56.782Z",
  "emisor":{
    "ruc":"0910000000001",
    "obligado_contabilidad":true,
    "contribuyente_especial":"12345",
    "nombre_comercial":"XYZ Corp",
    "razon_social":"XYZ Corporación S.A.",
    "direccion":"Av. Primera 234 y calle 5ta",
    "establecimiento":{
      "punto_emision":"002",
      "codigo":"001",
      "direccion":"Av. Primera 234 y calle 5ta"
    }
  },
  "informacion_adicional":{
    "Tiempo de entrega":"5 días"
  },
  "totales":{
    "total_sin_impuestos":4359.54,
    "impuestos":[
      {
        "base_imponible":4359.54,
        "valor":523.14,
        "codigo":"2",
        "codigo_porcentaje":"2",
        "tarifa": 12.0
      }
    ],
    "importe_total":4882.68
  },
  "fecha_emision_documento_modificado": "2015-02-27T11:28:56.782Z",
  "numero_documento_modificado": "001-002-000058473",
  "tipo_documento_modificado": "01",
  "comprador":{
    "email":"juan.perez@xyz.com",
    "identificacion":"0987654321",
    "tipo_identificacion":"05",
    "razon_social":"Juan Pérez",
    "direccion":"Calle única Numero 987",
    "telefono":"046029400"
  },
  "items":[
    {
      "motivo":"Interés por mora",
      "valor":120.89
    }
  ]
}'
import requests, json

nota_debito = {
  "ambiente":1,
  "tipo_emision":1,
  "secuencial":148,
  "fecha_emision":"2015-02-28T11:28:56.782Z",
  "emisor":{
    "ruc":"0910000000001",
    "obligado_contabilidad":true,
    "contribuyente_especial":"12345",
    "nombre_comercial":"XYZ Corp",
    "razon_social":"XYZ Corporación S.A.",
    "direccion":"Av. Primera 234 y calle 5ta",
    "establecimiento":{
      "punto_emision":"002",
      "codigo":"001",
      "direccion":"Av. Primera 234 y calle 5ta"
    }
  },
  "informacion_adicional":{
    "Tiempo de entrega":"5 días"
  },
  "totales":{
    "total_sin_impuestos":4359.54,
    "impuestos":[
      {
        "base_imponible":4359.54,
        "valor":523.14,
        "codigo":"2",
        "codigo_porcentaje":"2",
        "tarifa": 12.0
      }
    ],
    "importe_total":4882.68
  },
  "fecha_emision_documento_modificado": "2015-02-27T11:28:56.782Z",
  "numero_documento_modificado": "001-002-000058473",
  "tipo_documento_modificado": "01",
  "comprador":{
    "email":"juan.perez@xyz.com",
    "identificacion":"0987654321",
    "tipo_identificacion":"05",
    "razon_social":"Juan Pérez",
    "direccion":"Calle única Numero 987",
    "telefono":"046029400"
  },
  "items":[
    {
      "motivo":"Interés por mora",
      "valor":120.89
    }
  ]
}}
cabeceras = {
    'x-key': '<clave-del-api>',
    'x-password': '<clave-certificado-firma>',
    'content-type': 'application/json'}
respuesta = requests.post(
    "https://link.datil.co/debit-notes/issue",
    headers = cabeceras,
    data = json.dumps(nota_debito))
using RestSharp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DatilClient {
  class InvoicingServiceClient {
    static void Main(string[] args) {

      // Este ejemplo utiliza RestSharp 
      // Para instalar anda al menú: tools > Library Package Manager > Package Manager Console
      // copia y pega y presiona enter: Install-Package RestSharp

      var client = new RestClient("https://link.datil.co/");
      var request = new RestRequest("debit-notes/issue", Method.POST);
      request.AddHeader("X-Key", "<clave-del-api>");
      request.AddHeader("X-Password", "<clave-certificado-firma>");

      request.AddBody(@"{
        ""ambiente"":1,
        ""tipo_emision"":1,
        ""secuencial"":148,
        ""fecha_emision"":""2015-02-28T11:28:56.782Z"",
        ""emisor"":{
          ""ruc"":""0910000000001"",
          ""obligado_contabilidad"":true,
          ""contribuyente_especial"":""12345"",
          ""nombre_comercial"":""XYZ Corp"",
          ""razon_social"":""XYZ Corporación S.A."",
          ""direccion"":""Av. Primera 234 y calle 5ta"",
          ""establecimiento"":{
            ""punto_emision"":""002"",
            ""codigo"":""001"",
            ""direccion"":""Av. Primera 234 y calle 5ta""
          }
        },
        ""moneda"":""USD"",
        ""informacion_adicional"":{
          ""Tiempo de entrega"":""5 días""
        },
        ""totales"":{
          ""total_sin_impuestos"":4359.54,
          ""impuestos"":[
            {
              ""base_imponible"":0.0,
              ""valor"":0.0,
              ""codigo"":""2"",
              ""codigo_porcentaje"":""0"",
              ""tarifa"": 12.0
            },
            {
              ""base_imponible"":4359.54,
              ""valor"":523.14,
              ""codigo"":""2"",
              ""codigo_porcentaje"":""2""
            }
          ],
          ""total"":4882.68,
          ""propina"":0.0,
          ""descuento"":0.0
        },
        ""comprador"":{
          ""email"":""juan.perez@xyz.com"",
          ""identificacion"":""0987654321"",
          ""tipo_identificacion"":""05"",
          ""razon_social"":""Juan Pérez"",
          ""direccion"":""Calle única Numero 987"",
          ""telefono"":""046029400""
        },
        ""items"":[
          {
            ""cantidad"":622.0,
            ""codigo_principal"":""ZNC""
            ""codigo_auxiliar"": ""050"",
            ""precio_unitario"": 7.01,
            ""descripcion"": ""Zanahoria granel  50 Kg."",
            ""precio_total_sin_impuestos"": 4360.22,
            ""impuestos"": [
              {
                ""base_imponible"":4359.54,
                ""valor"":523.14,
                ""tarifa"":12.0,
                ""codigo"":""2"",
                ""codigo_porcentaje"":""2""
              }
            ],
            ""detalles_adicionales"": {
              ""Peso"":""5000.0000""
            },
            ""descuento"": 0.0
          }
        ]
      }");

      IRestResponse response = client.Execute(request);

      Console.WriteLine(response.Content);
      Console.ReadLine();
    }
  }
}

Para la emisión de una nota de débito se debe enviar la información completa del comprobante en el cuerpo del requerimiento en formato JSON.

Parámetro Tipo Descripción
secuencial string Número de secuencia de la nota de débito. Requerido
emisor emisor Información completa del emisor. Requerido
fecha_emision string Fecha de emisión en formato AAAA-MM-DDHoraZonaHoraria, definido en el estándar ISO8601.
ambiente integer Pruebas: 1.
Producción 2.
Requerido
totales objeto tipo totales Listado de totales. Requerido
fecha_emision_documento_modificado string Fecha de emisión en formato AAAA-MM-DDHoraZonaHoraria, definido en el estándar ISO8601. Requerido
numero_documento_modificado string Número completo del documento que se está afectando. Normalmente facturas. Ejm: 001-002-010023098 Requerido
tipo_documento_modificado string Códigos de tipos de documentos. Requerido
motivos arreglo de objetos tipo motivo Motivo o mitivos del débito. Ejm: Interés por mora. Requerido
tipo_emision integer Emisión normal: 1.
Emisión por indisponibilidad: 2
Requerido
version string Versión del formato de comprobantes electrónicos de SRI. Si no se especifica, se utilizará la última revisión del formato implementada,
clave_acceso string La clave de acceso representa un identificador único del comprobante. Si esta información no es provista, Dátil la generará.
¿Cómo generar la clave de acceso?
informacion_adicional objeto Información adicional adjunta al comprobante en forma de diccionario. Ejemplo:
{"plan": "Inicial", "vigencia": "1 mes"}

Totales

Parámetro Tipo Descripción
total_sin_impuestos float Total antes de los impuestos. Requerido
importe_total float Total incluyendo impuestos. Requerido
impuestos listado de objetos impuesto Impuestos aplicados al total de cargos. Requerido

Impuesto

Parámetro Tipo Descripción
codigo string Código del tipo de impuesto
codigo_porcentaje string Código del porcentaje.
base_imponible float Base imponible.
valor float Valor del total.
tarifa float Porcentaje actual del impuesto expresado por un número entre 0.0 y 100.0

Respuesta

Respuesta de ejemplo

{
  "id": "abcdef09876123cea56784f01",
  "ambiente":1,
  "tipo_emision":1,
  "secuencial":148,
  "fecha_emision":"2015-02-28T11:28:56.782Z",
  "clave_acceso": "2802201501091000000000120010010000100451993736618",
  "emisor":{
    "ruc": "0910000000001",
    "obligado_contabilidad": true,
    "contribuyente_especial": "12345",
    "nombre_comercial": "XYZ Corp",
    "razon_social": "XYZ Corporación S.A.",
    "direccion": "Av. Primera 234 y calle 5ta",
    "establecimiento": {
      "punto_emision": "002",
      "codigo": "001",
      "direccion": "Av. Primera 234 y calle 5ta"
    }
  },
  "moneda": "USD",
  "informacion_adicional": {
    "Tiempo de entrega": "5 días"
  },
  "totales": {
    "total_sin_impuestos": 4359.54,
    "impuestos": [
      {
        "base_imponible": 0.0,
        "valor": 0.0,
        "codigo": "2",
        "codigo_porcentaje": "0",
        "tarifa": 0.0
      },
      {
        "base_imponible": 4359.54,
        "valor": 523.14,
        "codigo": "2",
        "codigo_porcentaje": "2",
        "tarifa": 12.0
      }
    ],
    "importe_total": 4882.68,
    "propina": 0.0,
    "descuento": 0.0
  },
  "comprador": {
    "email": "juan.perez@xyz.com",
    "identificacion": "0987654321",
    "tipo_identificacion": "05",
    "razon_social": "Juan Pérez",
    "direccion": "Calle única Numero 987",
    "telefono": "046029400"
  },
  "items":[
    {
      "cantidad": 622.0,
      "codigo_principal": "ZNC",
      "codigo_auxiliar": "050",
      "precio_unitario": 7.01,
      "descripcion": "Zanahoria granel  50 Kg.",
      "precio_total_sin_impuestos": 4360.22,
      "impuestos":[
        {
          "base_imponible": 4359.54,
          "valor": 523.14,
          "tarifa": 12.0,
          "codigo": "2",
          "codigo_porcentaje": "2"
        }
      ],
      "detalles_adicionales": {
        "Peso": "5000.0000"
      },
      "descuento": 0.0
    }
  ]
}

Retorna un objeto tipo nota de débito que incluye un nuevo parámetro id, el cual identifica de manera única a la nota de débito. El campo clave_acceso generado también se incluirá como parte de la respuesta.

Consulta de una nota de débito

Consulta una nota de débito para obtener toda la información del comprobante, incluyendo el estado del mismo. El parámetro estado de la respuesta obtenida al invocar esta operación, indica el estado actual del comprobante.

Si es necesario conocer en detalle, en que estado del proceso de emisión, se debe examinar los parámetros envio_sri y autorizacion_sri de la respuesta.

Operación

GET /debit-notes/<invoice-id>

Requerimiento

Requerimiento de ejemplo

curl -v https://link.datil.co/debit-notes/<id-notacredito> \
-H "Content-Type: application/json" \
-H "X-Key: <clave-del-api>" \
-H "X-Password: <clave-certificado-firma>" \
import requests
cabeceras = {'x-key': '<clave-del-api>'}
respuesta = requests.get(
    'https://link.datil.co/debit-notes/<id-notacredito>',
    headers = cabeceras)
using RestSharp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DatilClient {
  class InvoicingServiceClient {
    static void Main(string[] args) {

      var client = new RestClient("https://link.datil.co/");
      var idNotaCredito = "<id-notacredito>";
      var request = new RestRequest("invoices/" + idNotaCredito, Method.GET);
      request.AddHeader("X-Key", "<clave-del-api>");

      IRestResponse response = client.Execute(request);

      Console.WriteLine(response.Content);
    }
  }
}

Reemplaza en la ruta <invoice-ID> por el id de la nota de débito que necesitas consultar.

Respuesta

Respuesta de ejemplo

{
    "id": "abcf12343faad06785",
    "secuencial": "16",
    "fecha_emision": "2015-05-15",
    "version": "1.0.0",
    "clave_acceso": "1505201501099271255400110011000000000162092727615",
    "emisor": {
        "ruc": "0992712554001",
        "razon_social": "DATILMEDIA S.A.",
        "nombre_comercial": "Dátil",
        "direccion": null,
        "obligado_contabilidad": true,
        "contribuyente_especial": "",
        "establecimiento": {
            "codigo": "001",
            "direccion": "V.E. 112 Y CIRCUNVALACION NORTE",
            "punto_emision": "100"
        }
    },
    "estado": "AUTORIZADO",
    "correos_enviados": [
        {
            "fecha_envio": "2015-05-15T16:36:48.274604",
            "destinatarios": "juanantonioplaza@datilmedia.com"
        }
    ],
    "guia_remision": "",
    "moneda": "USD",
    "informacion_adicional": [],
    "ambiente": "1",
    "totales": {
        "total_sin_impuestos": "150.00",
        "descuento": "0.00",
        "propina": "0.00",
        "impuestos": [
            {
                "codigo": 2,
                "codigo_porcentaje": "2",
                "base_imponible": "150.00",
                "valor": "18.00"
            }
        ],
        "importe_total": "168.00"
    },
    "comprador": {
        "razon_social": "Carlos L. Plaza",
        "identificacion": "0900102222",
        "tipo_identificacion": 1,
        "email": "cplaza@gye593.com",
        "direccion": "Calle Uno y Calle Dos",
        "telefono": "043334445"
    },
    "envio_sri": {
        "mensajes": [],
        "estado": "RECIBIDA",
        "fecha": ""
    },
    "tipo_emision": "1",
    "items": [
        {
            "detalles_adicionales": {
                "Estadía": "2 noches",
                "Habitación": "203"
            },
            "cantidad": "1.000000",
            "codigo_principal": "HAB",
            "codigo_auxiliar": "DOB",
            "descripcion": "Habitación doble",
            "precio_unitario": "150.000000",
            "descuento": "0.00",
            "precio_total_sin_impuestos": "",
            "impuestos": [
                {
                    "tarifa": "12.00",
                    "codigo": "2",
                    "codigo_porcentaje": "2",
                    "base_imponible": "150.00",
                    "valor": "18.00"
                }
            ]
        }
    ],
    "autorizacion": {
        "estado": "AUTORIZADO",
        "mensajes": [
            {
                "identificador": "60",
                "mensaje": "ESTE PROCESO FUE REALIZADO EN EL AMBIENTE DE PRUEBAS",
                "tipo": "INFORMATIVO",
                "informacion_adicional": ""
            }
        ],
        "numero": "1505201516323509927125540010266935227",
        "fecha": "2015-05-15T16:32:35.000380"
    }
}
Parámetro Tipo Descripción
secuencial string Número de secuencia de la nota de débito.
estado string Posibles valores: AUTORIZADO, NO AUTORIZADO, ENVIADO, DEVUELTO, RECIBIDO
fecha_emision string Fecha de emisión en formato AAAA-MM-DDHoraZonaHoraria, definido en el estándar [ISO8601](http://tools.ietf.
clave_acceso string La clave de acceso representa un identificador único del comprobante. Si esta información no es provista, Dátil la generará.
¿Cómo generar la clave de acceso?
envio_sri objeto tipo envio sri Información luego de enviar el comprobante.
autorizacion objeto tipo autorizacion sri Información de la autorización.org/html/rfc3339#section-5.6).
emisor objeto tipo emisor Información completa del emisor.
moneda string Código ISO de la moneda.
ambiente integer Pruebas: 1.
Producción 2.
totales objeto tipo totales Listado de totales.
comprador objeto comprador Información del comprador.
tipo_emision integer Emisión normal: 1.
Emisión por indisponibilidad: 2
items listado de objetos tipo item Items incluídos en la nota de débito.
version string Versión de la especificación, opciones válidas: 1.0.0, 1.1.0

Clave de acceso

El sistema se encarga de generar automáticamente la clave de acceso de cada comprobante y luego retornarla como parte de la respuesta de emisión del mismo. Pero es posible también proveer la clave de acceso si se requiere tener control en la generación de esta clave. La siguiente documentación explica como debe estar estructurada la clave de acceso.

Las claves de acceso estarán compuestas de 49 caracteres numéricos, la herramienta o aplicativo a utilizar por el sujeto pasivo deberá generar de manera automática la clave de acceso, que constituirá un requisito que dará el carácter de único a cada uno de los comprobantes, y la misma servirá para que el SRI indique si el comprobante es autorizado o no; se describe a continuación su conformación:

Campo Formato Longitud
Fecha de Emisión ddmmaaaa 8
Tipo de Comprobante Tabla 4 2
Número de RUC 1234567890001 13
Tipo de Ambiente Tabla 5 1
Serie 001001 6
Número del Comprobante (secuencial) 000000001 9
Código Numérico Numérico 8
Tipo de Emisión Tabla 2 1
Dígito Verificador (módulo 11 ) Numérico 1

Nota: Todos los campos deben completarse conforme a la longitud indicada, es decir si en el número secuencial no completa los 9 dígitos, la clave de acceso estará mal conformada y será motivo de rechazo de la autorización en línea.

El dígito verificador será aplicado sobre toda la clave de acceso (48 dígitos) y deberá ser incorporado por el contribuyente a través del método denominado Módulo 11, con un factor de chequeo ponderado (2), este mecanismo de detección de errores, será verificado al momento de la recepción del comprobante. Cuando el resultado del dígito verificador obtenido sea igual a once (11), el digito verificador será el cero (0) y cuando el resultado del dígito verificador obtenido sea igual a diez 10, el digito verificador será el uno (1).

El código numérico constituye un mecanismo para brindar seguridad al emisor en cada comprobante emitido, el algoritmo numérico para conformar este código es potestad absoluta del contribuyente emisor.

Ver aquí ejemplo de verificación utilizando algoritmo de módulo 11.

Objetos comunes

Emisor

Información del emisor de un comprobante.

Parámetro Tipo Descripción
ruc string Número de RUC de 13 caracteres
razon_social string Razón social. Máximo 300 caracteres
nombre_comercial string Nombre comercial. Máximo 300 caracteres
direccion string Dirección registrada en el SRI. Máximo 300 caracteres.
contribuyente_especial string Número de resolución. En blanco si no es contribuyente especial.
obligado_contabilidad boolean true si está obligado a llevar contabilidad.
establecimiento establecimiento Establecimiento que emite la factura.

Establecimiento

Representa un establecimiento del comercio.

Parámetro Tipo Descripción
codigo string Código numérico de 3 caracteres que representa al establecimiento. Ejemplo: 001
direccion string Dirección registrada en el SRI. Máximo 300 caracteres
punto_emision string Código numérico de 3 caracteres que representa al punto de emisión, o punto de venta. Ejemplo: 001

Persona

Datos de una persona. Utilizado como comprador en facturas y notas de crédito, como sujeto en retenciones

Parámetro Tipo Descripción
razon_social string Razón social. Máximo 300 caracteres. Requerido
identificacion string De 5 a 20 caracteres. Requerido
tipo_identificacion string Ver tabla de tipos de identificación Requerido
email string Correo electrónico. Máximo 300 caracteres. Requerido
telefono string Teléfono.
direccion string Dirección

Tipo de identificación

Tipo de identificación Código
RUC 04
CEDULA 05
PASAPORTE 06
VENTA A CONSUMIDOR FINAL* 07
IDENTIFICACION DELEXTERIOR* 08
PLACA 09

Total Impuesto

Parámetro Tipo Descripción
codigo string Código del tipo de impuesto
codigo_porcentaje string Código del porcentaje.
base_imponible float Base imponible.
valor float Valor del total.

Impuesto Item

Parámetro Tipo Descripción
codigo string Código del tipo de impuesto
codigo_porcentaje string Código del porcentaje.
base_imponible float Base imponible.
valor float Valor del total.
tarifa float Porcentaje actual del impuesto expresado por un número entre 0.0 y 100.0

Envío SRI

Contiene la información y el estado de la fase de envío al SRI

Parámetro Tipo Descripción
mensajes listado de objeto mensaje SRI Listado de mensajes.
estado string Posibles valores: RECIBIDA, DEVUELTA
fecha string Fecha en la que se realizó el envío en formato AAAA-MM-DDHoraZonaHoraria, definido en el estándar ISO8601.

Autorización SRI

Contiene la información y el estado de la fase de autorización del comprobante.

Parámetro Tipo Descripción
mensajes listado de objeto mensaje SRI Listado de mensajes.
estado string Posibles valores: AUTORIZADO, NO AUTORIZADO
numero string Número de autorización.
fecha string Fecha en la que se otorgó la autorización en formato AAAA-MM-DDHoraZonaHoraria, definido en el estándar ISO8601.

Mensajes de respuesta SRI

Parámetro Tipo Descripción
identificador string Número con el que el SRI identifica al mensaje.
mensaje string Descripción del error, información o advertencia.
tipo string Posibles valores: INFORMATIVO, ADVERTENCIA, ERROR
informacion_adicional string Información adicional del mensaje.

Item de factura y nota de crédito

Representa un producto o servicio del comercio.

Parámetro Tipo Descripción
descripcion string Descripción del ítem. Requerido
codigo_principal string Código alfanumérico de uso del comercio. Máximo 25 caracteres.
codigo_auxiliar string Código alfanumérico de uso del comercio. Máximo 25 caracteres.
cantidad float Cantidad de items. Requerido
precio_unitario float Precio unitario. Requerido
descuento float El descuento es aplicado por cada producto, expresado en valor monetario. Requerido
precio_total_sin_impuestos float Precio antes de los impuestos. Se obtiene multiplicando la cantidad por el precio_unitario
unidad_medida string Unidad de medida Requerido para facturas de exportación
impuestos listado de objetos tipo impuesto item Impuestos grabados sobre el producto. Requerido
detalles_adicionales object Diccionario de datos de carácter adicional. Ejemplo:
{"marca": "Ferrari", "chasis": "UANEI832-NAU101"}

Retención en factura

Caso específico de Retenciones en la Comercializadores / Distribuidores de derivados del Petróleo y Retención presuntiva de IVA a los Editores, Distribuidores y Voceadores que participan en la comercialización de periódicos y/o revistas.

Parámetro Tipo Descripción
codigo string Código del tipo de impuesto para la retención en la factura. Requerido
codigo_porcentaje string Código del porcentaje del impuesto. Requerido
tarifa float Porcentaje actual del impuesto. Máximo 3 enteros y 2 decimales. Requerido
valor float Valor del impuesto. Máximo 12 enteros y 2 decimales. Requerido

Catálogo

Tipos de impuesto

Impuesto Código
IVA 2
ICE 3
IRBPNR 5

Código de Porcentaje de IVA

Porcentaje de IVA Código Tarifa
0% 0 0
12% 2 12
14% 3 14
No Objeto de Impuesto 6 -
Exento de IVA 7 -

Tipos de impuesto para la retención

Impuesto Código
RENTA 1
IVA 2
ISD 6

Tipos de impuesto para la retención en la factura

Caso específico de Retenciones en la Comercializadores / Distribuidores de derivados del Petróleo y Retención presuntiva de IVA a los Editores, Distribuidores y Voceadores que participan en la comercialización de periódicos y/o revistas.

Impuesto Código
IVA PRESUNTIVO Y RENTA 4

Retención de IVA

Porcentaje IVA Código
10% 9
20% 10
30% 1
70% 2
100% 3

Retención en cero

Porcentaje IVA Código
0% 7

No procede retención

Porcentaje IVA Código
0% 8

Retención ISD

Porcentaje IVA Código
5% 4580

Retención de IVA Presuntivo y Renta

Caso específico de Retenciones en la Comercializadores / Distribuidores de derivados del Petróleo y Retención presuntiva de IVA a los Editores, Distribuidores y Voceadores que participan en la comercialización de periódicos y/o revistas.

Retención IVA

Porcentaje IVA presuntivo Código
100% 3
12% (Editores a Margen de Comercialización Voceadores) 4
100% (Venta periódicos y/o Revistas a Distribuidores) 5
100% (Venta periódicos y/o Revistas a Voceadores) 6

Retención Renta

Porcentaje Renta Código
0.2% 327
0.3% 328

Tipos de documentos

Documento Código
Factura 01
Nota de Crédito 04
Nota de Débito 05
Guía de Remisión 06
Comprobante de Retención 07

Tipos de forma de pago

Forma de pago Código
Efectivo efectivo
Cheque cheque
Débito de cuenta bancaria debito_cuenta_bancaria
Transferencia bancaria transferencia
Depósito en cuenta (Corriente / Ahorros) deposito_cuenta_bancaria
Tarjeta de débito tarjeta_debito
Dinero electrónico Ecuador dinero_electronico_ec
Tarjeta prepago tarjeta_prepago
Tarjeta de crédito tarjeta_credito
Otros otros
Endoso de títulos endoso_titulos

Equivalencia entre formas de pago Dátil y formas de pago del SRI

Forma de pago Dátil Código Forma de pago SRI Código
Efectivo efectivo Sin utilización del sistema financiero 01
Cheque cheque Otros con utilización del sistema financiero 20
Débito bancario debito_cuenta_bancaria Otros con utilización del sistema financiero 20
Transferencia bancaria transferencia Otros con utilización del sistema financiero 20
Tarjeta de crédito tarjeta_credito Tarjeta de crédito nacional 19
Depósito en cuenta (Corriente / Ahorros) deposito_cuenta_bancaria Otros con utilización del sistema financiero 20
Tarjeta de débito tarjeta_debito Tarjeta de débito 16
Dinero electrónico Ecuador dinero_electronico_ec Dinero electrónico 17
Tarjeta prepago tarjeta_prepago Tarjeta prepago 18
Otros otros Otros con utilización del sistema financiero 20
Endoso de títulos endoso_titulos Endoso de títulos 21

Debido a que el Servicio de Rentas Internas exige incluir información del pago, las facturas a crédito se enviarán al SRI con forma de pago “Otros con utilización del sistema financiero”.

Errores

Listado de códigos de error y su significado.

Código Significado
400 Bad Request – La información provista está mal formada o incompleta.
401 Unauthorized – Tu clave de API
403 Forbidden –
404 Not Found – El recurso especificado no existe.
405 Method Not Allowed –
406 Not Acceptable –
500 Internal Server Error – Error en el sistema.
503 Service Unavailable – Servicio temporalmente fuera de línea. Intenta más tarde.

Notificaciones

Dátil emite notificaciones cada vez que un comprobante es emitido. Te podrás suscribir a estas notificaciones proveyendo una URL en donde recibir los datos del comprobante emitido.

Suscripción

Para suscribirte a las notificaciones envía un requerimiento a:

Operación

POST /webhooks

Requerimiento

Requerimiento de ejemplo

curl -v https://link.datil.co/webhooks \
-H "Content-Type: application/json" \
-H "X-Key: <clave-del-api>" \
-H "X-Password: <clave-certificado-firma>" \
-d '{
  "event_name": "receipt-issued",
  "webhook_url": "http://www.b2b.com/ereceipts/receive"
}'
import requests
cabeceras = {'x-key': '<clave-del-api>'}
suscripcion = {
  "event_name": "receipt-issued",
  "webhook_url": "http://www.b2b.com/ereceipts/receive"}

respuesta = requests.post(
    'https://link.datil.co/webhooks',
    headers = cabeceras,
    data = json.dumps(suscripcion))
using RestSharp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DatilClient {
  class InvoicingServiceClient {
    static void Main(string[] args) {

      // Este ejemplo utiliza RestSharp 
      // Para instalar anda al menú: tools > Library Package Manager > Package Manager Console
      // copia y pega y presiona enter: Install-Package RestSharp

      var client = new RestClient("https://link.datil.co/");
      var idFactura = "<id-factura>";
      var request = new RestRequest("invoices/" + idFactura, Method.POST);
      request.AddHeader("X-Key", "<clave-del-api>");
      request.AddBody(@"{
        ""event_name"": "receipt-issued",
        ""webhook_url"": "http://www.b2b.com/ereceipts/receive"
      }");

      IRestResponse response = client.Execute(request);

      Console.WriteLine(response.Content);
    }
  }
}
Parámetro Tipo Descripción
event_name string Podrá ser receipt-issued o issue-error. Requerido
webhook_url string Dirección donde se recibirá la información en formato JSON Requerido

El evento receipt-issued es emitido cuando el proceso de emisión termina correctamente. Los posibles estados de un comprobante al terminar de ser procesado correctamente pueden ser:

El evento issue-error es emitido cuando ocurre un error en uno de los pasos del proceso de emisión. Los posibles estados de un comprobante al terminar de ser procesado correctamente pueden ser:

Eventos

Al ejecutarse un evento se enviará en un requerimiento tipo POST, la información completa del comprobante en conjunto con la autorización a la dirección registrada como webhook_url al momento de la suscripción.

Autorizado

Un comprobante Autorizado contendrá información como el siguiente ejemplo:

{
  "secuencial":1267,
  "fecha_emision":"2015-12-04T19:28:56.782Z",
  "emisor":{
    "ruc":"0992712554001",
    "obligado_contabilidad":true,
    "contribuyente_especial":"",
    "nombre_comercial":"Datilmedia",
    "razon_social":"Datilmedia S.A.",
    "direccion":"Kennedy Norte Av. Miguel H. Alcivar",
    "establecimiento":{
      "punto_emision":"002",
      "codigo":"001",
      "direccion":"Calle A"
    },
    "email":"clientes@datilmedia.com"
  },
  "guia_remision":"001-002-007654320",
  "tipo":"factura",
  "moneda":"USD",
  "id":"1ae2afaf6fed46dcabb14d424311e232",
  "informacion_adicional":{
    "Tiempo de entrega":"5 días"
  },
  "ambiente":1,
  "totales":{
    "total_sin_impuestos":4359.54,
    "impuestos":[
      {
        "base_imponible":0.0,
        "valor":0.0,
        "codigo":"2",
        "codigo_porcentaje":"0"
      },
      {
        "base_imponible":4359.54,
        "valor":523.14,
        "codigo":"2",
        "codigo_porcentaje":"2"
      }
    ],
    "importe_total":4882.68,
    "propina":0.0,
    "descuento":0.0
  },
  "comprador":{
    "identificacion":"0924447956001",
    "tipo_identificacion":"04",
    "razon_social":"Juan Antonio Plaza",
    "direccion":"Calle única Numero: S/N",
    "telefono":"046015159",
    "email":"jplazaarguello@gmail.com"
  },
  "tipo_emision":1,
  "items":[
    {
      "precio_unitario":7.01,
      "descripcion":"CEMENTO ROCA 50 KG. (1) 40U C/PALET",
      "precio_total_sin_impuestos":4359.54,
      "impuestos":[
        {
          "base_imponible":4359.54,
          "valor":523.14,
          "tarifa":12.0,
          "codigo":"2",
          "codigo_porcentaje":"2"
        }
      ],
      "detalles_adicionales":{
        "Peso":"5000.0000",
        "Volumen":"1 Gl"
      },
      "cantidad":622.0,
      "codigo_auxiliar":"CTO2",
      "descuento":0.0,
      "codigo_principal":"CTO1"
    }
  ],
  "version":"1.0.0",
  "clave_acceso":"0412201501099271255400110010020000012671994716611",
  "api-key":"abcxyz1234567890mnbvqwe321tyu653",
  "autorizacion":{
    "numero":"0412201516042509927125540010331009539",
    "fecha":"2015-12-04T16:04:25",
    "estado":"AUTORIZADO",
    "mensajes":[

    ]
  }
}

No Autorizado

Un comprobante No autorizado contendrá información como el siguiente ejemplo:

{
  "secuencial":1267,
  "fecha_emision":"2015-12-04T19:28:56.782Z",
  "emisor":{
    "ruc":"0992712554001",
    "obligado_contabilidad":true,
    "contribuyente_especial":"",
    "nombre_comercial":"Datilmedia",
    "razon_social":"Datilmedia S.A.",
    "direccion":"Kennedy Norte Av. Miguel H. Alcivar",
    "establecimiento":{
      "punto_emision":"002",
      "codigo":"001",
      "direccion":"Calle A"
    },
    "email":"clientes@datilmedia.com"
  },
  "guia_remision":"001-002-007654320",
  "tipo":"factura",
  "moneda":"USD",
  "id":"1ae2afaf6fed46dcabb14d424311e232",
  "informacion_adicional":{
    "Tiempo de entrega":"5 días"
  },
  "ambiente":1,
  "totales":{
    "total_sin_impuestos":4359.54,
    "impuestos":[
      {
        "base_imponible":0.0,
        "valor":0.0,
        "codigo":"2",
        "codigo_porcentaje":"0"
      },
      {
        "base_imponible":4359.54,
        "valor":523.14,
        "codigo":"2",
        "codigo_porcentaje":"2"
      }
    ],
    "importe_total":4882.68,
    "propina":0.0,
    "descuento":0.0
  },
  "comprador":{
    "identificacion":"0924447956001",
    "tipo_identificacion":"04",
    "razon_social":"Juan Antonio Plaza",
    "direccion":"Calle única Numero: S/N",
    "telefono":"046015159",
    "email":"jplazaarguello@gmail.com"
  },
  "tipo_emision":1,
  "items":[
    {
      "precio_unitario":7.01,
      "descripcion":"CEMENTO ROCA 50 KG. (1) 40U C/PALET",
      "precio_total_sin_impuestos":4359.54,
      "impuestos":[
        {
          "base_imponible":4359.54,
          "valor":523.14,
          "tarifa":12.0,
          "codigo":"2",
          "codigo_porcentaje":"2"
        }
      ],
      "detalles_adicionales":{
        "Peso":"5000.0000",
        "Volumen":"1 Gl"
      },
      "cantidad":622.0,
      "codigo_auxiliar":"CTO2",
      "descuento":0.0,
      "codigo_principal":"CTO1"
    }
  ],
  "version":"1.0.0",
  "clave_acceso":"0412201501099271255400110010020000012671994716611",
  "api-key":"abcxyz1234567890mnbvqwe321tyu653",
  "autorizacion": {
    "numero": "2907201515283909927125540017656314390",
    "fecha": "2015-09-28T19:28:56.782Z",
    "estado": "NO AUTORIZADO",
    "mensajes": [{
      "identificador": 46,
      "mensaje": "RUC NO EXISTE",
      "informacion_adicional": "El RUC debe tener 13 dígitos.",
      "tipo": "ERROR"
    }]
  }
}

Devuelto

Un comprobante Devuelto contendrá información como el siguiente ejemplo:

{
  "secuencial":1267,
  "fecha_emision":"2015-12-04T19:28:56.782Z",
  "emisor":{
    "ruc":"0992712554001",
    "obligado_contabilidad":true,
    "contribuyente_especial":"",
    "nombre_comercial":"Datilmedia",
    "razon_social":"Datilmedia S.A.",
    "direccion":"Kennedy Norte Av. Miguel H. Alcivar",
    "establecimiento":{
      "punto_emision":"002",
      "codigo":"001",
      "direccion":"Calle A"
    },
    "email":"clientes@datilmedia.com"
  },
  "guia_remision":"001-002-007654320",
  "tipo":"factura",
  "moneda":"USD",
  "id":"1ae2afaf6fed46dcabb14d424311e231",
  "informacion_adicional":{
    "Tiempo de entrega":"5 días"
  },
  "ambiente":1,
  "totales":{
    "total_sin_impuestos":4359.54,
    "impuestos":[
      {
        "base_imponible":0.0,
        "valor":0.0,
        "codigo":"2",
        "codigo_porcentaje":"0"
      },
      {
        "base_imponible":4359.54,
        "valor":523.14,
        "codigo":"2",
        "codigo_porcentaje":"2"
      }
    ],
    "importe_total":4882.68,
    "propina":0.0,
    "descuento":0.0
  },
  "comprador":{
    "identificacion":"0924447956001",
    "tipo_identificacion":"04",
    "razon_social":"Juan Antonio Plaza",
    "direccion":"Calle única Numero: S/N",
    "telefono":"046015159",
    "email":"jplazaarguello@gmail.com"
  },
  "tipo_emision":1,
  "items":[
    {
      "precio_unitario":7.01,
      "descripcion":"CEMENTO ROCA 50 KG. (1) 40U C/PALET",
      "precio_total_sin_impuestos":4359.54,
      "impuestos":[
        {
          "base_imponible":4359.54,
          "valor":523.14,
          "tarifa":12.0,
          "codigo":"2",
          "codigo_porcentaje":"2"
        }
      ],
      "detalles_adicionales":{
        "Peso":"5000.0000",
        "Volumen":"1 Gl"
      },
      "cantidad":622.0,
      "codigo_auxiliar":"CTO2",
      "descuento":0.0,
      "codigo_principal":"CTO1"
    }
  ],
  "version":"1.0.0",
  "clave_acceso":"0412201501099271255400110010020000012671994716611",
  "api-key":"abcxyz1234567890mnbvqwe321tyu653",
  "envio_sri":{
    "estado":"DEVUELTA",
    "mensajes":[
      {
        "identificador":"35",
        "mensaje":"ARCHIVO NO CUMPLE ESTRUCTURA XML",
        "tipo":"ERROR",
        "informacion_adicional":"Se encontró el siguiente error en la estructura del comprobante: cvc-minLength-valid: Value '' with length = '0' is not facet-valid with respect to minLength '1' for type '#AnonType_valordetAdicionaldetallesAdicionalesdetalledetallesfactura'."
      }
    ]
  }
}

Error en firma

{
  "secuencial":766,
  "firma":{
    "result":"bad",
    "error":"Clave de firma incorrecta, por favor inténtalo nuevamente.",
    "status":400
  },
  "fecha_emision":"2015-12-16T15:38:01-05:00",
  "emisor":{
    "ruc":"1792478103001",
    "obligado_contabilidad":"true",
    "contribuyente_especial":"",
    "nombre_comercial":"Dátil",
    "razon_social":"Datilmedia S.A.",
    "direccion":"Guayaquil Ecuador",
    "establecimiento":{
      "punto_emision":"003",
      "codigo":"001",
      "direccion":"Av. Primera 123 y Calle 2da, Guayas, Guayaquil."
    },
    "email":"jplaza@datilmedia.com"
  },
  "tipo":"factura",
  "moneda":"USD",
  "id":"9d30f85b12435a007ba1235e5007d123",
  "informacion_adicional":null,
  "ambiente":2,
  "certificate-password":null,
  "totales":{
    "total_sin_impuestos":2,
    "impuestos":[
      {
        "base_imponible":2274.11,
        "valor":272.89,
        "codigo":"2",
        "codigo_porcentaje":"2"
      }
    ],
    "importe_total":2547.0,
    "propina":0,
    "descuento":0,
    "descuento_adicional":0
  },
  "comprador":{
    "email":"jplaza@datilmedia.com",
    "identificacion":"0924392929",
    "tipo_identificacion":"04",
    "razon_social":"Juan Antonio Plaza",
    "direccion":"Mall del Sol Piso 3, Guayaquil",
    "telefono":"099999119"
  },
  "tipo_emision":1,
  "items":[
    {
      "cantidad":1,
      "codigo_principal":"8806085980334",
      "precio_unitario":1,
      "descripcion":"TELEVISORES LED 3D SAMSUNG UN55H6400AHXPA",
      "precio_total_sin_impuestos":1,
      "impuestos":[
        {
          "base_imponible":1,
          "valor":0.12,
          "tarifa":12.0,
          "codigo":"2",
          "codigo_porcentaje":"2"
        }
      ],
      "descuento":0
    },
    {
      "cantidad":2,
      "codigo_principal":"8806085462113",
      "precio_unitario":600,
      "descripcion":"LED 46 UN46F5500 SMART SAMSUNG",
      "precio_total_sin_impuestos":1200.00,
      "impuestos":[
        {
          "base_imponible":1200.00,
          "valor":144,
          "tarifa":12,
          "codigo":"2",
          "codigo_porcentaje":"2"
        }
      ],
      "descuento":0
    }
  ],
  "clave_acceso":"1612201501179247810300120010030987657662795494211",
  "api-key":"1b123043215678b890ce7656780032ce"
}