Skip to main content
El callback fiscal hace una sola cosa: escribe el veredicto del ente fiscal en la orden. Los eventos no se arman a partir del callback — se arman a partir de lo que guarda la orden. Por eso la pregunta “¿qué recibe mi consumidor?” siempre tiene la misma respuesta: fiscal.authority, con la forma que se describe acá. Si todavía no la leíste, Cómo funciona lo fiscal en Fire explica los dos actos y los dos bloques que esta página da por conocidos.

Qué pasa, paso a paso

  1. Tu proveedor hace POST del callback fiscal. Fire lo valida y responde 202 Accepted. Un 202 significa encolado, no procesado, y nunca significa que se envió un evento.
  2. Un worker en segundo plano guarda el veredicto en la orden, normalmente en un par de segundos.
  3. Según el eventType, Fire emite un evento a tus Integration Flows — o no.

Qué evento sale

Solo se emite un evento cuando el callback realmente cambió el documento. Un reenvío de un estado ya aplicado (idempotent), un callback que haría retroceder el documento (regression) o uno que no coincide con ningún documento (notFound) igual se responde con 202, y no emite nada.
order.cancelled no viene del callback. Sale cuando la orden se cancela en Fire, antes de consultar al ente. La confirmación del ente llega después como un callback cancelled, que produce order.reversed.

Dónde cae cada campo del callback

Todo lo de abajo cae en orders.fiscal.authority, y de ahí en los eventos. Tres reglas explican la tabla:
  • document pasa a ser countryData. Fire no guarda una lista de las claves de cada país: todo lo que viene en document llega intacto a countryData. Un identificador nuevo que tu ente empiece a exigir viaja sin ningún cambio del lado de Fire.
  • provider y metadata conservan los nombres de la numeración. Del lado de la numeración el proveedor también envía provider y metadata, y Fire los expone como providerIdentity y providerMetadata. El callback hace lo mismo, así que los dos bloques de la orden se leen igual. providerIdentity.reference es lo que le citas al proveedor para encontrar la operación en sus registros.
  • Vacío significa null, no ausente. Un callback sin provider o metadata (o con {}) guarda providerIdentity: null y providerMetadata: null.

Dónde aparece en cada evento

La referencia campo por campo de ese bloque está en el bloque fiscal.

El camino sin callback: Brasil (PlugNotas)

En Brasil no hay callback fiscal: Fire conoce el veredicto de SEFAZ directamente por PlugNotas. El bloque que recibe tu consumidor tiene la misma forma, con estas diferencias:

Una orden, de punta a punta

La misma orden brasileña por el callback fiscal, recortada a las partes fiscales.
1

Callback: authorized

2

Fire responde 202 y después guarda el veredicto

3

order.invoiced lo lleva

4

La orden se cancela en Fire

order.cancelled sale de inmediato con data.cancellation.fiscal = { "status": "authorized", "authority": { … } } — la factura tal como estaba. Todavía no se le consultó nada al ente.
5

Callback: cancelled, y después order.reversed

El proveedor envía eventType: "cancelled" con su propio eventId (reusar el de la autorización devuelve 409). Fire emite order.reversed con authority.documentType: "CREDIT_NOTE", cancelledAt completado, los dos documentos en history y compensates apuntando a la factura.

Lo que no pasa

  • No hay evento para rejected, denied ni error. Se guardan; tu consumidor solo los ve en lastKnown.fiscal.status de un evento posterior.
  • Un 202 no es un evento. Consulta el endpoint de resultado si necesitas saber que el callback se procesó.
  • El callback no cambia fiscalRepresentation. Lo que se imprimió en la caja queda como estaba.
  • No hay guard por proveedor. Una orden tiene un solo documento. Cuando la orden ya tiene un documento, un authorized cuyo eventId no coincide termina en notFound y no cambia nada; si la orden no tiene documento, el authorized lo crea. Un eventId que Fire no emitió para esa orden se rechaza con 400 antes del 202. Un cancelled resuelve el documento más reciente de la orden y lo actualiza, sin importar qué proveedor lo emitió — PlugNotas incluido.