Skip to main content

Configuración básica

Puedes instalar la integración de Datil desde nuestro Marketplace. Una vez instalada, podrás emitir comprobantes electrónicos válidos ante el SRI, incluyendo facturas, notas de crédito, notas de débito, comprobantes de retención, guías de remisión y liquidaciones de compra.

Prerrequisitos

Antes de usar esta integración, necesitas:
  1. Cuenta activa en Datil — Regístrate en datil.co
  2. Firma electrónica — Archivo .p12 cargado en tu cuenta de Datil
  3. RUC activo — Tu RUC debe estar habilitado para facturación electrónica en el SRI

Credenciales requeridas

CampoDescripciónRequerido
API KeyClave API de tu cuenta Datil
RUCRUC del emisor (13 dígitos)
Razón SocialNombre legal del emisor
EstablecimientoCódigo del establecimiento (por defecto “001”)No
Punto de EmisiónCódigo del punto de emisión (por defecto “001”)No
Signature PasswordContraseña de la firma electrónicaNo
Puedes obtener tu API Key desde el dashboard de Datil en Configuración > API.

Funcionalidades

Emitir factura electrónica

Emite una factura electrónica válida ante el SRI. El IVA se calcula automáticamente según el código de impuesto. Inputs:
  • buyer_id (string) — Identificación del comprador (RUC, Cédula o Pasaporte).
  • buyer_id_type (enum: 04 | 05 | 06 | 07) — Tipo de identificación.
  • buyer_name (string) — Nombre o razón social del comprador.
  • buyer_email (opcional, string) — Email para envío electrónico.
  • buyer_address (opcional, string) — Dirección del comprador.
  • buyer_phone (opcional, string) — Teléfono del comprador.
  • items (array de objeto) — Productos o servicios facturados:
    • description (string) — Descripción del item.
    • quantity (number) — Cantidad.
    • unit_price (number) — Precio unitario sin impuesto.
    • discount (opcional, number) — Porcentaje de descuento (0-100).
    • tax_code (opcional, enum) — Código de IVA (por defecto “2”=15%).
    • product_code (opcional, string) — Código interno del producto.
  • payment_method (opcional, enum) — Método de pago (por defecto “01”=Efectivo).
  • payment_term_days (opcional, number) — Plazo de pago en días (para ventas a crédito).
  • currency (opcional, string) — Moneda (por defecto “USD”).
  • additional_info (opcional, objeto) — Información adicional clave-valor.
Ejemplo:
{
  "buyer_id": "1712345678001",
  "buyer_id_type": "04",
  "buyer_name": "EMPRESA EJEMPLO S.A.",
  "buyer_email": "[email protected]",
  "items": [
    {
      "description": "Servicio de consultoría",
      "quantity": 10,
      "unit_price": 100,
      "tax_code": "4"
    }
  ],
  "payment_method": "20"
}

Emitir nota de crédito

Emite una nota de crédito para modificar una factura previamente emitida. Se usa para devoluciones, correcciones de precio o descuentos posteriores. Inputs:
  • buyer_id (string) — Identificación del comprador.
  • buyer_id_type (enum: 04 | 05 | 06 | 07) — Tipo de identificación.
  • buyer_name (string) — Nombre del comprador.
  • buyer_email (opcional, string) — Email del comprador.
  • modified_document_number (string) — Número de factura original (formato: 001-001-000000001).
  • modified_document_date (string) — Fecha de la factura original (ISO).
  • reason (string) — Motivo de la nota de crédito.
  • items (array de objeto) — Items que se acreditan (mismo formato que factura).
  • additional_info (opcional, objeto) — Información adicional.
Ejemplo:
{
  "buyer_id": "1712345678001",
  "buyer_id_type": "04",
  "buyer_name": "EMPRESA EJEMPLO S.A.",
  "modified_document_number": "001-001-000000015",
  "modified_document_date": "2024-01-10",
  "reason": "Devolución de mercadería",
  "items": [
    {
      "description": "Producto devuelto",
      "quantity": 2,
      "unit_price": 50,
      "tax_code": "4"
    }
  ]
}

Emitir nota de débito

Emite una nota de débito para agregar cargos a una factura existente, como intereses por mora o cargos adicionales.
El número secuencial debe proporcionarse manualmente ya que la API de Datil no soporta listado de notas de débito emitidas.
Inputs:
  • sequential (number) — Número secuencial de la nota de débito.
  • buyer_id (string) — Identificación del comprador.
  • buyer_id_type (enum: 04 | 05 | 06 | 07) — Tipo de identificación.
  • buyer_name (string) — Nombre del comprador.
  • modified_document_number (string) — Número de factura original.
  • modified_document_date (string) — Fecha de la factura original.
  • items (array de objeto) — Cargos a agregar:
    • reason (string) — Descripción del cargo.
    • value (number) — Monto del cargo.
    • tax_code (opcional, enum) — Código de IVA (por defecto “4”=15%).
Ejemplo:
{
  "sequential": 1,
  "buyer_id": "1712345678001",
  "buyer_id_type": "04",
  "buyer_name": "EMPRESA EJEMPLO S.A.",
  "modified_document_number": "001-001-000000015",
  "modified_document_date": "2024-01-10",
  "items": [
    {
      "reason": "Intereses por mora - 30 días",
      "value": 25.50,
      "tax_code": "4"
    }
  ]
}

Emitir comprobante de retención

Emite un comprobante de retención cuando retienes impuesto a la renta o IVA a tus proveedores.
El número secuencial debe proporcionarse manualmente.
Inputs:
  • sequential (number) — Número secuencial de la retención.
  • subject_id (string) — Identificación del sujeto retenido (proveedor).
  • subject_id_type (enum: 04 | 05 | 06 | 07) — Tipo de identificación.
  • subject_name (string) — Nombre del proveedor.
  • subject_email (opcional, string) — Email del proveedor.
  • fiscal_period (string) — Período fiscal (formato: MM/YYYY).
  • items (array de objeto) — Retenciones aplicadas:
    • tax_base (number) — Base imponible.
    • tax_code (string) — Código de impuesto (1=Renta, 2=IVA).
    • percentage_code (string) — Código del porcentaje de retención.
    • percentage (number) — Porcentaje de retención.
    • support_document_number (string) — Número del documento sustento.
    • support_document_date (string) — Fecha del documento sustento.
Ejemplo:
{
  "sequential": 1,
  "subject_id": "1790012345001",
  "subject_id_type": "04",
  "subject_name": "PROVEEDOR EJEMPLO S.A.",
  "fiscal_period": "01/2024",
  "items": [
    {
      "tax_base": 1000,
      "tax_code": "1",
      "percentage_code": "312",
      "percentage": 1,
      "support_document_number": "001-001-000000100",
      "support_document_date": "2024-01-05"
    }
  ]
}

Emitir guía de remisión

Emite una guía de remisión para el transporte de mercadería.
El número secuencial debe proporcionarse manualmente.
Inputs:
  • sequential (number) — Número secuencial de la guía.
  • departure_address (string) — Dirección de partida.
  • transport_start_date (string) — Fecha de inicio del transporte (ISO).
  • transport_end_date (string) — Fecha de fin del transporte (ISO).
  • driver_id (string) — Identificación del transportista.
  • driver_id_type (enum: 04 | 05 | 06 | 07) — Tipo de identificación.
  • driver_name (string) — Nombre del transportista.
  • vehicle_plate (string) — Placa del vehículo.
  • recipients (array de objeto) — Destinatarios y sus items:
    • recipient_id (string) — Identificación del destinatario.
    • recipient_id_type (enum) — Tipo de identificación.
    • recipient_name (string) — Nombre del destinatario.
    • recipient_address (string) — Dirección de entrega.
    • transfer_reason (string) — Motivo del traslado.
    • items (array) — Items transportados.
Ejemplo:
{
  "sequential": 1,
  "departure_address": "Av. Amazonas N23-45, Quito",
  "transport_start_date": "2024-01-15T08:00:00",
  "transport_end_date": "2024-01-15T18:00:00",
  "driver_id": "1712345678",
  "driver_id_type": "05",
  "driver_name": "Juan Pérez",
  "vehicle_plate": "ABC-1234",
  "recipients": [
    {
      "recipient_id": "1790012345001",
      "recipient_id_type": "04",
      "recipient_name": "CLIENTE S.A.",
      "recipient_address": "Av. 6 de Diciembre, Quito",
      "transfer_reason": "Venta de mercadería",
      "items": [
        {
          "description": "Producto A",
          "quantity": 100,
          "product_code": "PROD-001"
        }
      ]
    }
  ]
}

Emitir liquidación de compra

Emite una liquidación de compra cuando compras a proveedores informales que no pueden emitir facturas.
El número secuencial debe proporcionarse manualmente.
Inputs:
  • sequential (number) — Número secuencial de la liquidación.
  • supplier_id (string) — Identificación del proveedor.
  • supplier_id_type (enum: 04 | 05 | 06 | 07) — Tipo de identificación.
  • supplier_name (string) — Nombre del proveedor.
  • supplier_email (opcional, string) — Email del proveedor.
  • items (array de objeto) — Items comprados (mismo formato que factura).
  • payment_method (opcional, enum) — Método de pago.
Ejemplo:
{
  "sequential": 1,
  "supplier_id": "1712345678",
  "supplier_id_type": "05",
  "supplier_name": "María García",
  "items": [
    {
      "description": "Productos agrícolas",
      "quantity": 50,
      "unit_price": 2,
      "tax_code": "0"
    }
  ],
  "payment_method": "01"
}

Consultar estado de factura

Consulta el estado de autorización de una factura emitida. Inputs:
  • invoice_id (string) — Número secuencial (ej. “001-001-000000004” o solo “4”) o ID de la factura.
Ejemplo:
{
  "invoice_id": "001-001-000000004"
}

Listar facturas emitidas

Lista las facturas emitidas con filtros opcionales. Inputs:
  • page_size (opcional, number) — Resultados por página (1-100, por defecto 20).
  • page (opcional, number) — Número de página.
  • customer_tax_id (opcional, string) — Filtrar por RUC/Cédula del cliente.
  • date_range (opcional, enum) — Rango de fechas relativo: today, yesterday, last_7_days, last_30_days, this_month, last_month, this_year.
  • issue_date_start (opcional, string) — Fecha inicial (YYYY-MM-DD).
  • issue_date_end (opcional, string) — Fecha final (YYYY-MM-DD).
Ejemplo:
{
  "date_range": "this_month",
  "page_size": 50
}

Listar notas de crédito emitidas

Lista las notas de crédito emitidas con filtros opcionales. Inputs:
  • page_size (opcional, number) — Resultados por página (1-100, por defecto 20).
  • page (opcional, number) — Número de página.
  • customer_tax_id (opcional, string) — Filtrar por RUC/Cédula del cliente.
  • date_range (opcional, enum) — Rango de fechas relativo.
  • issue_date_start (opcional, string) — Fecha inicial (YYYY-MM-DD).
  • issue_date_end (opcional, string) — Fecha final (YYYY-MM-DD).
Ejemplo:
{
  "date_range": "last_30_days"
}

Listar retenciones recibidas

Lista las retenciones que tus clientes han aplicado a tus facturas. Inputs:
  • page_size (opcional, number) — Resultados por página (1-100, por defecto 20).
  • page (opcional, number) — Número de página.
  • issuer_tax_id (opcional, string) — Filtrar por RUC del cliente emisor.
  • date_range (opcional, enum) — Rango de fechas relativo.
  • issue_date_start (opcional, string) — Fecha inicial (YYYY-MM-DD).
  • issue_date_end (opcional, string) — Fecha final (YYYY-MM-DD).
Ejemplo:
{
  "issuer_tax_id": "1790012345001",
  "date_range": "this_month"
}

Listar facturas recibidas

Lista las facturas que has recibido de tus proveedores. Inputs:
  • page_size (opcional, number) — Resultados por página (1-100, por defecto 20).
  • page (opcional, number) — Número de página.
  • supplier_tax_id (opcional, string) — Filtrar por RUC del proveedor.
  • date_range (opcional, enum) — Rango de fechas relativo.
  • issue_date_start (opcional, string) — Fecha inicial (YYYY-MM-DD).
  • issue_date_end (opcional, string) — Fecha final (YYYY-MM-DD).
Ejemplo:
{
  "supplier_tax_id": "1790012345001",
  "date_range": "last_month"
}

Listar notas de crédito recibidas

Lista las notas de crédito que has recibido de tus proveedores. Inputs:
  • page_size (opcional, number) — Resultados por página (1-100, por defecto 20).
  • page (opcional, number) — Número de página.
  • supplier_tax_id (opcional, string) — Filtrar por RUC del proveedor.
  • date_range (opcional, enum) — Rango de fechas relativo.
  • issue_date_start (opcional, string) — Fecha inicial (YYYY-MM-DD).
  • issue_date_end (opcional, string) — Fecha final (YYYY-MM-DD).
Ejemplo:
{
  "date_range": "this_year"
}

Validar RUC/Cédula

Valida un número de identificación ecuatoriano (RUC o Cédula) según las reglas del SRI. Inputs:
  • tax_id (string) — Número de identificación a validar.
  • type (opcional, enum: 04 | 05 | 06 | 07) — Tipo esperado de identificación.
Ejemplo:
{
  "tax_id": "1712345678001"
}

Diagnosticar error del SRI

Obtiene una explicación y solución para códigos de error del SRI. Inputs:
  • error_code (string) — Código de error del SRI.
  • error_message (opcional, string) — Mensaje de error original.
Ejemplo:
{
  "error_code": "35",
  "error_message": "DOCUMENTO INVALIDO"
}

Obtener catálogos del SRI

Obtiene los códigos de los catálogos del SRI para facturación electrónica. Inputs:
  • catalog (opcional, enum) — Nombre del catálogo: id-types, tax-rates, payment-methods, document-types, retention-income-codes, retention-vat-codes.
Ejemplo:
{
  "catalog": "tax-rates"
}

Obtener último secuencial

Obtiene el último número secuencial usado para un tipo de documento. Inputs:
  • document_type (enum: invoice | credit_note) — Tipo de documento.
Ejemplo:
{
  "document_type": "invoice"
}

Referencia de códigos

Tipos de identificación

CódigoDescripción
04RUC
05Cédula
06Pasaporte
07Consumidor Final

Tarifas de IVA

CódigoTarifa
00%
212%
314%
415%
55%
6No objeto de IVA
7Exento de IVA
8IVA diferenciado

Métodos de pago

CódigoDescripción
01Efectivo
15Compensación de deudas
16Tarjeta de débito
17Dinero electrónico
18Tarjeta prepago
19Tarjeta de crédito
20Otros
21Endoso de títulos