Idempotencia
Reintenta peticiones de timbrado sin miedo a duplicar facturas.
El problema
Imagina: tu punto de venta manda a timbrar una factura, pero la conexion a internet se cae justo despues de enviar la peticion. No sabes si el timbrado fue exitoso o no. Si reintentas, podrias generar (y pagar) una factura duplicada.
La solucion
Incluye un header Idempotency-Key con un identificador unico por operacion. Si FiscaFacil recibe dos peticiones con la misma key, la segunda devuelve el resultado de la primera sin ejecutar la operacion de nuevo.
POST /v1/facturas
Authorization: Bearer ff_live_...
Idempotency-Key: venta-pos-42-2026-03-21
Content-Type: application/json
{
"tipoComprobante": "I",
"conceptos": [...]
}
# Primera vez → 201 Created (factura timbrada)
# Segunda vez → 200 OK (misma respuesta, sin timbrar de nuevo)
# Tercera vez → 200 OK (idem)Reglas
- Las keys deben ser unicas por operacion logica (ej:
venta-123,nomina-periodo-5) - Las keys expiran despues de 24 horas
- Solo aplica a peticiones
POST(GET, PATCH, DELETE son naturalmente idempotentes) - Si el body cambia con la misma key, se retorna un error
409 Conflict
Ejemplo con SDK
// El SDK genera la key automaticamente si no la provees
const factura = await client.facturas.crear(data, {
idempotencyKey: "venta-pos-42"
})
// Reintentar es seguro
const mismaFactura = await client.facturas.crear(data, {
idempotencyKey: "venta-pos-42"
})
factura.uuid === mismaFactura.uuid // trueRecomendaciones
- Usa UUIDs v4 o identificadores de negocio significativos
- Almacena la key junto con el evento que la genero en tu sistema
- Implementa reintentos con backoff exponencial en tu cliente