Ir al contenido

Idempotencia y reintentos

Emitir una factura no se puede deshacer: si la red se corta después de que Chaski la creó, y tu sistema reintenta, podrías emitir dos. Para evitarlo, manda el header Idempotency-Key al crear facturas y notas de crédito:

POST /v1/invoices
Idempotency-Key: pedido-1042

Usa un valor que identifique la operación en tu sistema: el id del pedido, del cobro o de la venta.

Caso Respuesta
Misma clave y mismo body La misma respuesta de la primera vez, sin crear nada.
Misma clave mientras la primera petición sigue en curso 409 idempotency_in_progress. Reintenta en unos segundos.
Misma clave con otro body 422 idempotency_key_reused. Es un error en tu sistema.
La primera petición falló (por ejemplo, un 400) La clave queda libre: corrige y reintenta con la misma.

Las claves se recuerdan 24 horas.

Respuesta ¿Reintentar?
Error de red o timeout Sí, con la misma clave.
429 rate_limited Sí, después de los segundos del header Retry-After.
500, 502, 503, 504 Sí, con espera creciente (1 s, 2 s, 4 s…).
400, 402, 403, 404, 409, 422 No: hay que corregir algo antes.

El SDK de JavaScript hace todo esto solo: genera la clave si no la pasas y la reutiliza en cada reintento.