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