2xx) trazem o recurso criado, atualizado ou
consultado. Respostas de erro trazem uma mensagem descrevendo o problema no
corpo — consulte o endpoint específico na Referência da
API para o formato exato do corpo de erro daquela
chamada.
Códigos HTTP documentados hoje
Como tratar
- Trate
400como definitivo para aquela requisição: corrija os dados antes de tentar de novo. Reenviar sem alterar o payload provavelmente resulta no mesmo erro. - Trate
403como um problema de configuração: confira se a chave está correta e se pertence ao ambiente (sandbox ou produção) que você está chamando. Veja Autenticação. - Trate
429com espera e retry — nunca insista imediatamente. Veja Rate limit para um exemplo de backoff. - Lembre-se que
2xxna emissão não é autorização. Para NF-e, NFC-e e NFS-e, a emissão é assíncrona: um2xxconfirma que a solicitação foi aceita para processamento, não que a nota foi autorizada pela SEFAZ ou prefeitura. Acompanhe o resultado real por webhook ou consulta de status.
Rejeições fiscais
Erros de validação da própria SEFAZ ou prefeitura (ex.: CFOP incompatível, NCM inválido) não são o mesmo que um400 da API — a requisição de emissão
pode retornar 2xx e, ainda assim, a nota ser rejeitada de forma assíncrona.
Quando isso acontece, a nota fica com o status rejected e o motivo da
rejeição vem no objeto processingDetail da nota, nos campos code e
message (rejeições geradas pela própria Spedy usam o prefixo SPD no
code). Leia esse objeto consultando a nota ou pelo evento de
webhook.
Veja a lista de rejeições e como tratá-las em Erros e rejeições
SEFAZ.