Ir al contenido

Ciclo asíncrono

La emisión no termina con la primera respuesta. CierreListo valida, construye, firma, envía y consulta sistemas externos; cada etapa debe quedar observable.

Estado Significado Tratamiento
queued La intención está registrada o espera envío. No terminal.
validation_failed La intención no superó la validación. Terminal para esa intención; corrige datos.
submitted CierreListo obtuvo evidencia de presentación. No terminal.
processing Se espera o reconcilia una respuesta. No terminal.
accepted El ambiente aceptó el resultado; fuera de sandbox, corresponde a aceptación DGII. Terminal para ese ambiente.
accepted_conditional La DGII aceptó con observaciones. Terminal fiscal con atención.
rejected La DGII rechazó el e-CF. Terminal fiscal.
outcome_unknown Todavía no puede confirmarse el resultado. No terminal; reconciliar sin reemitir.
delivered Se registró un hito posterior de entrega al receptor. Estado posterior al resultado fiscal.

Los nombres exactos y su enumeración pertenecen al contrato OpenAPI. La regla estable es que una respuesta de recepción no equivale a aceptación DGII.

Un estado no terminal significa que el sistema conserva trabajo o espera una fuente externa. Tu integración debe:

  • guardar la última versión;
  • aceptar que un webhook llegue después de una consulta;
  • no asumir fracaso por tiempo transcurrido;
  • mostrar “procesando” o “resultado pendiente”, no “aprobada”.

Un estado terminal cierra la decisión técnica o fiscal de esa intención:

  • validación fallida;
  • aceptada;
  • aceptada condicionalmente;
  • rechazada.

Un documento aceptado puede continuar con entrega y aprobación comercial, que es otro ciclo.

  • Webhook: reduce latencia y trabajo de consulta.
  • Consulta: recupera eventos perdidos, verifica el estado actual y permite reconciliación.

En ambientes con webhooks habilitados, el evento es una señal y el recurso consultado es la vista actual. En sandbox v1, usa exclusivamente la consulta.

Conserva:

  • identificadores local, CierreListo y DGII;
  • estado y versión;
  • fecha de la última transición;
  • último event_id procesado;
  • marca de reconciliación;
  • razón o errores estructurados;
  • enlaces a artefactos, no copias desde webhooks.

Diseñar errores y reintentos →