Numerar una venta
El request es el mismo para los dos países —mismos campos, mismo orden—; lo que cambia es qué usa cada proveedor y qué devuelve endocument. Acá van los cuerpos recortados a lo que
hace falta para leer el ejemplo; el request completo, campo por campo, está en el
contrato.
- Ecuador (EC) — SRI
- Colombia (CO) — DIAN
Lo que enviamos
storeFiscalConfig.metadata va vacío: en Ecuador el establecimiento y el punto de emisión
los resolvés vos contra tu catálogo, a partir de store.code y device.uid.Lo que devolvió el proveedor
documenthabla ecuatoriano.claveAcceso,secuencial,ambiente— los nombres del SRI, no una traducción. Y no hay campos de otros países: elcufecolombiano sencillamente no existe acá.- El número visible viene armado en
numeroComprobante(005-004-000000052). Lo componés vos, que conocés la regla —art. 18 del Reglamento— y FIRE lo imprime tal cual, sin reformatearlo. Las tres piezas siguen viajando aparte, como las define el SRI, pero son para conciliar: nadie las vuelve a unir. graphic.qrcoincide condocument.claveAcceso. En Ecuador es así, y la redundancia es deliberada: la alternativa es que el punto de venta sepa qué se codifica en cada país.ambiente: "2"es pruebas — en el SRI. En la DIAN el2es al revés; ver la pestaña de Colombia.
accountId, ni vendorId —el tenant
sale de la API key—, ni códigos del ente, ni referencia al catálogo del proveedor.
Y dos cosas comunes a los dos países:
authorizationModeeissuedAtestán en la raíz, fuera dedocument: son comunes a todos los países, así que no pertenecen al bloque del país.status: "INVOICED", no"PENDING". Recién numerado el documento siempre está pendiente de autorización — es la condición normal, no un estado que informar.
Cuando falla
La misma petición, con la tienda fuera del catálogo del proveedor
La misma petición, con algo roto de tu lado
Que falte configuración NO entra acá. Una tienda sin identidad fiscal, sin resolución de
numeración o sin clave técnica va a fallar igual dentro de una semana: eso es el
422 de
arriba, con retryable: false. El 5xx es solo para lo que puede andar solo más tarde.Qué hacemos con cada respuesta
El estado que expone FIRE a sus canales se deriva de lo que devuelve el proveedor. El proveedor no conoce estos estados ni tiene que emitirlos:PENDING no puede venir del proveedor por definición: decirlo implicaría haber
contestado. Es el estado de “no hubo respuesta”, y es el más delicado — el proveedor pudo
haber numerado y consumido un secuencial sin que nos enteremos.Por eso tu deduplicación tiene que ser por orderCode: el reintento llega con el mismo
orderCode y debe devolver el mismo documento con reused: true, en vez de numerar otro.
