Erros HTTP da API
Erros HTTP acontecem na própria chamada — a requisição não foi aceita para processamento. A resposta traz uma mensagem de erro no corpo explicando o problema.O corpo do erro ainda não tem um schema padronizado no OpenAPI — a
mensagem descreve o problema, mas o formato exato pode variar por
endpoint. Os códigos
401, 404, 422 e 500 também ainda não são
padronizados pela API; serão adicionados e documentados aqui conforme
forem padronizados. Trate qualquer código fora da lista acima como um erro
genérico até a padronização ser publicada. Veja também Erros e
respostas.Rejeições fiscais (SEFAZ/Prefeitura)
Uma rejeição fiscal é diferente de um erro HTTP: a requisição de emissão foi aceita (resposta2xx, nota criada com status enqueued), mas a
autoridade fiscal — SEFAZ ou prefeitura — recusou a nota durante o
processamento assíncrono. Isso nunca chega como um erro HTTP; a nota é
atualizada para status: "rejected" e o motivo fica em processingDetail.
Confira o resultado por webhook
(
invoice.rejected ou invoice.status_changed) ou consultando a nota
(GET /v1/{modelo}-invoices/{id}). Veja Ciclo de vida da
nota para a máquina de estados
completa.O objeto processingDetail
Toda nota traz o resultado do último processamento (emissão, cancelamento,
carta de correção etc.) no campo processingDetail:
Exemplo de nota rejeitada (o
code abaixo é ilustrativo):
Rejeição da SEFAZ vs. rejeição interna da Spedy
Ocode diz a origem, com o mesmo formato em processingDetail:
- SEFAZ/Prefeitura — a nota chegou até a autoridade fiscal e foi recusada
por ela (schema, regra de negócio, cadastro divergente etc.). O
codetraz o código da própria autoridade (numérico; ouE9999para uma rejeição genérica sem código mapeado). A causa e a solução estão noprocessingDetail.message— a fonte canônica é a tabela oficial de rejeições da SEFAZ da UF/município. - Spedy — validações e estados que a Spedy resolve sem transmitir (ou
antes de ter o retorno definitivo) usam o prefixo
SPDnocode. Estão documentados abaixo.
Códigos internos da Spedy (SPD)
Quando o code começa com SPD, a recusa (ou o estado transitório) veio da
própria Spedy, não da autoridade fiscal:
SPD998 e SPD999 são erros técnicos, não rejeições da autoridade
fiscal — a nota não foi necessariamente recusada. Não reemita por conta
própria ao receber esses códigos: a Spedy já reprocessa o que for cabível,
e reemitir manualmente pode gerar nota duplicada. Acompanhe o estado final da
nota por webhook ou consulta.Recebeu uma rejeição da autoridade (sem prefixo
SPD) que não entendeu? O
processingDetail.message traz o texto original da SEFAZ/prefeitura — é a
fonte mais confiável. Encaminhe o code e o message ao suporte da Spedy
se precisar de ajuda para interpretar.Veja também
- Erros e respostas — códigos HTTP da API.
- Ciclo de vida da nota — estados da
nota, incluindo
rejected, e como acompanhar transições.