Fire Docs

Archives
Log in
Subscribe
September 15, 2026

15 September 2026 — Structured fiscal block and new fiscal event versions

The fiscal block of the three fiscal events is now what Fire stores on the order, with one shape for every country: the authority's verdict in authority, plus the document's journey and what it replaces. Two new guides explain the whole cycle.

  • Breaking — the fiscal block of order.invoiced, order.cancelled and order.reversed is structured. Canonical fields move into authority (documentType, documentNumber, issuedAt, cancelledAt…), amounts into authority.amounts, and the authority's own identifiers (chaveAcesso, claveAcceso, cufe, protocolo…) into authority.countryData. dataAutorizacao becomes authority.authorizedAt; docType, cStat and sefazCancellation are no longer emitted. Every previous path has exactly one new path: see Path changes.
  • Breaking — on a cancellation the block moves from cancellation.metadata.fiscal to cancellation.fiscal, and cancellation.metadata is no longer emitted. When the order had no authorized document, the fiscal key is absent — before it was null, so a check for === null stops matching.
  • Breaking — the fiscal callback moved every canonical field out of document to the root (documentType, docSubtype, documentNumber, issuedAt, authorizedAt, cancelledAt, authorizationMode, providerDocId, totalAmount, taxAmount, currencyCode, pdfUrl, xmlUrl, graphic); document now holds only the country's identifiers. Renames: countryCode → country, docType → documentType (SALE_INVOICE or CREDIT_NOTE, the only two accepted), error → failure (with scope and details), providerSpecific → metadata, emittedAt → issuedAt. A sender using the previous names receives 400 naming the field — for docType, on authorized and cancelled. In Ecuador numeroAutorizacion is retired: the authorized identifier is claveAcceso. cnpjEmitente is not part of the contract.
  • order.cancelled carries the fiscal block in every country with an authorized document; before it was Brazil only.
  • history and compensates — order.invoiced and order.reversed carry every stop of the document's journey, oldest first. compensates points at the document the current one replaces, so it is filled on order.reversed and null on order.invoiced.
  • authority.providerIdentity and authority.providerMetadata — the callback's provider and metadata now reach the order and the events, with the same names as in the fiscal numbering. null when not sent; PlugNotas (Brazil) never sends them.
  • How fiscal works in Fire — the two acts (numbering and authorization), the two blocks on the order, and the two ways a document reaches Fire.
  • From the callback to the events — which event fires for each callback and where every field lands.

Warning Flows and handlers that read the previous paths — fiscal.chaveAcesso, fiscal.protocolo, cancellation.metadata.fiscal.* — read undefined on the new versions, without an error. Update them before relying on these events.

Note In Brazil authority.authorizedAt carries the SEFAZ date with a conventional midnight time, so it can read earlier than issuedAt. Use issuedAt for the moment of the sale.

Event Version
order.invoiced v1.2 → v2
order.cancelled v2.2 → v3
order.reversed v2 → v3

Not backwards compatible for the fiscal block; the rest of the order snapshot is unchanged. The previous versions stay available from each event's version tabs.

Updated in EN / ES / PT.


Español

15 de septiembre de 2026 — Bloque fiscal estructurado y eventos fiscales nuevos

El bloque fiscal de los tres eventos fiscales ahora es lo que Fire guarda en la orden, con una sola forma para todos los países: el veredicto del ente en authority, más el recorrido del documento y a cuál reemplaza. Dos guías nuevas explican el ciclo completo.

  • Breaking — el bloque fiscal de order.invoiced, order.cancelled y order.reversed es estructurado. Los campos canónicos pasan a authority (documentType, documentNumber, issuedAt, cancelledAt…), los importes a authority.amounts y los identificadores del ente (chaveAcesso, claveAcceso, cufe, protocolo…) a authority.countryData. dataAutorizacao pasa a ser authority.authorizedAt; docType, cStat y sefazCancellation ya no se emiten. Cada ruta anterior tiene exactamente una ruta nueva: ver Rutas que cambian.
  • Breaking — en una anulación el bloque pasa de cancellation.metadata.fiscal a cancellation.fiscal, y cancellation.metadata ya no se emite. Si la orden no tenía documento autorizado, la clave fiscal no está — antes venía null, así que una comparación con === null deja de cumplirse.
  • Breaking — el callback fiscal sacó todos los campos canónicos de document a la raíz (documentType, docSubtype, documentNumber, issuedAt, authorizedAt, cancelledAt, authorizationMode, providerDocId, totalAmount, taxAmount, currencyCode, pdfUrl, xmlUrl, graphic); document ahora lleva solo los identificadores del país. Renombres: countryCode → country, docType → documentType (SALE_INVOICE o CREDIT_NOTE, los únicos dos aceptados), error → failure (con scope y details), providerSpecific → metadata, emittedAt → issuedAt. Un emisor con los nombres anteriores recibe 400 con el campo — en el caso de docType, en authorized y cancelled. En Ecuador se retira numeroAutorizacion: el identificador autorizado es claveAcceso. cnpjEmitente no es parte del contrato.
  • order.cancelled lleva el bloque fiscal en todos los países con documento autorizado; antes era solo Brasil.
  • history y compensates — order.invoiced y order.reversed llevan cada parada del recorrido del documento, de la más vieja a la más nueva. compensates apunta al documento que el vigente reemplaza: viene lleno en order.reversed y en null en order.invoiced.
  • authority.providerIdentity y authority.providerMetadata — el provider y el metadata del callback ahora llegan a la orden y a los eventos, con los mismos nombres que en la numeración fiscal. null si no se mandan; PlugNotas (Brasil) nunca los manda.
  • Cómo funciona lo fiscal en Fire — los dos actos (numerar y autorizar), los dos bloques de la orden y los dos caminos por los que un documento llega a Fire.
  • Del callback a los eventos — qué evento sale por cada callback y dónde cae cada campo.

Warning Los flujos y handlers que leen las rutas anteriores — fiscal.chaveAcesso, fiscal.protocolo, cancellation.metadata.fiscal.* — leen undefined en las versiones nuevas, sin error. Actualízalos antes de depender de estos eventos.

Note En Brasil authority.authorizedAt trae la fecha de la SEFAZ con una hora convencional de medianoche, así que puede quedar antes que issuedAt. Para el momento de la venta usa issuedAt.

Evento Versión
order.invoiced v1.2 → v2
order.cancelled v2.2 → v3
order.reversed v2 → v3

No es retrocompatible en el bloque fiscal; el resto del snapshot de la orden no cambia. Las versiones anteriores siguen disponibles desde las pestañas de versión de cada evento.

Actualizado en EN / ES / PT.


Português

15 de setembro de 2026 — Bloco fiscal estruturado e eventos fiscais novos

O bloco fiscal dos três eventos fiscais agora é o que o Fire guarda no pedido, com uma única forma para todos os países: o veredito do órgão em authority, mais o percurso do documento e qual ele substitui. Dois guias novos explicam o ciclo completo.

  • Breaking — o bloco fiscal de order.invoiced, order.cancelled e order.reversed é estruturado. Os campos canônicos passam para authority (documentType, documentNumber, issuedAt, cancelledAt…), os valores para authority.amounts e os identificadores do órgão (chaveAcesso, claveAcceso, cufe, protocolo…) para authority.countryData. dataAutorizacao passa a ser authority.authorizedAt; docType, cStat e sefazCancellation não são mais emitidos. Cada caminho anterior tem exatamente um caminho novo: veja Mudanças de caminho.
  • Breaking — num cancelamento o bloco passa de cancellation.metadata.fiscal para cancellation.fiscal, e cancellation.metadata não é mais emitido. Se o pedido não tinha documento autorizado, a chave fiscal não existe — antes vinha null, então uma comparação com === null deixa de bater.
  • Breaking — o callback fiscal tirou todos os campos canônicos de document para a raiz (documentType, docSubtype, documentNumber, issuedAt, authorizedAt, cancelledAt, authorizationMode, providerDocId, totalAmount, taxAmount, currencyCode, pdfUrl, xmlUrl, graphic); document agora leva só os identificadores do país. Renomeações: countryCode → country, docType → documentType (SALE_INVOICE ou CREDIT_NOTE, os únicos dois aceitos), error → failure (com scope e details), providerSpecific → metadata, emittedAt → issuedAt. Um emissor com os nomes anteriores recebe 400 indicando o campo — no caso de docType, em authorized e cancelled. No Equador numeroAutorizacion é retirado: o identificador autorizado é claveAcceso. cnpjEmitente não faz parte do contrato.
  • order.cancelled leva o bloco fiscal em todos os países com documento autorizado; antes era só o Brasil.
  • history e compensates — order.invoiced e order.reversed levam cada parada do percurso do documento, da mais antiga à mais nova. compensates aponta para o documento que o vigente substitui: vem preenchido em order.reversed e null em order.invoiced.
  • authority.providerIdentity e authority.providerMetadata — o provider e o metadata do callback agora chegam ao pedido e aos eventos, com os mesmos nomes da numeração fiscal. null quando não enviados; o PlugNotas (Brasil) nunca os envia.
  • Como o fiscal funciona no Fire — os dois atos (numerar e autorizar), os dois blocos do pedido e os dois caminhos pelos quais um documento chega ao Fire.
  • Do callback aos eventos — qual evento sai para cada callback e onde cai cada campo.

Warning Fluxos e handlers que leem os caminhos anteriores — fiscal.chaveAcesso, fiscal.protocolo, cancellation.metadata.fiscal.* — leem undefined nas versões novas, sem erro. Atualize-os antes de depender destes eventos.

Note No Brasil authority.authorizedAt traz a data da SEFAZ com um horário convencional de meia-noite, então pode ficar antes de issuedAt. Para o momento da venda use issuedAt.

Evento Versão
order.invoiced v1.2 → v2
order.cancelled v2.2 → v3
order.reversed v2 → v3

Não é retrocompatível no bloco fiscal; o resto do snapshot do pedido não muda. As versões anteriores continuam disponíveis nas abas de versão de cada evento.

Atualizado em EN / ES / PT.


Read the full changelog · Ver el registro completo · Ver o registro completo

Don't miss what's next. Subscribe to Fire Docs:
← Newer 15 September 2026 — Cancellation dates and rejected documents Older → 4 September 2026 — Coupons on order lines
Powered by Buttondown, the easiest way to start and grow your newsletter.