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>

Idempotencia

La emisión y re-emisión de facturas admite la idempotencia para reintentar el envío de manera segura y así evitar la duplicación de facturas. Para enviar una petición idempotente se debe agregar el encabezado Idempotency-key.

El key de idempotencia es almacenado y todas las peticiones subsecuentes retornan la misma respuesta. El key de idempotencia debe ser una cadena de texto de 16 a 48 caracteres el cual puede ser un UUID v4 o un nano-id.

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. Revisar las monedas permitidas Requerido
tasa_cambio float Tasa de cambio a USD de la moneda enviada. Requerido cuando la moneda no sea USD
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
negociable boolean true si la factura es negociable.
enviar_recordatorio_pago boolean true si se desea enviar recordatorios de pago. Solo se envían recordatorios de pago para facturas a crédito

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
medio string Ver tabla de tipos de forma de pago

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

Emisión de una factura de exportación a partir del 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>XYZ</razonSocial>
            <nombreComercial>XYZ</nombreComercial>
            <ruc>0999999999001</ruc>
            <codDoc>01</codDoc>
            <estab>001</estab>
            <ptoEmi>001</ptoEmi>
            <secuencial>000000001</secuencial>
            <dirMatriz>Dummy street 123</dirMatriz>
        </infoTributaria>
        <infoFactura>
            <fechaEmision>17/10/2024</fechaEmision>
            <dirEstablecimiento>Dummy street 123</dirEstablecimiento>
            <obligadoContabilidad>SI</obligadoContabilidad>
            <tipoIdentificacionComprador>04</tipoIdentificacionComprador>
            <razonSocialComprador>Juan Perez xyz</razonSocialComprador>
            <identificacionComprador>0911223344001</identificacionComprador>
            <direccionComprador>Dummy street 321</direccionComprador>
            <totalSinImpuestos> 25930.34</totalSinImpuestos>
            <totalDescuento>0.00</totalDescuento>
            <codDocReembolso>41</codDocReembolso>
            <totalComprobantesReembolso> 1380.00</totalComprobantesReembolso>
            <totalBaseImponibleReembolso> 1200.00</totalBaseImponibleReembolso>
            <totalImpuestoReembolso> 180.00</totalImpuestoReembolso>
            <totalConImpuestos>
                <totalImpuesto>
                    <codigo>2</codigo>
                    <codigoPorcentaje>4</codigoPorcentaje>
                    <baseImponible> 25930.34</baseImponible>
                    <tarifa> 15</tarifa>
                    <valor> 3889.55</valor>
                </totalImpuesto>
            </totalConImpuestos>
            <propina>0.00</propina>
            <importeTotal> 29819.89</importeTotal>
            <moneda>DOLAR</moneda>
            <pagos>
                <pago>
                    <formaPago>20</formaPago>
                    <total> 29819.89</total>
                    <plazo> 0</plazo>
                    <unidadTiempo>DIAS</unidadTiempo>
                </pago>
            </pagos>
        </infoFactura>
        <detalles>
            <detalle>
                <codigoPrincipal>ABC</codigoPrincipal>
                <descripcion>Reembolso</descripcion>
                <cantidad> 1.000</cantidad>
                <precioUnitario> 25930.34</precioUnitario>
                <descuento>0.00</descuento>
                <precioTotalSinImpuesto> 25930.34</precioTotalSinImpuesto>
                <impuestos>
                    <impuesto>
                        <codigo>2</codigo>
                        <codigoPorcentaje>4</codigoPorcentaje>
                        <tarifa>15</tarifa>
                        <baseImponible> 25930.34</baseImponible>
                        <valor> 3889.55</valor>
                    </impuesto>
                </impuestos>
            </detalle>
        </detalles>
        <reembolsos>
            <reembolsoDetalle>
                <tipoIdentificacionProveedorReembolso>04</tipoIdentificacionProveedorReembolso>
                <identificacionProveedorReembolso>0993258997001</identificacionProveedorReembolso>
                <codPaisPagoProveedorReembolso>593</codPaisPagoProveedorReembolso>
                <tipoProveedorReembolso>02</tipoProveedorReembolso>
                <codDocReembolso>01</codDocReembolso>
                <estabDocReembolso>001</estabDocReembolso>
                <ptoEmiDocReembolso>001</ptoEmiDocReembolso>
                <secuencialDocReembolso>000000542</secuencialDocReembolso>
                <fechaEmisionDocReembolso>17/10/2024</fechaEmisionDocReembolso>
                <numeroautorizacionDocReemb>2108202407099000124300120250200000246860000000017</numeroautorizacionDocReemb>
                <detalleImpuestos>
                    <detalleImpuesto>
                        <codigo>2</codigo>
                        <codigoPorcentaje>4</codigoPorcentaje>
                        <tarifa>15</tarifa>
                        <baseImponibleReembolso> 1200.00</baseImponibleReembolso>
                        <impuestoReembolso> 180</impuestoReembolso>
                    </detalleImpuesto>
                </detalleImpuestos>
            </reembolsoDetalle>
        </reembolsos>
    </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>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>
    <exportacion>
          <incoTerm>CIF</incoTerm>
          <incoTermLugar>Guayaquil - Ecuador</incoTermLugar>
          <paisOrigen>EC</paisOrigen>
          <puertoOrigen>Guayaquil - Ecuador</puertoOrigen>
          <paisDestino>PE</paisDestino>
          <incoTermTotalSinImpuestos>CIF</incoTermTotalSinImpuestos>
          <puertoDestino>CHIMBOTE - PERU</puertoDestino>
          <paisAdquisicion>EC</paisAdquisicion>
          <fleteInternacional>1000.00</fleteInternacional>
          <seguroInternacional>200.00</seguroInternacional>
          <gastosAduaneros>100</gastosAduaneros>
          <gastosTransporteOtros>350.00</gastosTransporteOtros>
      </exportacion>
  </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

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. Requerido
fecha_fin_transporte string Fecha de emisión en formato AAAA-MM-DDHoraZonaHoraria, definido en el estándar ISO8601. Requerido
direccion_partida string Dirección de partida. Requerido
transportista objeto tipo transportista Información de la persona que transporta la carga. Requerido
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. Requerido
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.
numero_documento_sustento string Número completo del documento que detalla la mercadería a transportar. Normalmente facturas. Ejm: 001-002-010023098
codigo_establecimiento_destino string Número establecimiento que recibe la entrega. Ejm: 002
tipo_documento_sustento string Ver códigos de tipos de documentos.
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. Requerido

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. Requerido
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.
telefono string Teléfono.
direccion string Dirección
placa string Placa del vehículo. Requerido

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": [
                {
                    "