NFER

Guias

Troca e devolução no e-commerce: como emitir a nota fiscal de devolução sem erro

Troca e devolução no e-commerce: como emitir a nota fiscal de devolução sem erro

O cliente comprou no mês passado e pediu troca? Veja por que você não pode cancelar a nota antiga e como emitir a nota fiscal de devolução de forma correta e sem erro na SEFAZ.

·Atualizado em ·7 min de leitura

Um dos cenários mais comuns no dia a dia de qualquer loja virtual é o cliente solicitar a troca ou devolução de um produto dias ou semanas após a compra. A dúvida que surge para muitos empreendedores e desenvolvedores é: como fazer isso fiscalmente se a nota fiscal já foi autorizada no mês passado?

Como os grandes e-commerces fazem: o fluxo com nota fiscal de devolução

A operação de troca ou devolução no Brasil é resolvida através de duas etapas fiscais bem definidas, usando a nota fiscal de devolução:

  1. Etapa 1 — Nota Fiscal de Devolução (Entrada): Sua própria empresa emite uma nota fiscal de devolução de entrada para o CPF do cliente. Ela serve para anular o imposto da venda anterior e registrar a reentrada da mercadoria no seu estoque.
  2. Etapa 2 — Nova Nota Fiscal de Saída: Quando você for despachar o novo item (outro tamanho, modelo ou cor), emite-se uma nova NF-e de saída normal para acompanhar o transporte da mercadoria.

Estrutura da Nota Fiscal de Devolução (Etapa 1)

Como o cliente final (Pessoa Física) não emite nota fiscal, a sua loja emite a nota fiscal de devolução com as seguintes regras obrigatórias da SEFAZ:

  • Tipo de Operação: 0 (Entrada).
  • Finalidade da Emissão: 4 (Devolução de mercadoria).
  • Natureza da Operação: "DEVOLUCAO DE MERCADORIA" ou "DEVOLUCAO DE VENDA DE MERCADORIA".
  • CFOP do Item: 1.202 ou 1.201 (venda interna) e 2.202 ou 2.201 (venda interestadual).
  • Chave de Acesso Referenciada (nfeReferenciada): É obrigatório vincular por item a chave de 44 dígitos da nota de venda original e o número do item correspondente (nItem) no grupo <det><DFeReferenciado> (NT 2025.002-RTC / Regra VC02-14).
  • Forma de Pagamento: tPag 90 (Sem Pagamento) com valor = 0.00 obrigatoriamente (regras SEFAZ YA02-20 e W16c). Atenção: informar o valor dos produtos em tPag 90 gera rejeição imediata da SEFAZ!

1. Exemplo de Envio Manual via POST /v1/nfe (Request Payload)

Se a venda original foi faturada em outro ERP ou sistema legado e você possui apenas a chave de 44 dígitos da nota antiga, este é o JSON que seu sistema deve enviar no corpo da requisição (Request Body) para a rota POST /v1/nfe:

{
"tipoOperacao": "0",
"finalidade": 4,
"naturezaOperacao": "DEVOLUCAO DE VENDA DE MERCADORIA",
"customerId": "c1f7a634-8c90-4c12-9c98-111122223333",
"itens": [
{
"codigo": "SKU-001",
"descricao": "Tenis Esportivo 41 (Devolvido)",
"ncm": "64041100",
"cfop": "1202",
"unidade": "UN",
"quantidade": 1,
"valorUnitario": 199.90,
"nfeReferenciada": {
"chaveAcesso": "35260112345678000190550010000001231000001234",
"nItem": 1
}

Observe que o campo de pagamentos nem precisa ser enviado no payload de requisição: na API NFER, notas com finalidade 4 (Devolução) têm o grupo de pagamentos preenchido automaticamente com forma "90" (Sem Pagamento) e valor 0.00, garantindo conformidade sem rejeições.

2. Resposta da API ao criar a nota (Response 201 Created)

Após processar o envio acima, a API NFER valida os dados, monta os grupos fiscais da SEFAZ e retorna o seguinte JSON de resposta (Response Body), com a nota em status de rascunho (draft) pronta para envio:

{
"id": "nfe_a81f9b3c-4d2e-4b1a-9f87-123456789abc",
"numero": 1042,
"serie": 1,
"tipo_operacao": "0",
"finalidade": 4,
"natureza_operacao": "DEVOLUCAO DE VENDA DE MERCADORIA",
"status": "draft",
"valor_total": 199.90,
"ref_chave_acesso": "35260112345678000190550010000001231000001234",
"created_at": "2026-09-11T12:30:00.000Z"
}

Como o NFER automatiza a devolução completa em 1 chamada (sem montar JSON manual)

Se a venda original já foi autorizada no NFER, você não precisa montar o payload acima nem cadastrar produtos e tributos manualmente. Basta enviar uma chamada simples com o ID da nota original autorizada:

curl -X POST https://api.nfer.me/v1/nfe/nfe_original_123/devolucao \
-H "X-API-Key: sua_chave_aqui"

Ao receber essa chamada, o NFER realiza todo o trabalho pesado por debaixo dos panos:

  • Inverte automaticamente a operação de Saída (1) para Entrada (0).
  • Mapeia os CFOPs de venda (5102, 6102, 5405) para os CFOPs correspondentes de devolução (1202, 2202, 1411).
  • Vincula a chave de 44 dígitos e o nItem de cada produto no grupo <det><DFeReferenciado> em conformidade com a NT 2025.002-RTC (Regra VC02-14), eliminando de vez as Rejeições 321 e 1010.
  • Enquadra automaticamente o grupo de pagamentos em tPag = "90" com valor = 0.00 (na API do NFER, o bloco de pagamentos é 100% opcional na criação de devoluções).
  • Entrega a nota fiscal de devolução 100% pronta como rascunho para envio imediato à SEFAZ.

A resposta da chamada traz os dados da nova NF-e de devolução vinculada à nota original:

{
"id": "nfe_dev_98765432-1a2b-3c4d-5e6f-7890abcdef12",
"nfe_ref_id": "nfe_original_123",
"numero": 1043,
"serie": 1,
"tipo_operacao": "0",
"finalidade": 4,
"natureza_operacao": "DEVOLUCAO DE MERCADORIA",
"status": "draft",
"valor_total": 199.90,
"ref_chave_acesso": "35260112345678000190550010000001231000001234",
"ref_numero": 1040,
"created_at": "2026-09-11T12:35:00.000Z"
}

Devolução Parcial: devolvendo apenas itens ou quantidades específicas

Se o cliente comprou 3 itens na mesma compra, mas pediu devolução ou troca de apenas 1, você não precisa fazer cálculos complexos nem cadastrar a nota do zero. Basta passar o array de itens no corpo da requisição:

{
"itens": [
{
"numeroItem": 1,
"quantidade": 1
}
]
}

Exemplo da chamada completa via cURL com o payload de devolução parcial:

curl -X POST https://api.nfer.me/v1/nfe/nfe_original_123/devolucao \
-H "Content-Type: application/json" \
-H "X-API-Key: sua_chave_aqui" \
-d '{
"itens": [
{
"numeroItem": 1,
"quantidade": 1
}
]
}'

O NFER valida que o item existe na nota de venda original, garante que a quantidade devolvida não excede a quantidade faturada, recalcula os valores proporcionais e ancora o nItem exato no XML autorizado.

Assistente Expresso no Painel NFER: devolução com 1 clique

Para lojistas e operadores que preferem utilizar o painel web em vez da API REST, o NFER conta com o Assistente Expresso de Devolução diretamente na listagem de Notas Fiscais:

  • Emissão em 1 Clique: gere e transmita a devolução total da nota fiscal autorizada com um único clique.
  • Seleção Visual de Itens: selecione quais produtos devolver através de checkboxes, defina a quantidade desejada de cada item e acompanhe o recálculo do valor total em tempo real.
  • Edição Avançada: se precisar ajustar transportadora, volume ou dados adicionais do frete, acesse o editor completo com todos os dados da nota original já pré-preenchidos.

Veja a documentação de Nota de Devolução

Confira exemplos em código cURL, Node.js, Python e o guia completo de endpoints na documentação técnica.

Abrir docs de Nota de Devolução

Posts recentes

Ver todos