Saltar al contenido principal

Flujo de emisión

  1. validate (opcional, recomendado): valida el comprobante sin enviarlo.
  2. send: EmitexRD lo firma y lo envía a la DGII; responde con el estado.
  3. document-status: si el estado aún no es final, consulta más tarde.

Estados​

data.accepteddata.statusQué hacer
1AceptadoListo. Imprime con el securityCode.
1Aceptado CondicionalVálido, con observaciones de la DGII.
0RechazadoCorrige y reenvía. Si sequenceUsed es false, puedes reenviar con el mismo e-NCF.
nullEn ProcesoLa 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 200 con lo ya registrado y alreadyProcessed = 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-Id o en Emisor.NumeroFacturaInterna.
  • Guarda de la respuesta: ecf, securityCode, trackId y voucherId.

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.