API de Facturación Electrónica (e-CF / RFCE)
Bienvenido a la documentación oficial de la API de Facturación Electrónica (e-CF / RFCE) integrada con la DGII. Usa esta guía para integrar tu sistema de facturación con Pacioli ERP.
Introducción
La API es RESTful y utiliza JSON. Todas las peticiones se realizan mediante HTTPS y autenticación con API Key.
- Base URL:
https://ecf.paciolird.com/api - Content-Type:
application/json - Versión actual:
2025-11-01
Autenticación
Incluye las siguientes cabeceras en cada solicitud:
{
"X-API-KEY": "<tu_api_key>",
"X-API-Version": "2025-11-01",
"Content-Type": "application/json"
}
Endpoints principales
Todos los endpoints operan bajo los prefijos /testecf, /certecf y /produccion.
POST /{ambiente}/ecf/enviar
Envía un comprobante e-CF directamente a la DGII.
curl -X POST https://ecf.paciolird.com/api/produccion/ecf/enviar \
-H "X-API-KEY: <api_key>" \
-H "Content-Type: application/json" \
-d @ecf.json
POST /{ambiente}/ecf/preparar-envio
Crea el e-CF pero no lo envía a la DGII; queda en cola para envío posterior.
{
"tipo": "31",
"cliente": { "rnc": "130691908", "nombre": "CLIENTE SRL" },
"items": [{ "descripcion": "Producto A", "precio": 1000, "itbis": 18, "cantidad": 2 }],
"opciones": { "enviar_inmediatamente": false }
}
GET /{ambiente}/ecf/consulta-trackid
Consulta el estado en la DGII usando el trackId del envío.
GET /{ambiente}/ecf-queue
Obtiene la cola de documentos pendientes de envío.
GET /{ambiente}/ecf-queue/{id}— detalle del registroGET /{ambiente}/ecf-queue/{id}/xml— XML firmadoGET /{ambiente}/ecf-queue/{id}/descargar-xml— descarga
POST /{ambiente}/factura/{id}/enviar
Envía una factura existente según su ID en base de datos.
POST /{ambiente}/autenticacion/semilla
Solicita token de autenticación DGII.
POST /fe/recepcion/api/ecf
Recepción de comprobantes entrantes (sin autenticación por API-Key).
GET /pdf/{id}
Descarga el PDF generado de un e-CF.
Jobs y operaciones automáticas
POST /ecf/proceso-completo— Ejecuta todo el flujo: factura → queue → DGIIPOST /facturas/encolar— Envía facturas a la colaPOST /ecf/enviar-pendientes— Envia pendientes en colaGET /jobs/estadisticas•GET /jobs/fallidos•POST /jobs/fallidos/{id}/reintentarPOST /cache/limpiar•POST /worker/ejecutar
Webhooks
La API notifica eventos a tu sistema cuando ocurren cambios:
| Evento | Payload |
|---|---|
| ecf.aprobado | { id, eNCF, estado, track_id } |
| ecf.rechazado | { id, errores:[...] } |
| acecf.recibido | { id, acuse_xml } |
Códigos de error
| Código | Descripción |
|---|---|
| 400 | JSON inválido |
| 401 | API Key incorrecta |
| 409 | Comprobante duplicado o conflicto de secuencia |
| 422 | Validación DGII fallida |
| 500 | Error interno |
Ejemplo en PHP (Guzzle)
<?php
$client = new \GuzzleHttp\Client([
'base_uri' => 'https://ecf.paciolird.com/api',
'headers' => [
'X-API-KEY' => getenv('PACIOLI_API_KEY'),
'X-API-Version' => '2025-11-01',
'Content-Type' => 'application/json'
]
]);
$payload = [
'tipo' => '31',
'cliente' => ['rnc' => '130691908', 'nombre' => 'ALMONTE MULTIPARTES SRL'],
'items' => [[ 'descripcion' => 'Producto A', 'precio' => 1000, 'itbis' => 18, 'cantidad' => 2 ]]
];
$res = $client->post('/produccion/ecf/enviar', ['json' => $payload]);
echo $res->getBody();
Soporte
Para soporte técnico, escribe a soporte@pacioli.com.do