Ambos são idempotentes por empresa — o mesmo valor pode se repetir entre
empresas diferentes, mas não dentro da mesma empresa.
Por que idempotência importa em emissão fiscal
Diferente de uma chamada de leitura, reenviar uma emissão não é “seguro por padrão”: sem um identificador estável, cada tentativa vira uma nova nota. ComtransactionId e integrationId, você pode reenviar a mesma operação quantas
vezes precisar que o resultado é sempre o mesmo — a Spedy reconhece o
identificador e não duplica.
integrationId — idempotência da nota
Identificador da nota no seu sistema (máximo de 36 caracteres). Recomendado em
todas as integrações que emitem notas diretamente pelos endpoints de nota.
- Idempotência: um segundo
POSTcom o mesmointegrationIdatualiza a nota existente em vez de criar uma nova — protege contra duplicidade em retries e timeouts. A edição só é possível enquanto a nota não estiver autorizada, denegada ou cancelada; nesses estados finais ela não pode mais ser alterada. - Correção de rejeitada: uma nota
rejectedainda pode ser editada — para corrigi-la, reenvie oPOSTcom os dados corrigidos e o mesmointegrationId, sem precisar deletar a anterior. Veja Ciclo de vida da nota.
cURL
transactionId — idempotência da venda
Código da transação/venda no seu sistema, enviado ao criar uma venda em POST /v1/orders. Reenviar a criação da venda com o mesmo transactionId não gera
uma venda duplicada — útil quando a emissão parte de uma venda (veja
Primeiros passos).
Diferente da nota, a venda não é editável: reenviar com o mesmo
transactionId evita a duplicação, mas não altera a venda já registrada.
Boas práticas
- Use um identificador estável por operação lógica (o id da sua venda ou nota interna) e reutilize-o em cada retry — não gere um valor novo a cada tentativa, senão a idempotência não funciona.
- Trate timeouts com cautela: um timeout de rede não significa que a operação falhou do lado da Spedy — ela pode ter sido processada mesmo sem a resposta chegar até você. Reenviar com o mesmo identificador é seguro.
- Reconcilie pelo status real: consulte a nota (ou receba o evento de webhook) para confirmar o resultado antes de agir, em vez de assumir que a chamada anterior falhou.