En esta página

Idempotencia

Todo POST de AdapterDian que emite un documento fiscal exige Idempotency-Key, para que un reintento nunca consuma un segundo número DIAN.

Un número del rango autorizado por la DIAN no se puede devolver: una vez usado, la única corrección es otro documento fiscal. Un timeout seguido de un reintento ingenuo emitiría la misma factura dos veces. Idempotency-Key lo evita.

Qué peticiones la exigen

Es obligatoria en todo POST que produce un documento:

  • /invoices/v1/sales-invoices, /credit-notes, /debit-notes, /support-documents, /adjustment-notes
  • /payrolls/v1/payrolls, /adjustment-payrolls

Debe tener al menos 8 caracteres. Un UUID funciona bien.

Cómo se comporta

Envías Recibes
Una clave nueva 202 Accepted, "deduplicated": false. El documento se encola.
La misma clave y el mismo cuerpo 202 Accepted con el documento original y "deduplicated": true. No se emite nada otra vez.
La misma clave con otro cuerpo 409 con code: IDEMPOTENCY_CONFLICT.

La barrera vive en la base de datos, no en memoria, así que se sostiene aunque el reintento llegue a otra instancia.

Genera la clave una vez, no en cada intento

Crea la clave cuando nace la operación de negocio (por ejemplo, al cerrar el pedido) y guárdala junto a ella. Si generas una clave nueva en cada reintento, el adaptador no puede reconocerlo y volverá a emitir.

Corregir una petición que no pasó la validación

Si el documento se rechazó en la validación (422), corrige el cuerpo y envíalo con una clave nueva: la clave anterior quedó atada al cuerpo anterior.