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.

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 registro
  • GET /{ambiente}/ecf-queue/{id}/xml — XML firmado
  • GET /{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

Webhooks

La API notifica eventos a tu sistema cuando ocurren cambios:

EventoPayload
ecf.aprobado{ id, eNCF, estado, track_id }
ecf.rechazado{ id, errores:[...] }
acecf.recibido{ id, acuse_xml }

Códigos de error

CódigoDescripción
400JSON inválido
401API Key incorrecta
409Comprobante duplicado o conflicto de secuencia
422Validación DGII fallida
500Error 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

© Pacioli ERP — Todos los derechos reservados.