Conceptos
Ciclo de vida
Los estados de un comprobante desde que lo enviás hasta el veredicto de Hacienda, y los webhooks de cada paso.
Emitir un comprobante es asíncrono. POST /electronic-documents responde en cuanto Aster validó y firmó; el veredicto de Hacienda llega después, normalmente en segundos. Mientras tanto, el comprobante pasa por estos estados, visibles en el campo status.
Estados
Sección titulada «Estados» ┌──────────────► queued ─────┐ │ Hacienda no │ reenvío automático │ disponible ▼solicitud ──► processing ─────────────────────► sent ──► accepted │ │ └──► rejected │ └──────────────► error └──► 4xx (validation_error, quota_exceeded, …): no se crea el comprobante| Estado | Significado | ¿Final? |
|---|---|---|
processing |
Validado y firmado; Aster lo está enviando a Hacienda | No |
queued |
Hacienda no estaba disponible. Aster guardó el comprobante y lo reenvía solo, sin límite de intentos, en cuanto Hacienda vuelve | No |
sent |
Hacienda lo recibió y lo está procesando | No |
accepted |
Hacienda lo aceptó. Es un comprobante válido | Sí |
rejected |
Hacienda lo rechazó. El motivo está en hacienda_message |
Sí |
error |
El envío falló de forma definitiva y el comprobante nunca llegó a Hacienda | Sí |
Si la solicitud no pasa la validación, la API responde con un error 4xx y no se crea ningún comprobante: no hay estado que seguir. Ver errores.
Un comprobante que ya tiene veredicto de Hacienda nunca cambia de estado. Si Hacienda repite su respuesta, Aster no vuelve a notificar.
Qué hacer en cada caso
Sección titulada «Qué hacer en cada caso»accepted: listo. Entregale al cliente el PDF y el XML, o dejá que Aster lo haga (ver PDF y correo).rejected: corregí el problema y emití un comprobante nuevo con clave y consecutivo nuevos, que haga referencia al rechazado. El consecutivo del rechazado ya está gastado. Ver reemplazar un comprobante rechazado.queued: no hagás nada. No reenvíes el comprobante: Aster ya lo tiene y lo va a reenviar. Podés avisarle al cliente que el comprobante está emitido y pendiente de la respuesta de Hacienda.error: el consecutivo queda libre. Revisáhacienda_messagey volvé a enviar.
Webhooks
Sección titulada «Webhooks»Cada cambio de estado dispara un evento a tus webhooks registrados (y al callback_url de la solicitud, si lo enviaste). Los eventos van firmados con HMAC-SHA256; la verificación está en la guía de webhooks.
| Evento | Cuándo |
|---|---|
document.created |
Se registró el comprobante |
document.signed |
Se generó y firmó el XML |
document.queued |
Hacienda no estaba disponible; el comprobante quedó en cola para reenvío automático |
document.accepted |
Hacienda aceptó el comprobante |
document.rejected |
Hacienda rechazó el comprobante |
document.error |
El envío falló de forma definitiva |
document.voided |
El comprobante fue anulado con una nota de crédito |
callback.received |
Llegó la respuesta de Hacienda para el comprobante |
Ejemplo del cuerpo de document.accepted:
{ "document_key": "50608102600310165432100100001010000001042147201936", "document_type": "01", "status": "accepted", "hacienda_status": "accepted", "hacienda_message": "Documento aceptado"}Para la mayoría de las integraciones basta con escuchar document.accepted, document.rejected y document.queued.
Callbacks y consulta activa
Sección titulada «Callbacks y consulta activa»Hacienda informa su veredicto llamando a una URL de Aster (el callback). Vos no tenés que exponer nada para eso. Pero Hacienda a veces no llama, o llama con un estado intermedio (“procesando”). Por eso Aster no depende solo del callback:
- Si un comprobante enviado no recibe respuesta en unos minutos, Aster consulta su estado directamente en Hacienda, las 24 horas, rotando entre los pendientes.
- Si Hacienda responde que el comprobante sigue en proceso, Aster lo vuelve a consultar más tarde.
- Si Hacienda no está disponible al enviar, el comprobante pasa a
queuedy se reenvía automáticamente cuando Hacienda vuelve, también las 24 horas.
En la práctica, todo comprobante en processing, queued o sent termina en accepted o rejected sin que intervengas. El estado de Hacienda en vivo está en /haciendastatus.
Polling
Sección titulada «Polling»Si no usás webhooks, consultá el comprobante con su clave, su consecutivo o su id:
curl https://aster.astranexo.com/api/v1/electronic-documents/50608102600310165432100100001010000001042147201936 \ -H "Authorization: Bearer $ASTER_API_KEY"Consultá cada 2 a 5 segundos durante el primer minuto y después con menos frecuencia. Una clave que Aster no conoce responde 404 not_found. Si querés ver el estado directamente en Hacienda, usá GET /hacienda/query/{clave}.
Aceptado con observaciones
Sección titulada «Aceptado con observaciones»Hacienda puede aceptar un comprobante y aun así devolver códigos de advertencia, como -37 o -410. Son observaciones menores: el comprobante está aceptado y Aster lo marca accepted. El texto de Hacienda queda en hacienda_message por si querés registrarlo o corregir el detalle en los próximos comprobantes.