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:
- Creación: Se registra el comprobante para posterior referencia.
- 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.
- Envío SRI: El comprobante es enviado al SRI para ser procesado.
- Consulta de autorización SRI: Luego de un período de espera, Dátil consulta la autorización del comprobante.
- 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 |
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 |
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": [
{
"codigo": "2",
"tarifa": "12.00",
"codigo_porcentaje": "2",
"base_imponible": "6.00",
"valor": "0.72"
}
],
"detalles_adicionales": {},
"cantidad": "1.400000",
"codigo_auxiliar": null,
"descuento": "1.50",
"codigo_principal": "105AP"
}
],
"pre_autorizado": false,
"clave_acceso": "2010201903123456789000110010010000000032235587919",
"autorizacion": {}
}
Emisión de una liquidación de compras de reembolso
Operación
POST /purchase-settlements/issue
Requerimiento
Requerimiento de ejemplo
curl -v https://link.datil.co/purchase-settlements/issue \
-H "Content-Type: application/json" \
-H "X-Key: <API-key>" \
-H "X-Password: <clave-certificado-firma>" \
-d '{
"ambiente":1,
"tipo_emision":1,
"secuencial":148,
"fecha_emision":"2015-02-28T11:28:56.782Z",
"emisor":{
"ruc":"0910000000001",
"obligado_contabilidad":true,
"contribuyente_especial":"12345",
"nombre_comercial":"XYZ Corp",
"razon_social":"XYZ Corporación S.A.",
"direccion":"Av. Primera 234 y calle 5ta",
"establecimiento":{
"punto_emision":"002",
"codigo":"001",
"direccion":"Av. Primera 234 y calle 5ta"
}
},
"moneda":"USD",
"informacion_adicional":{
"Tiempo de entrega":"5 días"
},
"totales":{
"total_sin_impuestos":50.00,
"impuestos":[
{
"base_imponible":50.00,
"valor":0.00,
"codigo":"2",
"codigo_porcentaje":"0"
}
],
"importe_total":50.00,
"descuento":0.0
},
"maquina_fiscal": {
"marca": "SISPAU",
"modelo": "ABC123",
"serie": "CGNC1405"
},
"proveedor":{
"email":"juan.perez@xyz.com",
"identificacion":"0987654321",
"tipo_identificacion":"05",
"razon_social":"Juan Pérez",
"direccion":"Calle única Numero 987",
"telefono":"046029400"
},
"items": [{
"cantidad": 1.0,
"codigo_principal": "REEM",
"codigo_auxiliar": "",
"precio_unitario": 50.00,
"descuento": 0,
"descripcion": "Reembolso de gastos",
"precio_total_sin_impuestos": 50.00,
"impuestos": [{
"base_imponible": 50.00,
"valor": 0.00,
"tarifa": 0.00,
"codigo": "2",
"codigo_porcentaje": "0"
}],
"descuento": 0.00
}],
"reembolso": {
"subtotal": 50.00,
"total": 50.00,
"total_impuestos": 0.00,
"documentos": [
{
"tipo_identificacion_proveedor": "04",
"pais_origen_proveedor": "593",
"tipo_proveedor": "01",
"identificacion_proveedor": "0918723323001",
"tipo": "01",
"numero_autorizacion": 3811201601,
"fecha_emision": "2020-01-28T10:50:26-05:00",
"codigo_punto_emision": "001",
"codigo_establecimiento": "003",
"secuencia": 897,
"impuestos": [
{
"tarifa": 0.0,
"codigo": "2",
"codigo_porcentaje": "0",
"base_imponible": "50.0",
"valor": "0.00",
}
],
}
],
},
"pagos": [
{
"forma_pago": "01",
"total": 50.00,
"unidad_tiempo": "dias",
"plazo": "30"
}
],
}'
import requests, json
liquidacion_compras = {
"ambiente":1,
"tipo_emision":1,
"secuencial":148,
"fecha_emision":"2015-02-28T11:28:56.782Z",
"emisor":{
"ruc":"0910000000001",
"obligado_contabilidad":true,
"contribuyente_especial":"12345",
"nombre_comercial":"XYZ Corp",
"razon_social":"XYZ Corporación S.A.",
"direccion":"Av. Primera 234 y calle 5ta",
"establecimiento":{
"punto_emision":"002",
"codigo":"001",
"direccion":"Av. Primera 234 y calle 5ta"
}
},
"moneda":"USD",
"informacion_adicional":{
"Tiempo de entrega":"5 días"
},
"totales":{
"total_sin_impuestos":50.00,
"impuestos":[
{
"base_imponible":50.00,
"valor":0.00,
"codigo":"2",
"codigo_porcentaje":"0"
}
],
"importe_total":50.00,
"descuento":0.0
},
"maquina_fiscal": {
"marca": "SISPAU",
"modelo": "ABC123",
"serie": "CGNC1405"
},
"proveedor":{
"email":"juan.perez@xyz.com",
"identificacion":"0987654321",
"tipo_identificacion":"05",
"razon_social":"Juan Pérez",
"direccion":"Calle única Numero 987",
"telefono":"046029400"
},
"items": [{
"cantidad": 1.0,
"codigo_principal": "REEM",
"codigo_auxiliar": "",
"precio_unitario": 50.00,
"descuento": 0,
"descripcion": "Reembolso de gastos",
"precio_total_sin_impuestos": 50.00,
"impuestos": [{
"base_imponible": 50.00,
"valor": 0.00,
"tarifa": 0.00,
"codigo": "2",
"codigo_porcentaje": "0"
}],
"descuento": 0.00
}],
"reembolso": {
"subtotal": 50.00,
"total": 50.00,
"total_impuestos": 0.00,
"documentos": [
{
"tipo_identificacion_proveedor": "04",
"pais_origen_proveedor": "593",
"tipo_proveedor": "01",
"identificacion_proveedor": "0918723323001",
"tipo": "01",
"numero_autorizacion": 3811201601,
"fecha_emision": "2020-01-28T10:50:26-05:00",
"codigo_punto_emision": "001",
"codigo_establecimiento": "003",
"secuencia": 897,
"impuestos": [
{
"tarifa": 0.0,
"codigo": "2",
"codigo_porcentaje": "0",
"base_imponible": 50.00,
"valor": 0.00,
}
],
}
],
},
"pagos": [
{
"forma_pago": "01",
"total": 50.00,
"unidad_tiempo": "dias",
"plazo": "30"
}
]
}
cabeceras = {
'x-key': '<clave-del-api>',
'x-password': '<clave-certificado-firma>',
'content-type': 'application/json'}
respuesta = requests.post(
"https://link.datil.co/purchase-settlements/issue",
headers = cabeceras,
data = json.dumps(liquidacion_compras))
using RestSharp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DatilClient {
class InvoicingServiceClient {
static void Main(string[] args) {
// Este ejemplo utiliza RestSharp
// Para instalar anda al menú: tools > Library Package Manager > Package Manager Console
// copia y pega y presiona enter: Install-Package RestSharp
var client = new RestClient("https://link.datil.co/");
var request = new RestRequest("purchase-settlements/issue", Method.POST);
request.AddHeader("X-Key", "<clave-del-api>");
request.AddHeader("X-Password", "<clave-certificado-firma>");
request.AddHeader("Content-Type", "application/json");
request.RequestFormat = DataFormat.Json;
var body = (@"{
""ambiente"":1,
""tipo_emision"":1,
""secuencial"":148,
""fecha_emision"":""2015-02-28T11:28:56.782Z"",
""emisor"":{
""ruc"":""0910000000001"",
""obligado_contabilidad"":true,
""contribuyente_especial"":""12345"",
""nombre_comercial"":""XYZ Corp"",
""razon_social"":""XYZ Corporación S.A."",
""direccion"":""Av. Primera 234 y calle 5ta"",
""establecimiento"":{
""punto_emision"":""002"",
""codigo"":""001"",
""direccion"":""Av. Primera 234 y calle 5ta""
}
},
""moneda"":""USD"",
""informacion_adicional"":{
""Tiempo de entrega"":""5 días""
},
""totales"":{
""total_sin_impuestos"":50.00,
""impuestos"":[
{
""base_imponible"":0.0,
""valor"":0.0,
""codigo"":""2"",
""codigo_porcentaje"":""0""
},
{
""base_imponible"":50.00,
""valor"":523.14,
""codigo"":""2"",
""codigo_porcentaje"":""2""
}
],
""importe_total"":50.00,
""descuento"":0.0
},
""maquina_fiscal"": {
""marca"": ""SISPAU"",
""modelo"": ""ABC123"",
""serie"": ""CGNC1405""
},
""proveedor"":{
""email"":""juan.perez@xyz.com"",
""identificacion"":""0987654321"",
""tipo_identificacion"":""05"",
""razon_social"":""Juan Pérez"",
""direccion"":""Calle única Numero 987"",
""telefono"":""046029400""
},
""items"":[
{
""cantidad"":1.0,
""codigo_principal"":""REEM"",
""codigo_auxiliar"": """",
""precio_unitario"": 50.00,
""descripcion"": ""Reembolso de gastos"",
""precio_total_sin_impuestos"": 50.00,
""impuestos"": [
{
""base_imponible"":50.00,
""valor"":0.00,
""tarifa"":0.00,
""codigo"":""2"",
""codigo_porcentaje"":""0""
}
],
""detalles_adicionales"": {
""Peso"":""5000.0000""
},
""descuento"": 0.0,
}
],
""reembolso"": {
""subtotal"": 50.00,
""total"": 50.00,
""total_impuestos"": 0.00,
""documentos"": [
{
""tipo_identificacion_proveedor"": ""04"",
""pais_origen_proveedor"": ""593"",
""tipo_proveedor"": ""01"",
""identificacion_proveedor"": ""0918723323001"",
""tipo"": ""01"",
""numero_autorizacion"": 3811201601,
""fecha_emision"": ""2020-01-28T10:50:26-05:00"",
""codigo_punto_emision"": ""001"",
""codigo_establecimiento"": ""003"",
""secuencia"": 897,
""impuestos"": [
{
""tarifa"": 0.0,
""codigo"": ""2"",
""codigo_porcentaje"": ""0"",
""base_imponible"": 50.00,
""valor"": 0.00,
}
],
}
],
},
""pagos"": [
{
""forma_pago"": ""01"",
""total"": 50.00,
""unidad_tiempo"": ""10"",
""plazo"": ""30""
}
]
}");
request.AddParameter("application/json", body, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Console.ReadLine();
}
}
}
Para la emisión de una liquidación de compras de reembolso se debe enviar la información completa del comprobante en el cuerpo del requerimiento en formato JSON.
Parámetro | Tipo | Descripción |
---|---|---|
secuencial | string | Número de secuencia de la liquidación de compras. Requerido |
emisor | emisor | Información completa del emisor. Requerido |
moneda | string | Código ISO de la moneda. Requerido |
fecha_emision | string | Fecha de emisión en formato AAAA-MM-DDHoraZonaHoraria, definido en el estándar ISO8601. |
ambiente | integer | Pruebas: 1 .Producción 2 .Requerido |
totales | objeto tipo totales | Listado de totales. Requerido |
maquina_fiscal | objeto maquina_fiscal | Información de máquina fiscal. |
proveedor | objeto tipo persona | Información del proveedor. Requerido |
tipo_emision | integer | Emisión normal: 1 .Emisión por indisponibilidad: 2 Requerido |
items | listado de objetos tipo item | Items incluídos en la liquidación de compras. Para liquidaciones de compras de reembolso el impuesto del ítem es No Objeto de Impuesto Requerido |
version | string | Versión del formato de comprobantes electrónicos de SRI. Si no se especifica, se utilizará la última revisión del formato implementada, |
clave_acceso | string | La clave de acceso representa un identificador único del comprobante. Si esta información no es provista, Dátil la generará. ¿Cómo generar la clave de acceso? |
informacion_adicional | objeto | Información adicional adjunta al comprobante en forma de diccionario. Ejemplo:{"plan": "Inicial", "vigencia": "1 mes"} |
pagos | Listado de objetos tipo pagos | Listado de formas de pago aplicables a la liquidación de compras. Requerido |
reembolso | objeto tipo reembolso | Información de reembolso. Requerido |
Totales
Parámetro | Tipo | Descripción |
---|---|---|
total_sin_impuestos | float | Total antes de los impuestos. Requerido |
descuento | float | Suma de los descuentos de cada ítem. Requerido |
importe_total | float | Total incluyendo impuestos. Requerido |
impuestos | listado de objetos total impuesto | Listado de impuesto totalizados. Requerido |
Pagos
Parámetro | Tipo | Descripción |
---|---|---|
forma_pago | string | Código del tipo de forma de pago. Requerido |
total | float | Total aplicable a la forma de pago especificada. Requerido |
unidad_tiempo | string | Máximo 10 caracteres. |
plazo | string | Máximo 14 caracteres. |
Respuesta
Respuesta de ejemplo
{
"ambiente":1,
"tipo_emision":1,
"secuencial":148,
"fecha_emision":"2015-02-28T11:28:56.782Z",
"emisor":{
"ruc":"0910000000001",
"obligado_contabilidad":true,
"contribuyente_especial":"12345",
"nombre_comercial":"XYZ Corp",
"razon_social":"XYZ Corporación S.A.",
"direccion":"Av. Primera 234 y calle 5ta",
"establecimiento":{
"punto_emision":"002",
"codigo":"001",
"direccion":"Av. Primera 234 y calle 5ta"
}
},
"moneda":"USD",
"informacion_adicional":{
"Tiempo de entrega":"5 días"
},
"totales":{
"total_sin_impuestos":50.00,
"impuestos":[
{
"base_imponible":50.00,
"valor":0.00,
"codigo":"2",
"codigo_porcentaje":"0"
}
],
"importe_total":50.00,
"descuento":0.0
},
"maquina_fiscal": {
"marca": "SISPAU",
"modelo": "ABC123",
"serie": "CGNC1405"
},
"proveedor":{
"email":"juan.perez@xyz.com",
"identificacion":"0987654321",
"tipo_identificacion":"05",
"razon_social":"Juan Pérez",
"direccion":"Calle única Numero 987",
"telefono":"046029400"
},
"items": [{
"cantidad": 1.0,
"codigo_principal": "REEM",
"codigo_auxiliar": "",
"precio_unitario": 50.00,
"descuento": 0,
"descripcion": "Reembolso de gastos",
"precio_total_sin_impuestos": 50.00,
"impuestos": [{
"base_imponible": 50.00,
"valor": 0.00,
"tarifa": 0.00,
"codigo": "2",
"codigo_porcentaje": "0"
}],
"descuento": 0.00
}],
"reembolso": {
"subtotal": 50.00,
"total": 50.00,
"total_impuestos": 0.00,
"documentos": [
{
"tipo_identificacion_proveedor": "04",
"pais_origen_proveedor": "593",
"tipo_proveedor": "01",
"identificacion_proveedor": "0918723323001",
"tipo": "01",
"numero_autorizacion": 3811201601,
"fecha_emision": "2020-01-28T10:50:26-05:00",
"codigo_punto_emision": "001",
"codigo_establecimiento": "003",
"secuencia": 897,
"impuestos": [
{
"tarifa": 0.0,
"codigo": "2",
"codigo_porcentaje": "0",
"base_imponible": 50.00,
"valor": 0.00,
}
],
}
],
},
"pagos": [
{
"forma_pago": "01",
"total": 50.00,
"unidad_tiempo": "dias",
"plazo": "30"
}
]
}
Retorna un objeto tipo liquidacion que incluye un nuevo parámetro id
,
el cual identifica de manera única a la liquidación de compras. El campo clave_acceso
generado
también se incluirá como parte de la respuesta.
Emisión de una liquidación de compras de reembolso a partir de XML
Requerimiento de ejemplo
curl -v https://link.datil.co/purchase-settlements/issue/xml \
-H "Content-Type: application/json" \
-H "X-Key: <API-key>" \
-H "X-Password: <clave-certificado-firma>" \
-d '{"xml" : "<?xml version=\"1.1.0\" encoding=\"UTF-8\"?>
<liquidacionCompra id= \"comprobante\" version= \"1.1.0\">
<infoTributaria>
<ambiente>1</ambiente>
<tipoEmision>1</tipoEmision>
<razonSocial>DATILMEDIA S.A. DE C.V.</razonSocial>
<nombreComercial>DATILMEDIA S.A.</nombreComercial>
<ruc>0992712554001</ruc>
<claveAcceso>1234567890098765432112345678900987654321987654321</claveAcceso>
<codDoc>03</codDoc>
<estab>001</estab>
<ptoEmi>001</ptoEmi>
<secuencial>000002134</secuencial>
<dirMatriz>VICTOR EMILIO ESTRADA 112 Y CIRCUNVALACION NORTE</dirMatriz>
</infoTributaria>
<infoLiquidacionCompra>
<fechaEmision>20/10/2019</fechaEmision>
<dirEstablecimiento>VICTOR EMILIO ESTRADA 112 Y CIRCUNVALACION NORTE 2</dirEstablecimiento>
<obligadoContabilidad>NO</obligadoContabilidad>
<tipoIdentificacionProveedor>04</tipoIdentificacionProveedor>
<razonSocialProveedor>Sistemas XYZ</razonSocialProveedor>
<identificacionProveedor>0987343992001</identificacionProveedor>
<totalSinImpuestos>6.00</totalSinImpuestos>
<totalDescuento>1.50</totalDescuento>
<totalConImpuestos>
<totalImpuesto>
<codigo>2</codigo>
<codigoPorcentaje>2</codigoPorcentaje>
<baseImponible>6.00</baseImponible>
<valor>0.72</valor>
</totalImpuesto>
</totalConImpuestos>
<importeTotal>6.72</importeTotal>
<moneda>DOLAR</moneda>
<pagos>
<pago>
<formaPago>01</formaPago>
<total>6.72</total>
</pago>
</pagos>
</infoLiquidacionCompra>
<detalles>
<detalle>
<codigoPrincipal>105AP</codigoPrincipal>
<descripcion>Aceite Protector</descripcion>
<cantidad>1.400000</cantidad>
<precioUnitario>5.357143</precioUnitario>
<descuento>1.50</descuento>
<precioTotalSinImpuesto>6.00</precioTotalSinImpuesto>
<impuestos>
<impuesto>
<codigo>2</codigo>
<codigoPorcentaje>2</codigoPorcentaje>
<tarifa>12.00</tarifa>
<baseImponible>6.00</baseImponible>
<valor>0.72</valor>
</impuesto>
</impuestos>
</detalle>
</detalles>
<reembolsos>
<reembolsoDetalle>
<tipoIdentificacionProveedorReembolso>05</tipoIdentificacionProveedorReembolso>
<identificacionProveedorReembolso>0923797427</identificacionProveedorReembolso>
<codPaisPagoProveedorReembolso>593</codPaisPagoProveedorReembolso>
<tipoProveedorReembolso>01</tipoProveedorReembolso>
<codDocReembolso>01</codDocReembolso>
<estabDocReembolso>001</estabDocReembolso>
<ptoEmiDocReembolso>002</ptoEmiDocReembolso>
<secuencialDocReembolso>000000928</secuencialDocReembolso>
<fechaEmisionDocReembolso>21/02/2020</fechaEmisionDocReembolso>
<numeroautorizacionDocReemb>1234567890</numeroautorizacionDocReemb>
<detalleImpuestos>
<detalleImpuesto>
<codigo>2</codigo>
<codigoPorcentaje>2</codigoPorcentaje>
<tarifa>12</tarifa>
<baseImponibleReembolso>230.00</baseImponibleReembolso>
<impuestoReembolso>27.60</impuestoReembolso>
</detalleImpuesto>
</detalleImpuestos>
</reembolsoDetalle>
</reembolsos>
<infoAdicional>
<campoAdicional nombre= \"Info\">Adicional</campoAdicional>
</infoAdicional>
</liquidacionCompra>"}'
import requests, json
liquidacion_compra = {
"xml": '''<?xml version="1.1.0" encoding="UTF-8"?>
<liquidacionCompra id="comprobante" version="1.1.0">
<infoTributaria>
<ambiente>1</ambiente>
<tipoEmision>1</tipoEmision>
<razonSocial>DATILMEDIA S.A.</razonSocial>
<nombreComercial>DATILMEDIA S.A.</nombreComercial>
<ruc>0992712554001</ruc>
<claveAcceso>1234567890098765432112345678900987654321987654321</claveAcceso>
<codDoc>03</codDoc>
<estab>001</estab>
<ptoEmi>001</ptoEmi>
<secuencial>000002134</secuencial>
<dirMatriz>VICTOR EMILIO ESTRADA 112 Y CIRCUNVALACION NORTE</dirMatriz>
</infoTributaria>
<infoLiquidacionCompra>
<fechaEmision>20/10/2019</fechaEmision>
<dirEstablecimiento>VICTOR EMILIO ESTRADA 112 Y CIRCUNVALACION NORTE 2</dirEstablecimiento>
<obligadoContabilidad>NO</obligadoContabilidad>
<tipoIdentificacionProveedor>04</tipoIdentificacionProveedor>
<razonSocialProveedor>Sistemas XYZ</razonSocialProveedor>
<identificacionProveedor>0987343992001</identificacionProveedor>
<totalSinImpuestos>6.00</totalSinImpuestos>
<totalDescuento>1.50</totalDescuento>
<totalConImpuestos>
<totalImpuesto>
<codigo>2</codigo>
<codigoPorcentaje>2</codigoPorcentaje>
<baseImponible>6.00</baseImponible>
<valor>0.72</valor>
</totalImpuesto>
</totalConImpuestos>
<importeTotal>6.72</importeTotal>
<moneda>DOLAR</moneda>
<pagos>
<pago>
<formaPago>01</formaPago>
<total>6.72</total>
</pago>
</pagos>
</infoLiquidacionCompra>
<detalles>
<detalle>
<codigoPrincipal>105AP</codigoPrincipal>
<descripcion>Aceite Protector</descripcion>
<cantidad>1.400000</cantidad>
<precioUnitario>5.357143</precioUnitario>
<descuento>1.50</descuento>
<precioTotalSinImpuesto>6.00</precioTotalSinImpuesto>
<impuestos>
<impuesto>
<codigo>2</codigo>
<codigoPorcentaje>2</codigoPorcentaje>
<tarifa>12.00</tarifa>
<baseImponible>6.00</baseImponible>
<valor>0.72</valor>
</impuesto>
</impuestos>
</detalle>
</detalles
<reembolsos>
<reembolsoDetalle>
<tipoIdentificacionProveedorReembolso>05</tipoIdentificacionProveedorReembolso>
<identificacionProveedorReembolso>0923797427</identificacionProveedorReembolso>
<codPaisPagoProveedorReembolso>593</codPaisPagoProveedorReembolso>
<tipoProveedorReembolso>01</tipoProveedorReembolso>
<codDocReembolso>01</codDocReembolso>
<estabDocReembolso>001</estabDocReembolso>
<ptoEmiDocReembolso>002</ptoEmiDocReembolso>
<secuencialDocReembolso>000000928</secuencialDocReembolso>
<fechaEmisionDocReembolso>21/02/2020</fechaEmisionDocReembolso>
<numeroautorizacionDocReemb>1234567890</numeroautorizacionDocReemb>
<detalleImpuestos>
<detalleImpuesto>
<codigo>2</codigo>
<codigoPorcentaje>2</codigoPorcentaje>
<tarifa>12</tarifa>
<baseImponibleReembolso>230.00</baseImponibleReembolso>
<impuestoReembolso>27.60</impuestoReembolso>
</detalleImpuesto>
</detalleImpuestos>
</reembolsoDetalle>
</reembolsos>
<infoAdicional>
<campoAdicional nombre="Info">Adicional</campoAdicional>
</infoAdicional>
</liquidacionCompra>'''
}
cabeceras = {
'x-key': '<clave-del-api>',
'x-password': '<clave-certificado-firma>',
'content-type': 'application/json'}
respuesta = requests.post(
"https://link.datil.co/invoices/issue/xml",
headers = cabeceras,
data = json.dumps(liquidacion_compra))
POST /purchase-settlements/issue/xml
Requerimiento a partir de XML
Para la emisión de una liquidación de compra de reembolso a partir de un XML se debe enviar contenido del archivo XML como parámetro en el cuerpo del requerimiento en formato JSON.
Parámetro | Tipo | Descripción |
---|---|---|
xml | string | Contenido del archivo xml. Requerido |
Respuesta de ejemplo
{
"pagos": [
{
"plazo": null,
"total": "6.72",
"unidad_tiempo": "",
"forma_pago": "01"
}
],
"secuencial": 3,
"proveedor": {
"correo": null,
"identificacion": "0987343992001",
"razon_social": "Sistemas XYZ",
"direccion": "",
"tipo_identificacion": "04"
},
"emisor": {
"provincia": 10,
"email": "devops@datilmedia.com",
"categoria": "Combustible",
"ruc": "1234567890001",
"obligado_contabilidad": false,
"contribuyente_especial": "",
"subcategoria": "Desarrollo de software",
"nombre_comercial": "Hexlab Demo",
"pais": 1,
"market_id": "denny",
"razon_social": "Hexlab Demo",
"direccion": "Innvernadero Coworking, Bálsamos 813 entre Guayacanes e Higueras",
"ciudad": "Guayaquil",
"exportador": false,
"telefono": "046029400",
"tipoentidad": "Sociedad Anónima"
},
"correos_enviados": [],
"numero": "001-001-000000003",
"anulado": false,
"es_valida": true,
"id": "c1f05f6cd3494c88a21877d8c8d3a5ea",
"informacion_adicional": {
"Info": "Adicional"
},
"ambiente": "1",
"totales": {
"total_sin_impuestos": "6.00",
"importe_total": "6.72",
"impuestos": [
{
"codigo": "2",
"codigo_porcentaje": "2",
"base_imponible": "6.00",
"valor": "0.72"
}
],
"descuento": "1.50"
},
"envio_sri": {},
"items": [
{
"precio_unitario": "5.357143",
"descripcion": "Aceite Protector",
"precio_total_sin_impuestos": "6.00",
"unidad_medida": null,
"impuestos": [
{
"codigo": "2",
"tarifa": "12.00",
"codigo_porcentaje": "2",
"base_imponible": "6.00",
"valor": "0.72"
}
],
"detalles_adicionales": {},
"cantidad": "1.400000",
"codigo_auxiliar": null,
"descuento": "1.50",
"codigo_principal": "105AP"
}
],
"reembolso": {
"total": "0.00",
"subtotal": "0.00",
"documentos": [
{
"fecha_emision": "2020-02-21",
"identificacion_proveedor": "0923797427",
"pais_origen_proveedor": "EC",
"codigo_punto_emision": "002",
"codigo_establecimiento": "001",
"numero_autorizacion": "1234567890",
"tipo_identificacion_proveedor": "05",
"secuencia": 928,
"tipo_proveedor": "01",
"codigo": "01",
"impuestos": [
{
"tarifa": "12.00",
"codigo_porcentaje": "2",
"valor": "27.60",
"nombre": "12%",
"codigo": "2",
"base_imponible": "230.00"
}
]
}
],
"total_impuestos": "0.00"
},
"pre_autorizado": false,
"clave_acceso": "2010201903123456789000110010010000000032235587919",
"autorizacion": {}
}
Consulta de una liquidación de compra
Consulta una liquidación de compra para obtener toda la información del comprobante, incluyendo
el estado del mismo.
El parámetro estado
de la respuesta obtenida al invocar esta operación, indica
el estado actual del comprobante.
Si es necesario conocer en detalle, en que estado del proceso de emisión,
se debe examinar los parámetros envio_sri
y autorizacion_sri
de la respuesta.
Operación
GET /purchase-settlements/<purchase-settlement-ID>
Requerimiento
Requerimiento de ejemplo
curl -v https://link.datil.co/purchase-settlements/<id-liquidacion> \
-H "Content-Type: application/json" \
-H "X-Key: <clave-del-api>" \
-H "X-Password: <clave-certificado-firma>" \
import requests
cabeceras = {'x-key': '<clave-del-api>'}
respuesta = requests.get(
'https://link.datil.co/purchase-settlements/<id-liquidacion>',
headers = cabeceras)
using RestSharp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DatilClient {
class InvoicingServiceClient {
static void Main(string[] args) {
var client = new RestClient("https://link.datil.co/");
var idLiquidacion = "<id-liquidacion>";
var request = new RestRequest("purchase-settlements/" + idLiquidacion, Method.GET);
request.AddHeader("X-Key", "<clave-del-api>");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
}
}
}
Reemplaza en la ruta <purchase-settlement-ID>
por el id
de la liquidación de compra que necesitas consultar.
Respuesta
Respuesta de ejemplo
{
"id": "abcf12343faad0678512343faad06785",
"secuencial": "16",
"fecha_emision": "2019-05-03",
"version": "1.0.0",
"clave_acceso": "1505201501099271255400110011000000000162092727615",
"emisor": {
"ruc": "0992712554001",
"razon_social": "DATILMEDIA S.A.",
"nombre_comercial": "Dátil",
"direccion": null,
"obligado_contabilidad": true,
"contribuyente_especial": "",
"establecimiento": {
"codigo": "001",
"direccion": "V.E. 112 Y CIRCUNVALACION NORTE",
"punto_emision": "100"
}
},
"estado": "AUTORIZADO",
"correos_enviados": [
{
"fecha_envio": "2019-05-03T16:36:48.274604",
"destinatarios": "cplaza@gye593.com"
}
],
"moneda": "USD",
"informacion_adicional": [],
"ambiente": "1",
"totales": {
"total_sin_impuestos": "150.00",
"descuento": "0.00",
"impuestos": [
{
"codigo": 2,
"codigo_porcentaje": "2",
"base_imponible": "150.00",
"valor": "18.00"
}
],
"importe_total": "168.00"
},
"maquina_fiscal": {
"marca": "SISPAU",
"modelo": "ABC123",
"serie": "CGNC1405"
},
"proveedor": {
"razon_social": "Carlos L. Plaza",
"identificacion": "0900102222",
"tipo_identificacion": 1,
"email": "cplaza@gye593.com",
"direccion": "Calle Uno y Calle Dos",
"telefono": "043334445"
},
"envio_sri": {
"mensajes": [],
"estado": "RECIBIDA",
"fecha": ""
},
"tipo_emision": "1",
"items": [
{
"detalles_adicionales": {
"Estadía": "2 noches",
"Habitación": "203"
},
"cantidad": "1.000000",
"codigo_principal": "HAB",
"codigo_auxiliar": "DOB",
"descripcion": "Habitación doble",
"precio_unitario": "150.000000",
"descuento": "0.00",
"precio_total_sin_impuestos": "",
"impuestos": [
{
"tarifa": "12.00",
"codigo": "2",
"codigo_porcentaje": "2",
"base_imponible": "150.00",
"valor": "18.00"
}
],
"unidad_medida": "Kilos"
}
],
"pagos": [
{
"forma_pago": "01",
"total": 168.0,
"unidad_tiempo": "dias",
"plazo": "30"
}
],
"autorizacion": {
"estado": "AUTORIZADO",
"mensajes": [
{
"identificador": "60",
"mensaje": "ESTE PROCESO FUE REALIZADO EN EL AMBIENTE DE PRUEBAS",
"tipo": "INFORMATIVO",
"informacion_adicional": ""
}
],
"numero": "1505201516323509927125540010266935227",
"fecha": "2015-05-15T16:32:35.000380"
}
}
Parámetro | Tipo | Descripción |
---|---|---|
secuencial | string | Número de secuencia de la liquidación de compras. |
estado | string | Posibles valores: AUTORIZADO , NO AUTORIZADO , ENVIADO , DEVUELTO , RECIBIDO , ERROR |
fecha_emision | string | Fecha de emisión en formato AAAA-MM-DDHoraZonaHoraria, definido en el estándar ISO8601. |
clave_acceso | string | La clave de acceso representa un identificador único del comprobante. Si esta información no es provista, Dátil la generará. ¿Cómo generar la clave de acceso? |
envio_sri | objeto tipo envio sri | Información luego de enviar el comprobante. |
autorizacion | objeto tipo autorizacion sri | Información de la autorización.org/html/rfc3339#section-5.6). |
emisor | objeto tipo emisor | Información completa del emisor. |
moneda | string | Código ISO de la moneda. |
ambiente | integer | Pruebas: 1 .Producción 2 . |
totales | objeto tipo totales | Listado de totales. |
maquina_fiscal | objeto maquina_fiscal | Información de máquina fiscal. |
proveedor | objeto persona | Información del proveedor. |
tipo_emision | integer | Emisión normal: 1 .Emisión por indisponibilidad: 2 |
items | listado de objetos tipo item | Items incluídos en la liquidación de compras. |
pagos | listado de objetos tipo pagos | Listado de formas de pago aplicables a la liquidación de compras. |
version | string | Versión de la especificación, opciones válidas: 1.0.0 , 1.1.0 |
Consulta de una liquidación de compra de reembolso
Consulta una liquidación de compra de reembolso para obtener toda la información del comprobante, incluyendo
el estado del mismo.
El parámetro estado
de la respuesta obtenida al invocar esta operación, indica
el estado actual del comprobante.
Si es necesario conocer en detalle, en que estado del proceso de emisión,
se debe examinar los parámetros envio_sri
y autorizacion_sri
de la respuesta.
Operación
GET /purchase-settlements/<purchase-settlement-ID>
Requerimiento
Requerimiento de ejemplo
curl -v https://link.datil.co/purchase-settlements/<id-liquidacion> \
-H "Content-Type: application/json" \
-H "X-Key: <clave-del-api>" \
-H "X-Password: <clave-certificado-firma>" \
import requests
cabeceras = {'x-key': '<clave-del-api>'}
respuesta = requests.get(
'https://link.datil.co/purchase-settlements/<id-liquidacion>',
headers = cabeceras)
using RestSharp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DatilClient {
class InvoicingServiceClient {
static void Main(string[] args) {
var client = new RestClient("https://link.datil.co/");
var idLiquidacion = "<id-liquidacion>";
var request = new RestRequest("purchase-settlements/" + idLiquidacion, Method.GET);
request.AddHeader("X-Key", "<clave-del-api>");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
}
}
}
Reemplaza en la ruta <purchase-settlement-ID>
por el id
de la liquidación de compra que necesitas consultar.
Respuesta
Respuesta de ejemplo
{
"id": "abcf12343faad0678512343faad06785",
"secuencial": "16",
"fecha_emision": "2019-05-03",
"version": "1.0.0",
"clave_acceso": "1505201501099271255400110011000000000162092727615",
"emisor": {
"ruc": "0992712554001",
"razon_social": "DATILMEDIA S.A.",
"nombre_comercial": "Dátil",
"direccion": null,
"obligado_contabilidad": true,
"contribuyente_especial": "",
"establecimiento": {
"codigo": "001",
"direccion": "V.E. 112 Y CIRCUNVALACION NORTE",
"punto_emision": "100"
}
},
"estado": "AUTORIZADO",
"correos_enviados": [
{
"fecha_envio": "2019-05-03T16:36:48.274604",
"destinatarios": "cplaza@gye593.com"
}
],
"moneda": "USD",
"informacion_adicional": [],
"ambiente": "1",
"totales": {
"total_sin_impuestos": 50.00,
"descuento": "0.00",
"impuestos": [
{
"codigo": 2,
"codigo_porcentaje": "2",
"base_imponible": 50.00,
"valor": 0.00
}
],
"importe_total": 50.00
},
"maquina_fiscal": {
"marca": "SISPAU",
"modelo": "ABC123",
"serie": "CGNC1405"
},
"proveedor": {
"razon_social": "Carlos L. Plaza",
"identificacion": "0900102222",
"tipo_identificacion": 1,
"email": "cplaza@gye593.com",
"direccion": "Calle Uno y Calle Dos",
"telefono": "043334445"
},
"envio_sri": {
"mensajes": [],
"estado": "RECIBIDA",
"fecha": ""
},
"tipo_emision": "1",
"items": [{
"cantidad": 1.0,
"codigo_principal": "REEM",
"codigo_auxiliar": "",
"precio_unitario": 50.00,
"descuento": 0,
"descripcion": "Reembolso de gastos",
"precio_total_sin_impuestos": 50.00,
"impuestos": [{
"base_imponible": 50.00,
"valor": 0.00,
"tarifa": 0.00,
"codigo": "2",
"codigo_porcentaje": "0"
}],
"descuento": 0.00
}],
"reembolso": {
"subtotal": 50.00,
"total": 50.00,
"total_impuestos": 0.00,
"documentos": [
{
"tipo_identificacion_proveedor": "04",
"pais_origen_proveedor": "593",
"tipo_proveedor": "01",
"identificacion_proveedor": "0918723323001",
"tipo": "01",
"numero_autorizacion": 3811201601,
"fecha_emision": "2020-01-28T10:50:26-05:00",
"codigo_punto_emision": "001",
"codigo_establecimiento": "003",
"secuencia": 897,
"impuestos": [
{
"tarifa": 0.0,
"codigo": "2",
"codigo_porcentaje": "0",
"base_imponible": 50.00,
"valor": 0.00,
}
],
}
],
},
"pagos": [
{
"forma_pago": "01",
"total": 50.0,
"unidad_tiempo": "dias",
"plazo": "30"
}
],
"autorizacion": {
"estado": "AUTORIZADO",
"mensajes": [
{
"identificador": "60",
"mensaje": "ESTE PROCESO FUE REALIZADO EN EL AMBIENTE DE PRUEBAS",
"tipo": "INFORMATIVO",
"informacion_adicional": ""
}
],
"numero": "1505201516323509927125540010266935227",
"fecha": "2019-05-15T16:32:35.000380"
}
}
Parámetro | Tipo | Descripción |
---|---|---|
secuencial | string | Número de secuencia de la liquidación de compras. |
estado | string | Posibles valores: AUTORIZADO , NO AUTORIZADO , ENVIADO , DEVUELTO , RECIBIDO , ERROR |
fecha_emision | string | Fecha de emisión en formato AAAA-MM-DDHoraZonaHoraria, definido en el estándar ISO8601. |
clave_acceso | string | La clave de acceso representa un identificador único del comprobante. Si esta información no es provista, Dátil la generará. ¿Cómo generar la clave de acceso? |
envio_sri | objeto tipo envio sri | Información luego de enviar el comprobante. |
autorizacion | objeto tipo autorizacion sri | Información de la autorización.org/html/rfc3339#section-5.6). |
emisor | objeto tipo emisor | Información completa del emisor. |
moneda | string | Código ISO de la moneda. |
ambiente | integer | Pruebas: 1 .Producción 2 . |
totales | objeto tipo totales | Listado de totales. |
maquina_fiscal | objeto maquina_fiscal | Información de máquina fiscal. |
proveedor | objeto persona | Información del proveedor. |
tipo_emision | integer | Emisión normal: 1 .Emisión por indisponibilidad: 2 |
items | listado de objetos tipo item | Items incluídos en la liquidación de compras. |
pagos | listado de objetos tipo pagos | Listado de formas de pago aplicables a la liquidación de compras. |
version | string | Versión de la especificación, opciones válidas: 1.0.0 , 1.1.0 |
reembolso | objeto tipo reembolso | Información de reembolso. |
Re-emisión de una liquidación de compra
Operación
POST /purchase-settlements/:id/reissue
Requerimiento
Requerimiento de ejemplo
curl -v https://link.datil.co/purchase-settlements/<id-liquidacion>/reissue \
-H "Content-Type: application/json" \
-H "X-Key: <API-key>" \
-H "X-Password: <clave-certificado-firma>" \
-d '{
"ambiente":1,
"tipo_emision":1,
"secuencial":148,
"fecha_emision":"2015-02-28T11:28:56.782Z",
"emisor":{
"ruc":"0910000000001",
"obligado_contabilidad":true,
"contribuyente_especial":"12345",
"nombre_comercial":"XYZ Corp",
"razon_social":"XYZ Corporación S.A.",
"direccion":"Av. Primera 234 y calle 5ta",
"establecimiento":{
"punto_emision":"002",
"codigo":"001",
"direccion":"Av. Primera 234 y calle 5ta"
}
},
"moneda":"USD",
"informacion_adicional":{
"Tiempo de entrega":"5 días"
},
"totales":{
"total_sin_impuestos":4359.54,
"impuestos":[
{
"base_imponible":4359.54,
"valor":523.14,
"codigo":"2",
"codigo_porcentaje":"2"
}
],
"importe_total":4882.68,
"descuento":0.0
},
"maquina_fiscal": {
"marca": "SISPAU",
"modelo": "ABC123",
"serie": "CGNC1405"
},
"proveedor":{
"email":"juan.perez@xyz.com",
"identificacion":"0987654321",
"tipo_identificacion":"05",
"razon_social":"Juan Pérez",
"direccion":"Calle única Numero 987",
"telefono":"046029400"
},
"items":[
{
"cantidad":622.0,
"codigo_principal": "ZNC",
"codigo_auxiliar": "050",
"precio_unitario": 7.008907,
"descripcion": "Zanahoria granel 50 Kg.",
"precio_total_sin_impuestos": 4359.54,
"impuestos": [
{
"base_imponible":4359.54,
"valor":523.14,
"tarifa":12.0,
"codigo":"2",
"codigo_porcentaje":"2"
}
],
"detalles_adicionales": {
"Peso":"5000.0000"
},
"descuento": 0.0,
"unidad_medida": "Kilos"
}
],
"pagos": [
{
"forma_pago": "01",
"total": 4882.68,
"unidad_tiempo": "dias",
"plazo": "30"
}
],
}'
import requests, json
liquidacion_compras = {
"ambiente":1,
"tipo_emision":1,
"secuencial":148,
"fecha_emision":"2019-02-28T11:28:56.782Z",
"emisor":{
"ruc":"0910000000001",
"obligado_contabilidad":True,
"contribuyente_especial":"12345",
"nombre_comercial":"XYZ Corp",
"razon_social":"XYZ Corporación S.A.",
"direccion":"Av. Primera 234 y calle 5ta",
"establecimiento":{
"punto_emision":"002",
"codigo":"001",
"direccion":"Av. Primera 234 y calle 5ta"
}
},
"moneda":"USD",
"informacion_adicional":{
"Tiempo de entrega":"5 días"
},
"totales":{
"total_sin_impuestos":4359.54,
"impuestos":[
{
"base_imponible":0.0,
"valor":0.0,
"codigo":"2",
"codigo_porcentaje":"0"
},
{
"base_imponible":4359.54,
"valor":523.14,
"codigo":"2",
"codigo_porcentaje":"2"
}
],
"importe_total":4882.68,
"descuento":0.0
},
"maquina_fiscal": {
"marca": "SISPAU",
"modelo": "ABC123",
"serie": "CGNC1405"
},
"proveedor":{
"email":"juan.perez@xyz.com",
"identificacion":"0987654321",
"tipo_identificacion":"05",
"razon_social":"Juan Pérez",
"direccion":"Calle única Numero 987",
"telefono":"046029400"
},
"items":[
{
"cantidad":622.0,
"codigo_principal":"ZNC",
"codigo_auxiliar": "050",
"precio_unitario": 7.01,
"descripcion": "Zanahoria granel 50 Kg.",
"precio_total_sin_impuestos": 4359.54,
"impuestos": [
{
"base_imponible":4359.54,
"valor":523.14,
"tarifa":12.0,
"codigo":"2",
"codigo_porcentaje":"2"
}
],
"detalles_adicionales": {
"Peso":"5000.0000"
},
"descuento": 0.0,
"unidad_medida": "Kilos"
}
],
"pagos": [
{
"forma_pago": "01",
"total": 4882.68,
"unidad_tiempo": "dias",
"plazo": "30"
}
]
}
cabeceras = {
'x-key': '<clave-del-api>',
'x-password': '<clave-certificado-firma>',
'content-type': 'application/json'}
respuesta = requests.post(
"https://link.datil.co/purchase-settlements/<id-liquidacion>/reissue",
headers = cabeceras,
data = json.dumps(liquidacion_compras))
using RestSharp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DatilClient {
class InvoicingServiceClient {
static void Main(string[] args) {
// Este ejemplo utiliza RestSharp
// Para instalar anda al menú: tools > Library Package Manager > Package Manager Console
// copia y pega y presiona enter: Install-Package RestSharp
var client = new RestClient("https://link.datil.co/");
var idLiquidacion = "<id-liquidacion>";
var request = new RestRequest("purchase-settlements/" + idLiquidacion + "/reissue", Method.POST);
request.AddHeader("X-Key", "<clave-del-api>");
request.AddHeader("X-Password", "<clave-certificado-firma>");
request.AddHeader("Content-Type", "application/json");
request.RequestFormat = DataFormat.Json;
var body = (@"{
""ambiente"":1,
""tipo_emision"":1,
""secuencial"":148,
""fecha_emision"":""2015-02-28T11:28:56.782Z"",
""emisor"":{
""ruc"":""0910000000001"",
""obligado_contabilidad"":true,
""contribuyente_especial"":""12345"",
""nombre_comercial"":""XYZ Corp"",
""razon_social"":""XYZ Corporación S.A."",
""direccion"":""Av. Primera 234 y calle 5ta"",
""establecimiento"":{
""punto_emision"":""002"",
""codigo"":""001"",
""direccion"":""Av. Primera 234 y calle 5ta""
}
},
""moneda"":""USD"",
""informacion_adicional"":{
""Tiempo de entrega"":""5 días""
},
""totales"":{
""total_sin_impuestos"":4359.54,
""impuestos"":[
{
""base_imponible"":0.0,
""valor"":0.0,
""codigo"":""2"",
""codigo_porcentaje"":""0""
},
{
""base_imponible"":4359.54,
""valor"":523.14,
""codigo"":""2"",
""codigo_porcentaje"":""2""
}
],
""importe_total"":4882.68,
""descuento"":0.0
},
""maquina_fiscal"": {
""marca"": ""SISPAU"",
""modelo"": ""ABC123"",
""serie"": ""CGNC1405""
},
""proveedor"":{
""email"":""juan.perez@xyz.com"",
""identificacion"":""0987654321"",
""tipo_identificacion"":""05"",
""razon_social"":""Juan Pérez"",
""direccion"":""Calle única Numero 987"",
""telefono"":""046029400""
},
""items"":[
{
""cantidad"":622.0,
""codigo_principal"":""ZNC"",
""codigo_auxiliar"": ""050"",
""precio_unitario"": 7.01,
""descripcion"": ""Zanahoria granel 50 Kg."",
""precio_total_sin_impuestos"": 4359.54,
""impuestos"": [
{
""base_imponible"":4359.54,
""valor"":523.14,
""tarifa"":12.0,
""codigo"":""2"",
""codigo_porcentaje"":""2""
}
],
""detalles_adicionales"": {
""Peso"":""5000.0000""
},
""descuento"": 0.0,
""unidad_medida"": ""Kilos""
}
],
""pagos"": [
{
""forma_pago"": ""01"",
""total"": 4882.68
}
]
}");
request.AddParameter("application/json", body, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Console.ReadLine();
}
}
}
Esta operación debe ser utilizada para corregir comprobantes NO AUTORIZADOS o DEVUELTOS por el Servicio de Rentas Internas.
En la URL de esta opción se debe incluir el id de la retención recibida al momento de emitirla.
El cuerpo del requerimiento es un objeto retención con los datos corregidos para que pueda ser procesado y autorizado.
Respuesta
Respuesta de ejemplo
{
"id": "abcdef09876123cea56784f01",
"ambiente":1,
"tipo_emision":1,
"secuencial":148,
"fecha_emision":"2015-02-28T11:28:56.782Z",
"clave_acceso": "2802201501091000000000120010010000100451993736618",
"emisor":{
"ruc": "0910000000001",
"obligado_contabilidad": true,
"contribuyente_especial": "12345",
"nombre_comercial": "XYZ Corp",
"razon_social": "XYZ Corporación S.A.",
"direccion": "Av. Primera 234 y calle 5ta",
"establecimiento": {
"punto_emision": "002",
"codigo": "001",
"direccion": "Av. Primera 234 y calle 5ta"
}
},
"moneda": "USD",
"informacion_adicional": {
"Tiempo de entrega": "5 días"
},
"totales": {
"total_sin_impuestos": 4359.54,
"impuestos": [
{
"base_imponible": 0.0,
"valor": 0.0,
"codigo": "2",
"codigo_porcentaje": "0"
},
{
"base_imponible": 4359.54,
"valor": 523.14,
"codigo": "2",
"codigo_porcentaje": "2"
}
],
"importe_total": 4882.68,
"descuento": 0.0
},
"maquina_fiscal": {
"marca": "SISPAU",
"modelo": "ABC123",
"serie": "CGNC1405"
},
"proveedor": {
"email": "juan.perez@xyz.com",
"identificacion": "0987654321",
"tipo_identificacion": "05",
"razon_social": "Juan Pérez",
"direccion": "Calle única Numero 987",
"telefono": "046029400"
},
"maquina_fiscal": {
"marca": "SISPAU",
"modelo": "ABC123",
"serie": "CGNC1405"
},
"items":[
{
"cantidad": 622.0,
"codigo_principal": "ZNC",
"codigo_auxiliar": "050",
"precio_unitario": 7.01,
"descripcion": "Zanahoria granel 50 Kg.",
"precio_total_sin_impuestos": 4359.54,
"impuestos":[
{
"base_imponible": 4359.54,
"valor": 523.14,
"tarifa": 12.0,
"codigo": "2",
"codigo_porcentaje": "2"
}
],
"detalles_adicionales": {
"Peso": "5000.0000"
},
"descuento": 0.0,
"unidad_medida": "Kilos"
}
],
"pagos": [
{
"forma_pago": "01",
"total": 4882.68,
"unidad_tiempo": "dias",
"plazo": "30"
}
]
}
Retorna un objeto tipo liquidacion que incluye un nuevo parámetro id
,
el cual identifica de manera única a la liquidación de compras. El campo clave_acceso
generado
también se incluirá como parte de la respuesta. Sí la liquidación de compra ya está autorizada se retornará un error.
Autorización de comprobantes
Autorizar comprobante
Autoriza cualquier tipo de comprobante electrónico existente.
El ID del documento id-doc
es el ID que obtienes después de crear un documento.
Operación
POST /edocs/<id-doc>/issue
Requerimiento de ejemplo
curl -v https://link.datil.co/edocs/<id-doc>/issue \
-H "Content-Type: application/json" \
-H "X-Key: <clave-del-api>" \
-H "X-Password: <clave-certificado-firma>"
import requests
cabeceras = {
'x-key': '<clave-del-api>',
'x-password': '<clave-certificado-firma>',
'content-type': 'application/json'}
respuesta = requests.get(
'https://link.datil.co/edocs/<id-factura>/issue',
headers = cabeceras)
using RestSharp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DatilClient {
class InvoicingServiceClient {
static void Main(string[] args) {
var client = new RestClient("https://link.datil.co/edocs/");
var idDocumento = "<id-doc>/issue";
var request = new RestRequest("edocs/" + idDocumento, Method.GET);
request.AddHeader("X-Key", "<clave-del-api>");
request.AddHeader("X-Password", "<clave-certificado-firma>");
request.AddHeader("Content-Type", "application/json");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
}
}
}
Requerimiento
Reemplaza en la ruta <id-doc>
por el ID de la factura que necesitas consultar.
Respuesta
Parámetro | Tipo | Descripción |
---|---|---|
emisor | objeto tipo emisor | Información completa del emisor. |
estado | string | Estado de autorización del comprobante. Posibles valores: AUTORIZADO , NO AUTORIZADO , ENVIADO , DEVUELTO , RECIBIDO , ERROR |
numero | string | Número completo del documento. Ejm: 001-002-592738007 |
url_formato_impresion | url | Esta URL te permite acceder de manera directa al formato de impresión (RIDE) del comprobante |
url_documento_electronico | url | Esta URL te permite acceder de manera directa al documento electrónico (XML) |
tipo | string | Código que representa el tipo de documento. Revisa aquí el código que corresponde a cada tipo de documento |
id | string | El id del documento consultado |
ambiente | integer | Pruebas: 1 .Producción 2 . |
receptor | objeto tipo receptor | Informaci'on del receptor del documento. |
clave_acceso | string | Clave de acceso del documento. |
autorizacion | Objeto de tipo autorización SRI |
Respuesta de ejemplo
{
"emisor": {
"provincia": 10,
"email": "uan.perez@xyz.com",
"categoria": "Software",
"ruc": "0992712554001",
"obligado_contabilidad": true,
"contribuyente_especial": "",
"subcategoria": "Sorftware como Servicio",
"nombre_comercial": "Datil",
"pais": 1,
"market_id": null,
"razon_social": "XYZ Corporación S.A.",
"direccion": "Av. Primera 234 y calle 5ta",
"ciudad": "Guayaquil",
"exportador": false,
"telefono": "099999999",
"tipoentidad": "Sociedad Anónima"
},
"estado": "RECIBIDO",
"numero": "001-002-000000001",
"url_formato_impresion": "https://app.datil.com/ver/67aa7c650g395cgb16e18df3d8ff18fc/pdf",
"url_documento_electronico": "https://app.datil.com/ver/67aa7c650g395cgb16e18df3d8ff18fc/xml",
"tipo": "01",
"id": "67aa7c650g395cgb16e18df3d8ff18fc",
"ambiente": "1",
"receptor": {
"identificacion": "0987654321001",
"telefono": "",
"email": "devops@datilmedia.com",
"tipo_identificacion": "04",
"direccion": "Av. Primera 234 y calle 5ta"
},
"clave_acceso": "0803202101099271255400110010020000000011994720519",
"autorizacion": {
"mensajes": []
}
}
Consulta de autorización
Consulta la información de autorización de cualquier tipo de comprobante electrónico.
El ID del documento id-doc
es el ID que obtienes después de emitir un documento.
Operación
GET /edocs/<id-doc>
Requerimiento
Reemplaza en la ruta <id-doc>
por el ID de la factura que necesitas consultar.
Requerimiento de ejemplo
curl -v https://link.datil.co/edocs/<id-doc> \
-H "Accept: application/json" \
-H "X-Key: <clave-del-api>"
import requests
cabeceras = {'x-key': '<clave-del-api>'}
respuesta = requests.get(
'https://link.datil.co/edocs/<id-factura>',
headers = cabeceras)
using RestSharp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DatilClient {
class InvoicingServiceClient {
static void Main(string[] args) {
var client = new RestClient("https://link.datil.co/");
var idDocumento = "<id-doc>";
var request = new RestRequest("edocs/" + idDocumento, Method.GET);
request.AddHeader("X-Key", "<clave-del-api>");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
}
}
}
Respuesta
Parámetro | Tipo | Descripción |
---|---|---|
id | string | El id del documento consultado |
tipo | string | Código que representa el tipo de documento. Revisa aquí el código que corresponde a cada tipo de documento |
estado | string | Estado de autorización del comprobante. Posibles valores: AUTORIZADO , NO AUTORIZADO , ENVIADO , DEVUELTO , RECIBIDO , ERROR |
clave_acceso | string | Clave de acceso del documento. |
url_formato_impresion | url | Esta URL te permite acceder de manera directa al formato de impresión (RIDE) del comprobante |
url_documento_electronico | url | Esta URL te permite acceder de manera directa al documento electrónico (XML) |
autorizacion | Objeto de tipo autorización SRI |
Respuesta de ejemplo
{
"url_documento_electronico": "https://app.datil.co/ver/be69b7bc64b643718a643caa9a8c3569/xml",
"autorizacion": {
"fecha": "2020-01-23T15:41:51Z",
"estado": "AUTORIZADO",
"mensajes": [],
"numero": "2301202035679285132400120010020000287082794874518"
},
"tipo": "01",
"url_formato_impresion": "https://app.datil.co/ver/be69b7bc64b643718a643caa9a8c3569/pdf",
"clave_acceso": "2301202035679285132400120010020000287082794874518",
"estado": "AUTORIZADO",
"id": "be69b7bc64b643718a643caa9a8c3569",
"ambiente": "2"
}
Descarga de comprobantes
Consulta de RIDE
Consulta de la representación impresa del documento electrónico (RIDE). El ID del comprobante id-doc
es el ID que se obtiene después de emitir un comprobante.
Operación
GET app.datil.co/ver/<id-doc>/pdf
Consulta de XML
Consulta de representación XML de los comprobantes. El ID del comprobante id-doc
es el ID que se obtiene después de emitir un comprobante.
Operación
GET app.datil.co/ver/<id-doc>/xml
Envío por correo
Envíe cualquier tipo de comprobantes por correo electrónico hacia la persona que va dirigada el comprobante o una lista de destinatarios.
Envío simple
Envíe el comprobante al correo electrónico que está definido en el comprobante
Operación
POST edocs/send-email/<id-doc>
Requerimiento
Reemplaza en la ruta <id-doc>
por el id
del comprobante a enviar por correo.
curl -v https://link.datil.co/edocs/send-email/<id-doc> \
-H "Content-Type: application/json" \
-H "X-Key: <clave-del-api>"
import requests
cabeceras = {
'x-key': '<clave-del-api>',
'content-type': 'application/json'}
respuesta = requests.post(
'https://link.datil.co/edocs/send-email/<id-factura>',
headers = cabeceras)
using RestSharp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DatilClient {
class InvoicingServiceClient {
static void Main(string[] args) {
var client = new RestClient("https://link.datil.co/");
var idDocumento = "<id-doc>";
var request = new RestRequest("edocs/send-email/" + idDocumento, Method.POST);
request.AddHeader("X-Key", "<clave-del-api>");
request.AddHeader("Content-Type", "application/json");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
}
}
}
Respuesta
Parámetro | Tipo | Descripción |
---|---|---|
id | string | El id del documento al cual se envío el correo. |
result | string | Resultado del requerimiento. |
Envio a multiples receptores
Envié cualquier tipo de comprobante a multiples receptores especificando los correos electrónicos de estos en el cuerpo del requerimiento en formato JSON.
Operación
POST edocs/send-email/<id-doc>
Requerimiento
Reemplaza en la ruta <id-doc>
por el id
del comprobante a enviar por correo. El cuerpo del requerimiento debe de tener una lista con los correos de los receptores del comprobante.
Parámetro | Tipo | Descripción |
---|---|---|
destinatarios | lista | Lista de los correos de los destinatarios del correo del comprobante. |
curl -v https://link.datil.co/edocs/send-email/<id-doc> \
-H "Content-Type: application/json" \
-H "X-Key: <clave-del-api>"
-d '{
"destinatarios": [
"juan.perez@xyz.com",
"joel@xyz.com"
]
}'
import requests, json
destinatarios = {
"destinatarios": [
"juan.perez@xyz.com",
"joel@xyz.com"
]
}
cabeceras = {
'x-key': '<clave-del-api>',
'content-type': 'application/json'}
respuesta = requests.post(
'https://link.datil.co/edocs/send-email/<id-factura>',
headers = cabeceras
data = json.dumps(destinatarios))
using RestSharp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DatilClient {
class InvoicingServiceClient {
static void Main(string[] args) {
var client = new RestClient("https://link.datil.co/");
var idDocumento = "<id-doc>";
var request = new RestRequest("edocs/send-email" + idDocumento, Method.POST);
request.AddHeader("X-Key", "<clave-del-api>");
request.AddHeader("Content-Type", "application/json");
request.RequestFormat = DataFormat.Json;
var body = (@"{
""destinatarios"": [
""juan.perez@xyz.com"",
""joel@xyz.com""
]
}");
request.AddParameter("application/json", body, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Console.ReadLine();
}
}
}
Respuesta
Parámetro | Tipo | Descripción |
---|---|---|
id | string | El id del documento al cual se envío el correo. |
result | string | Resultado del requerimiento. |
Objetos comunes
Clave de acceso
El sistema se encarga de generar automáticamente la clave de acceso de cada comprobante y luego retornarla como parte de la respuesta de emisión del mismo. Pero es posible también proveer la clave de acceso si se requiere tener control en la generación de esta clave. La siguiente documentación explica como debe estar estructurada la clave de acceso.
Las claves de acceso estarán compuestas de 49 caracteres numéricos, la herramienta o aplicativo a utilizar por el sujeto pasivo deberá generar de manera automática la clave de acceso, que constituirá un requisito que dará el carácter de único a cada uno de los comprobantes, y la misma servirá para que el SRI indique si el comprobante es autorizado o no; se describe a continuación su conformación:
Campo | Formato | Longitud |
---|---|---|
Fecha de Emisión | DDMMAAAA | 8 |
Tipo de Comprobante | Tabla 4 | 2 |
Número de RUC | 1234567890001 | 13 |
Tipo de Ambiente | Tabla 5 | 1 |
Serie | 001001 | 6 |
Número del Comprobante (secuencial) | 000000001 | 9 |
Código Numérico | Numérico | 8 |
Tipo de Emisión | Tabla 2 | 1 |
Dígito Verificador (módulo 11 ) | Numérico | 1 |
Nota: Todos los campos deben completarse conforme a la longitud indicada, es decir si en el número secuencial no completa los 9 dígitos, la clave de acceso estará mal conformada y será motivo de rechazo de la autorización en línea.
El dígito verificador será aplicado sobre toda la clave de acceso (48 dígitos) y deberá ser incorporado por el contribuyente a través del método denominado Módulo 11, con un factor de chequeo ponderado (2), este mecanismo de detección de errores, será verificado al momento de la recepción del comprobante. Cuando el resultado del dígito verificador obtenido sea igual a once (11), el digito verificador será el cero (0) y cuando el resultado del dígito verificador obtenido sea igual a diez 10, el digito verificador será el uno (1).
El código numérico constituye un mecanismo para brindar seguridad al emisor en cada comprobante emitido, el algoritmo numérico para conformar este código es potestad absoluta del contribuyente emisor.
Ver aquí ejemplo de verificación utilizando algoritmo de módulo 11.
Emisor
Información del emisor de un comprobante.
Parámetro | Tipo | Descripción |
---|---|---|
ruc | string | Número de RUC de 13 caracteres |
razon_social | string | Razón social. Máximo 300 caracteres |
nombre_comercial | string | Nombre comercial. Máximo 300 caracteres |
direccion | string | Dirección registrada en el SRI. Máximo 300 caracteres. |
contribuyente_especial | string | Número de resolución. En blanco si no es contribuyente especial. |
obligado_contabilidad | boolean | true si está obligado a llevar contabilidad. Requerido |
establecimiento | establecimiento | Establecimiento que emite la factura. |
Establecimiento
Representa un establecimiento del comercio.
Parámetro | Tipo | Descripción |
---|---|---|
codigo | string | Código numérico de 3 caracteres que representa al establecimiento. Ejemplo: 001 |
direccion | string | Dirección registrada en el SRI. Máximo 300 caracteres |
punto_emision | string | Código numérico de 3 caracteres que representa al punto de emisión, o punto de venta. Ejemplo: 001 |
Máquina fiscal
Datos de una máquina fiscal.
Parámetro | Tipo | Descripción |
---|---|---|
marca | string | Máximo 300 caracteres. Requerido |
modelo | string | Máximo 300 caracteres. Requerido |
serie | string | Máximo 300 caracteres. Requerido |
Reembolso
Datos de una factura, liquidación de compras o retención ats de reembolso.
Parámetro | Tipo | Descripción |
---|---|---|
codigo | string | Código del tipo de documento de reembolso equivalente a 41. Requerido |
documentos | listado de objeto Documento | Lista de documentos. Requerido |
subtotal | float | Sumatoria de los subtotales de los documentos. Requerido |
total_impuestos | float | Sumatoria de los totales de impuestos de los documentos. Requerido |
total | float | Subtotal más total de impuestos. Requerido |
Documento
Datos de un documento.
Parámetro | Tipo | Descripción |
---|---|---|
codigo_establecimiento | string | 3 caracteres. Requerido |
codigo_punto_emision | string | 3 caracteres. Requerido |
secuencia | integer (min. 1 - max. 999999999 ) | Número de secuencia del documento. Requerido |
fecha_emision | string | Fecha de emisión en formato AAAA-MM-DDHoraZonaHoraria, definido en el estándar ISO8601. Requerido |
identificacion_proveedor | string | De 5 a 20 caracteres. Requerido |
tipo_identificacion_proveedor | string | Ver tabla de tipos de identificación Requerido |
impuestos | listado de objeto impuesto | Impuestos totales del documento. Requerido |
numero_autorizacion | string | Número de autorización del documento. 10, 37 o 49 caracteres. Requerido |
pais_origen_proveedor | string | Código de dos caracteres del país origen según ISO_3166. Requerido |
tipo | string | Código de tipos de documentos. Requerido |
tipo_proveedor | string | Código de tipo de proveedor de reembolso. Requerido |
Info adicional
Información adicional adjunta al documento. Es utilizada para especificar cualquier detalle que no pueda ser descrito con los elementos que son parte del documento.
Parámetro | Tipo | Descripción |
---|---|---|
nombre | string | Máximo 300 caracteres. Requerido |
valor | string | Máximo 300 caracteres. Requerido |
Persona
Datos de una persona. Utilizado como comprador en facturas y notas de crédito, como sujeto en retenciones
Parámetro | Tipo | Descripción |
---|---|---|
razon_social | string | Razón social. Máximo 300 caracteres. Requerido |
identificacion | string | De 5 a 20 caracteres. Requerido |
tipo_identificacion | string | Ver tabla de tipos de identificación Requerido |
string | Correo electrónico. Máximo 300 caracteres. | |
telefono | string | Teléfono. |
direccion | string | Dirección |
Documentos Soporte
Parámetro | Tipo | Descripción |
---|---|---|
codigo_sustento | string | Ver tabla de tipos de sustento de los comprobantes. Requerido |
tipo_documento | string | Ver códigos de tipos de documentos. Requerido |
numero | string | Número completo del documento asociado a la retención ATS. Requerido |
fecha_emision | string | Fecha de emisión en formato AAAA-MM-DDHoraZonaHoraria, definido en el estándar ISO8601. Requerido |
fecha_registro_contable | string | Fecha de registro contable del comprobante de venta en formato AAAA-MM-DDHoraZonaHoraria, definido en el estándar ISO8601. |
numero_autorización | string | Número de autorización del comprobante de venta. Requerido |
tipo_pago | string | Ver códigos de tipos de pagos. Requerido |
total_sin_impuestos | string | Total antes de los impuestos. Requerido |
total | string | Total incluyendo impuestos. Requerido |
tipo_regimen_fiscal | string | Ver tabla de tipos de régimen fiscal (Requerido si la identificación del sujeto retenido es Identificación del exterior) |
pais | string | Código de dos caracteres del país según ISO_3166 (Requerido si la identificación del sujeto retenido es Identificación del exterior) |
aplica_convenio | boolean | true si el pago está sujeto a algún convenio de doble tributación (Requerido si la identificación del sujeto retenido es Identificación del exterior) |
pago_exterior | boolean | true si el pago realizado al exterior aplica retención (Requerido si la identificación del sujeto retenido es Identificación del exterior) |
pago_regimen_fiscal | boolean | true si el pago realizado a un no residente se encuentra en un régimen fiscal preferente o de menor imposición (Requerido si la identificación del sujeto retenido es Identificación del exterior) |
impuestos | listado de objetos impuesto | Impuestos totales del documento. Requerido |
retenciones | listado de objetos retenciones ats | Listado de impuestos retenidos Requerido |
reembolso | objeto tipo reembolso | Información de reembolso. |
pagos | listado de objetos tipo pagos | Información de los pagos Requerido |
Receptor
Datos del receptor de un documento.
Parámetro | Tipo | Descripción |
---|---|---|
identificacion | string | De 5 a 20 caracteres. |
tipo_identificacion | string | Ver tabla de tipos de identificación |
telefono | string | Teléfono. |
string | Correo electrónico. Máximo 300 caracteres. | |
direccion | string | Dirección |
Total Impuesto
Parámetro | Tipo | Descripción |
---|---|---|
codigo | string | Código del tipo de impuesto |
codigo_porcentaje | string | Código del porcentaje. |
base_imponible | float | Suma de las bases imponibles de cada item para el tipo de impuesto y porcentaje. |
descuento_adicional | float | Descuento global aplicado en la factura, expresado en valor monetario. Solo aplica a impuestos de tipo IVA. |
valor | float | Resultado de aplicar el impuesto a la (base_imponible - descuento_adicional ) |
Impuesto Item
Parámetro | Tipo | Descripción |
---|---|---|
codigo | string | Código del tipo de impuesto |
codigo_porcentaje | string | Código del porcentaje. |
base_imponible | float (hasta 2 cifras decimales) | Corresponde al valor de la cantidad multiplicado por el precio_unitario menos el descuento |
valor | float (hasta 2 cifras decimales) | Valor del total. |
tarifa | float (hasta 2 cifras decimales) | Porcentaje actual del impuesto expresado por un número entre 0.0 y 100.0 |
Envío SRI
Contiene la información y el estado de la fase de envío al SRI
Parámetro | Tipo | Descripción |
---|---|---|
mensajes | listado de objeto mensaje SRI | Listado de mensajes. |
estado | string | Posibles valores: RECIBIDA , DEVUELTA |
fecha | string | Fecha en la que se realizó el envío en formato AAAA-MM-DDHoraZonaHoraria, definido en el estándar ISO8601. |
Autorización SRI
Contiene la información y el estado de la fase de autorización del comprobante.
Parámetro | Tipo | Descripción |
---|---|---|
mensajes | listado de objeto mensaje SRI | Listado de mensajes. |
estado | string | Posibles valores: AUTORIZADO , NO AUTORIZADO , PRE-AUTORIZADO |
numero | string | Número de autorización. |
fecha | string | Fecha en la que se otorgó la autorización en formato AAAA-MM-DDHoraZonaHoraria, definido en el estándar ISO8601. |
Mensajes de respuesta SRI
Parámetro | Tipo | Descripción |
---|---|---|
identificador | string | Número con el que el SRI identifica al mensaje. |
mensaje | string | Descripción del error, información o advertencia. |
tipo | string | Posibles valores: INFORMATIVO , ADVERTENCIA , ERROR |
informacion_adicional | string | Información adicional del mensaje. |
Item de factura, nota de crédito y liquidación de compras
Representa un producto o servicio del comercio.
Parámetro | Tipo | Descripción |
---|---|---|
descripcion | string (máximo 300 caracteres) | Descripción del ítem. Requerido |
codigo_principal | string (máximo 25 caracteres) | Código alfanumérico de uso del comercio. Máximo 25 caracteres. |
codigo_auxiliar | string (máximo 25 caracteres) | Código alfanumérico de uso del comercio. Máximo 25 caracteres. |
cantidad | float (hasta 6 cifras decimales) | Cantidad de items. Requerido |
precio_unitario | float (hasta 6 cifras decimales) | Precio unitario. Requerido |
descuento | float (hasta 2 cifras decimales) | El descuento es aplicado por cada producto, expresado en valor monetario. Requerido |
precio_total_sin_impuestos | float (hasta 2 cifras decimales) | Precio antes de los impuestos. Se obtiene multiplicando la cantidad por el precio_unitario |
unidad_medida | string | Unidad de medida Requerido para facturas de exportación |
impuestos | listado de objetos tipo impuesto item | Impuestos grabados sobre el producto. Requerido |
detalles_adicionales | object | Diccionario de datos de carácter adicional. Ejemplo:{"marca": "Ferrari", "chasis": "UANEI832-NAU101"} |
Retención en factura
Caso específico de Retenciones en la Comercializadores / Distribuidores de derivados del Petróleo y Retención presuntiva de IVA a los Editores, Distribuidores y Voceadores que participan en la comercialización de periódicos y/o revistas.
Parámetro | Tipo | Descripción |
---|---|---|
codigo | string | Código del tipo de impuesto para la retención en la factura. Requerido |
codigo_porcentaje | string | Código del porcentaje del impuesto. Requerido |
tarifa | float (hasta 2 cifras decimales) | Porcentaje actual del impuesto. Requerido |
valor | float (hasta 2 cifras decimales) | Valor del impuesto. Requerido |
Documento de Sustento
Información de la factura asociada a las notas de créditos.
Parámetro | Tipo | Descripción |
---|---|---|
numero_documento | string | Número completo de la factura asociada a la nota de crédito. |
tipo_documento | string | Ver códigos de tipos de documentos. |
fecha_documento | string | Fecha de emisión en formato AAAA-MM-DDHoraZonaHoraria, definido en el estándar ISO8601. |
Catálogo
Tipo de identificación
Tipo de identificación | Código |
---|---|
RUC | 04 |
CEDULA | 05 |
PASAPORTE | 06 |
VENTA A CONSUMIDOR FINAL* | 07 |
IDENTIFICACION DELEXTERIOR* | 08 |
PLACA | 09 |
Tipo de régimen fiscal
Código | Tipo de régimen fiscal |
---|---|
01 | Régimen general |
02 | Paraíso fiscal |
03 | Regimen fiscal preferente o jurisdicción de menor imposición |
Tipo de sujeto retenido
Código | Tipo de sujeto |
---|---|
01 | Persona natural |
02 | Sociedad |
Tipos de impuesto
Impuesto | Código |
---|---|
IVA | 2 |
ICE | 3 |
IRBPNR | 5 |
Tipos de Sustento de Comprobantes
Código | Tipo de Sustento |
---|---|
01 | Crédito Tributario para declaración de IVA (servicios y bienes distintos de inventarios y activos fijos) |
02 | Costo o Gasto para declaración de IR (servicios y bienes distintos de inventarios y activos fijos) |
03 | Activo Fijo - Crédito Tributario para declaración de IVA |
04 | Activo Fijo - Costo o Gasto para declaración de IR |
05 | Liquidación Gastos de Viaje, hospedaje y alimentación Gastos IR (a nombre de empleados y no de la empresa) |
06 | Inventario - Crédito Tributario para declaración de IVA |
07 | Inventario - Costo o Gasto para declaración de IR |
08 | Valor pagado para solicitar Reembolso de Gasto (intermediario) |
09 | Reembolso por Siniestros |
10 | Distribución de Dividendos, Beneficios o Utilidades |
11 | Convenios de débito o recaudación para IFI ́s |
12 | Impuestos y retenciones presuntivos |
13 | Valores reconocidos por entidades del sector público a favor de sujetos pasivos |
14 | Valores facturados por socios a operadoras de transporte (que no constituyen gasto de dicha operadora) |
15 | Pagos efectuados por consumos propios y de terceros de servicios digitales |
00 | Casos especiales cuyo sustento no aplica en las opciones anteriores |
Tipos de Pago
Código | Pago residente o no residente |
---|---|
01 | Pago a residente / Establecimiento permanente |
02 | Pago a no residente |
Impuestos Retenidos en Retención ATS
Parámetro | Tipo | Descripción |
---|---|---|
codigo | string | Código del tipo de impuesto para la retención en la factura. Requerido |
codigo_porcentaje | string | Código del porcentaje del impuesto. Requerido |
base_imponible | float | Suma de las bases imponibles de cada item para el tipo de impuesto y porcentaje. Requerido |
tarifa | float (hasta 2 cifras decimales) | Porcentaje actual del impuesto. Requerido |
valor_retenido | float (hasta 2 cifras decimales) | Valor del impuesto. Requerido |
dividendos | Listado de objetos dividendo | Participaciones en utilidades, excedentes, beneficios o similares que se obtienen en razón de los derechos representativos de capital que el beneficiario mantiene, de manera directa o indirecta. |
Dividendo
Parámetro | Tipo | Descripción |
---|---|---|
fecha_pago | string | Fecha de pago en formato AAAA-MM-DDHoraZonaHoraria, definido en el estándar ISO8601. Requerido |
impuesto_renta | string | Impuesto a la Renta pagado por la sociedad correspondiente al dividendo Requerido |
annio_fiscal | integer | Año en que se generaron las utilidades atribuibles al dividendo. Requerido |
Pagos de Documentos de Soporte
Parámetro | Tipo | Descripción |
---|---|---|
tipo_pago | string | Código de forma de pago del SRI. Requerido |
total | string | Total del pago. Requerido |
Código de Porcentaje de IVA
Porcentaje de IVA | Código | Tarifa |
---|---|---|
0% | 0 | 0 |
12% | 2 | 12 |
14% | 3 | 14 |
15% | 4 | 15 |
5% | 5 | 5 |
No Objeto de Impuesto | 6 | - |
Exento de IVA | 7 | - |
IVA diferenciado | 8 | - |
13% | 10 | 13 |
Tipos de impuesto para la retención
Impuesto | Código |
---|---|
RENTA | 1 |
IVA | 2 |
ISD | 6 |
Tipos de impuesto para la retención en la factura
Caso específico de Retenciones en la Comercializadores / Distribuidores de derivados del Petróleo y Retención presuntiva de IVA a los Editores, Distribuidores y Voceadores que participan en la comercialización de periódicos y/o revistas.
Impuesto | Código |
---|---|
IVA PRESUNTIVO Y RENTA | 4 |
Retención de IVA
Porcentaje IVA | Código |
---|---|
10% | 9 |
20% | 10 |
30% | 1 |
70% | 2 |
100% | 3 |
Retención en cero
Porcentaje IVA | Código |
---|---|
0% | 7 |
No procede retención
Porcentaje IVA | Código |
---|---|
0% | 8 |
Retención ISD
Porcentaje IVA | Código |
---|---|
5% | 4580 |
Retención a la Fuente (Renta)
Consulta el catálogo vigente de códigos en:
https://www.sri.gob.ec/web/guest/retenciones-en-la-fuente
Retención de IVA Presuntivo y Renta
Caso específico de Retenciones en la Comercializadores / Distribuidores de derivados del Petróleo y Retención presuntiva de IVA a los Editores, Distribuidores y Voceadores que participan en la comercialización de periódicos y/o revistas.
Retención IVA
Porcentaje IVA presuntivo | Código |
---|---|
100% | 3 |
12% (Editores a Margen de Comercialización Voceadores) | 4 |
100% (Venta periódicos y/o Revistas a Distribuidores) | 5 |
100% (Venta periódicos y/o Revistas a Voceadores) | 6 |
Retención Renta
Porcentaje Renta | Código |
---|---|
0.2% | 327 |
0.3% | 328 |
Tipos de documentos
Documento | Código |
---|---|
Factura | 01 |
Liquidación de Compra | 03 |
Nota de Crédito | 04 |
Nota de Débito | 05 |
Guía de Remisión | 06 |
Comprobante de Retención | 07 |
Boletos o entradas a espectáculos públicos | 08 |
Tiquetes o vales emitidos por máquinas registradoras | 09 |
Pasajes expedidos por empresas de aviación | 11 |
Documentos emitidos por instituciones financieras | 12 |
Comprobante de venta emitido en el Exterior | 15 |
Formulario Único de Exportación (FUE) o Declaración Aduanera Única (DAU) o Declaración Andina de Valor (DAV) | 16 |
Documentos autorizados utilizados en ventas excepto N/C N/D | 18 |
Comprobantes de Pago de Cuotas o Aportes | 19 |
Documentos por Servicios Administrativos emitidos por Inst. del Estado | 20 |
Carta de Porte Aéreo | 21 |
RECAP | 22 |
Nota de Crédito TC | 23 |
Nota de Débito TC | 24 |
Comprobante de venta emitido por reembolso | 41 |
Documento retención presuntiva y retención emitida por propio vendedor o por intermediario | 42 |
Liquidación para Explotación y Exploración de Hidrocarburos | 43 |
Comprobante de Contribuciones y Aportes | 44 |
Liquidación por reclamos de aseguradoras | 45 |
Nota de Crédito por Reembolso Emitida por Intermediario | 47 |
Nota de Débito por Reembolso Emitida por Intermediario | 48 |
Proveedor Directo de Exportador Bajo Régimen Especial | 49 |
A Inst. Estado y Empr. Públicas que percibe ingreso exento de Imp. Renta | 50 |
N/C A Inst. Estado y Empr. Públicas que percibe ingreso exento de Imp. Renta | 51 |
N/D A Inst. Estado y Empr. Públicas que percibe ingreso exento de Imp. Renta | 52 |
Liquidación de compra de Bienes Muebles Usados | 294 |
Liquidación de compra de vehículos usados | 344 |
Acta Entrega-Recepción PET | 364 |
Factura operadora transporte / socio | 370 |
Comprobante socio a operadora de transporte | 371 |
Nota de crédito operadora transporte / socio | 372 |
Nota de débito operadora transporte / socio | 373 |
Nota de débito operadora transporte / socio | 374 |
Liquidación de compra RISE de bienes o prestación de servicios | 375 |
Tipos de forma de pago
Forma de pago | Código |
---|---|
Efectivo | efectivo |
Cheque | cheque |
Débito de cuenta bancaria | debito_cuenta_bancaria |
Transferencia bancaria | transferencia |
Depósito en cuenta (Corriente / Ahorros) | deposito_cuenta_bancaria |
Tarjeta de débito | tarjeta_debito |
Dinero electrónico Ecuador | dinero_electronico_ec |
Tarjeta prepago | tarjeta_prepago |
Tarjeta de crédito | tarjeta_credito |
Otros | otros |
Endoso de títulos | endoso_titulos |
Tipos de forma de pago del SRI
Forma de pago | Código |
---|---|
Sin utilización del sistema financiero | 01 |
Compensación de deudas | 15 |
Tarjeta de débito | 16 |
Dinero electrónico | 17 |
Tarjeta prepago | 18 |
Tarjeta de crédito | 19 |
Otros con utilización del sistema financiero | 20 |
Endoso de títulos | 21 |
Equivalencia entre formas de pago Dátil y formas de pago del SRI
Forma de pago Dátil | Código | Forma de pago SRI | Código |
---|---|---|---|
Efectivo | efectivo | Sin utilización del sistema financiero | 01 |
Cheque | cheque | Otros con utilización del sistema financiero | 20 |
Débito bancario | debito_cuenta_bancaria | Otros con utilización del sistema financiero | 20 |
Transferencia bancaria | transferencia | Otros con utilización del sistema financiero | 20 |
Tarjeta de crédito | tarjeta_credito | Tarjeta de crédito nacional | 19 |
Depósito en cuenta (Corriente / Ahorros) | deposito_cuenta_bancaria | Otros con utilización del sistema financiero | 20 |
Tarjeta de débito | tarjeta_debito | Tarjeta de débito | 16 |
Dinero electrónico Ecuador | dinero_electronico_ec | Dinero electrónico | 17 |
Tarjeta prepago | tarjeta_prepago | Tarjeta prepago | 18 |
Otros | otros | Otros con utilización del sistema financiero | 20 |
Endoso de títulos | endoso_titulos | Endoso de títulos | 21 |
Debido a que el Servicio de Rentas Internas exige incluir información del pago, las facturas a crédito se enviarán al SRI con forma de pago "Otros con utilización del sistema financiero", a menos que se envíe otro código de tipo de pago.
Tipo de proveedor
Tipo | Código |
---|---|
Personal natural | 01 |
Sociedad | 02 |
Monedas
Nombre | Código |
---|---|
DOLAR | USD |
EURO | EUR |
Consulta de catálogo
Tipos de identificación
Consulta el catálogo de tipos de identificación disponibles.
Operación
GET /catalog/id-types
Requerimiento de ejemplo
curl -v https://link.datil.co/catalog/id-types \
-H "Content-Type: application/json" \
-H "X-Key: <API-key>"
Respuesta
Retorna una lista con el código y nombre de cada tipo de identificación
Respuesta de ejemplo
{
"count": 6,
"results": [
{
"nombre": "PLACA",
"codigo": "09"
},
{
"nombre": "CONSUMIDOR FINAL",
"codigo": "07"
},
{
"nombre": "RUC",
"codigo": "04"
},
{
"nombre": "IDENTIFICACIONDELEXTERIOR",
"codigo": "08"
},
{
"nombre": "CEDULA",
"codigo": "05"
},
{
"nombre": "PASAPORTE",
"codigo": "06"
}
]
}
Códigos de retención
Consulta el catálogo de códigos de porcentaje de retención disponibles para el código enviado
Operación
GET /catalog/withholdings-tax-rates/<tipo_impuesto>
Requerimiento
Reemplaza en la ruta <tipo_impuesto>
por el código de tipo de impuesto
Requerimiento de ejemplo
curl -v https://link.datil.co/withholdings-tax-rates/2 \
-H "Content-Type: application/json" \
-H "X-Key: <API-key>"
Respuesta
Retorna una lista de códigos de porcentajes de retención en base al código enviado.
Respuesta de ejemplo
{
"count": 6,
"results": [
{
"nombre": "RETENCIÓN DE IVA 70%",
"codigo": "2",
"porcentaje": "70.00"
},
{
"nombre": "RETENCIÓN DE IVA 30%",
"codigo": "1",
"porcentaje": "30.00"
},
{
"nombre": "RETENCIÓN EN 0%",
"codigo": "7",
"porcentaje": "0.00"
},
{
"nombre": "RETENCIÓN DE IVA 10%",
"codigo": "9",
"porcentaje": "10.00"
},
{
"nombre": "RETENCIÓN DE IVA 20%",
"codigo": "10",
"porcentaje": "20.00"
},
{
"nombre": "NO PROCEDE RETENCIÓN",
"codigo": "8",
"porcentaje": "0.00"
}
]
}
Tipos de documento
Consulta el catálogo de tipos de documento disponibles.
Operación
GET /catalog/document-types
Requerimiento de ejemplo
curl -v https://link.datil.co/catalog/document-types \
-H "Content-Type: application/json" \
-H "X-Key: <API-key>"
Respuesta
Retorna una lista de tipos de documento
Respuesta de ejemplo
{
"count": 3,
"results": [
{
"nombre": "FACTURA",
"codigo": "01"
},
{
"nombre": "NOTA DEBITO",
"codigo": "05"
},
{
"nombre": "LIQ. COMPRAS",
"codigo": "03"
}
]
}
Porcentajes de impuesto
Consulta los porcentajes del impuesto enviado.
Operación
GET /catalog/sales-tax-rates/<tipo_impuesto>
Requerimiento
Reemplaza en la ruta <tipo_impuesto>
por el código de tipo de impuesto
Requerimiento de ejemplo
curl -v https://link.datil.co/catalog/sales-tax-rates/2 \
-H "Content-Type: application/json" \
-H "X-Key: <API-key>"
Respuesta
Retorna una lista con los códigos de porcentaje del impuesto enviado
Respuesta de ejemplo
{
"count": 3,
"results": [
{
"nombre": "IVA 15%",
"tarifa": "15.00",
"codigo_porcentaje": "4"
},
{
"nombre": "IVA 0%",
"tarifa": "0.00",
"codigo_porcentaje": "0"
},
{
"nombre": "IVA NO OBJETO DE IMPUESTO",
"tarifa": "0.00",
"codigo_porcentaje": "6"
}
]
}
Errores
Listado de códigos de error y su significado.
Código | Significado |
---|---|
400 | Bad Request -- La información provista está mal formada o incompleta. |
401 | Unauthorized -- Tu clave de API no está autorizada para realizar esta acción |
403 | Forbidden -- |
404 | Not Found -- El recurso especificado no existe. |
405 | Method Not Allowed -- |
406 | Not Acceptable -- |
500 | Internal Server Error -- Error en el sistema. |
503 | Service Unavailable -- Servicio temporalmente fuera de línea. Intenta más tarde. |
Formato de errores
Los errores cuando el formato del json enviado es inválido tienen la siguiente estructura:
Respuesta de ejemplo
{
"message": "Falta campo obligatorio",
"code": "MISSING_PARAMETER",
"details": "El campo debe estar incluido en la petición",
"parameter": "ambiente",
"value": null
}
Campo | Significado |
---|---|
message | Mensaje general del error |
code | Código del error. |
details | Mensaje detallado del error |
parameter | Parámetro donde se encuentra el error |
value | Valor que genera el error |
Códigos de error por formato
Código | Significado |
---|---|
MISSING_PARAMETER | Un campo obligatorio no se encuentra en el json del requerimiento |
INVALID_PARAMETER | Se envió un campo no permitido en el json del requerimiento |
INVALID_VALUE | Se envió un valor inválido para el parámetro indicado |
INVALID_DATA_TYPE | El tipo de dato enviado es inválido para el parámetro indicado |
INVALID_FORMAT | El formato del campo es inválido |
INVALID_LENGTH | El número de caracteres enviado no se encuentra en el rango permitido |
Notificaciones
Dátil emite notificaciones cada vez que un comprobante es emitido. Te podrás suscribir a estas notificaciones proveyendo una URL en donde recibir los datos del comprobante emitido.
Suscripción
Para suscribirte a las notificaciones envía un requerimiento a:
Operación
POST /webhooks
Requerimiento
Requerimiento de ejemplo
curl -v https://link.datil.co/webhooks \
-H "Content-Type: application/json" \
-H "X-Key: <clave-del-api>" \
-H "X-Password: <clave-certificado-firma>" \
-d '{
"event_name": "receipt-issued",
"webhook_url": "http://www.b2b.com/ereceipts/receive"
}'
import requests
cabeceras = {'x-key': '<clave-del-api>'}
suscripcion = {
"event_name": "receipt-issued",
"webhook_url": "http://www.b2b.com/ereceipts/receive"}
respuesta = requests.post(
'https://link.datil.co/webhooks',
headers = cabeceras,
data = json.dumps(suscripcion))
using RestSharp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DatilClient {
class InvoicingServiceClient {
static void Main(string[] args) {
// Este ejemplo utiliza RestSharp
// Para instalar anda al menú: tools > Library Package Manager > Package Manager Console
// copia y pega y presiona enter: Install-Package RestSharp
var client = new RestClient("https://link.datil.co/");
var idFactura = "<id-factura>";
var request = new RestRequest("invoices/" + idFactura, Method.POST);
request.AddHeader("X-Key", "<clave-del-api>");
request.AddBody(@"{
""event_name"": "receipt-issued",
""webhook_url"": "http://www.b2b.com/ereceipts/receive"
}");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
}
}
}
Parámetro | Tipo | Descripción |
---|---|---|
event_name | string | Podrá ser receipt-issued o issue-error . Requerido |
webhook_url | string | Dirección donde se recibirá la información en formato JSON Requerido |
El evento receipt-issued
es emitido cuando el proceso de emisión termina
correctamente. Los posibles estados de un comprobante al terminar de ser
procesado correctamente pueden ser:
- AUTORIZADO
- NO AUTORIZADO
El evento issue-error
es emitido cuando ocurre un error en uno de los pasos
del proceso de emisión. Los posibles estados de un comprobante al terminar de ser
procesado correctamente pueden ser:
- CREADO (cuando no pudo ser firmado)
- DEVUELTO
Eventos
Al ejecutarse un evento se enviará en un requerimiento tipo POST, la información completa del comprobante en
conjunto con la autorización a la dirección registrada como webhook_url
al
momento de la suscripción.
Autorizado
Un comprobante Autorizado contendrá información como el siguiente ejemplo:
{
"secuencial":1267,
"fecha_emision":"2015-12-04T19:28:56.782Z",
"emisor":{
"ruc":"0992712554001",
"obligado_contabilidad":true,
"contribuyente_especial":"",
"nombre_comercial":"Datilmedia",
"razon_social":"Datilmedia S.A.",
"direccion":"Kennedy Norte Av. Miguel H. Alcivar",
"establecimiento":{
"punto_emision":"002",
"codigo":"001",
"direccion":"Calle A"
},
"email":"clientes@datilmedia.com"
},
"guia_remision":"001-002-007654320",
"tipo":"factura",
"moneda":"USD",
"id":"1ae2afaf6fed46dcabb14d424311e232",
"informacion_adicional":{
"Tiempo de entrega":"5 días"
},
"ambiente":1,
"totales":{
"total_sin_impuestos":4359.54,
"impuestos":[
{
"base_imponible":0.0,
"valor":0.0,
"codigo":"2",
"codigo_porcentaje":"0"
},
{
"base_imponible":4359.54,
"valor":523.14,
"codigo":"2",
"codigo_porcentaje":"2"
}
],
"importe_total":4882.68,
"propina":0.0,
"descuento":0.0
},
"comprador":{
"identificacion":"0924447956001",
"tipo_identificacion":"04",
"razon_social":"Juan Antonio Plaza",
"direccion":"Calle única Numero: S/N",
"telefono":"046015159",
"email":"jplazaarguello@gmail.com"
},
"tipo_emision":1,
"items":[
{
"precio_unitario":7.01,
"descripcion":"CEMENTO ROCA 50 KG. (1) 40U C/PALET",
"precio_total_sin_impuestos":4359.54,
"impuestos":[
{
"base_imponible":4359.54,
"valor":523.14,
"tarifa":12.0,
"codigo":"2",
"codigo_porcentaje":"2"
}
],
"detalles_adicionales":{
"Peso":"5000.0000",
"Volumen":"1 Gl"
},
"cantidad":622.0,
"codigo_auxiliar":"CTO2",
"descuento":0.0,
"codigo_principal":"CTO1"
}
],
"version":"1.0.0",
"clave_acceso":"0412201501099271255400110010020000012671994716611",
"api-key":"abcxyz1234567890mnbvqwe321tyu653",
"autorizacion":{
"numero":"0412201516042509927125540010331009539",
"fecha":"2015-12-04T16:04:25",
"estado":"AUTORIZADO",
"mensajes":[
]
}
}
No Autorizado
Un comprobante No autorizado contendrá información como el siguiente ejemplo:
{
"secuencial":1267,
"fecha_emision":"2015-12-04T19:28:56.782Z",
"emisor":{
"ruc":"0992712554001",
"obligado_contabilidad":true,
"contribuyente_especial":"",
"nombre_comercial":"Datilmedia",
"razon_social":"Datilmedia S.A.",
"direccion":"Kennedy Norte Av. Miguel H. Alcivar",
"establecimiento":{
"punto_emision":"002",
"codigo":"001",
"direccion":"Calle A"
},
"email":"clientes@datilmedia.com"
},
"guia_remision":"001-002-007654320",
"tipo":"factura",
"moneda":"USD",
"id":"1ae2afaf6fed46dcabb14d424311e232",
"informacion_adicional":{
"Tiempo de entrega":"5 días"
},
"ambiente":1,
"totales":{
"total_sin_impuestos":4359.54,
"impuestos":[
{
"base_imponible":0.0,
"valor":0.0,
"codigo":"2",
"codigo_porcentaje":"0"
},
{
"base_imponible":4359.54,
"valor":523.14,
"codigo":"2",
"codigo_porcentaje":"2"
}
],
"importe_total":4882.68,
"propina":0.0,
"descuento":0.0
},
"comprador":{
"identificacion":"0924447956001",
"tipo_identificacion":"04",
"razon_social":"Juan Antonio Plaza",
"direccion":"Calle única Numero: S/N",
"telefono":"046015159",
"email":"jplazaarguello@gmail.com"
},
"tipo_emision":1,
"items":[
{
"precio_unitario":7.01,
"descripcion":"CEMENTO ROCA 50 KG. (1) 40U C/PALET",
"precio_total_sin_impuestos":4359.54,
"impuestos":[
{
"base_imponible":4359.54,
"valor":523.14,
"tarifa":12.0,
"codigo":"2",
"codigo_porcentaje":"2"
}
],
"detalles_adicionales":{
"Peso":"5000.0000",
"Volumen":"1 Gl"
},
"cantidad":622.0,
"codigo_auxiliar":"CTO2",
"descuento":0.0,
"codigo_principal":"CTO1"
}
],
"version":"1.0.0",
"clave_acceso":"0412201501099271255400110010020000012671994716611",
"api-key":"abcxyz1234567890mnbvqwe321tyu653",
"autorizacion": {
"numero": "2907201515283909927125540017656314390",
"fecha": "2015-09-28T19:28:56.782Z",
"estado": "NO AUTORIZADO",
"mensajes": [{
"identificador": 46,
"mensaje": "RUC NO EXISTE",
"informacion_adicional": "El RUC debe tener 13 dígitos.",
"tipo": "ERROR"
}]
}
}
Devuelto
Un comprobante Devuelto contendrá información como el siguiente ejemplo:
{
"secuencial":1267,
"fecha_emision":"2015-12-04T19:28:56.782Z",
"emisor":{
"ruc":"0992712554001",
"obligado_contabilidad":true,
"contribuyente_especial":"",
"nombre_comercial":"Datilmedia",
"razon_social":"Datilmedia S.A.",
"direccion":"Kennedy Norte Av. Miguel H. Alcivar",
"establecimiento":{
"punto_emision":"002",
"codigo":"001",
"direccion":"Calle A"
},
"email":"clientes@datilmedia.com"
},
"guia_remision":"001-002-007654320",
"tipo":"factura",
"moneda":"USD",
"id":"1ae2afaf6fed46dcabb14d424311e231",
"informacion_adicional":{
"Tiempo de entrega":"5 días"
},
"ambiente":1,
"totales":{
"total_sin_impuestos":4359.54,
"impuestos":[
{
"base_imponible":0.0,
"valor":0.0,
"codigo":"2",
"codigo_porcentaje":"0"
},
{
"base_imponible":4359.54,
"valor":523.14,
"codigo":"2",
"codigo_porcentaje":"2"
}
],
"importe_total":4882.68,
"propina":0.0,
"descuento":0.0
},
"comprador":{
"identificacion":"0924447956001",
"tipo_identificacion":"04",
"razon_social":"Juan Antonio Plaza",
"direccion":"Calle única Numero: S/N",
"telefono":"046015159",
"email":"jplazaarguello@gmail.com"
},
"tipo_emision":1,
"items":[
{
"precio_unitario":7.01,
"descripcion":"CEMENTO ROCA 50 KG. (1) 40U C/PALET",
"precio_total_sin_impuestos":4359.54,
"impuestos":[
{
"base_imponible":4359.54,
"valor":523.14,
"tarifa":12.0,
"codigo":"2",
"codigo_porcentaje":"2"
}
],
"detalles_adicionales":{
"Peso":"5000.0000",
"Volumen":"1 Gl"
},
"cantidad":622.0,
"codigo_auxiliar":"CTO2",
"descuento":0.0,
"codigo_principal":"CTO1"
}
],
"version":"1.0.0",
"clave_acceso":"0412201501099271255400110010020000012671994716611",
"api-key":"abcxyz1234567890mnbvqwe321tyu653",
"envio_sri":{
"estado":"DEVUELTA",
"mensajes":[
{
"identificador":"35",
"mensaje":"ARCHIVO NO CUMPLE ESTRUCTURA XML",
"tipo":"ERROR",
"informacion_adicional":"Se encontró el siguiente error en la estructura del comprobante: cvc-minLength-valid: Value '' with length = '0' is not facet-valid with respect to minLength '1' for type '#AnonType_valordetAdicionaldetallesAdicionalesdetalledetallesfactura'."
}
]
}
}
Error en firma
{
"secuencial":766,
"firma":{
"result":"bad",
"error":"Clave de firma incorrecta, por favor inténtalo nuevamente.",
"status":400
},
"fecha_emision":"2015-12-16T15:38:01-05:00",
"emisor":{
"ruc":"1792478103001",
"obligado_contabilidad":"true",
"contribuyente_especial":"",
"nombre_comercial":"Dátil",
"razon_social":"Datilmedia S.A.",
"direccion":"Guayaquil Ecuador",
"establecimiento":{
"punto_emision":"003",
"codigo":"001",
"direccion":"Av. Primera 123 y Calle 2da, Guayas, Guayaquil."
},
"email":"jplaza@datilmedia.com"
},
"tipo":"factura",
"moneda":"USD",
"id":"9d30f85b12435a007ba1235e5007d123",
"informacion_adicional":null,
"ambiente":2,
"certificate-password":null,
"totales":{
"total_sin_impuestos":2,
"impuestos":[
{
"base_imponible":2274.11,
"valor":272.89,
"codigo":"2",
"codigo_porcentaje":"2"
}
],
"importe_total":2547.0,
"propina":0,
"descuento":0,
"descuento_adicional":0
},
"comprador":{
"email":"jplaza@datilmedia.com",
"identificacion":"0924392929",
"tipo_identificacion":"04",
"razon_social":"Juan Antonio Plaza",
"direccion":"Mall del Sol Piso 3, Guayaquil",
"telefono":"099999119"
},
"tipo_emision":1,
"items":[
{
"cantidad":1,
"codigo_principal":"8806085980334",
"precio_unitario":1,
"descripcion":"TELEVISORES LED 3D SAMSUNG UN55H6400AHXPA",
"precio_total_sin_impuestos":1,
"impuestos":[
{
"base_imponible":1,
"valor":0.12,
"tarifa":12.0,
"codigo":"2",
"codigo_porcentaje":"2"
}
],
"descuento":0
},
{
"cantidad":2,
"codigo_principal":"8806085462113",
"precio_unitario":600,
"descripcion":"LED 46 UN46F5500 SMART SAMSUNG",
"precio_total_sin_impuestos":1200.00,
"impuestos":[
{
"base_imponible":1200.00,
"valor":144,
"tarifa":12,
"codigo":"2",
"codigo_porcentaje":"2"
}
],
"descuento":0
}
],
"clave_acceso":"1612201501179247810300120010030987657662795494211",
"api-key":"1b123043215678b890ce7656780032ce"
}