Emisión y Consulta de e-CF
Endpoints para emitir comprobantes fiscales electrónicos, consultar su estado en la DGII, descargar el XML firmado y reintentar emisiones.
Todas las rutas son relativas a https://ecf.facturord.app y requieren el header X-API-Key (ver Autenticación y Ambientes).
| Operación | Método y ruta |
|---|---|
| Emitir e-CF | POST /api/v1/companies/{company_id}/emission/ecf |
| Consultar estado por Track ID | GET /api/v1/companies/{company_id}/emission/invoices/{track_id}/status |
| Descargar XML firmado | GET /api/v1/companies/{company_id}/emission/documents/{document_id_o_encf}/signed-xml |
| Reintentar emisión | POST /api/v1/companies/{company_id}/emission/documents/{document_id}/retry |
| Anular secuencias (ANECF) | POST /api/v1/companies/{company_id}/emission/cancel-ranges |
Emitir un e-CF
Envía la estructura completa del comprobante para que Facturo la firme digitalmente con el certificado de tu empresa y la transmita a la DGII.
POST /api/v1/companies/{company_id}/emission/ecf
Cuerpo de la petición
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
ecf | object | Sí | Estructura completa del comprobante. Ver Estructura del e-CF. |
dgii_env | string | No | testecf, certecf o ecf. Ver ambientes. |
allow_certification_reset | boolean | No | Bandera para el proceso de certificación ante la DGII. Por defecto false. |
company_id | string | No | UUID de la empresa. Ya va en la ruta; se acepta también en el cuerpo. |
curl -X POST \
"https://ecf.facturord.app/api/v1/companies/$FACTURO_COMPANY_ID/emission/ecf" \
-H "X-API-Key: $FACTURO_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"dgii_env": "testecf",
"allow_certification_reset": false,
"ecf": {
"Encabezado": {
"Version": "1.0",
"IdDoc": { "...": "..." },
"Emisor": { "...": "..." },
"Comprador": { "...": "..." },
"Totales": { "...": "..." }
},
"DetallesItems": { "Item": [ { "...": "..." } ] }
}
}'
Respuesta
{
"document_id": "9f1c2d3e-4b5a-6789-0abc-def123456789",
"encf": "E310000000001",
"track_id": "b7a1c3e5-...",
"internal_status": "...",
"dgii_status": "...",
"message": "...",
"signed_xml_path": "...",
"signed_xml": "<?xml version=\"1.0\" encoding=\"utf-8\"?>...",
"qr_url": "https://...",
"security_code": "A1B2C3",
"emission_exact": "..."
}
| Campo | Tipo | Descripción |
|---|---|---|
document_id | string | null | UUID del documento en Facturo. Úsalo para reintentos y descargas. |
encf | string | null | e-NCF asignado al comprobante (13 caracteres). |
track_id | string | null | Identificador de seguimiento devuelto por la DGII al recibir el documento. |
internal_status | string | Estado del documento dentro de Facturo. |
dgii_status | string | Estado reportado por la DGII. |
message | string | null | Mensaje descriptivo (detalle de errores o validaciones). |
signed_xml_path | string | null | Ruta interna del XML firmado. |
signed_xml | string | null | Contenido del XML firmado. |
qr_url | string | null | URL del código QR de consulta del comprobante. |
security_code | string | null | Código de seguridad del e-CF (requerido en la representación impresa). |
emission_exact | string | null | Fecha y hora exacta de la emisión/firma. |
Persiste document_id, encf y track_id en tu sistema. Los necesitarás para consultar el estado, descargar el XML o reintentar.
Consultar estado por Track ID
Consulta el estado de recepción y validación en la DGII de un documento ya enviado.
GET /api/v1/companies/{company_id}/emission/invoices/{track_id}/status
curl -X GET \
"https://ecf.facturord.app/api/v1/companies/$FACTURO_COMPANY_ID/emission/invoices/$TRACK_ID/status" \
-H "X-API-Key: $FACTURO_API_KEY" \
-H "Accept: application/json"
Respuesta
{
"track_id": "b7a1c3e5-...",
"invoice_number": "E310000000001",
"dgii_status": "...",
"internal_status": "...",
"last_status": "...",
"last_updated_at": "..."
}
| Campo | Tipo | Descripción |
|---|---|---|
track_id | string | Track ID consultado. |
invoice_number | string | null | Número del comprobante asociado. |
dgii_status | string | Estado reportado por la DGII. |
internal_status | string | Estado del documento en Facturo. |
last_status | string | Último estado registrado. |
last_updated_at | string | Fecha y hora de la última actualización. |
La DGII procesa los comprobantes de forma asíncrona. Si el estado aún no es definitivo, vuelve a consultar con un intervalo creciente (por ejemplo 2 s, 4 s, 8 s…) en lugar de consultar en un bucle continuo.
Descargar el XML firmado
Obtiene el XML firmado digitalmente de un documento emitido. Puedes identificar el documento por su UUID (document_id) o por su e-NCF de 13 caracteres.
GET /api/v1/companies/{company_id}/emission/documents/{document_id_o_encf}/signed-xml
Parámetros de consulta
| Parámetro | Tipo | Descripción |
|---|---|---|
download | boolean | true para recibir el archivo como adjunto (Content-Disposition: attachment). |
dgii_env | string | Ambiente DGII. Útil al buscar por e-NCF, ya que el mismo número puede existir en varios ambientes. |
curl -X GET \
"https://ecf.facturord.app/api/v1/companies/$FACTURO_COMPANY_ID/emission/documents/E310000000001/signed-xml?download=true&dgii_env=testecf" \
-H "X-API-Key: $FACTURO_API_KEY" \
-o E310000000001.xml
La respuesta es el contenido XML en bruto (no JSON).
Reintentar una emisión
Reintenta la emisión de un documento que quedó pendiente o falló (por ejemplo, por indisponibilidad temporal de la DGII). No lleva cuerpo.
POST /api/v1/companies/{company_id}/emission/documents/{document_id}/retry
curl -X POST \
"https://ecf.facturord.app/api/v1/companies/$FACTURO_COMPANY_ID/emission/documents/$DOCUMENT_ID/retry" \
-H "X-API-Key: $FACTURO_API_KEY" \
-H "Accept: application/json"
Respuesta
| Campo | Tipo | Descripción |
|---|---|---|
document_id | string | null | UUID del documento. |
document_type_code | string | null | Tipo de e-CF (31, 32, …). |
encf | string | null | e-NCF del documento. |
track_id | string | null | Nuevo Track ID asignado por la DGII. |
internal_status | string | null | Estado en Facturo. |
dgii_status | string | null | Estado en la DGII. |
message | string | null | Mensaje descriptivo. |
signed_xml_path | string | null | Ruta interna del XML firmado. |
signed_xml | string | null | Contenido del XML firmado. |
qr_url | string | null | URL del código QR. |
signature_code | string | null | Código de seguridad de la firma. |
signature_datetime | string | null | Fecha y hora de la firma. |
created_at | string | null | Fecha de creación del documento. |
total_amount | number | null | Monto total del comprobante. |
Próximos pasos
- Estructura del e-CF — contenido del objeto
ecf - Anulación de secuencias (ANECF)
- Manejo de errores
- Clientes oficiales — Python, Odoo, .NET y Node.js