Reintentos e idempotencia
Esta es la página que evita el daño caro.
Manda siempre referencia_externa
Es el id de la venta en tu sistema. Reenviar el mismo pedido devuelve el comprobante ya emitido, sin crear uno nuevo:
POST con referencia "venta-8842" → BOLETA-B001-5 (emitió)
POST con referencia "venta-8842" → BOLETA-B001-5 (el mismo, no emitió otro)
Sin referencia_externa, cada POST emite un comprobante nuevo. Un reintento por
timeout te deja dos documentos legales por la misma venta, y deshacerlo exige una nota de
crédito.
Si repites la referencia con otros datos
{ "error": "ReferenciaReutilizada",
"mensaje": "La referencia 'venta-8842' ya se uso para un comprobante con otros datos" }
Es a propósito: devolverte el comprobante viejo dejaría esta venta sin el suyo y nadie se enteraría.
Si dos peticiones idénticas llegan a la vez
La segunda recibe 409 EmisionEnCurso. Espera un segundo y consulta: la primera va a
terminar.