Documentación

La API de Datil

Emite facturas, registra compras con retención, sincroniza contactos y productos, y haz firmar documentos desde tu sistema. Un solo host — https://edge.datil.com — y respuestas JSON en toda la superficie.

Cada producto tiene su propia llave: la de facturación y contabilidad alcanza un libro contable; la de firma, una organización. Las direcciones anteriores — https://datil.com/api/v1 y https://<empresa>.datil.id/api/v1 — siguen respondiendo lo mismo, así que una integración existente no tiene que moverse.

El esquema OpenAPI se sirve en GET /api/v1/openapi , con la misma autenticación.

De la llave a tu primera factura#

  1. Crea tu cuenta y activa el plan Empresa. La API requiere la capacidad accounting_api ; sin ella toda llamada responde 403 .
  2. Crea tu llave de API. En Contabilidad → Configuración → API. El secreto ( dtl_… ) se muestra una sola vez: guárdalo — el sistema conserva solo su hash.
  3. Configura el emisor. RUC, establecimiento y firma electrónica en Contabilidad → Emisor. Sin emisor, la API responde honestamente 422 emisor_not_configured en lugar de fabricar una emisión.
  4. Emite tu primera factura. El POST de la derecha crea, confirma y emite el comprobante ante la autoridad por el mismo camino que la pantalla Nueva factura. Envía siempre external_ref : un reintento devuelve el mismo comprobante en lugar de emitir dos veces.
  5. Escucha el resultado. Consulta GET /api/v1/invoices/:id o suscribe un webhook a document.authorized y descarga RIDE y XML con los enlaces de la respuesta.

La superficie completa#

Facturación y contabilidad. Dos familias bajo la misma llave: los endpoints fiscales ( /invoices , /purchases — JSON simple, motores reales) y los recursos JSON:API ( /contacts , /products , /documents , /withholdings-received , /webhook-endpoints y las lecturas contables) con filter / sort / page .

Firma electrónica. Solicitudes de firma — envías los PDF y cada firmante recibe su enlace — y solicitudes de certificado, la emisión alojada en el portal de tu organización. La navegación de la izquierda recorre recurso por recurso.

cURL
curl -X POST https://edge.datil.com/api/v1/invoices \
  -H "Authorization: Bearer $DATIL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "external_ref": "orden-1042",
  "customer": {
    "identification": "0992345678001",
    "name": "ACME S.A.",
    "email": "pagos@acme.ec"
  },
  "lines": [
    {
      "description": "Consultoría mensual",
      "quantity": "1",
      "unit_price": "100.00",
      "iva": "15"
    }
  ]
}'
Respuesta · 201
{
  "id": "9f2c6e1a-4b3d-4e9a-8d2f-5a7c1b9e0d43",
  "doc_type": "factura",
  "numero": "001-002-000000123",
  "access_key": "0307202601179001234500110010020000001231234567811",
  "status": "authorized",
  "environment": "production",
  "issue_date": "2026-07-03",
  "currency": "USD",
  "total": "115.00",
  "customer": {
    "identification": "0992345678001",
    "name": "ACME S.A."
  },
  "authorization": {
    "status": "AUTORIZADO",
    "number": "0307202601179001234500110010020000001231234567811",
    "date": "2026-07-03T14:07:00Z"
  },
  "failure_reason": null,
  "links": {
    "ride": "/api/v1/invoices/9f2c6e1a-4b3d-4e9a-8d2f-5a7c1b9e0d43/ride",
    "xml": "/api/v1/invoices/9f2c6e1a-4b3d-4e9a-8d2f-5a7c1b9e0d43/xml"
  }
}
Sin conexión — reintentando…

Esenciales

Sesión, seguridad, idioma y tema. Sin ellas el sitio no funciona.

Siempre activas