Flujo de emisión
validate(opcional, recomendado): valida el comprobante sin enviarlo.send: EmitexRD lo firma y lo envía a la DGII; responde con el estado.document-status: si el estado aún no es final, consulta más tarde.
Estados
data.accepted | data.status | Qué hacer |
|---|---|---|
1 | Aceptado | Listo. Imprime con el securityCode. |
1 | Aceptado Condicional | Válido, con observaciones de la DGII. |
0 | Rechazado | Corrige y reenvía. Si sequenceUsed es false, puedes reenviar con el mismo e-NCF. |
null | En Proceso | La DGII aún no responde. Consulta document-status más tarde. |
Esperar el estado final
Por defecto send responde en cuanto la DGII recibe el comprobante. Con waitForFinal la petición espera hasta ese tiempo a que la DGII dé el estado final:
POST /api/v2/dgii-ecf/send?waitForFinal=10s
Formatos: 500ms, 10s, 1m o 00:00:10. Si el tiempo se agota, la respuesta llega con accepted = null y consultas después. Para consultar, usa un intervalo razonable (por ejemplo, cada 30 segundos), no un bucle continuo.
Idempotencia y reintentos
send es idempotente por e-NCF:
- Reenviar el mismo e-NCF con el mismo contenido no lo vuelve a mandar a la DGII: responde
200con lo ya registrado yalreadyProcessed = true. Es seguro reintentar tras un timeout de red. - Reenviar el mismo e-NCF con otro contenido responde
409 ECF_ALREADY_SENT: un e-NCF ya enviado no se reutiliza. - Si el mismo e-NCF se está enviando en ese momento:
409 ECF_IN_PROGRESS. Espera y consulta. ECF_DELIVERY_UNKNOWN: no se sabe si la DGII lo recibió. Consulta su estado antes de reintentar.
Conciliar con tu sistema
- Envía tu número de factura en la cabecera
X-Correlation-Ido enEmisor.NumeroFacturaInterna. - Guarda de la respuesta:
ecf,securityCode,trackIdyvoucherId.
Consultar facturas de proveedores
GET /api/v2/dgii-ecf/external-status?rncEmisor=…&encf=…&codigoSeguridad=… comprueba en la DGII un e-CF que un proveedor te emitió, antes de registrarlo como compra.