NAV Navbar
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":"2019-10-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",
  "info_adicional":[
    {
      "nombre": "Tiempo de entrega",
      "valor": "5 días"
    }
  ],
  "totales":{
    "total_sin_impuestos":4359.54,
    "impuestos":[
      {
        "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.008907,
      "descuento": 0,
      "descripcion": "Zanahoria granel  50 Kg.",
      "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"
      },
      "descuento": 0.0,
      "unidad_medida": "Kilos"
    }
  ],
  "valor_retenido_iva": 70.40,
  "valor_retenido_renta": 29.60,
  "credito": {
    "fecha_vencimiento": "2019-12-31",
    "monto": 1900.00
  },
  "pagos": [
    {
      "medio": "cheque",
      "total": 2882.68,
      "propiedades": {
        "numero": "1234567890",
        "banco": "Banco Pacífico"
      },
      "notas": "Depositado en cuenta corriente"
    }
  ],
  "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":"2019-10-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",
  "info_adicional":[
    {
      "nombre":"Tiempo de entrega",
      "valor":"5 días"
    }
  ],
  "totales":{
    "total_sin_impuestos":4359.54,
    "impuestos":[
      {
        "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.008907,
      "descuento":0,
      "descripcion": "Zanahoria granel  50 Kg.",
      "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"
      },
      "descuento": 0.0,
      "unidad_medida": "Kilos"
    }
  ],
  "valor_retenido_iva": 70.40,
  "valor_retenido_renta": 29.60,
  "credito": {
    "fecha_vencimiento": "2019-12-28",
    "monto": 1900.00
  },
  "pagos": [
    {
      "medio": "cheque",
      "total": 2882.68,
      "notas": "Depositado en cuenta corriente",
      "propiedades": {
        "numero": "1234567890",
        "banco": "Banco Pacífico"
      }
    }
  ],
  "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"":""2019-09-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,
            ""descuento"": 0,
            ""descripcion"": ""Zanahoria granel  50 Kg."",
            ""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""
            },
            ""descuento"": 0.0,
            ""unidad_medida"": ""Kilos""
          }
      ],
        ""valor_retenido_iva"": 70.40,
        ""valor_retenido_renta"": 29.60,
        ""credito"": {
            ""fecha_vencimiento"": ""2015-03-28"",
            ""monto"": 1900.00
        },
      ""pagos"": [
        {
          ""medio"": ""cheque"",
          ""total"": 2882.68,
          ""notas"": ""Depositado en cuenta corriente"",
          ""propiedades"": {
            ""numero"": ""1234567890"",
            ""banco"": ""Banco Pacífico""
          }
        }
      ],
      ""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 integer (min. 1 - max. 999999999 ) 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 (17 caracteres) 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 (49 caracteres) 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?
info_adicional Listado de objectos de tipo información adicional Información adicional adjunta al comprobante en forma de diccionario. Ejemplo:
[{"nombre":"plan", "valor":"Inicial", "nombre":"vigencia", "valor":"1 mes"}]
informacion_adicional objeto Información adicional adjunta al comprobante en forma de diccionario. Ejemplo:
{"plan": "Inicial", "vigencia": "1 mes"} Obsoleto utiliza el parámetro info_adicional
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 (hasta 2 cifras decimales) Total antes de los impuestos. Requerido
descuento_adicional float (hasta 2 cifras decimales) Descuento aplicado al subtotal de la factura expresado en valor monetario. Obsoleto utiliza el parámetro descuento_adicional incluído en Total Impuesto
descuento float (hasta 2 cifras decimales) Suma de los descuentos de cada ítem y del descuento adicional. Requerido
propina float (hasta 2 cifras decimales) Propina total, llamado también servicio. Requerido
importe_total float (hasta 2 cifras decimales) 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
notas string (máximo 300 caracteres) Texto abierto que te permite registrar cualquier nota relacionada al pago.
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.

Respuesta

Respuesta de ejemplo

{
  "id": "abcdef09876123cea56784f01",
  "ambiente":1,
  "tipo_emision":1,
  "secuencial":148,
  "fecha_emision":"2019-09-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": 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": 4360.22,
          "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": "2019-12-28",
    "monto": 1900.00
  },
  "pagos": [
    {
      "medio": "cheque",
      "total": 2882.68,
      "propiedades": {
        "numero": "1234567890",
        "banco": "Banco Pacífico"
      },
      "notas": "Depositado en cuenta corriente"
    }
  ],
  "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.

Emisión de una factura a partir de XML

Operación

POST /invoices/issue/xml

Requerimiento a partir de XML

Requerimiento de ejemplo

curl -v https://link.datil.co/invoices/issue/xml \
-H "Content-Type: application/json" \
-H "X-Key: <API-key>" \
-H "X-Password: <clave-certificado-firma>" \
-d '{"xml" : "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<factura id= \"comprobante\" version= \"1.1.0\">
    <infoTributaria>
        <ambiente>1</ambiente>
        <tipoEmision>1</tipoEmision>
        <razonSocial>Angel Arreaga</razonSocial>
        <nombreComercial>XYZ</nombreComercial>
        <ruc>0953239092002</ruc>
        <claveAcceso>None</claveAcceso>
        <codDoc>01</codDoc>
        <estab>002</estab>
        <ptoEmi>003</ptoEmi>
        <secuencial>000098431</secuencial>
        <dirMatriz>Mucho Lote 1</dirMatriz>
    </infoTributaria>
    <infoFactura>
        <fechaEmision>17/10/2019</fechaEmision>
        <dirEstablecimiento>Mucho Lote 1</dirEstablecimiento>
        <obligadoContabilidad>NO</obligadoContabilidad>
        <tipoIdentificacionComprador>04</tipoIdentificacionComprador>
        <razonSocialComprador>DATILMEDIA S.A.</razonSocialComprador>
        <identificacionComprador>0992712554001</identificacionComprador>
        <direccionComprador>Entre Guayacanes e Higueras, Guayaquil, Ecuador</direccionComprador>
        <totalSinImpuestos>12.00</totalSinImpuestos>
        <totalDescuento>0.00</totalDescuento>
        <totalConImpuestos>
            <totalImpuesto>
                <codigo>2</codigo>
                <codigoPorcentaje>2</codigoPorcentaje>
                <baseImponible>12.00</baseImponible>
                <valor>1.44</valor>
            </totalImpuesto>
        </totalConImpuestos>
        <propina>0.00</propina>
        <importeTotal>13.44</importeTotal>
        <moneda>DOLAR</moneda>
    </infoFactura>
    <detalles>
        <detalle>
            <codigoPrincipal>105AP1</codigoPrincipal>
            <descripcion>Aceite Protector Madera</descripcion>
            <cantidad>1.000000</cantidad>
            <precioUnitario>12.000000</precioUnitario>
            <unidadMedida>Litro</unidadMedida>
            <descuento>0.00</descuento>
            <precioTotalSinImpuesto>12.00</precioTotalSinImpuesto>
            <impuestos>
                <impuesto>
                    <codigo>2</codigo>
                    <codigoPorcentaje>2</codigoPorcentaje>
                    <tarifa>12.00</tarifa>
                    <baseImponible>12.00</baseImponible>
                    <valor>1.44</valor>
                </impuesto>
            </impuestos>
        </detalle>
    </detalles>
</factura>"}'
import requests, json

factura = {
    "xml" : '''<?xml version="1.0" encoding="UTF-8"?>
    <factura id="comprobante" version="1.1.0">
      <infoTributaria>
          <ambiente>1</ambiente>
          <tipoEmision>1</tipoEmision>
          <razonSocial>XYZ Corporación S.A.</razonSocial>
          <nombreComercial>XYZ Corp</nombreComercial>
          <ruc>0910000000001</ruc>
          <claveAcceso></claveAcceso>
          <codDoc>01</codDoc>
          <estab>002</estab>
          <ptoEmi>003</ptoEmi>
          <secuencial>000098431</secuencial>
          <dirMatriz>Av. Primera 234 y calle 5ta</dirMatriz>
      </infoTributaria>
      <infoFactura>
          <fechaEmision>17/10/2019</fechaEmision>
          <dirEstablecimiento>Av. Primera 234 y calle 5ta</dirEstablecimiento>
          <obligadoContabilidad>SI</obligadoContabilidad>
          <tipoIdentificacionComprador>04</tipoIdentificacionComprador>
          <razonSocialComprador>Juan Pérez</razonSocialComprador>
          <identificacionComprador>0987654321</identificacionComprador>
          <direccionComprador>Calle única Numero 987</direccionComprador>
          <totalSinImpuestos>12.00</totalSinImpuestos>
          <totalDescuento>0.00</totalDescuento>
          <totalConImpuestos>
              <totalImpuesto>
                  <codigo>2</codigo>
                  <codigoPorcentaje>2</codigoPorcentaje>
                  <baseImponible>12.00</baseImponible>
                  <valor>1.44</valor>
              </totalImpuesto>
          </totalConImpuestos>
          <propina>0.00</propina>
          <importeTotal>13.44</importeTotal>
          <moneda>DOLAR</moneda>
      </infoFactura>
      <detalles>
          <detalle>
              <codigoPrincipal>105AP1</codigoPrincipal>
              <descripcion>Aceite Protector Madera</descripcion>
              <cantidad>1.000000</cantidad>
              <precioUnitario>12.000000</precioUnitario>
              <descuento>0.00</descuento>
              <precioTotalSinImpuesto>12.00</precioTotalSinImpuesto>
              <impuestos>
                  <impuesto>
                      <codigo>2</codigo>
                      <codigoPorcentaje>2</codigoPorcentaje>
                      <tarifa>12.00</tarifa>
                      <baseImponible>12.00</baseImponible>
                      <valor>1.44</valor>
                  </impuesto>
              </impuestos>
          </detalle>
      </detalles>
    </factura>'''
}

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))

Para la emisión de una factura a partir de un XML se debe enviar el XML como parámetro en el cuerpo del requerimiento en formato JSON. Este XML debe cumplir con la especificación del SRI

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

Respuesta

Respuesta de ejemplo

{
  "id": "abcdef09876123cea56784f01",
  "ambiente":1,
  "tipo_emision":1,
  "secuencial":148,
  "fecha_emision":"2019-09-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": 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": 4360.22,
          "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": "2019-12-28",
    "monto": 1900.00
  },
  "pagos": [
    {
      "medio": "cheque",
      "total": 2882.68,
      "propiedades": {
        "numero": "1234567890",
        "banco": "Banco Pacífico"
      },
      "notas": "Depositado en cuenta corriente"
    }
  ],
  "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.

Emisión de una factura de reembolso

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": "2019-10-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",
  "info_adicional": [{
    "nombre": "Tiempo de entrega",
    "valor": "5 días"
  }],
  "totales": {
    "total_sin_impuestos": 300,
    "impuestos": [{
      "base_imponible": 300,
      "valor": 0.00,
      "codigo": "2",
      "codigo_porcentaje": "6"
    }],
    "importe_total": 300.00,
    "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": 1.0,
    "codigo_principal": "REEM",
    "codigo_auxiliar": "",
    "precio_unitario": 300.00,
    "descuento": 0,
    "descripcion": "Reembolso de gastos",
    "precio_total_sin_impuestos": 300.00,
    "impuestos": [{
      "base_imponible": 300.00,
      "valor": 0.00,
      "tarifa": 0.00,
      "codigo": "2",
      "codigo_porcentaje": "0"
    }],
    "descuento": 0.00
  }],
  "pagos": [{
    "medio": "cheque",
    "total": 300.00,
    "propiedades": {
      "numero": "1234567890",
      "banco": "Banco Pacífico"
    },
    "notas": "Depositado en cuenta corriente"
  }],
  "reembolso": {
    "codigo": "41",
    "documentos": [{
      "codigo_establecimiento": "002",
      "codigo_punto_emision": "003",
      "fecha_emision": "2019-10-28T11:28:56.782Z",
      "identificacion_proveedor": "1790017478001",
      "impuestos": [{
        "base_imponible": 300.00,
        "codigo": "2",
        "codigo_porcentaje": "0",
        "tarifa": 0.00,
        "valor": 0.00
      }],
      "numero_autorizacion": "1234567890",
      "pais_origen_proveedor": "EC",
      "secuencia": 2132,
      "tipo": "01",
      "tipo_identificacion_proveedor": "04",
      "tipo_proveedor": "02"
    }],
    "subtotal": 300.00,
    "total": 300.00,
    "total_impuestos": 0.00
  }
}'
import requests, json

factura = {
  "ambiente": 1,
  "tipo_emision": 1,
  "secuencial": 148,
  "fecha_emision": "2019-10-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",
  "info_adicional": [{
    "nombre": "Tiempo de entrega",
    "valor": "5 días"
  }],
  "totales": {
    "total_sin_impuestos": 300,
    "impuestos": [{
      "base_imponible": 300,
      "valor": 0.00,
      "codigo": "2",
      "codigo_porcentaje": "6"
    }],
    "importe_total": 300.00,
    "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": 1.0,
    "codigo_principal": "REEM",
    "codigo_auxiliar": "",
    "precio_unitario": 300.00,
    "descuento": 0,
    "descripcion": "Reembolso de gastos",
    "precio_total_sin_impuestos": 300.00,
    "impuestos": [{
      "base_imponible": 300.00,
      "valor": 0.00,
      "tarifa": 0.00,
      "codigo": "2",
      "codigo_porcentaje": "0"
    }],
    "descuento": 0.00
  }],
  "pagos": [{
    "medio": "cheque",
    "total": 300.00,
    "propiedades": {
      "numero": "1234567890",
      "banco": "Banco Pacífico"
    },
    "notas": "Depositado en cuenta corriente"
  }],
  "reembolso": {
    "codigo": "41",
    "documentos": [{
      "codigo_establecimiento": "002",
      "codigo_punto_emision": "003",
      "fecha_emision": "2019-10-28T11:28:56.782Z",
      "identificacion_proveedor": "1790017478001",
      "impuestos": [{
        "base_imponible": 300.00,
        "codigo": "2",
        "codigo_porcentaje": "0",
        "tarifa": 0.00,
        "valor": 0.00
      }],
      "numero_autorizacion": "1234567890",
      "pais_origen_proveedor": "EC",
      "secuencia": 2132,
      "tipo": "01",
      "tipo_identificacion_proveedor": "04",
      "tipo_proveedor": "02"
    }],
    "subtotal": 300.00,
    "total": 300.00,
    "total_impuestos": 0.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"": ""2019-10-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"",
        ""info_adicional"": [{
          ""nombre"": ""Tiempo de entrega"",
          ""valor"": ""5 días""
        }],
        ""totales"": {
          ""total_sin_impuestos"": 300,
          ""impuestos"": [{
            ""base_imponible"": 300,
            ""valor"": 0.00,
            ""codigo"": ""2"",
            ""codigo_porcentaje"": ""6""
          }],
          ""importe_total"": 300.00,
          ""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"": 1.0,
          ""codigo_principal"": ""REEM"",
          ""codigo_auxiliar"": "",
          ""precio_unitario"": 300.00,
          ""descuento"": 0,
          ""descripcion"": ""Reembolso de gastos"",
          ""precio_total_sin_impuestos"": 300.00,
          ""impuestos"": [{
            ""base_imponible"": 300.00,
            ""valor"": 0.00,
            ""tarifa"": 0.00,
            ""codigo"": ""2"",
            ""codigo_porcentaje"": ""0""
          }],
          ""descuento"": 0.00
        }],
        ""pagos"": [{
          ""medio"": ""cheque"",
          ""total"": 300.00,
          ""propiedades"": {
            ""numero"": ""1234567890"",
            ""banco"": ""Banco Pacífico""
          },
          ""notas"": ""Depositado en cuenta corriente""
        }],
        ""reembolso"": {
          ""codigo"": ""41"",
          ""documentos"": [{
            ""codigo_establecimiento"": ""002"",
            ""codigo_punto_emision"": ""003"",
            ""fecha_emision"": ""2019-10-28T11:28:56.782Z"",
            ""identificacion_proveedor"": ""1790017478001"",
            ""impuestos"": [{
              ""base_imponible"": 300.00,
              ""codigo"": ""2"",
              ""codigo_porcentaje"": ""0"",
              ""tarifa"": 0.00,
              ""valor"": 0.00
            }],
            ""numero_autorizacion"": ""1234567890"",
            ""pais_origen_proveedor"": ""EC"",
            ""secuencia"": 2132,
            ""tipo"": ""01"",
            ""tipo_identificacion_proveedor"": ""04"",
            ""tipo_proveedor"": ""02""
          }],
          ""subtotal"": 300.00,
          ""total"": 300.00,
          ""total_impuestos"": 0.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 de reembolso se debe enviar la información completa del comprobante en el cuerpo del requerimiento en formato JSON. El total de ítems de la factura de reembolso debe ser igual al total de los documentos.

Parámetro Tipo Descripción
secuencial integer (min. 1 - max. 999999999 ) 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.
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. Para facturas de reembolso el impuesto del ítem es No Objeto de Impuesto 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 (49 caracteres) 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?
info_adicional Listado de objectos de tipo información adicional Información adicional adjunta al comprobante en forma de diccionario. Ejemplo:
[{"nombre":"plan", "valor":"Inicial", "nombre":"vigencia", "valor":"1 mes"}]
informacion_adicional objeto Información adicional adjunta al comprobante en forma de diccionario. Ejemplo:
{"plan": "Inicial", "vigencia": "1 mes"} Obsoleto utiliza el parámetro info_adicional
pagos Listado de objetos tipo pagos Listado de formas de pago aplicables a la factura. Requerido
reembolso objeto tipo reembolso Información de reembolso. Requerido

Totales

Parámetro Tipo Descripción
total_sin_impuestos float Total antes de los impuestos. Requerido
descuento float Suma de los descuentos de cada ítem y del descuento adicional. 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
notas string (máximo 300 caracteres) Texto abierto que te permite registrar cualquier nota relacionada al pago.
propiedades objeto Información adicional adjunta al pago en forma de diccionario. Ejemplo:
{"plazo": "30", "unidad_tiempo": "dias"}

Emisión de una factura con descuentos

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":52,
  "fecha_emision":"2020-06-30T11: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":"001",
      "codigo":"001",
      "direccion":"Av. Primera 234 y calle 5ta"
    }
  },
  "moneda":"USD",
  "info_adicional":[
    {
      "nombre": "Tiempo de entrega",
      "valor": "5 días"
    }
  ],
  "totales":{
    "total_sin_impuestos":14,
    "impuestos":[
      {
        "base_imponible":14,
        "valor":1.56,
        "codigo":"2",
        "codigo_porcentaje":"2"
      }
    ],
    "importe_total":14.56,
    "propina":0.0,
    "descuento":4,
    "descuento_adicional":1
  },
  "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":1,
      "codigo_principal": "ZNC",
      "codigo_auxiliar": "050",
      "precio_unitario": 7,
      "descuento": 1,
      "descripcion": "Zanahoria granel  50 Kg.",
      "precio_total_sin_impuestos": 6,
      "impuestos": [
        {
          "base_imponible":6,
          "valor":0.72,
          "tarifa":12.0,
          "codigo":"2",
          "codigo_porcentaje":"2"
        }
      ],
      "detalles_adicionales": {
        "Peso":"5"
      },
      "unidad_medida": "Kilos"
    },
    {
      "cantidad":2,
      "codigo_principal": "ZNC",
      "codigo_auxiliar": "050",
      "precio_unitario": 5,
      "descuento": 1,
      "descripcion": "Brocoli granel  50 Kg.",
      "precio_total_sin_impuestos": 8,
      "impuestos": [
        {
          "base_imponible":8,
          "valor":0.96,
          "tarifa":12.0,
          "codigo":"2",
          "codigo_porcentaje":"2"
        }
      ],
      "detalles_adicionales": {
        "Peso":"5"
      },
      "unidad_medida": "Kilos"
    }
  ]
}'
import requests, json

factura = {
  "ambiente":1,
  "tipo_emision":1,
  "secuencial":52,
  "fecha_emision":"2020-06-30T11: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":"001",
      "codigo":"001",
      "direccion":"Av. Primera 234 y calle 5ta"
    }
  },
  "moneda":"USD",
  "info_adicional":[
    {
      "nombre": "Tiempo de entrega",
      "valor": "5 días"
    }
  ],
  "totales":{
    "total_sin_impuestos":14,
    "impuestos":[
      {
        "base_imponible":14,
        "valor":1.56,
        "codigo":"2",
        "codigo_porcentaje":"2"
      }
    ],
    "importe_total":14.56,
    "propina":0.0,
    "descuento":4,
    "descuento_adicional":1
  },
  "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":1,
      "codigo_principal": "ZNC",
      "codigo_auxiliar": "050",
      "precio_unitario": 7,
      "descuento": 1,
      "descripcion": "Zanahoria granel  50 Kg.",
      "precio_total_sin_impuestos": 6,
      "impuestos": [
        {
          "base_imponible":6,
          "valor":0.72,
          "tarifa":12.0,
          "codigo":"2",
          "codigo_porcentaje":"2"
        }
      ],
      "detalles_adicionales": {
        "Peso":"5"
      },
      "unidad_medida": "Kilos"
    },
    {
      "cantidad":2,
      "codigo_principal": "ZNC",
      "codigo_auxiliar": "050",
      "precio_unitario": 5,
      "descuento": 1,
      "descripcion": "Brocoli granel  50 Kg.",
      "precio_total_sin_impuestos": 8,
      "impuestos": [
        {
          "base_imponible":8,
          "valor":0.96,
          "tarifa":12.0,
          "codigo":"2",
          "codigo_porcentaje":"2"
        }
      ],
      "detalles_adicionales": {
        "Peso":"5"
      },
      "unidad_medida": "Kilos"
    }
  ]
}

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"":52,
        ""fecha_emision"":""2020-06-30T11: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"":""001"",
            ""codigo"":""001"",
            ""direccion"":""Av. Primera 234 y calle 5ta""
          }
        },
        ""moneda"":""USD"",
        ""info_adicional"":[
          {
            ""nombre"": ""Tiempo de entrega"",
            ""valor"": ""5 días""
          }
        ],
        ""totales"":{
          ""total_sin_impuestos"":14,
          ""impuestos"":[
            {
              ""base_imponible"":14,
              ""valor"":1.56,
              ""codigo"":""2"",
              ""codigo_porcentaje"":""2""
            }
          ],
          ""importe_total"":14.56,
          ""propina"":0.0,
          ""descuento"":4,
          ""descuento_adicional"":1
        },
        ""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"":1,
            ""codigo_principal"": ""ZNC"",
            ""codigo_auxiliar"": ""050"",
            ""precio_unitario"": 7,
            ""descuento"": 1,
            ""descripcion"": ""Zanahoria granel  50 Kg."",
            ""precio_total_sin_impuestos"": 6,
            ""impuestos"": [
              {
                ""base_imponible"":6,
                ""valor"":0.72,
                ""tarifa"":12.0,
                ""codigo"":""2"",
                ""codigo_porcentaje"":""2""
              }
            ],
            ""detalles_adicionales"": {
              ""Peso"":""5""
            },
            ""unidad_medida"": ""Kilos""
          },
          {
            ""cantidad"":2,
            ""codigo_principal"": ""ZNC"",
            ""codigo_auxiliar"": ""050"",
            ""precio_unitario"": 5,
            ""descuento"": 1,
            ""descripcion"": ""Brocoli granel  50 Kg."",
            ""precio_total_sin_impuestos"": 8,
            ""impuestos"": [
              {
                ""base_imponible"":8,
                ""valor"":0.96,
                ""tarifa"":12.0,
                ""codigo"":""2"",
                ""codigo_porcentaje"":""2""
              }
            ],
            ""detalles_adicionales"": {
              ""Peso"":""5""
            },
            ""unidad_medida"": ""Kilos""
          }
        ]
      }");
      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 con descuentos se debe enviar la información completa del comprobante en el cuerpo del requerimiento en formato JSON. Se debe considerar el descuento para las bases imponibles de los items.

Totales

Parámetro Tipo Descripción
total_sin_impuestos float Total antes de los impuestos sin incluir el descuento adicional. Requerido
descuento float Suma de los descuentos de cada ítem y del descuento adicional. Requerido
importe_total float Total incluyendo impuestos. Requerido
impuestos listado de objetos total impuesto Listado de impuesto totalizados. Requerido

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>"
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"
        },
        "notas": "Depositado en cuenta corriente"
      }
    ],
    "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, ERROR
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

Consulta de una factura de reembolso

Consulta una factura de reembolso 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": 148,
  "fecha_emision": "2019-10-28T11:28:56.782Z",
  "version": "1.0.0",
  "clave_acceso": "1505201501099271255400110011000000000162092727615",
  "ambiente": 1,
  "tipo_emision": 1,
  "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"
    }
  },
  "estado": "AUTORIZADO",
  "correos_enviados": [{
    "fecha_envio": "2019-10-28T16:36:48.274604",
    "destinatarios": "juanantonioplaza@datilmedia.com"
  }],
  "moneda": "USD",
  "info_adicional": [{
    "nombre": "Tiempo de entrega",
    "valor": "5 días"
  }],
  "totales": {
    "total_sin_impuestos": 300,
    "impuestos": [{
      "base_imponible": 300,
      "valor": 0.00,
      "codigo": "2",
      "codigo_porcentaje": "6"
    }],
    "importe_total": 300.00,
    "propina": 0.0,
    "descuento": 0.0
  },
  "envio_sri": {
      "mensajes": [],
      "estado": "RECIBIDA",
      "fecha": ""
  },
  "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": 1.0,
    "codigo_principal": "REEM",
    "codigo_auxiliar": "",
    "precio_unitario": 300.00,
    "descuento": 0,
    "descripcion": "Reembolso de gastos",
    "precio_total_sin_impuestos": 300.00,
    "impuestos": [{
      "base_imponible": 300.00,
      "valor": 0.00,
      "tarifa": 0.00,
      "codigo": "2",
      "codigo_porcentaje": "0"
    }],
    "descuento": 0.00
  }],
  "pagos": [{
    "medio": "cheque",
    "total": 300.00,
    "propiedades": {
      "numero": "1234567890",
      "banco": "Banco Pacífico"
    },
    "notas": "Depositado en cuenta corriente"
  }],
  "reembolso": {
    "codigo": "41",
    "documentos": [{
      "codigo_establecimiento": "002",
      "codigo_punto_emision": "003",
      "fecha_emision": "2019-10-28T11:28:56.782Z",
      "identificacion_proveedor": "1790017478001",
      "impuestos": [{
        "base_imponible": 300.00,
        "codigo": "2",
        "codigo_porcentaje": "0",
        "tarifa": 0.00,
        "valor": 0.00
      }],
      "numero_autorizacion": "1234567890",
      "pais_origen_proveedor": "EC",
      "secuencia": 2132,
      "tipo": "01",
      "tipo_identificacion_proveedor": "04",
      "tipo_proveedor": "02"
    }],
    "subtotal": 300.00,
    "total": 300.00,
    "total_impuestos": 0.00
  },
  "autorizacion": {
    "estado": "AUTORIZADO",
    "mensajes": [
      {
        "identificador": "60",
        "mensaje": "ESTE PROCESO FUE REALIZADO EN EL AMBIENTE DE PRUEBAS",
        "tipo": "INFORMATIVO",
        "informacion_adicional": ""
      }
    ],
    "numero": "1505201516323509927125540010266935227",
    "fecha": "2019-10-28T16: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, ERROR
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.
version string Versión de la especificación, opciones válidas: 1.0.0, 1.1.0
reembolso objeto tipo reembolso Información de reembolso.

Re-emisión de una factura

Operación

POST /invoices/:id/reissue

Requerimiento

Requerimiento de ejemplo

curl -v https://link.datil.co/invoices/<id-factura>/reissue \
-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":"2019-10-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",
  "info_adicional":[
    {
      "nombre": "Tiempo de entrega",
      "valor": "5 días"
    }
  ],
  "totales":{
    "total_sin_impuestos":4359.54,
    "impuestos":[
      {
        "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.008907,
      "descuento": 0,
      "descripcion": "Zanahoria granel  50 Kg.",
      "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"
      },
      "descuento": 0.0,
      "unidad_medida": "Kilos"
    }
  ],
  "valor_retenido_iva": 70.40,
  "valor_retenido_renta": 29.60,
  "credito": {
    "fecha_vencimiento": "2019-12-31",
    "monto": 1900.00
  },
  "pagos": [
    {
      "medio": "cheque",
      "total": 2882.68,
      "propiedades": {
        "numero": "1234567890",
        "banco": "Banco Pacífico"
      },
      "notas": "Depositado en cuenta corriente"
    }
  ],
  "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":"2019-10-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",
  "info_adicional":[
    {
      "nombre":"Tiempo de entrega",
      "valor":"5 días"
    }
  ],
  "totales":{
    "total_sin_impuestos":4359.54,
    "impuestos":[
      {
        "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.008907,
      "descuento":0,
      "descripcion": "Zanahoria granel  50 Kg.",
      "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"
      },
      "descuento": 0.0,
      "unidad_medida": "Kilos"
    }
  ],
  "valor_retenido_iva": 70.40,
  "valor_retenido_renta": 29.60,
  "credito": {
    "fecha_vencimiento": "2019-12-28",
    "monto": 1900.00
  },
  "pagos": [
    {
      "medio": "cheque",
      "total": 2882.68,
      "notas": "Depositado en cuenta corriente",
      "propiedades": {
        "numero": "1234567890",
        "banco": "Banco Pacífico"
      }
    }
  ],
  "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/<id-factura>/reissue",
    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 idFactura = "<id-factura>";
      var request = new RestRequest("invoices/" + idFactura + "/reissue", 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"":""2019-09-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,
            ""descuento"": 0,
            ""descripcion"": ""Zanahoria granel  50 Kg."",
            ""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""
            },
            ""descuento"": 0.0,
            ""unidad_medida"": ""Kilos""
          }
      ],
        ""valor_retenido_iva"": 70.40,
        ""valor_retenido_renta"": 29.60,
        ""credito"": {
            ""fecha_vencimiento"": ""2015-03-28"",
            ""monto"": 1900.00
        },
      ""pagos"": [
        {
          ""medio"": ""cheque"",
          ""total"": 2882.68,
          ""notas"": ""Depositado en cuenta corriente"",
          ""propiedades"": {
            ""numero"": ""1234567890"",
            ""banco"": ""Banco Pacífico""
          }
        }
      ],
      ""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();
    }
  }
}

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

Respuesta de ejemplo

{
  "id": "abcdef09876123cea56784f01",
  "ambiente":1,
  "tipo_emision":1,
  "secuencial":148,
  "fecha_emision":"2019-09-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": 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": 4360.22,
          "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": "2019-12-28",
    "monto": 1900.00
  },
  "pagos": [
    {
      "medio": "cheque",
      "total": 2882.68,
      "propiedades": {
        "numero": "1234567890",
        "banco": "Banco Pacífico"
      },
      "notas": "Depositado en cuenta corriente"
    }
  ],
  "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. Sí la factura ya está autorizada se retornará un error.

Creación de una factura

Operación

POST /invoices

Requerimiento

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

Requerimiento de ejemplo

curl -v https://link.datil.co/invoices \
-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":"2019-10-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",
  "info_adicional":[
    {
      "nombre": "Tiempo de entrega",
      "valor": "5 días"
    }
  ],
  "totales":{
    "total_sin_impuestos":4359.54,
    "impuestos":[
      {
        "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.008907,
      "descuento": 0,
      "descripcion": "Zanahoria granel  50 Kg.",
      "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"
      },
      "descuento": 0.0,
      "unidad_medida": "Kilos"
    }
  ],
  "valor_retenido_iva": 70.40,
  "valor_retenido_renta": 29.60,
  "credito": {
    "fecha_vencimiento": "2019-12-31",
    "monto": 1900.00
  },
  "pagos": [
    {
      "medio": "cheque",
      "total": 2882.68,
      "propiedades": {
        "numero": "1234567890",
        "banco": "Banco Pacífico"
      },
      "notas": "Depositado en cuenta corriente"
    }
  ],
  "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":"2019-10-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",
  "info_adicional":[
    {
      "nombre":"Tiempo de entrega",
      "valor":"5 días"
    }
  ],
  "totales":{
    "total_sin_impuestos":4359.54,
    "impuestos":[
      {
        "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.008907,
      "descuento":0,
      "descripcion": "Zanahoria granel  50 Kg.",
      "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"
      },
      "descuento": 0.0,
      "unidad_medida": "Kilos"
    }
  ],
  "valor_retenido_iva": 70.40,
  "valor_retenido_renta": 29.60,
  "credito": {
    "fecha_vencimiento": "2019-12-28",
    "monto": 1900.00
  },
  "pagos": [
    {
      "medio": "cheque",
      "total": 2882.68,
      "notas": "Depositado en cuenta corriente",
      "propiedades": {
        "numero": "1234567890",
        "banco": "Banco Pacífico"
      }
    }
  ],
  "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",
    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", 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"":""2019-09-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,
            ""descuento"": 0,
            ""descripcion"": ""Zanahoria granel  50 Kg."",
            ""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""
            },
            ""descuento"": 0.0,
            ""unidad_medida"": ""Kilos""
          }
      ],
        ""valor_retenido_iva"": 70.40,
        ""valor_retenido_renta"": 29.60,
        ""credito"": {
            ""fecha_vencimiento"": ""2015-03-28"",
            ""monto"": 1900.00
        },
      ""pagos"": [
        {
          ""medio"": ""cheque"",
          ""total"": 2882.68,
          ""notas"": ""Depositado en cuenta corriente"",
          ""propiedades"": {
            ""numero"": ""1234567890"",
            ""banco"": ""Banco Pacífico""
          }
        }
      ],
      ""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();
    }
  }
}

Respuesta

Respuesta de ejemplo

{
  "id": "abcdef09876123cea56784f01",
  "ambiente":1,
  "tipo_emision":1,
  "secuencial":148,
  "fecha_emision":"2019-09-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": 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": 4360.22,
          "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": "2019-12-28",
    "monto": 1900.00
  },
  "pagos": [
    {
      "medio": "cheque",
      "total": 2882.68,
      "propiedades": {
        "numero": "1234567890",
        "banco": "Banco Pacífico"
      },
      "notas": "Depositado en cuenta corriente"
    }
  ],
  "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.

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.008907,
      "descripcion": "Zanahoria granel  50 Kg.",
      "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"
      },
      "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.008907,
      "descripcion": "Zanahoria granel  50 Kg.",
      "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"
      },
      "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.008907,
            ""descripcion"": ""Zanahoria granel  50 Kg."",
            ""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""
            },
            ""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 integer (min. 1 - max. 999999999 ) 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. 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
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.008907,
      "descripcion": "Zanahoria granel  50 Kg.",
      "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"
      },
      "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.

Emisión de una nota de crédito a partir de XML

POST /credit-notes/issue/xml

Requerimiento a partir de XML

Para la emisión de una nota de crédito a partir de un XML se debe enviar contenido del archivo XML como parámetro en el cuerpo del requerimiento en formato JSON. Este XML debe cumplir con la especificación del SRI.

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

Requerimiento de ejemplo

curl -v https://link.datil.co/credit-notes/issue/xml \
-H "Content-Type: application/json" \
-H "X-Key: <API-key>" \
-H "X-Password: <clave-certificado-firma>" \
-d '{"xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<notaCredito id=\"comprobante\" version=\"1.1.0\">
  <infoTributaria>
    <ambiente>1</ambiente>
    <tipoEmision>1</tipoEmision>
    <razonSocial>DATILMEDIA S.A.</razonSocial>
    <nombreComercial>Datil</nombreComercial>
    <ruc>1234567890001</ruc>
    <claveAcceso>0405202004123456789000110010010000000062235571918</claveAcceso>
    <codDoc>04</codDoc>
    <estab>001</estab>
    <ptoEmi>001</ptoEmi>
    <secuencial>000000006</secuencial>
    <dirMatriz>Innvernadero Coworking, Bálsamos 813 entre Guayacanes e Higueras</dirMatriz>
  </infoTributaria>
  <infoNotaCredito>
    <fechaEmision>04/05/2020</fechaEmision>
    <dirEstablecimiento>Innvernadero Coworking, Bálsamos 813 entre Guayacanes e Higueras</dirEstablecimiento>
    <tipoIdentificacionComprador>04</tipoIdentificacionComprador>
    <razonSocialComprador>Juan Pérez</razonSocialComprador>
    <identificacionComprador>0953239092001</identificacionComprador>
    <obligadoContabilidad>NO</obligadoContabilidad>
    <codDocModificado>01</codDocModificado>
    <numDocModificado>001-002-000000001</numDocModificado>
    <fechaEmisionDocSustento>04/05/2020</fechaEmisionDocSustento>
    <totalSinImpuestos>0.45</totalSinImpuestos>
    <valorModificacion>0.68</valorModificacion>
    <moneda>DOLAR</moneda>
    <totalConImpuestos>
      <totalImpuesto>
        <codigo>3</codigo>
        <codigoPorcentaje>3080</codigoPorcentaje>
        <baseImponible>0.45</baseImponible>
        <valor>0.16</valor>
      </totalImpuesto>
      <totalImpuesto>
        <codigo>2</codigo>
        <codigoPorcentaje>2</codigoPorcentaje>
        <baseImponible>0.61</baseImponible>
        <valor>0.07</valor>
      </totalImpuesto>
    </totalConImpuestos>
    <motivo>Motivo de la nota de credito</motivo>
  </infoNotaCredito>
  <detalles>
    <detalle>
      <codigoInterno>AGDAS-001</codigoInterno>
      <descripcion>Agua purificada</descripcion>
      <cantidad>1.000000</cantidad>
      <precioUnitario>0.450000</precioUnitario>
      <descuento>0.00</descuento>
      <precioTotalSinImpuesto>0.45</precioTotalSinImpuesto>
      <impuestos>
        <impuesto>
          <codigo>2</codigo>
          <codigoPorcentaje>2</codigoPorcentaje>
          <tarifa>12.00</tarifa>
          <baseImponible>0.61</baseImponible>
          <valor>0.07</valor>
        </impuesto>
        <impuesto>
          <codigo>3</codigo>
          <codigoPorcentaje>3080</codigoPorcentaje>
          <tarifa>35.00</tarifa>
          <baseImponible>0.45</baseImponible>
          <valor>0.16</valor>
        </impuesto>
      </impuestos>
    </detalle>
  </detalles>
  <infoAdicional>
    <campoAdicional nombre=\"Campo Adicional\">Informacion Adicional</campoAdicional>
  </infoAdicional>
</notaCredito>"}'
import requests, json

nota_credito = {
    "xml": '''<?xml version=\"1.0\" encoding=\"UTF-8\"?>
    <notaCredito id=\"comprobante\" version=\"1.1.0\">
      <infoTributaria>
        <ambiente>1</ambiente>
        <tipoEmision>1</tipoEmision>
        <razonSocial>DATILMEDIA S.A.</razonSocial>
        <nombreComercial>Datil</nombreComercial>
        <ruc>1234567890001</ruc>
        <claveAcceso>0405202004123456789000110010010000000062235571918</claveAcceso>
        <codDoc>04</codDoc>
        <estab>001</estab>
        <ptoEmi>001</ptoEmi>
        <secuencial>000000006</secuencial>
        <dirMatriz>Innvernadero Coworking, Bálsamos 813 entre Guayacanes e Higueras</dirMatriz>
      </infoTributaria>
      <infoNotaCredito>
        <fechaEmision>04/05/2020</fechaEmision>
        <dirEstablecimiento>Innvernadero Coworking, Bálsamos 813 entre Guayacanes e Higueras</dirEstablecimiento>
        <tipoIdentificacionComprador>04</tipoIdentificacionComprador>
        <razonSocialComprador>Juan Pérez</razonSocialComprador>
        <identificacionComprador>0953239092001</identificacionComprador>
        <obligadoContabilidad>NO</obligadoContabilidad>
        <codDocModificado>01</codDocModificado>
        <numDocModificado>001-002-000000001</numDocModificado>
        <fechaEmisionDocSustento>04/05/2020</fechaEmisionDocSustento>
        <totalSinImpuestos>0.45</totalSinImpuestos>
        <valorModificacion>0.68</valorModificacion>
        <moneda>DOLAR</moneda>
        <totalConImpuestos>
          <totalImpuesto>
            <codigo>3</codigo>
            <codigoPorcentaje>3080</codigoPorcentaje>
            <baseImponible>0.45</baseImponible>
            <valor>0.16</valor>
          </totalImpuesto>
          <totalImpuesto>
            <codigo>2</codigo>
            <codigoPorcentaje>2</codigoPorcentaje>
            <baseImponible>0.61</baseImponible>
            <valor>0.07</valor>
          </totalImpuesto>
        </totalConImpuestos>
        <motivo>Motivo de la nota de credito</motivo>
      </infoNotaCredito>
      <detalles>
        <detalle>
          <codigoInterno>AGDAS-001</codigoInterno>
          <descripcion>Agua purificada</descripcion>
          <cantidad>1.000000</cantidad>
          <precioUnitario>0.450000</precioUnitario>
          <descuento>0.00</descuento>
          <precioTotalSinImpuesto>0.45</precioTotalSinImpuesto>
          <impuestos>
            <impuesto>
              <codigo>2</codigo>
              <codigoPorcentaje>2</codigoPorcentaje>
              <tarifa>12.00</tarifa>
              <baseImponible>0.61</baseImponible>
              <valor>0.07</valor>
            </impuesto>
            <impuesto>
              <codigo>3</codigo>
              <codigoPorcentaje>3080</codigoPorcentaje>
              <tarifa>35.00</tarifa>
              <baseImponible>0.45</baseImponible>
              <valor>0.16</valor>
            </impuesto>
          </impuestos>
        </detalle>
      </detalles>
      <infoAdicional>
        <campoAdicional nombre="Campo Adicional">Informacion Adicional</campoAdicional>
      </infoAdicional>
    </notaCredito>'''
}

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/xml",
    headers = cabeceras,
    data = json.dumps(nota_credito))

Respuesta de ejemplo

{
    "secuencial": "000000006",
    "fecha_emision": "2020-05-04T00:00:00-05:19",
    "emisor": {
        "ruc": "1234567890001",
        "razon_social": "DATILMEDIA S.A.",
        "nombre_comercial": "Datil",
        "contribuyente_especial": "",
        "direccion": "Innvernadero Coworking, Bálsamos 813 entre Guayacanes e Higueras",
        "obligado_contabilidad": "NO",
        "establecimiento": {
            "punto_emision": "001",
            "codigo": "001",
            "direccion": "Innvernadero Coworking, Bálsamos 813 entre Guayacanes e Higueras"
        },
        "email": "devops@datilmedia.com"
    },
    "fecha_emision_documento_modificado": "2020-05-04T00:00:00-05:00",
    "es_valida": true,
    "moneda": "USD",
    "id": "21da58fa6ecf4827ae002b8c641e1b00",
    "informacion_adicional": {
        "Campo Adicional": "Informacion Adicional"
    },
    "ambiente": "1",
    "totales": {
        "total_sin_impuestos": 0.45,
        "importe_total": 0.68,
        "impuestos": [
            {
                "codigo": "3",
                "codigo_porcentaje": "3080",
                "base_imponible": 0.45,
                "valor": 0.16
            },
            {
                "codigo": "2",
                "codigo_porcentaje": "2",
                "base_imponible": 0.61,
                "valor": 0.07
            }
        ]
    },
    "comprador": {
        "identificacion": "0953239092001",
        "razon_social": "Juan Pérez",
        "direccion": "",
        "tipo_identificacion": "04"
    },
    "tipo_emision": 1,
    "items": [
        {
            "precio_unitario": 0.45,
            "descripcion": "Agua purificada",
            "precio_total_sin_impuestos": 0.45,
            "impuestos": [
                {
                    "codigo": "2",
                    "tarifa": 12.0,
                    "codigo_porcentaje": "2",
                    "base_imponible": 0.61,
                    "valor": 0.07
                },
                {
                    "codigo": "3",
                    "tarifa": 35.0,
                    "codigo_porcentaje": "3080",
                    "base_imponible": 0.45,
                    "valor": 0.16
                }
            ],
            "detalles_adicionales": {},
            "cantidad": 1.0,
            "codigo_auxiliar": "",
            "descuento": 0.0,
            "codigo_principal": "AGDAS-001"
        }
    ],
    "tipo_documento_modificado": "01",
    "numero_documento_modificado": "001-002-000000001",
    "clave_acceso": "0405202004123456789000110010010000000062235571918",
    "motivo": "Motivo de la nota de credito"
}

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"
        }
    },
    "documento_sustento": {
      "fecha_documento": "2015-05-10",
      "numero_documento": "001-002-000073854",
      "tipo_documento": "01"
    },
    "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, ERROR
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.
documento_sustento objeto tipo documento sustento Información del documento de sustento asociado a la nota de crédito.
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

Re-emisión de una nota de crédito

Operación

POST /credit-notes/:id/reissue

Requerimiento

curl -v https://link.datil.co/credit-notes/<id-notacredito>/reissue \
-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.008907,
      "descripcion": "Zanahoria granel  50 Kg.",
      "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"
      },
      "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.008907,
      "descripcion": "Zanahoria granel  50 Kg.",
      "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"
      },
      "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/<id-notacredito>/reissue",
    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 idNotaCredito = "<id-notacredito>";
      var request = new RestRequest("credit-notes/" + idNotaCredito + "/reissue", 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.008907,
            ""descripcion"": ""Zanahoria granel  50 Kg."",
            ""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""
            },
            ""descuento"": 0.0
          }
        ]
      }");

      IRestResponse response = client.Execute(request);

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

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 nota de crédito recibida al momento de emitirla.

El cuerpo del requerimiento es un objeto nota de crédito con los datos corregidos para que pueda ser procesado y autorizado.

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.008907,
      "descripcion": "Zanahoria granel  50 Kg.",
      "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"
      },
      "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. Sí la nota de crédito ya está autorizada se retornará un error.

Comprobantes de Retención

Emisión de una retención ATS

Operación

POST /ats-retentions/issue

Requerimiento

Requerimiento de ejemplo

curl -v https://link.datil.co/ats-retentions/issue \
-H "Content-Type: application/json" \
-H "X-Key: <API-key>" \
-H "X-Password: <clave-certificado-firma>" \
-d '{
    "ambiente": 1,
    "tipo_emision": 1,
    "secuencia": 14,
    "fecha_emision": "2022-01-25",
    "periodo_fiscal": "01/2022",
    "clave_acceso": "2802201501091000000000120010010000100451993736618",
    "emisor": {
        "ruc": "0910000000001",
        "obligado_contabilidad": true,
        "contribuyente_especial": "12345",
        "regimen_rimpe": "1",
        "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"
        }
    },
    "info_adicional": [
        {
            "nombre": "Enviada al correo electónico",
            "descripcion": "contabilidad@xyz.com"
        }
    ],
    "documentos_soporte": [
        {
            "codigo_sustento": "10",
            "tipo_documento": "41",
            "numero": "002-004-000248967",
            "fecha_emision": "2022-09-25",
            "fecha_registro_contable": "2022-09-20",
            "numero_autorizacion": "2005201901",
            "tipo_pago": "01",
            "total_sin_impuestos": 84.04,
            "total": 88.34,
            "tipo_regimen_fiscal": "01",
            "pais": "AR",
            "aplica_convenio": true,
            "pago_exterior": true,
            "pago_regimen_fiscal": true,
            "impuestos": [
                {
                    "codigo": "2",
                    "codigo_porcentaje": "2",
                    "base_imponible": 18.09,
                    "tarifa": 12.00,
                    "valor": "2.17"
                }
            ],
            "retenciones": [
                {
                    "codigo": "2",
                    "codigo_porcentaje": "10",
                    "base_imponible": 2.17,
                    "tarifa": 20,
                    "valor_retenido": 0.43
                },
                {
                    "codigo": "1",
                    "codigo_porcentaje": "327",
                    "base_imponible": 18.09,
                    "tarifa": 0,
                    "valor_retenido": 0.00,
                    "dividendos": [
                        {
                            "fecha_pago": "2022-01-25",
                            "impuesto_renta": 0.21,
                            "annio_fiscal": 2022
                        }
                    ]
                }
            ],
            "pagos": [
                {
                    "tipo_pago": "20",
                    "total": 88.34
                }
            ],
            "reembolso": {
                "codigo": "41",
                "documentos": [
                    {
                        "codigo_establecimiento": "002",
                        "codigo_punto_emision": "003",
                        "fecha_emision": "2022-09-20",
                        "pais_origen_proveedor": "EC",
                        "identificacion_proveedor": "1790017478001",
                        "tipo_identificacion_proveedor": "04",
                        "numero_autorizacion": "1234567890",
                        "secuencia": 2132,
                        "tipo": "01",
                        "tipo_proveedor": "02",
                        "impuestos": [
                            {
                                "base_imponible": 300.00,
                                "codigo": "2",
                                "codigo_porcentaje": "0",
                                "tarifa": 0.00,
                                "valor": 0.00
                            }
                        ]
                    }
                ],
                "subtotal": 300.00,
                "total": 300.00,
                "total_impuestos": 0.00
            }
        }
    ],
    "tipo_sujeto_retenido": "01",
    "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,
    "secuencia": 14,
    "fecha_emision": "2022-01-25",
    "periodo_fiscal": "01/2022",
    "clave_acceso": "2802201501091000000000120010010000100451993736618",
    "emisor": {
        "ruc": "0910000000001",
        "obligado_contabilidad": true,
        "contribuyente_especial": "12345",
        "regimen_rimpe": "1",
        "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"
        }
    },
    "info_adicional": [
        {
            "nombre": "Enviada al correo electónico",
            "descripcion": "contabilidad@xyz.com"
        }
    ],
    "documentos_soporte": [
        {
            "codigo_sustento": "10",
            "tipo_documento": "41",
            "numero": "002-004-000248967",
            "fecha_emision": "2022-09-25",
            "fecha_registro_contable": "2022-09-20",
            "numero_autorizacion": "2005201901",
            "tipo_pago": "01",
            "total_sin_impuestos": 84.04,
            "total": 88.34,
            "tipo_regimen_fiscal": "01",
            "pais": "AR",
            "aplica_convenio": true,
            "pago_exterior": true,
            "pago_regimen_fiscal": true,
            "impuestos": [
                {
                    "codigo": "2",
                    "codigo_porcentaje": "2",
                    "base_imponible": 18.09,
                    "tarifa": 12.00,
                    "valor": 2.17
                }
            ],
            "retenciones": [
                {
                    "codigo": "2",
                    "codigo_porcentaje": "10",
                    "base_imponible": 2.17,
                    "tarifa": 20,
                    "valor_retenido": 0.43
                },
                {
                    "codigo": "1",
                    "codigo_porcentaje": "327",
                    "base_imponible": 18.09,
                    "tarifa": 0,
                    "valor_retenido": 0.00,
                    "dividendos": [
                        {
                            "fecha_pago": "2022-01-25",
                            "impuesto_renta": 0.21,
                            "annio_fiscal": 2022
                        }
                    ]
                }
            ],
            "pagos": [
                {
                    "tipo_pago": "20",
                    "total": 88.34
                }
            ],
            "reembolso": {
                "codigo": "41",
                "documentos": [
                    {
                        "codigo_establecimiento": "002",
                        "codigo_punto_emision": "003",
                        "fecha_emision": "2022-09-20",
                        "pais_origen_proveedor": "EC",
                        "identificacion_proveedor": "1790017478001",
                        "tipo_identificacion_proveedor": "04",
                        "numero_autorizacion": "1234567890",
                        "secuencia": 2132,
                        "tipo": "01",
                        "tipo_proveedor": "02",
                        "impuestos": [
                            {
                                "base_imponible": 300.00,
                                "codigo": "2",
                                "codigo_porcentaje": "0",
                                "tarifa": 0.00,
                                "valor": 0.00
                            }
                        ]
                    }
                ],
                "subtotal": 300.00,
                "total": 300.00,
                "total_impuestos": 0.00
            }
        }
    ],
    "tipo_sujeto_retenido": "01",
    "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/ats-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("ats-retentions/issue", Method.POST);
      request.AddHeader("X-Key", "<clave-del-api>");
      request.AddHeader("X-Password", "<clave-certificado-firma>");

      request.AddBody(@"{
        ""ambiente"":1,
        ""tipo_emision"":1,
        ""secuencia"":14,
        ""fecha_emision"":""2022-01-25T11:28:56.782Z"",
        ""periodo_fiscal"":""12/2015"",
        ""clave_acceso"": ""2802201501091000000000120010010000100451993736618"",
        ""emisor"":{
          ""ruc"":""0910000000001"",
          ""obligado_contabilidad"":true,
          ""contribuyente_especial"":""12345"",
          ""regimen_rimpe"":""1"",
          ""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""
          }
        },
        ""info_adicional"":[
          {
            ""Envíada al correo electónico"":""contabilidad@xyz.com""
          }
        ],
        ""documentos_soporte"": [
          {
            ""codigo_sustento"": ""10"",
            ""tipo_documento"": ""41"",
            ""numero"": ""002-004-000248967"",
            ""fecha_emision"": ""2022-09-25"",
            ""fecha_registro_contable"": ""2022-09-20"",
            ""numero_autorizacion"": ""2005201901"",
            ""tipo_pago"": ""01"",
            ""total_sin_impuestos"": 84.04,
            ""total"": 88.34,
            ""tipo_regimen_fiscal"": ""01"",
            ""pais"": ""AR"",
            ""aplica_convenio"":true,
            ""pago_exterior"":true,
            ""pago_regimen_fiscal"":true,
            ""impuestos"": [
                {
                    ""codigo"": ""2"",
                    ""codigo_porcentaje"": ""2"",
                    ""base_imponible"": 18.09,
                    ""tarifa"": 12.00,
                    ""valor"": 2.17
                }
            ],
            ""retenciones"": [
                {
                    ""codigo"": ""2"",
                    ""codigo_porcentaje"": ""10"",
                    ""base_imponible"": 2.17,
                    ""tarifa"": 20,
                    ""valor_retenido"": 0.43
                },
                {
                    ""codigo"": ""1"",
                    ""codigo_porcentaje"": ""327"",
                    ""base_imponible"": 18.09,
                    ""tarifa"": 0,
                    ""valor_retenido"": 0.00,
                    ""dividendos"": [
                        {
                            ""fecha_pago"": ""2022-01-25"",
                            ""impuesto_renta"": 0.21,
                            ""annio_fiscal"": 2022
                        }
                    ]
                }
            ],
            ""pagos"": [
                {
                    ""tipo_pago"": ""20"",
                    ""total"": 88.34
                }
            ],
            ""reembolso"": {
                ""codigo"": ""41"",
                ""documentos"": [
                    {
                        ""codigo_establecimiento"": ""002"",
                        ""codigo_punto_emision"": ""003"",
                        ""fecha_emision"": ""2022-09-20"",
                        ""pais_origen_proveedor"": ""EC"",
                        ""identificacion_proveedor"": ""1790017478001"",
                        ""tipo_identificacion_proveedor"": ""04"",
                        ""numero_autorizacion"": ""1234567890"",
                        ""secuencia"": 2132,
                        ""tipo"": ""01"",
                        ""tipo_proveedor"": ""02"",
                        ""impuestos"": [
                            {
                                ""base_imponible"": 300.00,
                                ""codigo"": ""2"",
                                ""codigo_porcentaje"": ""0"",
                                ""tarifa"": 0.00,
                                ""valor"": 0.00
                            }
                        ]
                    }
                ],
                ""subtotal"": 300.00,
                ""total"": 300.00,
                ""total_impuestos"": 0.00
            }
        }
      ],
        ""tipo_sujeto_retenido"": ""01"",
        ""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 retención ATS se debe enviar la información completa del comprobante en el cuerpo del requerimiento en formato JSON.

Parámetro Tipo Descripción
ambiente integer Pruebas: 1.
Producción 2.
Requerido
tipo_emision integer Emisión normal: 1.
Emisión por indisponibilidad: 2
Requerido
secuencia integer (min. 1 - max. 999999999 ) Número de secuencia de la retención. Requerido
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?
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
emisor emisor Información completa del emisor. Requerido
info_adicional Listado de objetos Información adicional adjunta al comprobante en forma de diccionario. Ejemplo:
[{"Email": "contabilidad@empresa.com"}, {"Dirección": "Avenida Amazonas"}]
documentos_soporte Listado de objetos tipo documentos soporte Información. Requerido
tipo_sujeto_retenido string Ver tabla (Requerido si la identificación del sujeto retenido es Identificación del exterior)
sujeto objeto tipo persona Información de la persona a quién va dirigida la retención. Requerido

Respuesta

Respuesta de ejemplo


{
  "id": "abcdef09876123cea56784f01",
  "ambiente": 1,
  "tipo_emision": 1,
  "secuencia": 14,
  "fecha_emision": "2022-01-25",
  "periodo_fiscal": "01/2022",
  "clave_acceso": "2802201501091000000000120010010000100451993736618",
  "emisor": {
      "ruc": "0910000000001",
      "obligado_contabilidad": true,
      "contribuyente_especial": "12345",
      "regimen_rimpe": "1",
      "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"
      }
  },
  "info_adicional": [
      {
          "nombre": "Enviada al correo electónico",
          "descripcion": "contabilidad@xyz.com"
      }
  ],
  "documentos_soporte": [
      {
          "codigo_sustento": "10",
          "tipo_documento": "41",
          "numero": "002-004-000248967",
          "fecha_emision": "2022-09-25",
          "fecha_registro_contable": "2022-09-20",
          "numero_autorizacion": "2005201901",
          "tipo_pago": "01",
          "total_sin_impuestos": 84.04,
          "total": 88.34,
          "tipo_regimen_fiscal": "01",
          "pais": "AR",
          "aplica_convenio": true,
          "pago_exterior": true,
          "pago_regimen_fiscal": true,
          "impuestos": [
              {
                  "codigo": "2",
                  "codigo_porcentaje": "2",
                  "base_imponible": 18.09,
                  "tarifa": 12.00,
                  "valor": 2.17
              }
          ],
          "retenciones": [
              {
                  "codigo": "2",
                  "codigo_porcentaje": "10",
                  "base_imponible": 2.17,
                  "tarifa": 20,
                  "valor_retenido": 0.43
              },
              {
                  "codigo": "1",
                  "codigo_porcentaje": "327",
                  "base_imponible": 18.09,
                  "tarifa": 0,
                  "valor_retenido": 0.00,
                  "dividendos": [
                      {
                          "fecha_pago": "2022-01-25",
                          "impuesto_renta": 0.21,
                          "annio_fiscal": 2022
                      }
                  ]
              }
          ],
          "pagos": [
              {
                  "tipo_pago": "20",
                  "total": 88.34
              }
          ],
          "reembolso": {
              "codigo": "41",
              "documentos": [
                  {
                      "codigo_establecimiento": "002",
                      "codigo_punto_emision": "003",
                      "fecha_emision": "2022-09-20",
                      "pais_origen_proveedor": "EC",
                      "identificacion_proveedor": "1790017478001",
                      "tipo_identificacion_proveedor": "04",
                      "numero_autorizacion": "1234567890",
                      "secuencia": 2132,
                      "tipo": "01",
                      "tipo_proveedor": "02",
                      "impuestos": [
                          {
                              "base_imponible": 300.00,
                              "codigo": "2",
                              "codigo_porcentaje": "0",
                              "tarifa": 0.00,
                              "valor": 0.00
                          }
                      ]
                  }
              ],
              "subtotal": 300.00,
              "total": 300.00,
              "total_impuestos": 0.00
          }
      }
    ],
  "tipo_sujeto_retenido": "01",
  "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 ats que incluye un nuevo parámetro id, el cual identifica de manera única a la retención ats. El campo clave_acceso generado también se incluirá como parte de la respuesta.

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 retención se debe enviar la información completa del comprobante en el cuerpo del requerimiento en formato JSON.

Parámetro Tipo Descripción
secuencial integer (min. 1 - max. 999999999 ) Número de secuencia de la retención. 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.
sujeto objeto tipo persona Información de la persona a quién va dirigida la retención. Requerido
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
items 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 retención. El campo clave_acceso generado también se incluirá como parte de la respuesta.

Emisión de retenciones ATS a partir de XML

POST /ats-retentions/issue/xml

Requerimiento a partir de XML

Para la emisión de un comprobante de retención ATS a partir de un XML se debe enviar contenido del archivo XML como parámetro en el cuerpo del requerimiento en formato JSON. Este XML debe cumplir con la especificación del SRI.

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

Requerimiento de ejemplo

curl -v https://link.datil.co/ats-retentions/issue/xml \
-H "Content-Type: application/json" \
-H "X-Key: <API-key>" \
-H "X-Password: <clave-certificado-firma>" \
-d '<?xml version="1.0" encoding="UTF-8"?>
<comprobanteRetencion id="comprobante" version="2.0.0">
  <infoTributaria>
    <ambiente>1</ambiente>
    <tipoEmision>1</tipoEmision>
    <razonSocial>XYZ Corporación S.A.</razonSocial>
    <nombreComercial>XYZ Corp</nombreComercial>
    <ruc>0910000000001</ruc>
    <claveAcceso>2802201501091000000000120010010000100451993736618</claveAcceso>
    <codDoc>07</codDoc>
    <estab>001</estab>
    <ptoEmi>002</ptoEmi>
    <secuencia>14</secuencia>
    <dirMatriz>Av. Primera 234 y calle 5ta</dirMatriz>
  </infoTributaria>
  <infoCompRetencion>
    <fechaEmision>2022-01-25</fechaEmision>
    <dirEstablecimiento>Av. Primera 234 y calle 5ta</dirEstablecimiento>
    <contribuyenteEspecial>12345</contribuyenteEspecial>
    <obligadoContabilidad>SI</obligadoContabilidad>
    <tipoIdentificacionSujetoRetenido>05</tipoIdentificacionSujetoRetenido>
    <parteRel>SI</parteRel>
    <razonSocialSujetoRetenido>Juan Pérez</razonSocialSujetoRetenido>
    <identificacionSujetoRetenido>0987654321</identificacionSujetoRetenido>
    <periodoFiscal>01/2022</periodoFiscal>
  </infoCompRetencion>
  <docsSustento>
    <docSustento>
      <codSustento>10</codSustento>
      <codDocSustento>41</codDocSustento>
      <numDocSustento>002-004-000248967</numDocSustento>
      <fechaEmisionDocSustento>2022-01-20</fechaEmisionDocSustento>
      <fechaRegistroContable>2022-01-20</fechaRegistroContable>
      <numAutDocSustento>2005201901</numAutDocSustento>
      <pagoLocExt>01</pagoLocExt>
      <tipoRegi>00</tipoRegi>
      <paisEfecPago>593</paisEfecPago>
      <aplicConvDobTrib>NO</aplicConvDobTrib>
      <pagExtSujRetNorLeg>NO</pagExtSujRetNorLeg>
      <pagoRegFis>SI</pagoRegFis>
      <totalComprobantesReembolso>300.00</totalComprobantesReembolso>
      <totalBaseImponibleReembolso>300.00</totalBaseImponibleReembolso>
      <totalImpuestoReembolso>0.00</totalImpuestoReembolso>
      <totalSinImpuestos>84.04</totalSinImpuestos>
      <importeTotal>88.34</importeTotal>
      <tipoRegimenFiscal>01</tipoRegimenFiscal>
      <pais>AR</pais>
      <aplicaConvenio>SI</aplicaconvenio>
      <pagoExterior>SI</pagoExterior>
      <pagoRegimenFiscal>SI</pagoRegimenFiscal>
      <impuestosDocSustento>
        <impuestoDocSustento>
          <codImpuestoDocSustento>2</codImpuestoDocSustento>
          <codigoPorcentaje>6</codigoPorcentaje>
          <baseImponible>546.74</baseImponible>
          <tarifa>0.00</tarifa>
          <valorImpuesto>0.00</valorImpuesto>
        </impuestoDocSustento>
      </impuestosDocSustento>
      <retenciones>
        <retencion>
          <codigo>2</codigo>
          <codigoRetencion>10</codigoRetencion>
          <baseImponible>546.74</baseImponible>
          <porcentajeRetener>20</porcentajeRetener>
          <valorRetenido>5.46</valorRetenido>
          <dividendos>
            <fechaPagoDiv>2022-01-31</fechaPagoDiv>
            <imRentaSoc>12.21</imRentaSoc>
            <ejerFisUtDiv>2020</ejerFisUtDiv>
          </dividendos>
        </retencion>
      </retenciones>
      <reembolsos>
        <reembolsoDetalle>
          <tipoIdentificacionProveedorReembolso>04</tipoIdentificacionProveedorReembolso>
          <identificacionProveedorReembolso>1790017478001</identificacionProveedorReembolso>
          <codPaisPagoProveedorReembolso>EC</codPaisPagoProveedorReembolso>
          <tipoProveedorReembolso>02</tipoProveedorReembolso>
          <codDocReembolso>41</codDocReembolso>
          <estabDocReembolso>002</estabDocReembolso>
          <ptoEmiDocReembolso>003</ptoEmiDocReembolso>
          <secuencialDocReembolso>2132</secuencialDocReembolso>
          <fechaEmisionDocReembolso>2022-01-31</fechaEmisionDocReembolso>
          <numeroautorizacionDocReemb>1234567890</numeroautorizacionDocReemb>
          <detalleImpuestos>
            <detalleImpuesto>
              <codigo>2</codigo>
              <codigoPorcentaje>0</codigoPorcentaje>
              <tarifa>0.00</tarifa>
              <baseImponibleReembolso>300.00</baseImponibleReembolso>
              <impuestoReembolso>0.00</impuestoReembolso>
            </detalleImpuesto>
          </detalleImpuestos>
        </reembolsoDetalle>
      </reembolsos>
      <Pagos>
        <Pago>
          <formaPago>20</formaPago>
          <total>541.27</total>
        </Pago>
      </Pagos>
    </docSustento>
  </docsSustento>
  <tipoSujetoRetenido>01</tipoSujetoRetenido>
  <infoAdicional>
    <campoAdicional nombre="nombre">Enviada al correo electónico</campoAdicional>
    <campoAdicional nombre="descripcion">contabilidad@xyz.com</campoAdicional>
  </infoAdicional>
</comprobanteRetencion>
import requests, json

retencion = {
  "xml": '''<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<comprobanteRetencion id=\"comprobante\" version=\"2.0.0\">
    <infoTributaria>
      <ambiente>1</ambiente>
      <tipoEmision>1</tipoEmision>
      <razonSocial>XYZ Corporación S.A.</razonSocial>
      <nombreComercial>XYZ Corp</nombreComercial>
      <ruc>0910000000001</ruc>
      <claveAcceso>2802201501091000000000120010010000100451993736618</claveAcceso>
      <codDoc>07</codDoc>
      <estab>001</estab>
      <ptoEmi>002</ptoEmi>
      <secuencia>14</secuencia>
      <dirMatriz>Av. Primera 234 y calle 5ta</dirMatriz>
    </infoTributaria>
    <infoCompRetencion>
      <fechaEmision>2022-01-25</fechaEmision>
      <dirEstablecimiento>Av. Primera 234 y calle 5ta</dirEstablecimiento>
      <contribuyenteEspecial>12345</contribuyenteEspecial>
      <obligadoContabilidad>SI</obligadoContabilidad>
      <tipoIdentificacionSujetoRetenido>05</tipoIdentificacionSujetoRetenido>
      <parteRel>NO</parteRel>
      <razonSocialSujetoRetenido>Juan Pérez</razonSocialSujetoRetenido>
      <identificacionSujetoRetenido>0987654321</identificacionSujetoRetenido>
      <periodoFiscal>01/2022</periodoFiscal>
    </infoCompRetencion>
    <docsSustento>
      <docSustento>
        <codSustento>10</codSustento>
        <codDocSustento>41</codDocSustento>
        <numDocSustento>002-004-000248967</numDocSustento>
        <fechaEmisionDocSustento>2022-01-20</fechaEmisionDocSustento>
        <fechaRegistroContable>2022-01-20</fechaRegistroContable>
        <numAutDocSustento>2005201901</numAutDocSustento>
        <pagoLocExt>01</pagoLocExt>
        <tipoRegi>00</tipoRegi>
        <paisEfecPago>593</paisEfecPago>
        <aplicConvDobTrib>NO</aplicConvDobTrib>
        <pagExtSujRetNorLeg>NO</pagExtSujRetNorLeg>
        <pagoRegFis>SI</pagoRegFis>
        <totalComprobantesReembolso>300.00</totalComprobantesReembolso>
        <totalBaseImponibleReembolso>300.00</totalBaseImponibleReembolso>
        <totalImpuestoReembolso>0.00</totalImpuestoReembolso>
        <totalSinImpuestos>84.04</totalSinImpuestos>
        <importeTotal>88.34</importeTotal>
        <tipoRegimenFiscal>01</tipoRegimenFiscal>
        <pais>AR</pais>
        <aplicaConvenio>SI</aplicaconvenio>
        <pagoExterior>SI</pagoExterior>
        <pagoRegimenFiscal>SI</pagoRegimenFiscal>
        <impuestosDocSustento>
          <impuestoDocSustento>
              <codImpuestoDocSustento>2</codImpuestoDocSustento>
              <codigoPorcentaje>6</codigoPorcentaje>
              <baseImponible>546.74</baseImponible>
              <tarifa>0.00</tarifa>
              <valorImpuesto>0.00</valorImpuesto>
          </impuestoDocSustento>
        </impuestosDocSustento>
        <retenciones>
          <retencion>
            <codigo>2</codigo>
            <codigoRetencion>10</codigoRetencion>
            <baseImponible>546.74</baseImponible>
            <porcentajeRetener>20</porcentajeRetener>
            <valorRetenido>5.46</valorRetenido>
            <dividendos>
              <fechaPagoDiv>2022-01-31</fechaPagoDiv>
              <imRentaSoc>12.21</imRentaSoc>
              <ejerFisUtDiv>2020</ejerFisUtDiv>
            </dividendos>
          </retencion>
        </retenciones>
        <reembolsos>
          <reembolsoDetalle>
            <tipoIdentificacionProveedorReembolso>04</tipoIdentificacionProveedorReembolso>
            <identificacionProveedorReembolso>1790017478001</identificacionProveedorReembolso>
            <codPaisPagoProveedorReembolso>EC</codPaisPagoProveedorReembolso>
            <tipoProveedorReembolso>02</tipoProveedorReembolso>
            <codDocReembolso>41</codDocReembolso>
            <estabDocReembolso>002</estabDocReembolso>
            <ptoEmiDocReembolso>003</ptoEmiDocReembolso>
            <secuencialDocReembolso>2132</secuencialDocReembolso>
            <fechaEmisionDocReembolso>2022-01-31</fechaEmisionDocReembolso>
            <numeroautorizacionDocReemb>1234567890</numeroautorizacionDocReemb>
            <detalleImpuestos>
              <detalleImpuesto>
                <codigo>2</codigo>
                <codigoPorcentaje>0</codigoPorcentaje>
                <tarifa>0.00</tarifa>
                <baseImponibleReembolso>300.00</baseImponibleReembolso>
                <impuestoReembolso>0.00</impuestoReembolso>
              </detalleImpuesto>
            </detalleImpuestos>
          </reembolsoDetalle>
        </reembolsos>
        <Pagos>
          <Pago>
            <formaPago>20</formaPago>
            <total>541.27</total>
          </Pago>
        </Pagos>
      </docSustento>
    </docsSustento>
    <tipoSujetoRetenido>01</tipoSujetoRetenido>
    <infoAdicional>
      <campoAdicional nombre=\"nombre\">Enviada al correo electónico</campoAdicional>
      <campoAdicional nombre=\"descripcion\">contabilidad@xyz.com</campoAdicional>
    </infoAdicional>
</comprobanteRetencion>'''
}

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

Respuesta de Ejemplo

{
  "id": "abcdef09876123cea56784f01",
  "ambiente": 1,
  "tipo_emision": 1,
  "secuencia": 14,
  "fecha_emision": "2022-01-25",
  "periodo_fiscal": "01/2022",
  "clave_acceso": "2802201501091000000000120010010000100451993736618",
  "emisor": {
      "ruc": "0910000000001",
      "obligado_contabilidad": true,
      "contribuyente_especial": "12345",
      "regimen_rimpe": "1",
      "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"
      }
  },
  "info_adicional": [
      {
          "nombre": "Enviada al correo electónico",
          "descripcion": "contabilidad@xyz.com"
      }
  ],
  "documentos_soporte": [
      {
          "codigo_sustento": "10",
          "tipo_documento": "41",
          "numero": "002-004-000248967",
          "fecha_emision": "2022-09-25",
          "fecha_registro_contable": "2022-09-20",
          "numero_autorizacion": "2005201901",
          "tipo_pago": "01",
          "total_sin_impuestos": 84.04,
          "total": 88.34,
          "tipo_regimen_fiscal": "01",
          "pais": "AR",
          "aplica_convenio": true,
          "pago_exterior": true,
          "pago_regimen_fiscal": true,
          "impuestos": [
              {
                  "codigo": "2",
                  "codigo_porcentaje": "2",
                  "base_imponible": 18.09,
                  "tarifa": 12.00,
                  "valor": 2.17
              }
          ],
          "retenciones": [
              {
                  "codigo": "2",
                  "codigo_porcentaje": "10",
                  "base_imponible": 2.17,
                  "tarifa": 20,
                  "valor_retenido": 0.43
              },
              {
                  "codigo": "1",
                  "codigo_porcentaje": "327",
                  "base_imponible": 18.09,
                  "tarifa": 0,
                  "valor_retenido": 0.00,
                  "dividendos": [
                      {
                          "fecha_pago": "2022-01-25",
                          "impuesto_renta": 0.21,
                          "annio_fiscal": 2022
                      }
                  ]
              }
          ],
          "pagos": [
              {
                  "tipo_pago": "20",
                  "total": 88.34
              }
          ],
          "reembolso": {
              "codigo": "41",
              "documentos": [
                  {
                      "codigo_establecimiento": "002",
                      "codigo_punto_emision": "003",
                      "fecha_emision": "2022-09-20",
                      "pais_origen_proveedor": "EC",
                      "identificacion_proveedor": "1790017478001",
                      "tipo_identificacion_proveedor": "04",
                      "numero_autorizacion": "1234567890",
                      "secuencia": 2132,
                      "tipo": "01",
                      "tipo_proveedor": "02",
                      "impuestos": [
                          {
                              "base_imponible": 300.00,
                              "codigo": "2",
                              "codigo_porcentaje": "0",
                              "tarifa": 0.00,
                              "valor": 0.00
                          }
                      ]
                  }
              ],
              "subtotal": 300.00,
              "total": 300.00,
              "total_impuestos": 0.00
          }
      }
  ],
  "tipo_sujeto_retenido": "01",
  "sujeto": {
      "email": "contabilidad@email.com",
      "identificacion": "0987654321",
      "tipo_identificacion": "05",
      "razon_social": "Juan Pérez",
      "direccion": "Calle única Numero 987",
      "telefono": "046029400"
  }
}

Emisión de retenciones a partir de XML

POST /retentions/issue/xml

Requerimiento a partir de XML

Para la emisión de un comprobante de retención a partir de un XML se debe enviar contenido del archivo XML como parámetro en el cuerpo del requerimiento en formato JSON. Este XML debe cumplir con la especificación del SRI.

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

Requerimiento de ejemplo

curl -v https://link.datil.co/retentions/issue/xml \
-H "Content-Type: application/json" \
-H "X-Key: <API-key>" \
-H "X-Password: <clave-certificado-firma>" \
-d '{"xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<comprobanteRetencion id=\"comprobante\" version=\"1.0.0\">
  <infoTributaria>
    <ambiente>1</ambiente>
    <tipoEmision>1</tipoEmision>
    <razonSocial>DATILMEDIA S.A.</razonSocial>
    <nombreComercial>Datil</nombreComercial>
    <ruc>1234567890001</ruc>
    <claveAcceso>0405202007123456789000110010010000000012235571911</claveAcceso>
    <codDoc>07</codDoc>
    <estab>001</estab>
    <ptoEmi>001</ptoEmi>
    <secuencial>000000001</secuencial>
    <dirMatriz>Innvernadero Coworking, Bálsamos 813 entre Guayacanes e Higueras</dirMatriz>
  </infoTributaria>
  <infoCompRetencion>
    <fechaEmision>04/05/2020</fechaEmision>
    <dirEstablecimiento>Innvernadero Coworking, Bálsamos 813 entre Guayacanes e Higueras</dirEstablecimiento>
    <obligadoContabilidad>NO</obligadoContabilidad>
    <tipoIdentificacionSujetoRetenido>04</tipoIdentificacionSujetoRetenido>
    <razonSocialSujetoRetenido>Juan Perez</razonSocialSujetoRetenido>
    <identificacionSujetoRetenido>0953239092001</identificacionSujetoRetenido>
    <periodoFiscal>05/2020</periodoFiscal>
  </infoCompRetencion>
  <impuestos>
    <impuesto>
      <codigo>1</codigo>
      <codigoRetencion>401CD</codigoRetencion>
      <baseImponible>10.00</baseImponible>
      <porcentajeRetener>0.00</porcentajeRetener>
      <valorRetenido>0.00</valorRetenido>
      <codDocSustento>01</codDocSustento>
      <numDocSustento>001001000000001</numDocSustento>
      <fechaEmisionDocSustento>03/05/2020</fechaEmisionDocSustento>
    </impuesto>
  </impuestos>
  <infoAdicional>
    <campoAdicional nombre="Campo adicional">Información adicional</campoAdicional>
  </infoAdicional>
</comprobanteRetencion>"}'
import requests, json

retencion = {
    "xml": '''<?xml version=\"1.0\" encoding=\"UTF-8\"?>
    <comprobanteRetencion id=\"comprobante\" version=\"1.0.0\">
      <infoTributaria>
        <ambiente>1</ambiente>
        <tipoEmision>1</tipoEmision>
        <razonSocial>DATILMEDIA S.A.</razonSocial>
        <nombreComercial>Datil</nombreComercial>
        <ruc>1234567890001</ruc>
        <claveAcceso>0405202007123456789000110010010000000012235571911</claveAcceso>
        <codDoc>07</codDoc>
        <estab>001</estab>
        <ptoEmi>001</ptoEmi>
        <secuencial>000000001</secuencial>
        <dirMatriz>Innvernadero Coworking, Bálsamos 813 entre Guayacanes e Higueras</dirMatriz>
      </infoTributaria>
      <infoCompRetencion>
        <fechaEmision>04/05/2020</fechaEmision>
        <dirEstablecimiento>Innvernadero Coworking, Bálsamos 813 entre Guayacanes e Higueras</dirEstablecimiento>
        <obligadoContabilidad>NO</obligadoContabilidad>
        <tipoIdentificacionSujetoRetenido>04</tipoIdentificacionSujetoRetenido>
        <razonSocialSujetoRetenido>Juan Perez</razonSocialSujetoRetenido>
        <identificacionSujetoRetenido>0953239092001</identificacionSujetoRetenido>
        <periodoFiscal>05/2020</periodoFiscal>
      </infoCompRetencion>
      <impuestos>
        <impuesto>
          <codigo>1</codigo>
          <codigoRetencion>401CD</codigoRetencion>
          <baseImponible>10.00</baseImponible>
          <porcentajeRetener>0.00</porcentajeRetener>
          <valorRetenido>0.00</valorRetenido>
          <codDocSustento>01</codDocSustento>
          <numDocSustento>001001000000001</numDocSustento>
          <fechaEmisionDocSustento>03/05/2020</fechaEmisionDocSustento>
        </impuesto>
      </impuestos>
      <infoAdicional>
        <campoAdicional nombre="Campo adicional">Información adicional</campoAdicional>
      </infoAdicional>
    </comprobanteRetencion>'''
}

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

 Respuesta de ejemplo

{
    "secuencial": "000000001",
    "fecha_emision": "2020-05-04T00:00:00-05:19",
    "emisor": {
        "ruc": "1234567890001",
        "razon_social": "DATILMEDIA S.A.",
        "nombre_comercial": "Datil",
        "contribuyente_especial": "",
        "direccion": "Innvernadero Coworking, Bálsamos 813 entre Guayacanes e Higueras",
        "obligado_contabilidad": "NO",
        "establecimiento": {
            "punto_emision": "001",
            "codigo": "001",
            "direccion": "Innvernadero Coworking, Bálsamos 813 entre Guayacanes e Higueras"
        },
        "email": "devops@datilmedia.com"
    },
    "sujeto": {
        "identificacion": "0953239092001",
        "razon_social": "Juan Perez",
        "tipo_identificacion": "04"
    },
    "es_valida": true,
    "periodo_fiscal": "05/2020",
    "id": "41f5188e0256420cbe9e447db99c9753",
    "informacion_adicional": {
        "Campo adicional": "Información adicional"
    },
    "ambiente": "1",
    "tipo_emision": 1,
    "items": [
        {
            "porcentaje": 0.0,
            "codigo_porcentaje": "401CD",
            "fecha_emision_documento_sustento": "2020-05-03T00:00:00-05:19",
            "numero_documento_sustento": "001-001-000000001",
            "codigo": "1",
            "tipo_documento_sustento": "01",
            "base_imponible": 10.0,
            "valor_retenido": 0.0
        }
    ],
    "clave_acceso": "0405202007123456789000110010010000000012235571911"
}

Consulta de un Comprobante de Retención ATS

Consulta una retención ats 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 /ats-retentions/<receipt-id>

Requerimiento

Requerimiento de ejemplo

curl -v https://link.datil.co/ats-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/ats-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 retención que necesitas consultar.

Respuesta

Respuesta de ejemplo


{
  "id": "abcdef09876123cea56784f01",
  "ambiente": 1,
  "tipo_emision": 1,
  "secuencia": 14,
  "fecha_emision": "2022-01-25",
  "periodo_fiscal": "01/2022",
  "clave_acceso": "2802201501091000000000120010010000100451993736618",
  "emisor": {
    "ruc": "0910000000001",
    "obligado_contabilidad": true,
    "contribuyente_especial": "12345",
    "regimen_rimpe": "1",
    "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"
    }
  },
  "estado": "AUTORIZADO",
  "info_adicional": [
    {
      "nombre": "Enviada al correo electónico",
      "descripcion": "contabilidad@xyz.com"
    }
  ],
  "correos_enviados": [
    {
      "fecha_envio": "2015-05-15T16:36:48.274604",
      "destinatarios": "contabilidad@xyz.com"
    }
  ],
  "envio_sri": {
    "mensajes": [],
    "estado": "RECIBIDA",
    "fecha": ""
  },
  "documentos_soporte": [
      {
          "codigo_sustento": "10",
          "tipo_documento": "41",
          "numero": "002-004-000248967",
          "fecha_emision": "2022-09-25",
          "fecha_registro_contable": "2022-09-20",
          "numero_autorizacion": "2005201901",
          "tipo_pago": "01",
          "total_sin_impuestos": 84.04,
          "total": 88.34,
          "tipo_regimen_fiscal": "01",
          "pais": "AR",
          "aplica_convenio": true,
          "pago_exterior": true,
          "pago_regimen_fiscal": true,
          "impuestos": [
              {
                  "codigo": "2",
                  "codigo_porcentaje": "2",
                  "base_imponible": 18.09,
                  "tarifa": 12.00,
                  "valor": 2.17
              }
          ],
          "retenciones": [
              {
                  "codigo": "2",
                  "codigo_porcentaje": "10",
                  "base_imponible": 2.17,
                  "tarifa": 20,
                  "valor_retenido": 0.43
              },
              {
                  "codigo": "1",
                  "codigo_porcentaje": "327",
                  "base_imponible": 18.09,
                  "tarifa": 0,
                  "valor_retenido": 0.00,
                  "dividendos": [
                      {
                          "fecha_pago": "2022-01-25",
                          "impuesto_renta": 0.21,
                          "annio_fiscal": 2022
                      }
                  ]
              }
          ],
          "pagos": [
              {
                  "tipo_pago": "20",
                  "total": 88.34
              }
          ],
          "reembolso": {
              "codigo": "41",
              "documentos": [
                  {
                      "codigo_establecimiento": "002",
                      "codigo_punto_emision": "003",
                      "fecha_emision": "2022-09-20",
                      "pais_origen_proveedor": "EC",
                      "identificacion_proveedor": "1790017478001",
                      "tipo_identificacion_proveedor": "04",
                      "numero_autorizacion": "1234567890",
                      "secuencia": 2132,
                      "tipo": "01",
                      "tipo_proveedor": "02",
                      "impuestos": [
                          {
                              "base_imponible": 300.00,
                              "codigo": "2",
                              "codigo_porcentaje": "0",
                              "tarifa": 0.00,
                              "valor": 0.00
                          }
                      ]
                  }
              ],
              "subtotal": 300.00,
              "total": 300.00,
              "total_impuestos": 0.00
          }
      }
  ],
  "tipo_sujeto_retenido": "01",
  "sujeto": {
    "email": "contabilidad@email.com",
    "identificacion": "0987654321",
    "tipo_identificacion": "05",
    "razon_social": "Juan Pérez",
    "direccion": "Calle única Numero 987",
    "telefono": "046029400"
  },
  "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
ambiente integer Pruebas: 1.
Producción 2.
estado string Posibles valores: AUTORIZADO, NO AUTORIZADO, ENVIADO, DEVUELTO, RECIBIDO, ERROR
tipo_emision integer Emisión normal: 1.
Emisión por indisponibilidad: 2
secuencia integer (min. 1 - max. 999999999 ) Número de secuencia de la retención.
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?
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
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 emisor Información completa del emisor.
info_adicional Listado de objetos Información adicional adjunta al comprobante en forma de diccionario. Ejemplo:
[{"Email": "contabilidad@empresa.com"}, {"Dirección": "Avenida Amazonas"}]
documentos_soporte Listado de objetos tipo documentos soporte Información.
sujeto objeto tipo persona Información de la persona a quién va dirigida la retención.

Re-emisión de una retención ATS

Operación

POST /retentions/:id/reissue

Requerimiento

Requerimiento de ejemplo

curl -v https://link.datil.co/ats-retentions/<id-retencion-ats>/reissue \
-H "Content-Type: application/json" \
-H "X-Key: <API-key>" \
-H "X-Password: <clave-certificado-firma>" \
-d '{
    "ambiente": 1,
    "tipo_emision": 1,
    "secuencia": 14,
    "fecha_emision": "2022-01-25",
    "periodo_fiscal": "01/2022",
    "clave_acceso": "2802201501091000000000120010010000100451993736618",
    "emisor": {
        "ruc": "0910000000001",
        "obligado_contabilidad": true,
        "contribuyente_especial": "12345",
        "regimen_rimpe": "1",
        "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"
        }
    },
    "info_adicional": [
        {
            "nombre": "Enviada al correo electónico",
            "descripcion": "contabilidad@xyz.com"
        }
    ],
    "documentos_soporte": [
        {
            "codigo_sustento": "10",
            "tipo_documento": "41",
            "numero": "002-004-000248967",
            "fecha_emision": "2022-09-25",
            "fecha_registro_contable": "2022-09-20",
            "numero_autorizacion": "2005201901",
            "tipo_pago": "01",
            "total_sin_impuestos": 84.04,
            "total": 88.34,
            "tipo_regimen_fiscal": "01",
            "pais": "AR",
            "aplica_convenio": true,
            "pago_exterior": true,
            "pago_regimen_fiscal": true,
            "impuestos": [
                {
                    "codigo": "2",
                    "codigo_porcentaje": "2",
                    "base_imponible": 18.09,
                    "tarifa": 12.00,
                    "valor": 2.17
                }
            ],
            "retenciones": [
                {
                    "codigo": "2",
                    "codigo_porcentaje": "10",
                    "base_imponible": 2.17,
                    "tarifa": 20,
                    "valor_retenido": 0.43
                },
                {
                    "codigo": "1",
                    "codigo_porcentaje": "327",
                    "base_imponible": 18.09,
                    "tarifa": 0,
                    "valor_retenido": 0.00,
                    "dividendos": [
                        {
                            "fecha_pago": "2022-01-25",
                            "impuesto_renta": 0.21,
                            "annio_fiscal": 2022
                        }
                    ]
                }
            ],
            "pagos": [
                {
                    "tipo_pago": "20",
                    "total": 88.34
                }
            ],
            "reembolso": {
                "codigo": "41",
                "documentos": [
                    {
                        "codigo_establecimiento": "002",
                        "codigo_punto_emision": "003",
                        "fecha_emision": "2022-09-20",
                        "pais_origen_proveedor": "EC",
                        "identificacion_proveedor": "1790017478001",
                        "tipo_identificacion_proveedor": "04",
                        "numero_autorizacion": "1234567890",
                        "secuencia": 2132,
                        "tipo": "01",
                        "tipo_proveedor": "02",
                        "impuestos": [
                            {
                                "base_imponible": 300.00,
                                "codigo": "2",
                                "codigo_porcentaje": "0",
                                "tarifa": 0.00,
                                "valor": 0.00
                            }
                        ]
                    }
                ],
                "subtotal": 300.00,
                "total": 300.00,
                "total_impuestos": 0.00
            }
        }
    ],
    "tipo_sujeto_retenido": "01",
    "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,
    "secuencia": 14,
    "fecha_emision": "2022-01-25",
    "periodo_fiscal": "01/2022",
    "clave_acceso": "2802201501091000000000120010010000100451993736618",
    "emisor": {
        "ruc": "0910000000001",
        "obligado_contabilidad": true,
        "contribuyente_especial": "12345",
        "regimen_rimpe": "1",
        "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"
        }
    },
    "info_adicional": [
        {
            "nombre": "Enviada al correo electónico",
            "descripcion": "contabilidad@xyz.com"
        }
    ],
    "documentos_soporte": [
        {
            "codigo_sustento": "10",
            "tipo_documento": "41",
            "numero": "002-004-000248967",
            "fecha_emision": "2022-09-25",
            "fecha_registro_contable": "2022-09-20",
            "numero_autorizacion": "2005201901",
            "tipo_pago": "01",
            "total_sin_impuestos": 84.04,
            "total": 88.34,
            "tipo_regimen_fiscal": "01",
            "pais": "AR",
            "aplica_convenio": true,
            "pago_exterior": true,
            "pago_regimen_fiscal": true,
            "impuestos": [
                {
                    "codigo": "2",
                    "codigo_porcentaje": "2",
                    "base_imponible": 18.09,
                    "tarifa": 12.00,
                    "valor": 2.17
                }
            ],
            "retenciones": [
                {
                    "codigo": "2",
                    "codigo_porcentaje": "10",
                    "base_imponible": 2.17,
                    "tarifa": 20,
                    "valor_retenido": 0.43
                },
                {
                    "codigo": "1",
                    "codigo_porcentaje": "327",
                    "base_imponible": 18.09,
                    "tarifa": 0,
                    "valor_retenido": 0.00,
                    "dividendos": [
                        {
                            "fecha_pago": "2022-01-25",
                            "impuesto_renta": 0.21,
                            "annio_fiscal": 2022
                        }
                    ]
                }
            ],
            "pagos": [
                {
                    "tipo_pago": "20",
                    "total": 88.34
                }
            ],
            "reembolso": {
                "codigo": "41",
                "documentos": [
                    {
                        "codigo_establecimiento": "002",
                        "codigo_punto_emision": "003",
                        "fecha_emision": "2022-09-20",
                        "pais_origen_proveedor": "EC",
                        "identificacion_proveedor": "1790017478001",
                        "tipo_identificacion_proveedor": "04",
                        "numero_autorizacion": "1234567890",
                        "secuencia": 2132,
                        "tipo": "01",
                        "tipo_proveedor": "02",
                        "impuestos": [
                            {
                                "base_imponible": 300.00,
                                "codigo": "2",
                                "codigo_porcentaje": "0",
                                "tarifa": 0.00,
                                "valor": 0.00
                            }
                        ]
                    }
                ],
                "subtotal": 300.00,
                "total": 300.00,
                "total_impuestos": 0.00
            }
        }
    ],
    "tipo_sujeto_retenido": "01",
    "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/ats-retentions/<id-retencion-ats>/reissue",
    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("ats-retentions/<id-retencion-ats>/reissue", Method.POST);
      request.AddHeader("X-Key", "<clave-del-api>");
      request.AddHeader("X-Password", "<clave-certificado-firma>");

      request.AddBody(@"{
        ""ambiente"":1,
        ""tipo_emision"":1,
        ""secuencia"":14,
        ""fecha_emision"":""2022-01-25T11:28:56.782Z"",
        ""periodo_fiscal"":""12/2015"",
        ""clave_acceso"": ""2802201501091000000000120010010000100451993736618"",
        ""emisor"":{
          ""ruc"":""0910000000001"",
          ""obligado_contabilidad"":true,
          ""contribuyente_especial"":""12345"",
          ""regimen_rimpe"":""1"",
          ""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""
          }
        },
        ""info_adicional"":[
          {
            ""Envíada al correo electónico"":""contabilidad@xyz.com""
          }
        ],
        ""documentos_soporte"": [
          {
              ""codigo_sustento"": ""10"",
              ""tipo_documento"": ""41"",
              ""numero"": ""002-004-000248967"",
              ""fecha_emision"": ""2022-09-25"",
              ""fecha_registro_contable"": ""2022-09-20"",
              ""numero_autorizacion"": ""2005201901"",
              ""tipo_pago"": ""01"",
              ""total_sin_impuestos"": 84.04,
              ""total"": 88.34,
              ""tipo_regimen_fiscal"": ""01"",
              ""pais"": ""AR"",
              ""aplica_convenio"": true,
              ""pago_exterior"": true,
              ""pago_regimen_fiscal"": true,
              ""impuestos"": [
                  {
                      ""codigo"": ""2"",
                      ""codigo_porcentaje"": ""2"",
                      ""base_imponible"": 18.09,
                      ""tarifa"": 12.00,
                      ""valor"": 2.17
                  }
              ],
              ""retenciones"": [
                  {
                      ""codigo"": ""2"",
                      ""codigo_porcentaje"": ""10"",
                      ""base_imponible"": 2.17,
                      ""tarifa"": 20,
                      ""valor_retenido"": 0.43
                  },
                  {
                      ""codigo"": ""1"",
                      ""codigo_porcentaje"": ""327"",
                      ""base_imponible"": 18.09,
                      ""tarifa"": 0,
                      ""valor_retenido"": 0.00,
                      ""dividendos"": [
                          {
                              ""fecha_pago"": ""2022-01-25"",
                              ""impuesto_renta"": 0.21,
                              ""annio_fiscal"": 2022
                          }
                      ]
                  }
              ],
              ""pagos"": [
                  {
                      ""tipo_pago"": ""20"",
                      ""total"": 88.34
                  }
              ],
              ""reembolso"": {
                  ""codigo"": ""41"",
                  ""documentos"": [
                      {
                          ""codigo_establecimiento"": ""002"",
                          ""codigo_punto_emision"": ""003"",
                          ""fecha_emision"": ""2022-09-20"",
                          ""pais_origen_proveedor"": ""EC"",
                          ""identificacion_proveedor"": ""1790017478001"",
                          ""tipo_identificacion_proveedor"": ""04"",
                          ""numero_autorizacion"": ""1234567890"",
                          ""secuencia"": 2132,
                          ""tipo"": ""01"",
                          ""tipo_proveedor"": ""02"",
                          ""impuestos"": [
                              {
                                  ""base_imponible"": 300.00,
                                  ""codigo"": ""2"",
                                  ""codigo_porcentaje"": ""0"",
                                  ""tarifa"": 0.00,
                                  ""valor"": 0.00
                              }
                          ]
                      }
                  ],
                  ""subtotal"": 300.00,
                  ""total"": 300.00,
                  ""total_impuestos"": 0.00
              }
          }
      ],
      ""tipo_sujeto_retenido"": ""01"",
      ""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();
    }
  }
}

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 retención ATS recibida al momento de emitirla.

El cuerpo del requerimiento es un objeto retención ATS con los datos corregidos para que pueda ser procesado y autorizado.

Respuesta

Respuesta de ejemplo


{
  "id": "abcdef09876123cea56784f01",
  "ambiente": 1,
  "tipo_emision": 1,
  "secuencia": 14,
  "fecha_emision": "2022-01-25",
  "periodo_fiscal": "01/2022",
  "clave_acceso": "2802201501091000000000120010010000100451993736618",
  "emisor": {
      "ruc": "0910000000001",
      "obligado_contabilidad": true,
      "contribuyente_especial": "12345",
      "regimen_rimpe": "1",
      "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"
      }
  },
  "info_adicional": [
      {
          "nombre": "Enviada al correo electónico",
          "descripcion": "contabilidad@xyz.com"
      }
  ],
  "documentos_soporte": [
      {
          "codigo_sustento": "10",
          "tipo_documento": "41",
          "numero": "002-004-000248967",
          "fecha_emision": "2022-09-25",
          "fecha_registro_contable": "2022-09-20",
          "numero_autorizacion": "2005201901",
          "tipo_pago": "01",
          "total_sin_impuestos": 84.04,
          "total": 88.34,
          "tipo_regimen_fiscal": "01",
          "pais": "AR",
          "aplica_convenio": true,
          "pago_exterior": true,
          "pago_regimen_fiscal": true,
          "impuestos": [
              {
                  "codigo": "2",
                  "codigo_porcentaje": "2",
                  "base_imponible": 18.09,
                  "tarifa": 12.00,
                  "valor": 2.17
              }
          ],
          "retenciones": [
              {
                  "codigo": "2",
                  "codigo_porcentaje": "10",
                  "base_imponible": 2.17,
                  "tarifa": 20,
                  "valor_retenido": 0.43
              },
              {
                  "codigo": "1",
                  "codigo_porcentaje": "327",
                  "base_imponible": 18.09,
                  "tarifa": 0,
                  "valor_retenido": 0.00,
                  "dividendos": [
                      {
                          "fecha_pago": "2022-01-25",
                          "impuesto_renta": 0.21,
                          "annio_fiscal": 2022
                      }
                  ]
              }
          ],
          "pagos": [
              {
                  "tipo_pago": "20",
                  "total": 88.34
              }
          ],
          "reembolso": {
              "codigo": "41",
              "documentos": [
                  {
                      "codigo_establecimiento": "002",
                      "codigo_punto_emision": "003",
                      "fecha_emision": "2022-09-20",
                      "pais_origen_proveedor": "EC",
                      "identificacion_proveedor": "1790017478001",
                      "tipo_identificacion_proveedor": "04",
                      "numero_autorizacion": "1234567890",
                      "secuencia": 2132,
                      "tipo": "01",
                      "tipo_proveedor": "02",
                      "impuestos": [
                          {
                              "base_imponible": 300.00,
                              "codigo": "2",
                              "codigo_porcentaje": "0",
                              "tarifa": 0.00,
                              "valor": 0.00
                          }
                      ]
                  }
              ],
              "subtotal": 300.00,
              "total": 300.00,
              "total_impuestos": 0.00
          }
      }
  ],
  "tipo_sujeto_retenido": "01",
  "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 ATS que incluye un nuevo parámetro id, el cual identifica de manera única a la retención ATS. El campo clave_acceso generado también se incluirá como parte de la respuesta. Sí el comprobante de retención ya está autorizada se retornará un error.

Consulta de un Comprobante de Retención

Consulta una retenció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 /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 retención 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 retención.
estado string Posibles valores: AUTORIZADO, NO AUTORIZADO, ENVIADO, DEVUELTO, RECIBIDO, ERROR
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

Re-emisión de una retención

Operación

POST /retentions/:id/reissue

Requerimiento

Requerimiento de ejemplo

curl -v https://link.datil.co/retentions/<id-retencion>/reissue \
-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/<id-retencion>/reissue",
    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 idRetention = "<id-retencion>"
      var request = new RestRequest("retentions/" + idRetention + "/reissue", 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();
    }
  }
}

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 retención recibida al momento de emitirla.

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

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": 120.89,
    "impuestos": [
      {
        "base_imponible": 0.0,
        "valor": 0.0,
        "codigo": "2",
        "codigo_porcentaje": "0",
        "tarifa": 0.0
      },
      {
        "base_imponible": 120.89,
        "valor": 14.51,
        "codigo": "2",
        "codigo_porcentaje": "2",
        "tarifa": 12.0
      }
    ],
    "importe_total": 135.4,
    "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": 120.89,
          "valor": 14.51,
          "tarifa": 12.0,
          "codigo": "2",
          "codigo_porcentaje": "2"
        }
      ],
      "detalles_adicionales": {
        "Peso": "5000.0000"
      },
      "descuento": 0.0
    }
  ]
}

Retorna un objeto tipo retención que incluye un nuevo parámetro id, el cual identifica de manera única a la retención. El campo clave_acceso generado también se incluirá como parte de la respuesta. Sí el comprobante de retención ya está autorizada se retornará un error.

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 (hasta 6 cifras decimales) 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.

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

POST /waybills/issue/xml

Requerimiento a partir de XML

Para la emisión de una guia de remisión a partir de un XML se debe enviar contenido del archivo XML como parámetro en el cuerpo del requerimiento en formato JSON. Este XML debe cumplir con la especificación del SRI.

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

Requerimiento de ejemplo

curl -v https://link.datil.co/waybills/issue/xml \
-H "Content-Type: application/json" \
-H "X-Key: <API-key>" \
-H "X-Password: <clave-certificado-firma>" \
-d '{"xml": "<?xml version=\"1.1.0\" encoding=\"UTF-8\">
<guiaRemision id=\"comprobante\" version=\"1.1.0\">
  <infoTributaria>
    <ambiente>1</ambiente>
    <tipoEmision>1</tipoEmision>
    <razonSocial>DATILMEDIA S.A.</razonSocial>
    <nombreComercial>Datil</nombreComercial>
    <ruc>1234567890001</ruc>
    <claveAcceso>0405202006123456789000110010010000000012235571913</claveAcceso>
    <codDoc>06</codDoc>
    <estab>001</estab>
    <ptoEmi>001</ptoEmi>
    <secuencial>000000001</secuencial>
    <dirMatriz>Innvernadero Coworking, Bálsamos 813 entre Guayacanes e Higueras</dirMatriz>
  </infoTributaria>
  <infoGuiaRemision>
    <dirEstablecimiento>Innvernadero Coworking, Bálsamos 813 entre Guayacanes e Higueras</dirEstablecimiento>
    <dirPartida>Calle única Numero 987</dirPartida>
    <razonSocialTransportista>Juan Perez</razonSocialTransportista>
    <tipoIdentificacionTransportista>05</tipoIdentificacionTransportista>
    <rucTransportista>0987654321</rucTransportista>
    <obligadoContabilidad>NO</obligadoContabilidad>
    <fechaIniTransporte>04/05/2020</fechaIniTransporte>
    <fechaFinTransporte>05/05/2020</fechaFinTransporte>
    <placa>GSM-0123</placa>
  </infoGuiaRemision>
  <destinatarios>
    <destinatario>
      <identificacionDestinatario>0953239092001</identificacionDestinatario>
      <razonSocialDestinatario>Santacruz Hernandez Anni Rosa</razonSocialDestinatario>
      <dirDestinatario>Solar 23</dirDestinatario>
      <motivoTraslado>Motivo del traslado</motivoTraslado>
      <codEstabDestino>001</codEstabDestino>
      <ruta>GYE - UIO</ruta>
      <codDocSustento>01</codDocSustento>
      <numDocSustento>001-001-000000001</numDocSustento>
      <fechaEmisionDocSustento>01/05/2020</fechaEmisionDocSustento>
      <detalles>
        <detalle>
          <codigoInterno>AGDAS-001</codigoInterno>
          <descripcion>Agua purificada</descripcion>
          <cantidad>1.000000</cantidad>
          <detallesAdicionales/>
        </detalle>
      </detalles>
    </destinatario>
  </destinatarios>
  <infoAdicional>
    <campoAdicional nombre=\"Campo Adicional\">Informacion Adicional</campoAdicional>
  </infoAdicional>
</guiaRemision>"}'
import requests, json

guia_remision = {
    "xml": '''<?xml version=\"1.1.0\" encoding=\"UTF-8\">
    <guiaRemision id=\"comprobante\" version=\"1.1.0\">
      <infoTributaria>
        <ambiente>1</ambiente>
        <tipoEmision>1</tipoEmision>
        <razonSocial>DATILMEDIA S.A.</razonSocial>
        <nombreComercial>Datil</nombreComercial>
        <ruc>1234567890001</ruc>
        <claveAcceso>0405202006123456789000110010010000000012235571913</claveAcceso>
        <codDoc>06</codDoc>
        <estab>001</estab>
        <ptoEmi>001</ptoEmi>
        <secuencial>000000001</secuencial>
        <dirMatriz>Innvernadero Coworking, Bálsamos 813 entre Guayacanes e Higueras</dirMatriz>
      </infoTributaria>
      <infoGuiaRemision>
        <dirEstablecimiento>Innvernadero Coworking, Bálsamos 813 entre Guayacanes e Higueras</dirEstablecimiento>
        <dirPartida>Calle única Numero 987</dirPartida>
        <razonSocialTransportista>Juan Perez</razonSocialTransportista>
        <tipoIdentificacionTransportista>05</tipoIdentificacionTransportista>
        <rucTransportista>0987654321</rucTransportista>
        <obligadoContabilidad>NO</obligadoContabilidad>
        <fechaIniTransporte>04/05/2020</fechaIniTransporte>
        <fechaFinTransporte>05/05/2020</fechaFinTransporte>
        <placa>GSM-0123</placa>
      </infoGuiaRemision>
      <destinatarios>
        <destinatario>
          <identificacionDestinatario>0953239092001</identificacionDestinatario>
          <razonSocialDestinatario>Santacruz Hernandez Anni Rosa</razonSocialDestinatario>
          <dirDestinatario>Solar 23</dirDestinatario>
          <motivoTraslado>Motivo del traslado</motivoTraslado>
          <codEstabDestino>001</codEstabDestino>
          <ruta>GYE - UIO</ruta>
          <codDocSustento>01</codDocSustento>
          <numDocSustento>001-001-000000001</numDocSustento>
          <fechaEmisionDocSustento>01/05/2020</fechaEmisionDocSustento>
          <detalles>
            <detalle>
              <codigoInterno>AGDAS-001</codigoInterno>
              <descripcion>Agua purificada</descripcion>
              <cantidad>1.000000</cantidad>
              <detallesAdicionales/>
            </detalle>
          </detalles>
        </destinatario>
      </destinatarios>
      <infoAdicional>
        <campoAdicional nombre="Campo Adicional">Informacion Adicional</campoAdicional>
      </infoAdicional>
    </guiaRemision>'''
}

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

Respuesta de ejemplo

{
    "secuencial": "000000001",
    "emisor": {
        "ruc": "1234567890001",
        "razon_social": "DATILMEDIA S.A.",
        "nombre_comercial": "Datil",
        "contribuyente_especial": "",
        "direccion": "Innvernadero Coworking, Bálsamos 813 entre Guayacanes e Higueras",
        "obligado_contabilidad": "NO",
        "establecimiento": {
            "punto_emision": "001",
            "codigo": "001",
            "direccion": "Innvernadero Coworking, Bálsamos 813 entre Guayacanes e Higueras"
        },
        "email": "devops@datilmedia.com"
    },
    "direccion_partida": "Calle única Numero 987",
    "transportista": {
        "tipo_identificacion": "05",
        "razon_social": "Juan Perez",
        "direccion": "",
        "placa": "GSM-0123",
        "identificacion": "0987654321",
        "telefono": "",
        "email": ""
    },
    "fecha_fin_transporte": "2020-05-05T00:00:00-05:19",
    "destinatarios": [
        {
            "fecha_emision_documento_sustento": "2020-05-01T00:00:00-05:19",
            "email": "",
            "ruta": "GYE - UIO",
            "identificacion": "0953239092001",
            "motivo_traslado": "Motivo del traslado",
            "documento_aduanero_unico": "",
            "numero_documento_sustento": "001-001-000000001",
            "tipo_identificacion": "05",
            "codigo_establecimiento_destino": "001",
            "razon_social": "Santacruz Hernandez Anni Rosa",
            "numero_autorizacion_documento_sustento": "",
            "direccion": "Solar 23",
            "tipo_documento_sustento": "01",
            "items": [
                {
                    "codigo_auxiliar": "",
                    "descripcion": "Agua purificada",
                    "codigo_principal": "AGDAS-001",
                    "cantidad": 1.0,
                    "detalles_adicionales": {}
                }
            ],
            "telefono": ""
        }
    ],
    "id": "a8ea19c75f2546b883c4a00e9e68e1b9",
    "fecha_inicio_transporte": "2020-05-04T00:00:00-05:19",
    "informacion_adicional": {
        "Campo Adicional": "Informacion Adicional"
    },
    "ambiente": "1",
    "tipo_emision": 1,
    "clave_acceso": "0405202006123456789000110010010000000012235571913"
}

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-guiaremision> \
-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-guiaremision>',
    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-guiaremision>";
      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"}

Re-emisión de una guía de remisión

Operación

POST /waybills/:id/reissue

Requerimiento

Requerimiento de ejemplo

curl -v https://link.datil.co/waybills/<id-guiaremision>/reissue \
-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/<id-guiaremision>/reissue",
    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 idGuiaRemision = "<id-guiaremision>"
      var request = new RestRequest("waybills/" + idGuiaRemision + "/reissue", 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();
    }
  }
}

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 retención recibida al momento de emitirla.

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

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. Sí la guía de remisión ya está autorizada se retornará un error.

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":"2019-08-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":120.89,
    "impuestos":[
      {
        "base_imponible":120.89,
        "valor":14.51,
        "codigo":"2",
        "codigo_porcentaje":"2",
        "tarifa": 12.0
      }
    ],
    "importe_total":135.4
  },
  "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":"2019-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":u"5 días"
  },
  "totales":{
    "total_sin_impuestos":120.89,
    "impuestos":[
      {
        "base_imponible":120.89,
        "valor":14.51,
        "codigo":"2",
        "codigo_porcentaje":"2",
        "tarifa": 12.0
      }
    ],
    "importe_total":135.4
  },
  "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":u"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"":120.89,
          ""impuestos"":[
            {
              ""base_imponible"":0.0,
              ""valor"":0.0,
              ""codigo"":""2"",
              ""codigo_porcentaje"":""0"",
              ""tarifa"": 12.0
            },
            {
              ""base_imponible"":120.89,
              ""valor"":14.51,
              ""codigo"":""2"",
              ""codigo_porcentaje"":""2""
            }
          ],
          ""total"":135.4,
          ""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"":120.89,
                ""valor"":14.51,
                ""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
comprador objeto tipo persona Información del comprador. 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
items arreglo de objetos tipo items Motivos 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

Items

Parámetro Tipo Descripción
motivo string Motivo por el cuál se hace el débito. Requerido
valor float Valor sin impuestos. Requerido

Impuesto

Parámetro Tipo Descripción
codigo string Código del tipo de impuesto Requerido
codigo_porcentaje string Código del porcentaje. Requerido
base_imponible float Base imponible. Requerido
valor float Valor del total. Requerido
tarifa float Porcentaje actual del impuesto expresado por un número entre 0.0 y 100.0 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": 120.89,
    "impuestos": [
      {
        "base_imponible": 0.0,
        "valor": 0.0,
        "codigo": "2",
        "codigo_porcentaje": "0",
        "tarifa": 0.0
      },
      {
        "base_imponible": 120.89,
        "valor": 14.51,
        "codigo": "2",
        "codigo_porcentaje": "2",
        "tarifa": 12.0
      }
    ],
    "importe_total": 135.4,
    "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": 120.89,
          "valor": 14.51,
          "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.

Emisión de una nota de débito a partir de XML

POST /debit-notes/issue/xml

Requerimiento a partir de XML

Para la emisión de una nota de débito a partir de un XML se debe enviar contenido del archivo XML como parámetro en el cuerpo del requerimiento en formato JSON. Este XML debe cumplir con la especificación del SRI.

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

Requerimiento de ejemplo

curl -v https://link.datil.co/debit-notes/issue/xml \
-H "Content-Type: application/json" \
-H "X-Key: <API-key>" \
-H "X-Password: <clave-certificado-firma>" \
-d '{"xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<notaDebito id=\"comprobante\" version=\"1.0.0\">
  <infoTributaria>
    <ambiente>1</ambiente>
    <tipoEmision>1</tipoEmision>
    <razonSocial>DATILMEDIA S.A.</razonSocial>
    <nombreComercial>Datil</nombreComercial>
    <ruc>1234567890001</ruc>
    <claveAcceso>0405202005123456789000110010010000000012235571917</claveAcceso>
    <codDoc>05</codDoc>
    <estab>001</estab>
    <ptoEmi>001</ptoEmi>
    <secuencial>000000001</secuencial>
    <dirMatriz>Innvernadero Coworking, Bálsamos 813 entre Guayacanes e Higueras</dirMatriz>
  </infoTributaria>
  <infoNotaDebito>
    <fechaEmision>04/05/2020</fechaEmision>
    <dirEstablecimiento>Innvernadero Coworking, Bálsamos 813 entre Guayacanes e Higueras</dirEstablecimiento>
    <tipoIdentificacionComprador>04</tipoIdentificacionComprador>
    <razonSocialComprador>Santacruz Hernandez Anni Rosa</razonSocialComprador>
    <identificacionComprador>0953239092001</identificacionComprador>
    <obligadoContabilidad>NO</obligadoContabilidad>
    <codDocModificado>01</codDocModificado>
    <numDocModificado>001-001-000000001</numDocModificado>
    <fechaEmisionDocSustento>04/05/2020</fechaEmisionDocSustento>
    <totalSinImpuestos>0.45</totalSinImpuestos>
    <impuestos>
      <impuesto>
        <codigo>2</codigo>
        <codigoPorcentaje>2</codigoPorcentaje>
        <tarifa>12.00</tarifa>
        <baseImponible>0.45</baseImponible>
        <valor>0.05</valor>
      </impuesto>
      <impuesto>
        <codigo>3</codigo>
        <codigoPorcentaje>3080</codigoPorcentaje>
        <tarifa>35.00</tarifa>
        <baseImponible>0.45</baseImponible>
        <valor>0.16</valor>
      </impuesto>
    </impuestos>
    <valorTotal>0.50</valorTotal>
  </infoNotaDebito>
  <motivos>
    <motivo>
      <razon>Agua purificada</razon>
      <valor>0.45</valor>
    </motivo>
  </motivos>
  <infoAdicional>
    <campoAdicional nombre=\"Campo Adicional\">Información adicional</campoAdicional>
  </infoAdicional>
</notaDebito>"}'
import requests, json

nota_debito = {
    "xml": '''<?xml version=\"1.0\" encoding=\"UTF-8\"?>
    <notaDebito id=\"comprobante\" version=\"1.0.0\">
      <infoTributaria>
        <ambiente>1</ambiente>
        <tipoEmision>1</tipoEmision>
        <razonSocial>DATILMEDIA/razonSocial>
        <nombreComercial>Dail</nombreComercial>
        <ruc>1234567890001</ruc>
        <claveAcceso>0405202005123456789000110010010000000012235571917</claveAcceso>
        <codDoc>05</codDoc>
        <estab>001</estab>
        <ptoEmi>001</ptoEmi>
        <secuencial>000000001</secuencial>
        <dirMatriz>Innvernadero Coworking, Bálsamos 813 entre Guayacanes e Higueras</dirMatriz>
      </infoTributaria>
      <infoNotaDebito>
        <fechaEmision>04/05/2020</fechaEmision>
        <dirEstablecimiento>Innvernadero Coworking, Bálsamos 813 entre Guayacanes e Higueras</dirEstablecimiento>
        <tipoIdentificacionComprador>04</tipoIdentificacionComprador>
        <razonSocialComprador>Santacruz Hernandez Anni Rosa</razonSocialComprador>
        <identificacionComprador>0953239092001</identificacionComprador>
        <obligadoContabilidad>NO</obligadoContabilidad>
        <codDocModificado>01</codDocModificado>
        <numDocModificado>001-001-000000001</numDocModificado>
        <fechaEmisionDocSustento>04/05/2020</fechaEmisionDocSustento>
        <totalSinImpuestos>0.45</totalSinImpuestos>
        <impuestos>
          <impuesto>
            <codigo>2</codigo>
            <codigoPorcentaje>2</codigoPorcentaje>
            <tarifa>12.00</tarifa>
            <baseImponible>0.45</baseImponible>
            <valor>0.05</valor>
          </impuesto>
          <impuesto>
            <codigo>3</codigo>
            <codigoPorcentaje>3080</codigoPorcentaje>
            <tarifa>35.00</tarifa>
            <baseImponible>0.45</baseImponible>
            <valor>0.16</valor>
          </impuesto>
        </impuestos>
        <valorTotal>0.50</valorTotal>
      </infoNotaDebito>
      <motivos>
        <motivo>
          <razon>Agua purificada</razon>
          <valor>0.45</valor>
        </motivo>
      </motivos>
      <infoAdicional>
        <campoAdicional nombre="Campo Adicional">Información adicional</campoAdicional>
      </infoAdicional>
    </notaDebito>'''
}

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/xml",
    headers = cabeceras,
    data = json.dumps(nota_debito))

Reespuesta de ejemplo

{
    "secuencial": 2,
    "fecha_emision": "2020-05-04T00:00:00-05:00",
    "emisor": {
        "ruc": "1234567890001",
        "razon_social": "DATILMEDIA S.A.",
        "nombre_comercial": "Datil",
        "contribuyente_especial": "",
        "direccion": "Innvernadero Coworking, Bálsamos 813 entre Guayacanes e Higueras",
        "obligado_contabilidad": false,
        "establecimiento": {
            "punto_emision": "001",
            "codigo": "001",
            "direccion": "Innvernadero Coworking, Bálsamos 813 entre Guayacanes e Higueras"
        },
        "email": "devops@datilmedia.com"
    },
    "fecha_emision_documento_modificado": "2020-05-04T00:00:00-05:00",
    "id": "1fb562334f654368ab26dc9ce1a5b99b",
    "informacion_adicional": {
        "Campo Adicional": "Información adicional"
    },
    "ambiente": "1",
    "totales": {
        "total_sin_impuestos": "0.45",
        "importe_total": "0.50",
        "impuestos": [
            {
                "tarifa": "12.00",
                "codigo": "2",
                "codigo_porcentaje": "2",
                "base_imponible": "0.45",
                "valor": "0.05"
            },
            {
                "tarifa": "35.00",
                "codigo": "3",
                "codigo_porcentaje": "3080",
                "base_imponible": "0.45",
                "valor": "0.16"
            }
        ],
        "total_impuestos": "0.05"
    },
    "comprador": {
        "identificacion": "0953239092001",
        "razon_social": "Santacruz Hernandez Anni Rosa",
        "tipo_identificacion": "04",
        "direccion": ""
    },
    "tipo_emision": "1",
    "items": [
        {
            "motivo": "Agua purificada",
            "valor": "0.45"
        }
    ],
    "tipo_documento_modificado": "01",
    "numero_documento_modificado": "001-001-000000001",
    "clave_acceso": "0405202005123456789000110010010000000012235571917"
}

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-notadebito> \
-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-notadebito>',
    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  = "<id-notadebito>";
      var request = new RestRequest("debit-notes/" + idNotaDebito, Method.GET);
      request.AddHeader("X-Key", "<clave-del-api>");

      IRestResponse response = client.Execute(request);

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

Reemplaza en la ruta <id-notadebito> 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, ERROR
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

Re-emisión de una nota de débito

Operación

POST /debit-notes/:id/reissue

Requerimiento

Requerimiento de ejemplo

curl -v https://link.datil.co/debit-notes/<id-notadebito>/reissue \
-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":"2019-08-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":120.89,
    "impuestos":[
      {
        "base_imponible":120.89,
        "valor":14.51,
        "codigo":"2",
        "codigo_porcentaje":"2",
        "tarifa": 12.0
      }
    ],
    "importe_total":135.4
  },
  "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":"2019-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":u"5 días"
  },
  "totales":{
    "total_sin_impuestos":120.89,
    "impuestos":[
      {
        "base_imponible":120.89,
        "valor":14.51,
        "codigo":"2",
        "codigo_porcentaje":"2",
        "tarifa": 12.0
      }
    ],
    "importe_total":135.4
  },
  "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":u"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/<id-notadebito>/reissue",
    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 idNotaDebito = "<id-notadebito>"
      var request = new RestRequest("debit-notes/" + idNotaDebito + "/reissue", 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"":120.89,
          ""impuestos"":[
            {
              ""base_imponible"":0.0,
              ""valor"":0.0,
              ""codigo"":""2"",
              ""codigo_porcentaje"":""0"",
              ""tarifa"": 12.0
            },
            {
              ""base_imponible"":120.89,
              ""valor"":14.51,
              ""codigo"":""2"",
              ""codigo_porcentaje"":""2""
            }
          ],
          ""total"":135.4,
          ""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"":120.89,
                ""valor"":14.51,
                ""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();
    }
  }
}

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 nota de débito recibida al momento de emitirla.

El cuerpo del requerimiento es un objeto nota de débito con los datos corregidos para que pueda ser procesado y autorizado.

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": 120.89,
    "impuestos": [
      {
        "base_imponible": 0.0,
        "valor": 0.0,
        "codigo": "2",
        "codigo_porcentaje": "0",
        "tarifa": 0.0
      },
      {
        "base_imponible": 120.89,
        "valor": 14.51,
        "codigo": "2",
        "codigo_porcentaje": "2",
        "tarifa": 12.0
      }
    ],
    "importe_total": 135.4,
    "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": 120.89,
          "valor": 14.51,
          "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. Sí la nota de débito ya está autorizada se retornará un error.

Liquidaciones de compras

Emisión de una liquidación de compras

Operación

POST /purchase-settlements/issue

Requerimiento

Requerimiento de ejemplo

curl -v https://link.datil.co/purchase-settlements/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":4359.54,
        "valor":523.14,
        "codigo":"2",
        "codigo_porcentaje":"2"
      }
    ],
    "importe_total":4882.68,
    "descuento":0.0
  },
  "maquina_fiscal": {
    "marca": "SISPAU",
    "modelo": "ABC123",
    "serie": "CGNC1405"
  },
  "proveedor":{
    "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.008907,
      "descripcion": "Zanahoria granel  50 Kg.",
      "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"
      },
      "descuento": 0.0,
      "unidad_medida": "Kilos"
    }
  ],
  "pagos": [
    {
      "forma_pago": "01",
      "total": 4882.68,
      "unidad_tiempo": "dias",
      "plazo": "30"
    }
  ],
}'
import requests, json

liquidacion_compras = {
  "ambiente":1,
  "tipo_emision":1,
  "secuencial":148,
  "fecha_emision":"2019-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,
    "descuento":0.0
  },
  "maquina_fiscal": {
    "marca": "SISPAU",
    "modelo": "ABC123",
    "serie": "CGNC1405"
  },
  "proveedor":{
    "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": 4359.54,
      "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"
    }
  ],
  "pagos": [
    {
      "forma_pago": "01",
      "total": 4882.68,
      "unidad_tiempo": "dias",
      "plazo": "30"
    }
  ]
}
cabeceras = {
    'x-key': '<clave-del-api>',
    'x-password': '<clave-certificado-firma>',
    'content-type': 'application/json'}
respuesta = requests.post(
    "https://link.datil.co/purchase-settlements/issue",
    headers = cabeceras,
    data = json.dumps(liquidacion_compras))
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("purchase-settlements/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,
          ""descuento"":0.0
        },
        ""maquina_fiscal"": {
          ""marca"": ""SISPAU"",
          ""modelo"": ""ABC123"",
          ""serie"": ""CGNC1405""
        },
        ""proveedor"":{
          ""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"": 4359.54,
            ""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""
          }
      ],
      ""pagos"": [
        {
          ""forma_pago"": ""01"",
          ""total"": 4882.68
        }
      ]
      }");
      request.AddParameter("application/json", body, ParameterType.RequestBody);
      IRestResponse response = client.Execute(request);

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

Para la emisión de una liquidación de compras 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 liquidación de compras. 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
totales objeto tipo totales Listado de totales. Requerido
maquina_fiscal objeto maquina_fiscal Información de máquina fiscal.
proveedor objeto tipo persona Información del proveedor. 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 liquidación de compras. 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"}
pagos Listado de objetos tipo pagos Listado de formas de pago aplicables a la liquidación de compras. Requerido

Totales

Parámetro Tipo Descripción
total_sin_impuestos float Total antes de los impuestos. Requerido
descuento float Suma de los descuentos de cada ítem. 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
forma_pago string Código del tipo de forma de pago. Requerido
total float Total aplicable a la forma de pago especificada. Requerido
unidad_tiempo string Máximo 10 caracteres.
plazo string Máximo 14 caracteres.

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,
    "descuento": 0.0
  },
  "maquina_fiscal": {
    "marca": "SISPAU",
    "modelo": "ABC123",
    "serie": "CGNC1405"
  },
  "proveedor": {
    "email": "juan.perez@xyz.com",
    "identificacion": "0987654321",
    "tipo_identificacion": "05",
    "razon_social": "Juan Pérez",
    "direccion": "Calle única Numero 987",
    "telefono": "046029400"
  },
  "maquina_fiscal": {
    "marca": "SISPAU",
    "modelo": "ABC123",
    "serie": "CGNC1405"
  },
  "items":[
    {
      "cantidad": 622.0,
      "codigo_principal": "ZNC",
      "codigo_auxiliar": "050",
      "precio_unitario": 7.01,
      "descripcion": "Zanahoria granel  50 Kg.",
      "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"
      },
      "descuento": 0.0,
      "unidad_medida": "Kilos"
    }
  ],
  "pagos": [
    {
      "forma_pago": "01",
      "total": 4882.68,
      "unidad_tiempo": "dias",
      "plazo": "30"
    }
  ]
}

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

Emisión de una liquidación de compra a partir de XML

POST /purchase-settlements/issue/xml

Requerimiento a partir de XML

Para la emisión de una liquidación de compra 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

curl -v https://link.datil.co/purchase-settlements/issue/xml \
-H "Content-Type: application/json" \
-H "X-Key: <API-key>" \
-H "X-Password: <clave-certificado-firma>" \
-d '{"xml" : "<?xml version=\"1.1.0\" encoding=\"UTF-8\"?>
<liquidacionCompra id= \"comprobante\" version= \"1.1.0\">
    <infoTributaria>
        <ambiente>1</ambiente>
        <tipoEmision>1</tipoEmision>
        <razonSocial>DATILMEDIA S.A. DE C.V.</razonSocial>
        <nombreComercial>DATILMEDIA S.A.</nombreComercial>
        <ruc>0992712554001</ruc>
        <claveAcceso>1234567890098765432112345678900987654321987654321</claveAcceso>
        <codDoc>03</codDoc>
        <estab>001</estab>
        <ptoEmi>001</ptoEmi>
        <secuencial>000002134</secuencial>
        <dirMatriz>VICTOR EMILIO ESTRADA 112 Y CIRCUNVALACION NORTE</dirMatriz>
    </infoTributaria>
    <infoLiquidacionCompra>
        <fechaEmision>20/10/2019</fechaEmision>
        <dirEstablecimiento>VICTOR EMILIO ESTRADA 112 Y CIRCUNVALACION NORTE 2</dirEstablecimiento>
        <obligadoContabilidad>NO</obligadoContabilidad>
        <tipoIdentificacionProveedor>04</tipoIdentificacionProveedor>
        <razonSocialProveedor>Sistemas XYZ</razonSocialProveedor>
        <identificacionProveedor>0987343992001</identificacionProveedor>
        <totalSinImpuestos>6.00</totalSinImpuestos>
        <totalDescuento>1.50</totalDescuento>
        <totalConImpuestos>
            <totalImpuesto>
                <codigo>2</codigo>
                <codigoPorcentaje>2</codigoPorcentaje>
                <baseImponible>6.00</baseImponible>
                <valor>0.72</valor>
            </totalImpuesto>
        </totalConImpuestos>
        <importeTotal>6.72</importeTotal>
        <moneda>DOLAR</moneda>
        <pagos>
            <pago>
                <formaPago>01</formaPago>
                <total>6.72</total>
            </pago>
        </pagos>
    </infoLiquidacionCompra>
    <detalles>
        <detalle>
            <codigoPrincipal>105AP</codigoPrincipal>
            <descripcion>Aceite Protector</descripcion>
            <cantidad>1.400000</cantidad>
            <precioUnitario>5.357143</precioUnitario>
            <descuento>1.50</descuento>
            <precioTotalSinImpuesto>6.00</precioTotalSinImpuesto>
            <impuestos>
                <impuesto>
                    <codigo>2</codigo>
                    <codigoPorcentaje>2</codigoPorcentaje>
                    <tarifa>12.00</tarifa>
                    <baseImponible>6.00</baseImponible>
                    <valor>0.72</valor>
                </impuesto>
            </impuestos>
        </detalle>
    </detalles>
    <infoAdicional>
        <campoAdicional nombre= \"Info\">Adicional</campoAdicional>
    </infoAdicional>
</liquidacionCompra>"}'
import requests, json

liquidacion_compra = {
    "xml": '''<?xml version="1.1.0" encoding="UTF-8"?>
    <liquidacionCompra id="comprobante" version="1.1.0">
      <infoTributaria>
        <ambiente>1</ambiente>
        <tipoEmision>1</tipoEmision>
        <razonSocial>DATILMEDIA S.A.</razonSocial>
        <nombreComercial>DATILMEDIA S.A.</nombreComercial>
        <ruc>0992712554001</ruc>
        <claveAcceso>1234567890098765432112345678900987654321987654321</claveAcceso>
        <codDoc>03</codDoc>
        <estab>001</estab>
        <ptoEmi>001</ptoEmi>
        <secuencial>000002134</secuencial>
        <dirMatriz>VICTOR EMILIO ESTRADA 112 Y CIRCUNVALACION NORTE</dirMatriz>
      </infoTributaria>
      <infoLiquidacionCompra>
        <fechaEmision>20/10/2019</fechaEmision>
        <dirEstablecimiento>VICTOR EMILIO ESTRADA 112 Y CIRCUNVALACION NORTE 2</dirEstablecimiento>
        <obligadoContabilidad>NO</obligadoContabilidad>
        <tipoIdentificacionProveedor>04</tipoIdentificacionProveedor>
        <razonSocialProveedor>Sistemas XYZ</razonSocialProveedor>
        <identificacionProveedor>0987343992001</identificacionProveedor>
        <totalSinImpuestos>6.00</totalSinImpuestos>
        <totalDescuento>1.50</totalDescuento>
        <totalConImpuestos>
          <totalImpuesto>
            <codigo>2</codigo>
            <codigoPorcentaje>2</codigoPorcentaje>
            <baseImponible>6.00</baseImponible>
            <valor>0.72</valor>
          </totalImpuesto>
        </totalConImpuestos>
        <importeTotal>6.72</importeTotal>
        <moneda>DOLAR</moneda>
        <pagos>
          <pago>
            <formaPago>01</formaPago>
            <total>6.72</total>
          </pago>
        </pagos>
      </infoLiquidacionCompra>
      <detalles>
        <detalle>
          <codigoPrincipal>105AP</codigoPrincipal>
          <descripcion>Aceite Protector</descripcion>
          <cantidad>1.400000</cantidad>
          <precioUnitario>5.357143</precioUnitario>
          <descuento>1.50</descuento>
          <precioTotalSinImpuesto>6.00</precioTotalSinImpuesto>
          <impuestos>
            <impuesto>
              <codigo>2</codigo>
              <codigoPorcentaje>2</codigoPorcentaje>
              <tarifa>12.00</tarifa>
              <baseImponible>6.00</baseImponible>
              <valor>0.72</valor>
            </impuesto>
          </impuestos>
        </detalle>
      </detalles>
      <infoAdicional>
        <campoAdicional nombre="Info">Adicional</campoAdicional>
      </infoAdicional>
    </liquidacionCompra>'''
}

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(liquidacion_compra))

Respuesta de ejemplo

{
    "pagos": [
        {
            "plazo": null,
            "total": "6.72",
            "unidad_tiempo": "",
            "forma_pago": "01"
        }
    ],
    "secuencial": 3,
    "proveedor": {
        "correo": null,
        "identificacion": "0987343992001",
        "razon_social": "Sistemas XYZ",
        "direccion": "",
        "tipo_identificacion": "04"
    },
    "emisor": {
        "provincia": 10,
        "email": "devops@datilmedia.com",
        "categoria": "Combustible",
        "ruc": "1234567890001",
        "obligado_contabilidad": false,
        "contribuyente_especial": "",
        "subcategoria": "Desarrollo de software",
        "nombre_comercial": "Hexlab Demo",
        "pais": 1,
        "market_id": "denny",
        "razon_social": "Hexlab Demo",
        "direccion": "Innvernadero Coworking, Bálsamos 813 entre Guayacanes e Higueras",
        "ciudad": "Guayaquil",
        "exportador": false,
        "telefono": "046029400",
        "tipoentidad": "Sociedad Anónima"
    },
    "correos_enviados": [],
    "numero": "001-001-000000003",
    "anulado": false,
    "es_valida": true,
    "id": "c1f05f6cd3494c88a21877d8c8d3a5ea",
    "informacion_adicional": {
        "Info": "Adicional"
    },
    "ambiente": "1",
    "totales": {
        "total_sin_impuestos": "6.00",
        "importe_total": "6.72",
        "impuestos": [
            {
                "codigo": "2",
                "codigo_porcentaje": "2",
                "base_imponible": "6.00",
                "valor": "0.72"
            }
        ],
        "descuento": "1.50"
    },
    "envio_sri": {},
    "items": [
        {
            "precio_unitario": "5.357143",
            "descripcion": "Aceite Protector",
            "precio_total_sin_impuestos": "6.00",
            "unidad_medida": null,
            "impuestos": [
                {
                    "codigo": "2",
                    "tarifa": "12.00",
                    "codigo_porcentaje": "2",
                    "base_imponible": "6.00",
                    "valor": "0.72"
                }
            ],
            "detalles_adicionales": {},
            "cantidad": "1.400000",
            "codigo_auxiliar": null,
            "descuento": "1.50",
            "codigo_principal": "105AP"
        }
    ],
    "pre_autorizado": false,
    "clave_acceso": "2010201903123456789000110010010000000032235587919",
    "autorizacion": {}
}

Emisión de una liquidación de compras de reembolso

Operación

POST /purchase-settlements/issue

Requerimiento

Requerimiento de ejemplo

curl -v https://link.datil.co/purchase-settlements/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":50.00,
    "impuestos":[
      {
        "base_imponible":50.00,
        "valor":0.00,
        "codigo":"2",
        "codigo_porcentaje":"0"
      }
    ],
    "importe_total":50.00,
    "descuento":0.0
  },
  "maquina_fiscal": {
    "marca": "SISPAU",
    "modelo": "ABC123",
    "serie": "CGNC1405"
  },
  "proveedor":{
    "email":"juan.perez@xyz.com",
    "identificacion":"0987654321",
    "tipo_identificacion":"05",
    "razon_social":"Juan Pérez",
    "direccion":"Calle única Numero 987",
    "telefono":"046029400"
  },
  "items": [{
    "cantidad": 1.0,
    "codigo_principal": "REEM",
    "codigo_auxiliar": "",
    "precio_unitario": 50.00,
    "descuento": 0,
    "descripcion": "Reembolso de gastos",
    "precio_total_sin_impuestos": 50.00,
    "impuestos": [{
      "base_imponible": 50.00,
      "valor": 0.00,
      "tarifa": 0.00,
      "codigo": "2",
      "codigo_porcentaje": "0"
    }],
    "descuento": 0.00
  }],
  "reembolso": {
    "subtotal": 50.00,
    "total": 50.00,
    "total_impuestos": 0.00,
    "documentos": [
      {
        "tipo_identificacion_proveedor": "04",
        "pais_origen_proveedor": "593",
        "tipo_proveedor": "01",
        "identificacion_proveedor": "0918723323001",
        "tipo": "01",
        "numero_autorizacion": 3811201601,
        "fecha_emision": "2020-01-28T10:50:26-05:00",
        "codigo_punto_emision": "001",
        "codigo_establecimiento": "003",
        "secuencia": 897,
        "impuestos": [
          {
            "tarifa": 0.0,
            "codigo": "2",
            "codigo_porcentaje": "0",
            "base_imponible": "50.0",
            "valor": "0.00",
          }
        ],
      }
    ],
  },
  "pagos": [
    {
      "forma_pago": "01",
      "total": 50.00,
      "unidad_tiempo": "dias",
      "plazo": "30"
    }
  ],
}'
import requests, json

liquidacion_compras = {
  "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":50.00,
    "impuestos":[
      {
        "base_imponible":50.00,
        "valor":0.00,
        "codigo":"2",
        "codigo_porcentaje":"0"
      }
    ],
    "importe_total":50.00,
    "descuento":0.0
  },
  "maquina_fiscal": {
    "marca": "SISPAU",
    "modelo": "ABC123",
    "serie": "CGNC1405"
  },
  "proveedor":{
    "email":"juan.perez@xyz.com",
    "identificacion":"0987654321",
    "tipo_identificacion":"05",
    "razon_social":"Juan Pérez",
    "direccion":"Calle única Numero 987",
    "telefono":"046029400"
  },
  "items": [{
    "cantidad": 1.0,
    "codigo_principal": "REEM",
    "codigo_auxiliar": "",
    "precio_unitario": 50.00,
    "descuento": 0,
    "descripcion": "Reembolso de gastos",
    "precio_total_sin_impuestos": 50.00,
    "impuestos": [{
      "base_imponible": 50.00,
      "valor": 0.00,
      "tarifa": 0.00,
      "codigo": "2",
      "codigo_porcentaje": "0"
    }],
    "descuento": 0.00
  }],
  "reembolso": {
    "subtotal": 50.00,
    "total": 50.00,
    "total_impuestos": 0.00,
    "documentos": [
      {
        "tipo_identificacion_proveedor": "04",
        "pais_origen_proveedor": "593",
        "tipo_proveedor": "01",
        "identificacion_proveedor": "0918723323001",
        "tipo": "01",
        "numero_autorizacion": 3811201601,
        "fecha_emision": "2020-01-28T10:50:26-05:00",
        "codigo_punto_emision": "001",
        "codigo_establecimiento": "003",
        "secuencia": 897,
        "impuestos": [
          {
            "tarifa": 0.0,
            "codigo": "2",
            "codigo_porcentaje": "0",
            "base_imponible": 50.00,
            "valor": 0.00,
          }
        ],
      }
    ],
  },
  "pagos": [
    {
      "forma_pago": "01",
      "total": 50.00,
      "unidad_tiempo": "dias",
      "plazo": "30"
    }
  ]
}
cabeceras = {
    'x-key': '<clave-del-api>',
    'x-password': '<clave-certificado-firma>',
    'content-type': 'application/json'}
respuesta = requests.post(
    "https://link.datil.co/purchase-settlements/issue",
    headers = cabeceras,
    data = json.dumps(liquidacion_compras))
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("purchase-settlements/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"":50.00,
          ""impuestos"":[
            {
              ""base_imponible"":0.0,
              ""valor"":0.0,
              ""codigo"":""2"",
              ""codigo_porcentaje"":""0""
            },
            {
              ""base_imponible"":50.00,
              ""valor"":523.14,
              ""codigo"":""2"",
              ""codigo_porcentaje"":""2""
            }
          ],
          ""importe_total"":50.00,
          ""descuento"":0.0
        },
        ""maquina_fiscal"": {
          ""marca"": ""SISPAU"",
          ""modelo"": ""ABC123"",
          ""serie"": ""CGNC1405""
        },
        ""proveedor"":{
          ""email"":""juan.perez@xyz.com"",
          ""identificacion"":""0987654321"",
          ""tipo_identificacion"":""05"",
          ""razon_social"":""Juan Pérez"",
          ""direccion"":""Calle única Numero 987"",
          ""telefono"":""046029400""
        },
        ""items"":[
          {
            ""cantidad"":1.0,
            ""codigo_principal"":""REEM"",
            ""codigo_auxiliar"": """",
            ""precio_unitario"": 50.00,
            ""descripcion"": ""Reembolso de gastos"",
            ""precio_total_sin_impuestos"": 50.00,
            ""impuestos"": [
              {
                ""base_imponible"":50.00,
                ""valor"":0.00,
                ""tarifa"":0.00,
                ""codigo"":""2"",
                ""codigo_porcentaje"":""0""
              }
            ],
            ""detalles_adicionales"": {
              ""Peso"":""5000.0000""
            },
            ""descuento"": 0.0,
          }
      ],
      ""reembolso"": {
        ""subtotal"": 50.00,
        ""total"": 50.00,
        ""total_impuestos"": 0.00,
        ""documentos"": [
          {
            ""tipo_identificacion_proveedor"": ""04"",
            ""pais_origen_proveedor"": ""593"",
            ""tipo_proveedor"": ""01"",
            ""identificacion_proveedor"": ""0918723323001"",
            ""tipo"": ""01"",
            ""numero_autorizacion"": 3811201601,
            ""fecha_emision"": ""2020-01-28T10:50:26-05:00"",
            ""codigo_punto_emision"": ""001"",
            ""codigo_establecimiento"": ""003"",
            ""secuencia"": 897,
            ""impuestos"": [
              {
                ""tarifa"": 0.0,
                ""codigo"": ""2"",
                ""codigo_porcentaje"": ""0"",
                ""base_imponible"": 50.00,
                ""valor"": 0.00,
              }
            ],
          }
        ],
      },
      ""pagos"": [
        {
          ""forma_pago"": ""01"",
          ""total"": 50.00,
          ""unidad_tiempo"": ""10"",
          ""plazo"": ""30""
        }
      ]
      }");
      request.AddParameter("application/json", body, ParameterType.RequestBody);
      IRestResponse response = client.Execute(request);

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

Para la emisión de una liquidación de compras de reembolso 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 liquidación de compras. 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
totales objeto tipo totales Listado de totales. Requerido
maquina_fiscal objeto maquina_fiscal Información de máquina fiscal.
proveedor objeto tipo persona Información del proveedor. 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 liquidación de compras. Para liquidaciones de compras de reembolso el impuesto del ítem es No Objeto de Impuesto 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"}
pagos Listado de objetos tipo pagos Listado de formas de pago aplicables a la liquidación de compras. Requerido
reembolso objeto tipo reembolso Información de reembolso. Requerido

Totales

Parámetro Tipo Descripción
total_sin_impuestos float Total antes de los impuestos. Requerido
descuento float Suma de los descuentos de cada ítem. 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
forma_pago string Código del tipo de forma de pago. Requerido
total float Total aplicable a la forma de pago especificada. Requerido
unidad_tiempo string Máximo 10 caracteres.
plazo string Máximo 14 caracteres.

Respuesta

Respuesta de ejemplo

{
  "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":50.00,
    "impuestos":[
      {
        "base_imponible":50.00,
        "valor":0.00,
        "codigo":"2",
        "codigo_porcentaje":"0"
      }
    ],
    "importe_total":50.00,
    "descuento":0.0
  },
  "maquina_fiscal": {
    "marca": "SISPAU",
    "modelo": "ABC123",
    "serie": "CGNC1405"
  },
  "proveedor":{
    "email":"juan.perez@xyz.com",
    "identificacion":"0987654321",
    "tipo_identificacion":"05",
    "razon_social":"Juan Pérez",
    "direccion":"Calle única Numero 987",
    "telefono":"046029400"
  },
  "items": [{
    "cantidad": 1.0,
    "codigo_principal": "REEM",
    "codigo_auxiliar": "",
    "precio_unitario": 50.00,
    "descuento": 0,
    "descripcion": "Reembolso de gastos",
    "precio_total_sin_impuestos": 50.00,
    "impuestos": [{
      "base_imponible": 50.00,
      "valor": 0.00,
      "tarifa": 0.00,
      "codigo": "2",
      "codigo_porcentaje": "0"
    }],
    "descuento": 0.00
  }],
  "reembolso": {
    "subtotal": 50.00,
    "total": 50.00,
    "total_impuestos": 0.00,
    "documentos": [
      {
        "tipo_identificacion_proveedor": "04",
        "pais_origen_proveedor": "593",
        "tipo_proveedor": "01",
        "identificacion_proveedor": "0918723323001",
        "tipo": "01",
        "numero_autorizacion": 3811201601,
        "fecha_emision": "2020-01-28T10:50:26-05:00",
        "codigo_punto_emision": "001",
        "codigo_establecimiento": "003",
        "secuencia": 897,
        "impuestos": [
          {
            "tarifa": 0.0,
            "codigo": "2",
            "codigo_porcentaje": "0",
            "base_imponible": 50.00,
            "valor": 0.00,
          }
        ],
      }
    ],
  },
  "pagos": [
    {
      "forma_pago": "01",
      "total": 50.00,
      "unidad_tiempo": "dias",
      "plazo": "30"
    }
  ]
}

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

Emisión de una liquidación de compras de reembolso a partir de XML

Requerimiento de ejemplo

curl -v https://link.datil.co/purchase-settlements/issue/xml \
-H "Content-Type: application/json" \
-H "X-Key: <API-key>" \
-H "X-Password: <clave-certificado-firma>" \
-d '{"xml" : "<?xml version=\"1.1.0\" encoding=\"UTF-8\"?>
<liquidacionCompra id= \"comprobante\" version= \"1.1.0\">
    <infoTributaria>
        <ambiente>1</ambiente>
        <tipoEmision>1</tipoEmision>
        <razonSocial>DATILMEDIA S.A. DE C.V.</razonSocial>
        <nombreComercial>DATILMEDIA S.A.</nombreComercial>
        <ruc>0992712554001</ruc>
        <claveAcceso>1234567890098765432112345678900987654321987654321</claveAcceso>
        <codDoc>03</codDoc>
        <estab>001</estab>
        <ptoEmi>001</ptoEmi>
        <secuencial>000002134</secuencial>
        <dirMatriz>VICTOR EMILIO ESTRADA 112 Y CIRCUNVALACION NORTE</dirMatriz>
    </infoTributaria>
    <infoLiquidacionCompra>
        <fechaEmision>20/10/2019</fechaEmision>
        <dirEstablecimiento>VICTOR EMILIO ESTRADA 112 Y CIRCUNVALACION NORTE 2</dirEstablecimiento>
        <obligadoContabilidad>NO</obligadoContabilidad>
        <tipoIdentificacionProveedor>04</tipoIdentificacionProveedor>
        <razonSocialProveedor>Sistemas XYZ</razonSocialProveedor>
        <identificacionProveedor>0987343992001</identificacionProveedor>
        <totalSinImpuestos>6.00</totalSinImpuestos>
        <totalDescuento>1.50</totalDescuento>
        <totalConImpuestos>
            <totalImpuesto>
                <codigo>2</codigo>
                <codigoPorcentaje>2</codigoPorcentaje>
                <baseImponible>6.00</baseImponible>
                <valor>0.72</valor>
            </totalImpuesto>
        </totalConImpuestos>
        <importeTotal>6.72</importeTotal>
        <moneda>DOLAR</moneda>
        <pagos>
            <pago>
                <formaPago>01</formaPago>
                <total>6.72</total>
            </pago>
        </pagos>
    </infoLiquidacionCompra>
    <detalles>
        <detalle>
            <codigoPrincipal>105AP</codigoPrincipal>
            <descripcion>Aceite Protector</descripcion>
            <cantidad>1.400000</cantidad>
            <precioUnitario>5.357143</precioUnitario>
            <descuento>1.50</descuento>
            <precioTotalSinImpuesto>6.00</precioTotalSinImpuesto>
            <impuestos>
                <impuesto>
                    <codigo>2</codigo>
                    <codigoPorcentaje>2</codigoPorcentaje>
                    <tarifa>12.00</tarifa>
                    <baseImponible>6.00</baseImponible>
                    <valor>0.72</valor>
                </impuesto>
            </impuestos>
        </detalle>
    </detalles>
    <reembolsos>
      <reembolsoDetalle>
          <tipoIdentificacionProveedorReembolso>05</tipoIdentificacionProveedorReembolso>
          <identificacionProveedorReembolso>0923797427</identificacionProveedorReembolso>
          <codPaisPagoProveedorReembolso>593</codPaisPagoProveedorReembolso>
          <tipoProveedorReembolso>01</tipoProveedorReembolso>
          <codDocReembolso>01</codDocReembolso>
          <estabDocReembolso>001</estabDocReembolso>
          <ptoEmiDocReembolso>002</ptoEmiDocReembolso>
          <secuencialDocReembolso>000000928</secuencialDocReembolso>
          <fechaEmisionDocReembolso>21/02/2020</fechaEmisionDocReembolso>
          <numeroautorizacionDocReemb>1234567890</numeroautorizacionDocReemb>
          <detalleImpuestos>
              <detalleImpuesto>
                <codigo>2</codigo>
                <codigoPorcentaje>2</codigoPorcentaje>
                <tarifa>12</tarifa>
                <baseImponibleReembolso>230.00</baseImponibleReembolso>
                <impuestoReembolso>27.60</impuestoReembolso>
              </detalleImpuesto>
            </detalleImpuestos>
      </reembolsoDetalle>
    </reembolsos>
    <infoAdicional>
        <campoAdicional nombre= \"Info\">Adicional</campoAdicional>
    </infoAdicional>
</liquidacionCompra>"}'
import requests, json

liquidacion_compra = {
    "xml": '''<?xml version="1.1.0" encoding="UTF-8"?>
    <liquidacionCompra id="comprobante" version="1.1.0">
      <infoTributaria>
        <ambiente>1</ambiente>
        <tipoEmision>1</tipoEmision>
        <razonSocial>DATILMEDIA S.A.</razonSocial>
        <nombreComercial>DATILMEDIA S.A.</nombreComercial>
        <ruc>0992712554001</ruc>
        <claveAcceso>1234567890098765432112345678900987654321987654321</claveAcceso>
        <codDoc>03</codDoc>
        <estab>001</estab>
        <ptoEmi>001</ptoEmi>
        <secuencial>000002134</secuencial>
        <dirMatriz>VICTOR EMILIO ESTRADA 112 Y CIRCUNVALACION NORTE</dirMatriz>
      </infoTributaria>
      <infoLiquidacionCompra>
        <fechaEmision>20/10/2019</fechaEmision>
        <dirEstablecimiento>VICTOR EMILIO ESTRADA 112 Y CIRCUNVALACION NORTE 2</dirEstablecimiento>
        <obligadoContabilidad>NO</obligadoContabilidad>
        <tipoIdentificacionProveedor>04</tipoIdentificacionProveedor>
        <razonSocialProveedor>Sistemas XYZ</razonSocialProveedor>
        <identificacionProveedor>0987343992001</identificacionProveedor>
        <totalSinImpuestos>6.00</totalSinImpuestos>
        <totalDescuento>1.50</totalDescuento>
        <totalConImpuestos>
          <totalImpuesto>
            <codigo>2</codigo>
            <codigoPorcentaje>2</codigoPorcentaje>
            <baseImponible>6.00</baseImponible>
            <valor>0.72</valor>
          </totalImpuesto>
        </totalConImpuestos>
        <importeTotal>6.72</importeTotal>
        <moneda>DOLAR</moneda>
        <pagos>
          <pago>
            <formaPago>01</formaPago>
            <total>6.72</total>
          </pago>
        </pagos>
      </infoLiquidacionCompra>
      <detalles>
        <detalle>
          <codigoPrincipal>105AP</codigoPrincipal>
          <descripcion>Aceite Protector</descripcion>
          <cantidad>1.400000</cantidad>
          <precioUnitario>5.357143</precioUnitario>
          <descuento>1.50</descuento>
          <precioTotalSinImpuesto>6.00</precioTotalSinImpuesto>
          <impuestos>
            <impuesto>
              <codigo>2</codigo>
              <codigoPorcentaje>2</codigoPorcentaje>
              <tarifa>12.00</tarifa>
              <baseImponible>6.00</baseImponible>
              <valor>0.72</valor>
            </impuesto>
          </impuestos>
        </detalle>
      </detalles
      <reembolsos>
        <reembolsoDetalle>
            <tipoIdentificacionProveedorReembolso>05</tipoIdentificacionProveedorReembolso>
            <identificacionProveedorReembolso>0923797427</identificacionProveedorReembolso>
            <codPaisPagoProveedorReembolso>593</codPaisPagoProveedorReembolso>
            <tipoProveedorReembolso>01</tipoProveedorReembolso>
            <codDocReembolso>01</codDocReembolso>
            <estabDocReembolso>001</estabDocReembolso>
            <ptoEmiDocReembolso>002</ptoEmiDocReembolso>
            <secuencialDocReembolso>000000928</secuencialDocReembolso>
            <fechaEmisionDocReembolso>21/02/2020</fechaEmisionDocReembolso>
            <numeroautorizacionDocReemb>1234567890</numeroautorizacionDocReemb>
            <detalleImpuestos>
                <detalleImpuesto>
                  <codigo>2</codigo>
                  <codigoPorcentaje>2</codigoPorcentaje>
                  <tarifa>12</tarifa>
                  <baseImponibleReembolso>230.00</baseImponibleReembolso>
                  <impuestoReembolso>27.60</impuestoReembolso>
                </detalleImpuesto>
              </detalleImpuestos>
        </reembolsoDetalle>
      </reembolsos>
      <infoAdicional>
        <campoAdicional nombre="Info">Adicional</campoAdicional>
      </infoAdicional>
    </liquidacionCompra>'''
}

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(liquidacion_compra))

POST /purchase-settlements/issue/xml

Requerimiento a partir de XML

Para la emisión de una liquidación de compra de reembolso 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

Respuesta de ejemplo

{
    "pagos": [
        {
            "plazo": null,
            "total": "6.72",
            "unidad_tiempo": "",
            "forma_pago": "01"
        }
    ],
    "secuencial": 3,
    "proveedor": {
        "correo": null,
        "identificacion": "0987343992001",
        "razon_social": "Sistemas XYZ",
        "direccion": "",
        "tipo_identificacion": "04"
    },
    "emisor": {
        "provincia": 10,
        "email": "devops@datilmedia.com",
        "categoria": "Combustible",
        "ruc": "1234567890001",
        "obligado_contabilidad": false,
        "contribuyente_especial": "",
        "subcategoria": "Desarrollo de software",
        "nombre_comercial": "Hexlab Demo",
        "pais": 1,
        "market_id": "denny",
        "razon_social": "Hexlab Demo",
        "direccion": "Innvernadero Coworking, Bálsamos 813 entre Guayacanes e Higueras",
        "ciudad": "Guayaquil",
        "exportador": false,
        "telefono": "046029400",
        "tipoentidad": "Sociedad Anónima"
    },
    "correos_enviados": [],
    "numero": "001-001-000000003",
    "anulado": false,
    "es_valida": true,
    "id": "c1f05f6cd3494c88a21877d8c8d3a5ea",
    "informacion_adicional": {
        "Info": "Adicional"
    },
    "ambiente": "1",
    "totales": {
        "total_sin_impuestos": "6.00",
        "importe_total": "6.72",
        "impuestos": [
            {
                "codigo": "2",
                "codigo_porcentaje": "2",
                "base_imponible": "6.00",
                "valor": "0.72"
            }
        ],
        "descuento": "1.50"
    },
    "envio_sri": {},
    "items": [
        {
            "precio_unitario": "5.357143",
            "descripcion": "Aceite Protector",
            "precio_total_sin_impuestos": "6.00",
            "unidad_medida": null,
            "impuestos": [
                {
                    "codigo": "2",
                    "tarifa": "12.00",
                    "codigo_porcentaje": "2",
                    "base_imponible": "6.00",
                    "valor": "0.72"
                }
            ],
            "detalles_adicionales": {},
            "cantidad": "1.400000",
            "codigo_auxiliar": null,
            "descuento": "1.50",
            "codigo_principal": "105AP"
        }
    ],
    "reembolso": {
        "total": "0.00",
        "subtotal": "0.00",
        "documentos": [
            {
                "fecha_emision": "2020-02-21",
                "identificacion_proveedor": "0923797427",
                "pais_origen_proveedor": "EC",
                "codigo_punto_emision": "002",
                "codigo_establecimiento": "001",
                "numero_autorizacion": "1234567890",
                "tipo_identificacion_proveedor": "05",
                "secuencia": 928,
                "tipo_proveedor": "01",
                "codigo": "01",
                "impuestos": [
                    {
                        "tarifa": "12.00",
                        "codigo_porcentaje": "2",
                        "valor": "27.60",
                        "nombre": "12%",
                        "codigo": "2",
                        "base_imponible": "230.00"
                    }
                ]
            }
        ],
        "total_impuestos": "0.00"
    },
    "pre_autorizado": false,
    "clave_acceso": "2010201903123456789000110010010000000032235587919",
    "autorizacion": {}
}

Consulta de una liquidación de compra

Consulta una liquidación de compra 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 /purchase-settlements/<purchase-settlement-ID>

Requerimiento

Requerimiento de ejemplo

curl -v https://link.datil.co/purchase-settlements/<id-liquidacion> \
-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/purchase-settlements/<id-liquidacion>',
    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 idLiquidacion = "<id-liquidacion>";
      var request = new RestRequest("purchase-settlements/" + idLiquidacion, Method.GET);
      request.AddHeader("X-Key", "<clave-del-api>");

      IRestResponse response = client.Execute(request);

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

Reemplaza en la ruta <purchase-settlement-ID> por el id de la liquidación de compra que necesitas consultar.

Respuesta

Respuesta de ejemplo

{
    "id": "abcf12343faad0678512343faad06785",
    "secuencial": "16",
    "fecha_emision": "2019-05-03",
    "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": "2019-05-03T16:36:48.274604",
            "destinatarios": "cplaza@gye593.com"
        }
    ],
    "moneda": "USD",
    "informacion_adicional": [],
    "ambiente": "1",
    "totales": {
        "total_sin_impuestos": "150.00",
        "descuento": "0.00",
        "impuestos": [
            {
                "codigo": 2,
                "codigo_porcentaje": "2",
                "base_imponible": "150.00",
                "valor": "18.00"
            }
        ],
        "importe_total": "168.00"
    },
    "maquina_fiscal": {
        "marca": "SISPAU",
        "modelo": "ABC123",
        "serie": "CGNC1405"
    },
    "proveedor": {
        "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"
        }
    ],  
    "pagos": [
      {
        "forma_pago": "01",
        "total": 168.0,
        "unidad_tiempo": "dias",
        "plazo": "30"
      }
    ],
    "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 liquidación de compras.
estado string Posibles valores: AUTORIZADO, NO AUTORIZADO, ENVIADO, DEVUELTO, RECIBIDO, ERROR
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.
maquina_fiscal objeto maquina_fiscal Información de máquina fiscal.
proveedor objeto persona Información del proveedor.
tipo_emision integer Emisión normal: 1.
Emisión por indisponibilidad: 2
items listado de objetos tipo item Items incluídos en la liquidación de compras.
pagos listado de objetos tipo pagos Listado de formas de pago aplicables a la liquidación de compras.
version string Versión de la especificación, opciones válidas: 1.0.0, 1.1.0

Consulta de una liquidación de compra de reembolso

Consulta una liquidación de compra de reembolso 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 /purchase-settlements/<purchase-settlement-ID>

Requerimiento

Requerimiento de ejemplo

curl -v https://link.datil.co/purchase-settlements/<id-liquidacion> \
-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/purchase-settlements/<id-liquidacion>',
    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 idLiquidacion = "<id-liquidacion>";
      var request = new RestRequest("purchase-settlements/" + idLiquidacion, Method.GET);
      request.AddHeader("X-Key", "<clave-del-api>");

      IRestResponse response = client.Execute(request);

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

Reemplaza en la ruta <purchase-settlement-ID> por el id de la liquidación de compra que necesitas consultar.

Respuesta

Respuesta de ejemplo

{
    "id": "abcf12343faad0678512343faad06785",
    "secuencial": "16",
    "fecha_emision": "2019-05-03",
    "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": "2019-05-03T16:36:48.274604",
            "destinatarios": "cplaza@gye593.com"
        }
    ],
    "moneda": "USD",
    "informacion_adicional": [],
    "ambiente": "1",
    "totales": {
        "total_sin_impuestos": 50.00,
        "descuento": "0.00",
        "impuestos": [
            {
                "codigo": 2,
                "codigo_porcentaje": "2",
                "base_imponible": 50.00,
                "valor": 0.00
            }
        ],
        "importe_total": 50.00
    },
    "maquina_fiscal": {
        "marca": "SISPAU",
        "modelo": "ABC123",
        "serie": "CGNC1405"
    },
    "proveedor": {
        "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": [{
      "cantidad": 1.0,
      "codigo_principal": "REEM",
      "codigo_auxiliar": "",
      "precio_unitario": 50.00,
      "descuento": 0,
      "descripcion": "Reembolso de gastos",
      "precio_total_sin_impuestos": 50.00,
      "impuestos": [{
        "base_imponible": 50.00,
        "valor": 0.00,
        "tarifa": 0.00,
        "codigo": "2",
        "codigo_porcentaje": "0"
      }],
      "descuento": 0.00
    }],
    "reembolso": {
      "subtotal": 50.00,
      "total": 50.00,
      "total_impuestos": 0.00,
      "documentos": [
        {
          "tipo_identificacion_proveedor": "04",
          "pais_origen_proveedor": "593",
          "tipo_proveedor": "01",
          "identificacion_proveedor": "0918723323001",
          "tipo": "01",
          "numero_autorizacion": 3811201601,
          "fecha_emision": "2020-01-28T10:50:26-05:00",
          "codigo_punto_emision": "001",
          "codigo_establecimiento": "003",
          "secuencia": 897,
          "impuestos": [
            {
              "tarifa": 0.0,
              "codigo": "2",
              "codigo_porcentaje": "0",
              "base_imponible": 50.00,
              "valor": 0.00,
            }
          ],
        }
      ],
    },
    "pagos": [
      {
        "forma_pago": "01",
        "total": 50.0,
        "unidad_tiempo": "dias",
        "plazo": "30"
      }
    ],
    "autorizacion": {
      "estado": "AUTORIZADO",
      "mensajes": [
          {
              "identificador": "60",
              "mensaje": "ESTE PROCESO FUE REALIZADO EN EL AMBIENTE DE PRUEBAS",
              "tipo": "INFORMATIVO",
              "informacion_adicional": ""
          }
      ],
      "numero": "1505201516323509927125540010266935227",
      "fecha": "2019-05-15T16:32:35.000380"
    }
}
Parámetro Tipo Descripción
secuencial string Número de secuencia de la liquidación de compras.
estado string Posibles valores: AUTORIZADO, NO AUTORIZADO, ENVIADO, DEVUELTO, RECIBIDO, ERROR
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.
maquina_fiscal objeto maquina_fiscal Información de máquina fiscal.
proveedor objeto persona Información del proveedor.
tipo_emision integer Emisión normal: 1.
Emisión por indisponibilidad: 2
items listado de objetos tipo item Items incluídos en la liquidación de compras.
pagos listado de objetos tipo pagos Listado de formas de pago aplicables a la liquidación de compras.
version string Versión de la especificación, opciones válidas: 1.0.0, 1.1.0
reembolso objeto tipo reembolso Información de reembolso.

Re-emisión de una liquidación de compra

Operación

POST /purchase-settlements/:id/reissue

Requerimiento

Requerimiento de ejemplo

curl -v https://link.datil.co/purchase-settlements/<id-liquidacion>/reissue \
-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":4359.54,
        "valor":523.14,
        "codigo":"2",
        "codigo_porcentaje":"2"
      }
    ],
    "importe_total":4882.68,
    "descuento":0.0
  },
  "maquina_fiscal": {
    "marca": "SISPAU",
    "modelo": "ABC123",
    "serie": "CGNC1405"
  },
  "proveedor":{
    "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.008907,
      "descripcion": "Zanahoria granel  50 Kg.",
      "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"
      },
      "descuento": 0.0,
      "unidad_medida": "Kilos"
    }
  ],
  "pagos": [
    {
      "forma_pago": "01",
      "total": 4882.68,
      "unidad_tiempo": "dias",
      "plazo": "30"
    }
  ],
}'
import requests, json

liquidacion_compras = {
  "ambiente":1,
  "tipo_emision":1,
  "secuencial":148,
  "fecha_emision":"2019-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,
    "descuento":0.0
  },
  "maquina_fiscal": {
    "marca": "SISPAU",
    "modelo": "ABC123",
    "serie": "CGNC1405"
  },
  "proveedor":{
    "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": 4359.54,
      "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"
    }
  ],
  "pagos": [
    {
      "forma_pago": "01",
      "total": 4882.68,
      "unidad_tiempo": "dias",
      "plazo": "30"
    }
  ]
}
cabeceras = {
    'x-key': '<clave-del-api>',
    'x-password': '<clave-certificado-firma>',
    'content-type': 'application/json'}
respuesta = requests.post(
    "https://link.datil.co/purchase-settlements/<id-liquidacion>/reissue",
    headers = cabeceras,
    data = json.dumps(liquidacion_compras))
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 idLiquidacion = "<id-liquidacion>";
      var request = new RestRequest("purchase-settlements/" + idLiquidacion +  "/reissue", 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,
          ""descuento"":0.0
        },
        ""maquina_fiscal"": {
          ""marca"": ""SISPAU"",
          ""modelo"": ""ABC123"",
          ""serie"": ""CGNC1405""
        },
        ""proveedor"":{
          ""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"": 4359.54,
            ""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""
          }
      ],
      ""pagos"": [
        {
          ""forma_pago"": ""01"",
          ""total"": 4882.68
        }
      ]
      }");
      request.AddParameter("application/json", body, ParameterType.RequestBody);
      IRestResponse response = client.Execute(request);

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

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 retención recibida al momento de emitirla.

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

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,
    "descuento": 0.0
  },
  "maquina_fiscal": {
    "marca": "SISPAU",
    "modelo": "ABC123",
    "serie": "CGNC1405"
  },
  "proveedor": {
    "email": "juan.perez@xyz.com",
    "identificacion": "0987654321",
    "tipo_identificacion": "05",
    "razon_social": "Juan Pérez",
    "direccion": "Calle única Numero 987",
    "telefono": "046029400"
  },
  "maquina_fiscal": {
    "marca": "SISPAU",
    "modelo": "ABC123",
    "serie": "CGNC1405"
  },
  "items":[
    {
      "cantidad": 622.0,
      "codigo_principal": "ZNC",
      "codigo_auxiliar": "050",
      "precio_unitario": 7.01,
      "descripcion": "Zanahoria granel  50 Kg.",
      "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"
      },
      "descuento": 0.0,
      "unidad_medida": "Kilos"
    }
  ],
  "pagos": [
    {
      "forma_pago": "01",
      "total": 4882.68,
      "unidad_tiempo": "dias",
      "plazo": "30"
    }
  ]
}

Retorna un objeto tipo liquidacion que incluye un nuevo parámetro id, el cual identifica de manera única a la liquidación de compras. El campo clave_acceso generado también se incluirá como parte de la respuesta. Sí la liquidación de compra ya está autorizada se retornará un error.

Autorización de comprobantes

Autorizar comprobante

Autoriza cualquier tipo de comprobante electrónico existente. El ID del documento id-doc es el ID que obtienes después de crear un documento.

Operación

POST /edocs/<id-doc>/issue

Requerimiento de ejemplo

curl -v https://link.datil.co/edocs/<id-doc>/issue \
-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>',
    'x-password': '<clave-certificado-firma>',
    'content-type': 'application/json'}
respuesta = requests.get(
    'https://link.datil.co/edocs/<id-factura>/issue',
    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/edocs/");
      var idDocumento = "<id-doc>/issue";
      var request = new RestRequest("edocs/" + idDocumento, Method.GET);
      request.AddHeader("X-Key", "<clave-del-api>");
      request.AddHeader("X-Password", "<clave-certificado-firma>");
      request.AddHeader("Content-Type", "application/json");

      IRestResponse response = client.Execute(request);

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

Requerimiento

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

Respuesta

Parámetro Tipo Descripción
emisor objeto tipo emisor Información completa del emisor.
estado string Estado de autorización del comprobante. Posibles valores: AUTORIZADO, NO AUTORIZADO, ENVIADO, DEVUELTO, RECIBIDO, ERROR
numero string Número completo del documento. Ejm: 001-002-592738007
url_formato_impresion url Esta URL te permite acceder de manera directa al formato de impresión (RIDE) del comprobante
url_documento_electronico url Esta URL te permite acceder de manera directa al documento electrónico (XML)
tipo string Código que representa el tipo de documento. Revisa aquí el código que corresponde a cada tipo de documento
id string El id del documento consultado
ambiente integer Pruebas: 1.
Producción 2.
receptor objeto tipo receptor Informaci'on del receptor del documento.
clave_acceso string Clave de acceso del documento.
autorizacion Objeto de tipo autorización SRI

Respuesta de ejemplo

{
    "emisor": {
        "provincia": 10,
        "email": "uan.perez@xyz.com",
        "categoria": "Software",
        "ruc": "0992712554001",
        "obligado_contabilidad": true,
        "contribuyente_especial": "",
        "subcategoria": "Sorftware como Servicio",
        "nombre_comercial": "Datil",
        "pais": 1,
        "market_id": null,
        "razon_social": "XYZ Corporación S.A.",
        "direccion": "Av. Primera 234 y calle 5ta",
        "ciudad": "Guayaquil",
        "exportador": false,
        "telefono": "099999999",
        "tipoentidad": "Sociedad Anónima"
    },
    "estado": "RECIBIDO",
    "numero": "001-002-000000001",
    "url_formato_impresion": "https://app.datil.com/ver/67aa7c650g395cgb16e18df3d8ff18fc/pdf",
    "url_documento_electronico": "https://app.datil.com/ver/67aa7c650g395cgb16e18df3d8ff18fc/xml",
    "tipo": "01",
    "id": "67aa7c650g395cgb16e18df3d8ff18fc",
    "ambiente": "1",
    "receptor": {
        "identificacion": "0987654321001",
        "telefono": "",
        "email": "devops@datilmedia.com",
        "tipo_identificacion": "04",
        "direccion": "Av. Primera 234 y calle 5ta"
    },
    "clave_acceso": "0803202101099271255400110010020000000011994720519",
    "autorizacion": {
        "mensajes": []
    }
}

Consulta de autorización

Consulta la información de autorización de cualquier tipo de comprobante electrónico. El ID del documento id-doc es el ID que obtienes después de emitir un documento.

Operación

GET /edocs/<id-doc>

Requerimiento

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

Requerimiento de ejemplo

curl -v https://link.datil.co/edocs/<id-doc> \
-H "Accept: application/json" \
-H "X-Key: <clave-del-api>"
import requests
cabeceras = {'x-key': '<clave-del-api>'}
respuesta = requests.get(
    'https://link.datil.co/edocs/<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 idDocumento = "<id-doc>";
      var request = new RestRequest("edocs/" + idDocumento, Method.GET);
      request.AddHeader("X-Key", "<clave-del-api>");

      IRestResponse response = client.Execute(request);

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

Respuesta

Parámetro Tipo Descripción
id string El id del documento consultado
tipo string Código que representa el tipo de documento. Revisa aquí el código que corresponde a cada tipo de documento
estado string Estado de autorización del comprobante. Posibles valores: AUTORIZADO, NO AUTORIZADO, ENVIADO, DEVUELTO, RECIBIDO, ERROR
clave_acceso string Clave de acceso del documento.
url_formato_impresion url Esta URL te permite acceder de manera directa al formato de impresión (RIDE) del comprobante
url_documento_electronico url Esta URL te permite acceder de manera directa al documento electrónico (XML)
autorizacion Objeto de tipo autorización SRI

Respuesta de ejemplo

{
    "url_documento_electronico": "https://app.datil.co/ver/be69b7bc64b643718a643caa9a8c3569/xml",
    "autorizacion": {
        "fecha": "2020-01-23T15:41:51Z",
        "estado": "AUTORIZADO",
        "mensajes": [],
        "numero": "2301202035679285132400120010020000287082794874518"
    },
    "tipo": "01",
    "url_formato_impresion": "https://app.datil.co/ver/be69b7bc64b643718a643caa9a8c3569/pdf",
    "clave_acceso": "2301202035679285132400120010020000287082794874518",
    "estado": "AUTORIZADO",
    "id": "be69b7bc64b643718a643caa9a8c3569",
    "ambiente": "2"
}

Descarga de comprobantes

Consulta de RIDE

Consulta de la representación impresa del documento electrónico (RIDE). El ID del comprobante id-doc es el ID que se obtiene después de emitir un comprobante.

Operación

GET app.datil.co/ver/<id-doc>/pdf

Consulta de XML

Consulta de representación XML de los comprobantes. El ID del comprobante id-doc es el ID que se obtiene después de emitir un comprobante.

Operación

GET app.datil.co/ver/<id-doc>/xml

Envío por correo

Envíe cualquier tipo de comprobantes por correo electrónico hacia la persona que va dirigada el comprobante o una lista de destinatarios.

Envío simple

Envíe el comprobante al correo electrónico que está definido en el comprobante

Operación

POST edocs/send-email/<id-doc>

Requerimiento

Reemplaza en la ruta <id-doc> por el id del comprobante a enviar por correo.

curl -v https://link.datil.co/edocs/send-email/<id-doc> \
-H "Content-Type: application/json" \
-H "X-Key: <clave-del-api>"

import requests
cabeceras = {
  'x-key': '<clave-del-api>',
  'content-type': 'application/json'}
respuesta = requests.post(
    'https://link.datil.co/edocs/send-email/<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 idDocumento = "<id-doc>";
      var request = new RestRequest("edocs/send-email/" + idDocumento, Method.POST);
      request.AddHeader("X-Key", "<clave-del-api>");
      request.AddHeader("Content-Type", "application/json");

      IRestResponse response = client.Execute(request);

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

Respuesta

Parámetro Tipo Descripción
id string El id del documento al cual se envío el correo.
result string Resultado del requerimiento.

Envio a multiples receptores

Envié cualquier tipo de comprobante a multiples receptores especificando los correos electrónicos de estos en el cuerpo del requerimiento en formato JSON.

Operación

POST edocs/send-email/<id-doc>

Requerimiento

Reemplaza en la ruta <id-doc> por el id del comprobante a enviar por correo. El cuerpo del requerimiento debe de tener una lista con los correos de los receptores del comprobante.

Parámetro Tipo Descripción
destinatarios lista Lista de los correos de los destinatarios del correo del comprobante.
curl -v https://link.datil.co/edocs/send-email/<id-doc> \
-H "Content-Type: application/json" \
-H "X-Key: <clave-del-api>"
-d '{
      "destinatarios": [
        "juan.perez@xyz.com",
        "joel@xyz.com"
      ]
    }'
import requests, json

destinatarios = {
  "destinatarios": [
    "juan.perez@xyz.com",
    "joel@xyz.com"
  ]
}
cabeceras = {
  'x-key': '<clave-del-api>',
  'content-type': 'application/json'}
respuesta = requests.post(
    'https://link.datil.co/edocs/send-email/<id-factura>',
    headers = cabeceras
    data = json.dumps(destinatarios))
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 idDocumento = "<id-doc>";
      var request = new RestRequest("edocs/send-email" + idDocumento, Method.POST);
      request.AddHeader("X-Key", "<clave-del-api>");
      request.AddHeader("Content-Type", "application/json");
      request.RequestFormat = DataFormat.Json;

      var body = (@"{
        ""destinatarios"": [
          ""juan.perez@xyz.com"",
          ""joel@xyz.com""
        ]
      }");

      request.AddParameter("application/json", body, ParameterType.RequestBody);
      IRestResponse response = client.Execute(request);

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

Respuesta

Parámetro Tipo Descripción
id string El id del documento al cual se envío el correo.
result string Resultado del requerimiento.

Objetos comunes

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.

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. Requerido
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

Máquina fiscal

Datos de una máquina fiscal.

Parámetro Tipo Descripción
marca string Máximo 300 caracteres. Requerido
modelo string Máximo 300 caracteres. Requerido
serie string Máximo 300 caracteres. Requerido

Reembolso

Datos de una factura, liquidación de compras o retención ats de reembolso.

Parámetro Tipo Descripción
codigo string Código del tipo de documento de reembolso equivalente a 41. Requerido
documentos listado de objeto Documento Lista de documentos. Requerido
subtotal float Sumatoria de los subtotales de los documentos. Requerido
total_impuestos float Sumatoria de los totales de impuestos de los documentos. Requerido
total float Subtotal más total de impuestos. Requerido

Documento

Datos de un documento.

Parámetro Tipo Descripción
codigo_establecimiento string 3 caracteres. Requerido
codigo_punto_emision string 3 caracteres. Requerido
secuencia integer (min. 1 - max. 999999999 ) Número de secuencia del documento. Requerido
fecha_emision string Fecha de emisión en formato AAAA-MM-DDHoraZonaHoraria, definido en el estándar ISO8601. Requerido
identificacion_proveedor string De 5 a 20 caracteres. Requerido
tipo_identificacion_proveedor string Ver tabla de tipos de identificación Requerido
impuestos listado de objeto impuesto Impuestos totales del documento. Requerido
numero_autorizacion string Número de autorización del documento. 10, 37 o 49 caracteres. Requerido
pais_origen_proveedor string Código de dos caracteres del país origen según ISO_3166. Requerido
tipo string Código de tipos de documentos. Requerido
tipo_proveedor string Código de tipo de proveedor de reembolso. Requerido

Info adicional

Información adicional adjunta al documento. Es utilizada para especificar cualquier detalle que no pueda ser descrito con los elementos que son parte del documento.

Parámetro Tipo Descripción
nombre string Máximo 300 caracteres. Requerido
valor string Máximo 300 caracteres. Requerido

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.
telefono string Teléfono.
direccion string Dirección

Documentos Soporte

Parámetro Tipo Descripción
codigo_sustento string Ver tabla de tipos de sustento de los comprobantes. Requerido
tipo_documento string Ver códigos de tipos de documentos. Requerido
numero string Número completo del documento asociado a la retención ATS. Requerido
fecha_emision string Fecha de emisión en formato AAAA-MM-DDHoraZonaHoraria, definido en el estándar ISO8601. Requerido
fecha_registro_contable string Fecha de registro contable del comprobante de venta en formato AAAA-MM-DDHoraZonaHoraria, definido en el estándar ISO8601.
numero_autorización string Número de autorización del comprobante de venta. Requerido
tipo_pago string Ver códigos de tipos de pagos. Requerido
total_sin_impuestos string Total antes de los impuestos. Requerido
total string Total incluyendo impuestos. Requerido
tipo_regimen_fiscal string Ver tabla de tipos de régimen fiscal (Requerido si la identificación del sujeto retenido es Identificación del exterior)
pais string Código de dos caracteres del país según ISO_3166 (Requerido si la identificación del sujeto retenido es Identificación del exterior)
aplica_convenio boolean true si el pago está sujeto a algún convenio de doble tributación (Requerido si la identificación del sujeto retenido es Identificación del exterior)
pago_exterior boolean true si el pago realizado al exterior aplica retención (Requerido si la identificación del sujeto retenido es Identificación del exterior)
pago_regimen_fiscal boolean true si el pago realizado a un no residente se encuentra en un régimen fiscal preferente o de menor imposición (Requerido si la identificación del sujeto retenido es Identificación del exterior)
impuestos listado de objetos impuesto Impuestos totales del documento. Requerido
retenciones listado de objetos retenciones ats Listado de impuestos retenidos Requerido
reembolso objeto tipo reembolso Información de reembolso.
pagos listado de objetos tipo pagos Información de los pagos Requerido

Receptor

Datos del receptor de un documento.

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

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 Suma de las bases imponibles de cada item para el tipo de impuesto y porcentaje.
descuento_adicional float Descuento global aplicado en la factura, expresado en valor monetario. Solo aplica a impuestos de tipo IVA.
valor float Resultado de aplicar el impuesto a la (base_imponible - descuento_adicional)

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 (hasta 2 cifras decimales) Corresponde al valor de la cantidad multiplicado por el precio_unitario menos el descuento
valor float (hasta 2 cifras decimales) Valor del total.
tarifa float (hasta 2 cifras decimales) 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, PRE-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, nota de crédito y liquidación de compras

Representa un producto o servicio del comercio.

Parámetro Tipo Descripción
descripcion string (máximo 300 caracteres) Descripción del ítem. Requerido
codigo_principal string (máximo 25 caracteres) Código alfanumérico de uso del comercio. Máximo 25 caracteres.
codigo_auxiliar string (máximo 25 caracteres) Código alfanumérico de uso del comercio. Máximo 25 caracteres.
cantidad float (hasta 6 cifras decimales) Cantidad de items. Requerido
precio_unitario float (hasta 6 cifras decimales) Precio unitario. Requerido
descuento float (hasta 2 cifras decimales) El descuento es aplicado por cada producto, expresado en valor monetario. Requerido
precio_total_sin_impuestos float (hasta 2 cifras decimales) 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 (hasta 2 cifras decimales) Porcentaje actual del impuesto. Requerido
valor float (hasta 2 cifras decimales) Valor del impuesto. Requerido

Documento de Sustento

Información de la factura asociada a las notas de créditos.

Parámetro Tipo Descripción
numero_documento string Número completo de la factura asociada a la nota de crédito.
tipo_documento string Ver códigos de tipos de documentos.
fecha_documento string Fecha de emisión en formato AAAA-MM-DDHoraZonaHoraria, definido en el estándar ISO8601.

Catálogo

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

Tipo de régimen fiscal

Código Tipo de régimen fiscal
01 Régimen general
02 Paraíso fiscal
03 Regimen fiscal preferente o jurisdicción de menor imposición

Tipo de sujeto retenido

Código Tipo de sujeto
01 Persona natural
02 Sociedad

Tipos de impuesto

Impuesto Código
IVA 2
ICE 3
IRBPNR 5

Tipos de Sustento de Comprobantes

Código Tipo de Sustento
01 Crédito Tributario para declaración de IVA (servicios y bienes distintos de inventarios y activos fijos)
02 Costo o Gasto para declaración de IR (servicios y bienes distintos de inventarios y activos fijos)
03 Activo Fijo - Crédito Tributario para declaración de IVA
04 Activo Fijo - Costo o Gasto para declaración de IR
05 Liquidación Gastos de Viaje, hospedaje y alimentación Gastos IR (a nombre de empleados y no de la empresa)
06 Inventario - Crédito Tributario para declaración de IVA
07 Inventario - Costo o Gasto para declaración de IR
08 Valor pagado para solicitar Reembolso de Gasto (intermediario)
09 Reembolso por Siniestros
10 Distribución de Dividendos, Beneficios o Utilidades
11 Convenios de débito o recaudación para IFI ́s
12 Impuestos y retenciones presuntivos
13 Valores reconocidos por entidades del sector público a favor de sujetos pasivos
14 Valores facturados por socios a operadoras de transporte (que no constituyen gasto de dicha operadora)
15 Pagos efectuados por consumos propios y de terceros de servicios digitales
00 Casos especiales cuyo sustento no aplica en las opciones anteriores

Tipos de Pago

Código Pago residente o no residente
01 Pago a residente / Establecimiento permanente
02 Pago a no residente

Impuestos Retenidos en Retención ATS

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
base_imponible float Suma de las bases imponibles de cada item para el tipo de impuesto y porcentaje. Requerido
tarifa float (hasta 2 cifras decimales) Porcentaje actual del impuesto. Requerido
valor_retenido float (hasta 2 cifras decimales) Valor del impuesto. Requerido
dividendos Listado de objetos dividendo Participaciones en utilidades, excedentes, beneficios o similares que se obtienen en razón de los derechos representativos de capital que el beneficiario mantiene, de manera directa o indirecta.

Dividendo

Parámetro Tipo Descripción
fecha_pago string Fecha de pago en formato AAAA-MM-DDHoraZonaHoraria, definido en el estándar ISO8601. Requerido
impuesto_renta string Impuesto a la Renta pagado por la sociedad correspondiente al dividendo Requerido
annio_fiscal integer Año en que se generaron las utilidades atribuibles al dividendo. Requerido

Pagos de Documentos de Soporte

Parámetro Tipo Descripción
tipo_pago string Código de forma de pago del SRI. Requerido
total string Total del pago. Requerido

Código de Porcentaje de IVA

Porcentaje de IVA Código Tarifa
0% 0 0
12% 2 12
14% 3 14
15% 4 15
5% 5 5
No Objeto de Impuesto 6 -
Exento de IVA 7 -
IVA diferenciado 8 -
13% 10 13

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 a la Fuente (Renta)

Consulta el catálogo vigente de códigos en:

https://www.sri.gob.ec/web/guest/retenciones-en-la-fuente

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
Liquidación de Compra 03
Nota de Crédito 04
Nota de Débito 05
Guía de Remisión 06
Comprobante de Retención 07
Boletos o entradas a espectáculos públicos 08
Tiquetes o vales emitidos por máquinas registradoras 09
Pasajes expedidos por empresas de aviación 11
Documentos emitidos por instituciones financieras 12
Comprobante de venta emitido en el Exterior 15
Formulario Único de Exportación (FUE) o Declaración Aduanera Única (DAU) o Declaración Andina de Valor (DAV) 16
Documentos autorizados utilizados en ventas excepto N/C N/D 18
Comprobantes de Pago de Cuotas o Aportes 19
Documentos por Servicios Administrativos emitidos por Inst. del Estado 20
Carta de Porte Aéreo 21
RECAP 22
Nota de Crédito TC 23
Nota de Débito TC 24
Comprobante de venta emitido por reembolso 41
Documento retención presuntiva y retención emitida por propio vendedor o por intermediario 42
Liquidación para Explotación y Exploración de Hidrocarburos 43
Comprobante de Contribuciones y Aportes 44
Liquidación por reclamos de aseguradoras 45
Nota de Crédito por Reembolso Emitida por Intermediario 47
Nota de Débito por Reembolso Emitida por Intermediario 48
Proveedor Directo de Exportador Bajo Régimen Especial 49
A Inst. Estado y Empr. Públicas que percibe ingreso exento de Imp. Renta 50
N/C A Inst. Estado y Empr. Públicas que percibe ingreso exento de Imp. Renta 51
N/D A Inst. Estado y Empr. Públicas que percibe ingreso exento de Imp. Renta 52
Liquidación de compra de Bienes Muebles Usados 294
Liquidación de compra de vehículos usados 344
Acta Entrega-Recepción PET 364
Factura operadora transporte / socio 370
Comprobante socio a operadora de transporte 371
Nota de crédito operadora transporte / socio 372
Nota de débito operadora transporte / socio 373
Nota de débito operadora transporte / socio 374
Liquidación de compra RISE de bienes o prestación de servicios 375

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

Tipos de forma de pago del SRI

Forma de pago Código
Sin utilización del sistema financiero 01
Compensación de deudas 15
Tarjeta de débito 16
Dinero electrónico 17
Tarjeta prepago 18
Tarjeta de crédito 19
Otros con utilización del sistema financiero 20
Endoso de títulos 21

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".

Tipo de proveedor

Tipo Código
Personal natural 01
Sociedad 02

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 no está autorizada para realizar esta acción
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"
}