Historial de envíos de un comprobante
const url = 'https://api.novafe.example/api/v1/ecf/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/attempts';const options = {method: 'GET', headers: {'X-API-Key': '<X-API-Key>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.novafe.example/api/v1/ecf/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/attempts \ --header 'X-API-Key: <X-API-Key>'Un renglón por cada resultado de un ciclo contra la DGII (aceptado, aceptado condicional, rechazado, en revisión o fallido), del más antiguo al más reciente. Conserva lo anterior a un reenvío, que el comprobante ya no muestra.
Autenticación: requiere una API key (header X-API-Key) con rol admin_tenant, emisor o consultor.
Authorizations
Sección titulada «Authorizations»Parameters
Sección titulada «Parameters»Path Parameters
Sección titulada «Path Parameters»Responses
Sección titulada «Responses»OK
Un renglón del historial de envíos de un comprobante: cómo terminó un ciclo
contra la DGII. Lo que emite GET /api/v1/ecf/{id}/attempts.
object
1, 2, 3… dentro del comprobante.
En qué estado dejó el ciclo al comprobante: accepted,
accepted_conditional, rejected, review o failed.
TrackId de la DGII de este ciclo; ausente si no llegó a haber uno.
Código de estado de la DGII (1 aceptado, 2 rechazado, 4 aceptado condicional); ausente si no hubo veredicto.
El estado textual de la DGII.
secuenciaUtilizada de la DGII: false = el e-NCF no se consumió;
true o ausente = consumido.
Observaciones o motivo de rechazo de la DGII; o el motivo del fallo si no hubo veredicto.
object
Qué se decidió con un rechazo: auto:<código> (la DGII falló de forma
transitoria y NovaFE reenvía el mismo XML solo, p. ej. auto:4) o
exhausted (era reintentable pero se agotó el ladder y el rechazo quedó
firme). Ausente en el resto de resultados.
SHA-256 (hex) del XML enviado en este ciclo.
Cuándo se registró el resultado.
Un renglón del historial de envíos de un comprobante: cómo terminó un ciclo
contra la DGII. Lo que emite GET /api/v1/ecf/{id}/attempts.
object
1, 2, 3… dentro del comprobante.
En qué estado dejó el ciclo al comprobante: accepted,
accepted_conditional, rejected, review o failed.
TrackId de la DGII de este ciclo; ausente si no llegó a haber uno.
Código de estado de la DGII (1 aceptado, 2 rechazado, 4 aceptado condicional); ausente si no hubo veredicto.
El estado textual de la DGII.
secuenciaUtilizada de la DGII: false = el e-NCF no se consumió;
true o ausente = consumido.
Observaciones o motivo de rechazo de la DGII; o el motivo del fallo si no hubo veredicto.
object
Qué se decidió con un rechazo: auto:<código> (la DGII falló de forma
transitoria y NovaFE reenvía el mismo XML solo, p. ej. auto:4) o
exhausted (era reintentable pero se agotó el ladder y el rechazo quedó
firme). Ausente en el resto de resultados.
SHA-256 (hex) del XML enviado en este ciclo.
Cuándo se registró el resultado.
Examplegenerated
[ { "attempt": 1, "outcome": "example", "trackId": "example", "statusCode": 1, "statusText": "example", "sequenceUsed": true, "messages": [ { "code": 1, "value": "example" } ], "retryDecision": "example", "xmlSha256": "example", "recordedAt": "2026-04-15T12:00:00Z" }]Un renglón del historial de envíos de un comprobante: cómo terminó un ciclo
contra la DGII. Lo que emite GET /api/v1/ecf/{id}/attempts.
object
1, 2, 3… dentro del comprobante.
En qué estado dejó el ciclo al comprobante: accepted,
accepted_conditional, rejected, review o failed.
TrackId de la DGII de este ciclo; ausente si no llegó a haber uno.
Código de estado de la DGII (1 aceptado, 2 rechazado, 4 aceptado condicional); ausente si no hubo veredicto.
El estado textual de la DGII.
secuenciaUtilizada de la DGII: false = el e-NCF no se consumió;
true o ausente = consumido.
Observaciones o motivo de rechazo de la DGII; o el motivo del fallo si no hubo veredicto.
object
Qué se decidió con un rechazo: auto:<código> (la DGII falló de forma
transitoria y NovaFE reenvía el mismo XML solo, p. ej. auto:4) o
exhausted (era reintentable pero se agotó el ladder y el rechazo quedó
firme). Ausente en el resto de resultados.
SHA-256 (hex) del XML enviado en este ciclo.
Cuándo se registró el resultado.
Examplegenerated
[ { "attempt": 1, "outcome": "example", "trackId": "example", "statusCode": 1, "statusText": "example", "sequenceUsed": true, "messages": [ { "code": 1, "value": "example" } ], "retryDecision": "example", "xmlSha256": "example", "recordedAt": "2026-04-15T12:00:00Z" }]Not Found
object
object
Examplegenerated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example"}object
Examplegenerated
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example"}