Cancelar, corrigir e inutilizar
Cancela uma nota, envia carta de correção e inutiliza uma faixa de números não usados.
Depois de autorizada, uma NF-e não pode ser editada. Estas rotas cobrem as três saídas permitidas pela SEFAZ: cancelar (até 24 horas), corrigir o texto com uma carta de correção, e inutilizar números que ficaram sem nota.
Cancelar uma nota
/api/v1/admin/nfe/{id}/cancelAdminCancela uma NF-e
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
justificationstringobrigatórioExemplo de requisição
curl -X POST "$BASE_URL/api/v1/admin/nfe/b7a76302-e926-4988-a015-789e8f225c60/cancel" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"justification": "Venda cancelada a pedido do cliente."
}'Resposta
{
"id": "b7a76302-e926-4988-a015-789e8f225c60",
"order_id": "608a3291-6064-44a2-b352-5816d0471469",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"ref": "VENDDOR_608A3291",
"status": "cancelado",
"serie": "1",
"created_at": "2026-10-11T14:00:00Z",
"updated_at": "2026-10-11T14:00:00Z",
"chave_nfe": "35261012345678000199550010000001241234567891",
"numero": "124",
"xml_url": "/files/nfe/124.xml",
"danfe_url": "/files/nfe/124.pdf",
"issued_at": "2026-10-11T14:00:20Z",
"items": [
{
"id": "1c2d3e4f-5a6b-4c7d-8e9f-0a1b2c3d4e5f",
"nfe_id": "b7a76302-e926-4988-a015-789e8f225c60",
"description": "Camiseta Básica Preta M",
"ncm_code": "61091000",
"cfop_code": "5102",
"quantity": 2,
"unit_value": 4990,
"total_value": 9980,
"icms_base": 9980,
"icms_rate": 1800,
"icms_value": 1796,
"icms_cst": "00",
"icms_csosn": "",
"ipi_rate": 0,
"ipi_value": 0,
"ipi_cst": "",
"pis_rate": 165,
"pis_value": 165,
"pis_cst": "01",
"cofins_rate": 760,
"cofins_value": 758,
"cofins_cst": "01",
"created_at": "2026-10-11T14:00:00Z"
}
],
"cancel_reason": "Venda cancelada a pedido do cliente.",
"canceled_at": "2026-10-11T15:00:00Z"
}Campos da resposta
iduuidorder_iduuidvendor_iduuidrefstringstatusstringprocessandoautorizadoerrodenegadocanceladoprocessando, autorizado, erro, denegado ou cancelado.chave_nfestringnumerostringseriestringxml_urlstringdanfe_urlstringerror_msgstringerro.error_messagestringerro.cancel_reasonstringcanceled_atstringissued_atstringcreated_atstringupdated_atstringitemsarrayncm_code, cfop_code, quantity, unit_value, total_value, icms_*, ipi_*, pis_*, cofins_*). Valores em centavos, alíquotas em pontos-base. Só no detalhe (GET por id).Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | Justificativa ausente ou fora de 15 a 255 caracteres. | {"error":"justification must be between 15 and 255 characters","detail":"..."} |
| 401 | Sem token ou token inválido. | {"error":"missing authorization header"} |
| 403 | O usuário não tem manage_nfe nem manage_settings. | {"error":"insufficient privileges","privilege_required_any":["manage_nfe","manage_settings"]} |
| 403 | O módulo focusnfe está desligado na loja. | {"error":"module_disabled","module":"focusnfe"} |
| 404 | Nota inexistente. | {"error":"NF-e not found"} |
| 409 | Nota já cancelada, ou em status que não permite cancelar. | {"error":"NF-e is already canceled"} |
| 422 | Provedor fiscal sem configuração. | {"error":"fiscal provider is not configured"} |
| 502 | Provedor inacessível, ou recusou (por exemplo, prazo de 24 h vencido). A mensagem é a do provedor, em português. | {"error":"fiscal provider is unreachable","detail":"..."} |
Cancelar pela rota antiga
Mesma regra do cancelamento acima, mantida por compatibilidade. A diferença é a resposta: 204 sem corpo, em vez da nota atualizada. Mesmo sendo DELETE, exige corpo JSON com a justificativa. Em integrações novas prefira o POST .../cancel.
/api/v1/admin/nfe/{id}AdminCancela uma NF-e (rota antiga)
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
justificationstringobrigatórioExemplo de requisição
curl -X DELETE "$BASE_URL/api/v1/admin/nfe/b7a76302-e926-4988-a015-789e8f225c60" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"justification": "Venda cancelada a pedido do cliente."
}'Resposta
Resposta vazia.
Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | Justificativa ausente ou fora de 15 a 255 caracteres, ou corpo vazio. | {"error":"justification is required (15-255 characters)"} |
| 401 | Sem token ou token inválido. | {"error":"missing authorization header"} |
| 403 | O usuário não tem manage_nfe nem manage_settings. | {"error":"insufficient privileges","privilege_required_any":["manage_nfe","manage_settings"]} |
| 403 | O módulo focusnfe está desligado na loja. | {"error":"module_disabled","module":"focusnfe"} |
| 404 | Nota inexistente. | {"error":"NF-e not found"} |
| 409 | Já cancelada ou sem condição de cancelar. | {"error":"NF-e cannot be canceled in its current status"} |
| 502 | Provedor inacessível ou recusou. | {"error":"fiscal provider is unreachable"} |
Enviar carta de correção (CC-e)
A CC-e corrige informações de texto de uma nota autorizada (por exemplo, dados adicionais). Nunca corrige valores, impostos, quantidades ou o destinatário. Cada nota aceita até 20 cartas.
/api/v1/admin/nfe/{id}/cceAdminEnvia uma carta de correção
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
correcaostringobrigatórioExemplo de requisição
curl -X POST "$BASE_URL/api/v1/admin/nfe/b7a76302-e926-4988-a015-789e8f225c60/cce" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"correcao": "Onde se lê transportadora Alfa, leia-se transportadora Beta, conforme romaneio."
}'Resposta
{
"id": "2d3e4f5a-6b7c-4d8e-9f01-a2b3c4d5e6f7",
"nfe_id": "b7a76302-e926-4988-a015-789e8f225c60",
"ref": "VENDDOR_608A3291",
"sequence_number": 1,
"correcao": "Onde se lê transportadora Alfa, leia-se transportadora Beta, conforme romaneio.",
"status": "autorizado",
"protocol_number": "135260000000001",
"created_at": "2026-10-11T15:10:00Z"
}Campos da resposta
sequence_numberintegerstatusstringprotocol_numberstringerror_msgstringiduuidnfe_iduuidcorrecaostringErros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Sem token ou token inválido. | {"error":"missing authorization header"} |
| 403 | O usuário não tem manage_nfe nem manage_settings. | {"error":"insufficient privileges","privilege_required_any":["manage_nfe","manage_settings"]} |
| 403 | O módulo focusnfe está desligado na loja. | {"error":"module_disabled","module":"focusnfe"} |
| 422 | Texto fora de 15 a 1000 caracteres, nota que não está autorizado, limite de 20 cartas atingido ou falha do provedor. | {"error":"texto da correção deve ter entre 15 e 1000 caracteres"} |
Inutilizar números
Declara à SEFAZ que a faixa de números de uma série não será usada. Use somente para números que não viraram nota autorizada.
/api/v1/admin/nfe/inutilizeAdminInutiliza uma faixa de números
Corpo da requisição
seriestringobrigatório1.number_startintegerobrigatórionumber_endintegerobrigatóriojustificationstringobrigatórioExemplo de requisição
curl -X POST "$BASE_URL/api/v1/admin/nfe/inutilize" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"serie": "1",
"number_start": 100,
"number_end": 105,
"justification": "Numeracao pulada por erro de sistema."
}'Resposta
{
"id": "3e4f5a6b-7c8d-4e9f-a012-b3c4d5e6f708",
"serie": "1",
"number_start": 100,
"number_end": 105,
"justification": "Numeracao pulada por erro de sistema.",
"status": "autorizado",
"protocol_number": "135260000000002",
"created_at": "2026-10-11T15:20:00Z",
"updated_at": "2026-10-11T15:20:00Z"
}Campos da resposta
statusstringprotocol_numberstringerror_msgstringErros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | serie vazia, números não positivos, início maior que o fim ou justificativa ausente. | {"error":"number_start must be <= number_end"} |
| 401 | Sem token ou token inválido. | {"error":"missing authorization header"} |
| 403 | O usuário não tem manage_nfe nem manage_settings. | {"error":"insufficient privileges","privilege_required_any":["manage_nfe","manage_settings"]} |
| 403 | O módulo focusnfe está desligado na loja. | {"error":"module_disabled","module":"focusnfe"} |
| 500 | Justificativa fora de 15 a 255 caracteres, ou falha do provedor. | {"error":"failed to inutilize NF-e range","detail":"justification must be between 15 and 255 characters (got 4)"} |