Notas de Crédito e Notas de Débito
A Reforma Tributária do Consumo criou dois novos tipos de nota fiscal de produto: a Nota de Crédito e a Nota de Débito. Ambas são NF-e (modelo 55) autônomas — têm numeração própria, são transmitidas à SEFAZ e recebem autorização ou rejeição como qualquer outra NF-e. Não são eventos de uma nota existente.
- Se você está procurando por perguntas e respostas rápidas sobre a Reforma Tributária, visite nossa página de Perguntas e Respostas sobre a Reforma Tributária. Lá, reunimos as dúvidas mais comuns e suas respostas de forma clara e objetiva, resolução de problemas comuns e orientações práticas.
- Se você quer uma visão geral rápida, com um plano de ação por perfil (gestores, fiscal/contábil, desenvolvedores e operação/faturamento), recomendamos começar pela página Visão geral da Reforma Tributária na NFE.io
Estrutura
| Documento | Serve para | Você identifica com |
|---|---|---|
| Nota de Crédito | Registrar um crédito fiscal — o caso principal é a recusa de mercadoria na entrega | purposeType = "CreditInvoice" + creditType |
| Nota de Débito | Registrar um débito fiscal em situações específicas previstas em lei | purposeType = "DebitInvoice" + debitType |
Você emite pelo mesmo endpoint de qualquer NF-e: POST /v2/companies/{companyId}/productinvoices. Muda apenas o purposeType e alguns campos específicos. Os campos novos são opcionais — quem não emite esses documentos não precisa mudar nada.
A NFE.io não recalcula os impostos desses documentos. Eles espelham a tributação já apurada na operação original; você envia os valores prontos (ver Como os tributos são tratados).
A finalidade da NF-e (finNFe)
Toda NF-e carrega uma finalidade, no campo finNFe. A Reforma acrescentou duas finalidades às quatro que já existiam:
finNFe | Finalidade | purposeType na API |
|---|---|---|
| 5 | Nota de Crédito | CreditInvoice |
| 6 | Nota de Débito | DebitInvoice |
A Nota de Crédito e a Nota de Débito não substituem a devolução tradicional (Devolution) em todos os casos. Elas cobrem as situações específicas descritas neste guia.
Normas que instituem esses documentos
O Ajuste SINIEF 49/25 (CONFAZ, publicado no DOU de 09/12/2025) institui a Nota de Crédito (finNFe=5, com os subtipos 03 e 06) e a Nota de Débito (finNFe=6). Sua cláusula sexta define vigência a partir de 3 de agosto de 2026.
O Ajuste SINIEF 8/26 (publicado no DOU de 09/04/2026) altera a cláusula do Ajuste 49/25 que trata da recusa total e parcial. Ele acrescenta a exigência de que o destinatário da Nota de Crédito seja o mesmo da NF-e original. Sua cláusula quarta define vigência a partir de 4 de maio de 2026 — uma data diferente da declarada no Ajuste 49/25 para o mesmo dispositivo.
Os dois ajustes declaram datas de vigência diferentes para a mesma regra (recusa parcial e exigência de destinatário idêntico). Nosso time fiscal está validando qual data prevalece antes de promover a recusa parcial a disponível em produção. Veja o aviso detalhado na seção Recusa parcial (06).
Conceitos
| Conceito | O que é |
|---|---|
| Chave de acesso | Identificador único de uma NF-e, com 44 dígitos. |
| NF-e original | A nota da operação que deu origem ao crédito ou débito. |
| Referência à original | Como a nova nota aponta para a NF-e original — no nível da nota ou por item. |
tpNFCredito | Subtipo da Nota de Crédito (qual tipo de recusa). |
tpNFDebito | Subtipo da Nota de Débito (qual das hipóteses da lei). |
| Tributação espelhada | Os impostos da nova nota reproduzem os da operação original; você envia os valores prontos. |
Existem duas formas de referenciar a NF-e original:
- No nível da nota — em
additionalInformation.taxDocumentsReference[]. É o mesmo caminho usado pela devolução. Vale quando a nota inteira se refere a uma NF-e original. - Por item — em
items[].referencedDFe(chave mais número do item na original). Usado na recusa parcial, em que cada item recusado aponta para o item correspondente da original.
Campos
| Campo | Tipo | Obrigatório quando | Descrição |
|---|---|---|---|
purposeType | enum | Sempre (default Normal) | Finalidade da NF-e. Novos valores: CreditInvoice, DebitInvoice. |
creditType | enum | purposeType=CreditInvoice | Subtipo da Nota de Crédito. |
debitType | enum | purposeType=DebitInvoice | Subtipo da Nota de Débito. |
items[].referencedDFe | objeto | Recusa parcial, em todos os itens | Referência por item à NF-e original (accessKey + itemNumber). |
additionalInformation.taxDocumentsReference[].documentElectronicInvoice.accessKey | string(44) | Recusa total ou débito com referência | Chave da NF-e original no nível da nota. |
operationNature | string | Sempre (não vazio) | Natureza da operação, em texto livre. |
operationType | enum (Incoming/Outgoing) | Sempre | Entrada (crédito por recusa) ou saída (débito de transferência). |
Valores dos enums
purposeType: Normal · Complement · Adjustment · Devolution · CreditInvoice · DebitInvoice
creditType: RefusedDeliveryTotalOrNotFound (03) · RefusedDeliveryPartial (06)
debitType: TransferCreditsToCooperatives (01) · CancelCreditsExemptImmuneSales (02) · UnprocessedInvoicesDebits (03) · FinesAndInterest (04) · TransferInheritanceCredit (05)
Os valores são enviados exatamente como acima — a API é sensível a maiúsculas e minúsculas.
Os subtipos AdvancePayment (06), InventoryLoss (07) e SnDisqualification (08) existem na norma fiscal, mas a API ainda não os suporta: ela rejeita o request com 400 [V-DN-08] porque a emissão ainda não gera o grupo tributário exigido pela SEFAZ para esses casos. Use um subtipo disponível ou fale com o suporte para saber quando serão liberados.
Nota de Crédito por recusa de mercadoria
Use a Nota de Crédito quando a mercadoria foi recusada na entrega, ou quando o destinatário não foi localizado. O tipo de recusa vai no campo creditType.
creditType | tpNFCredito | Quando usar | Status |
|---|---|---|---|
RefusedDeliveryTotalOrNotFound | 03 | Recusa total da entrega, ou destinatário não localizado | Disponível |
RefusedDeliveryPartial | 06 | Recusa parcial — só parte dos itens foi recusada | Pendente de confirmação de data (ver aviso abaixo) |
Recusa total (03)
- Envie
purposeType = "CreditInvoice"ecreditType = "RefusedDeliveryTotalOrNotFound". - Envie
operationType = "Incoming"— é uma nota de entrada, a mercadoria está voltando. - Informe a chave da NF-e original em
additionalInformation.taxDocumentsReference[]. - Garanta que o destinatário (
buyer) seja o mesmo da NF-e original. - Repita os itens e os tributos já apurados, com os mesmos valores da nota original.
POST /v2/companies/{companyId}/productinvoices
{
"purposeType": "CreditInvoice",
"creditType": "RefusedDeliveryTotalOrNotFound",
"operationType": "Incoming",
"operationNature": "Retorno por recusa de mercadoria",
"buyer": { /* mesmo destinatário da NF-e original */ },
"items": [ { /* itens e tributos espelhando a NF-e original */ } ],
"additionalInformation": {
"taxDocumentsReference": [
{ "documentElectronicInvoice": { "accessKey": "3126...<44 dígitos da NF-e original>" } }
]
}
}
Recusa parcial (06)
A recusa parcial depende da data de vigência do Ajuste SINIEF 8/26, que altera a mesma cláusula do Ajuste 49/25 com uma data diferente (4 de maio de 2026 contra 3 de agosto de 2026). Nosso time fiscal está confirmando qual data vale antes de promovermos este subtipo a disponível em produção. A API aceita o request hoje, mas trate esta funcionalidade como sob demanda: fale com o suporte antes de usar em produção.
O payload de recusa parcial é igual ao de recusa total, exceto na referência: aqui, cada item recusado carrega sua própria referência em items[].referencedDFe (chave mais itemNumber do item na NF-e original). Todos os itens devem referenciar a mesma NF-e original.
POST /v2/companies/{companyId}/productinvoices
{
"purposeType": "CreditInvoice",
"creditType": "RefusedDeliveryPartial",
"operationType": "Incoming",
"operationNature": "Retorno por recusa parcial de mercadoria",
"buyer": { /* destinatário da NF-e original */ },
"items": [
{
"code": "P001",
"description": "SILAGEM MILHO IN NATURA 30KG",
"referencedDFe": {
"accessKey": "3126...<44 dígitos>",
"itemNumber": 1
}
/* ...tributos já apurados... */
}
]
}
O que a API valida na Nota de Crédito
Se algo estiver incoerente, a API responde 400 Bad Request com um código de regra na mensagem:
| Código no erro | O que significa e como resolver |
|---|---|
[V-CN-01] | Faltou creditType, ou ele foi enviado sem purposeType=CreditInvoice. Envie os dois juntos. |
[V-CN-02] | Recusa total (03) precisa de exatamente uma referência em taxDocumentsReference com accessKey de 44 dígitos. |
[V-CN-03] | Recusa parcial (06): todos os itens precisam de referencedDFe com accessKey. |
[V-CN-04] | Recusa parcial (06): os itens estão referenciando NF-es diferentes. Todos devem apontar para a mesma original. |
[V-CN-05] | operationType incoerente para o documento. |
[V-CN-07] | operationNature está vazio. |
O que sai no documento
No XML, o documento carrega finNFe = 5, tpNFCredito = 03 ou 06, o destinatário replicando o da nota original, e a referência — refNFe no nível da nota para o subtipo 03, DFeReferenciado por item para o subtipo 06. No DANFE, o cabeçalho identifica o documento como Nota de Crédito e mostra a chave ou as chaves referenciadas.
Nota de Débito
A Nota de Débito é uma NF-e autônoma para registrar um débito fiscal. A situação específica vai no campo debitType, que corresponde ao tpNFDebito (01 a 08) da SEFAZ.
Hipóteses disponíveis hoje
debitType | tpNFDebito | Situação | Status |
|---|---|---|---|
TransferCreditsToCooperatives | 01 | Transferência de créditos para cooperativas | Disponível |
CancelCreditsExemptImmuneSales | 02 | Cancelamento de créditos por vendas isentas ou imunes | Sob demanda |
UnprocessedInvoicesDebits | 03 | Débitos de faturas não processadas | Sob demanda |
FinesAndInterest | 04 | Multas e juros | Sob demanda |
TransferInheritanceCredit | 05 | Transferência de crédito na sucessão | Sob demanda |
Disponível significa validado e emitido ponta a ponta na SEFAZ — pode usar em produção. Sob demanda significa que a API aceita o request, mas o cenário ainda não foi validado fim a fim na SEFAZ. Fale com o suporte antes de usar uma hipótese sob demanda em produção.
Os subtipos 06 (AdvancePayment), 07 (InventoryLoss) e 08 (SnDisqualification) da norma fiscal ainda não são suportados pela API — ela bloqueia esses requests de propósito, porque a emissão ainda não gera o grupo tributário que a SEFAZ exigiria para autorizar o documento.
Os subtipos 02, 03 e 08 também podem ser emitidos, sob demanda, como Ajuste de Competência (CST 811): o emitente informa, por item, o grupo competenceAdjustment em items[].tax.ibscbs.competenceAdjustment, com os campos competence (formato AAAA-MM, obrigatório), ibsAmount e/ou cbsAmount. A regra [V-DN-09] valida esse preenchimento. Esse caminho também está pendente de validação fim a fim na SEFAZ — fale com o suporte antes de usar em produção.
Como emitir (transferência de créditos para cooperativas)
POST /v2/companies/{companyId}/productinvoices
{
"purposeType": "DebitInvoice",
"debitType": "TransferCreditsToCooperatives",
"operationType": "Outgoing",
"operationNature": "Transferência de créditos para cooperativa",
"items": [ { /* tributos IBS/CBS já apurados */ } ],
"additionalInformation": {
"taxDocumentsReference": [
{ "documentElectronicInvoice": { "accessKey": "<44 dígitos da NF-e original>" } }
]
}
}
O que a API valida na Nota de Débito
| Código no erro | O que significa e como resolver |
|---|---|
[V-DN-01] | Faltou debitType, ou ele foi enviado sem purposeType=DebitInvoice. |
[V-DN-02] | A hipótese exige referência à NF-e original com accessKey válida de 44 dígitos. |
[V-DN-05] | operationType incoerente para a hipótese. |
[V-DN-07] | operationNature está vazio. |
[V-DN-08] | A hipótese escolhida ainda não é suportada. Use uma hipótese disponível ou fale com o suporte. |
O que sai no documento
No XML, o documento carrega finNFe = 6 e o tpNFDebito correspondente. A tributação é IBS/CBS — os novos tributos da Reforma. No DANFE, o cabeçalho identifica o documento como Nota de Débito.
Rastreando a NF-e original
Toda Nota de Crédito, e toda Nota de Débito com referência, aponta para a NF-e original que ela referencia. Esse vínculo — da nova nota para a NF-e original — é o que a plataforma mantém e retorna hoje.
- No nível da nota —
additionalInformation.taxDocumentsReference[].documentElectronicInvoice.accessKey: a chave de 44 dígitos da NF-e original, usada na recusa total e no débito com referência. - Por item —
items[].referencedDFe(accessKey+itemNumber): referencia o item específico da NF-e original, usado na recusa parcial.
Consultar a referência
Consulte a nota emitida e leia taxDocumentsReference ou referencedDFe na resposta:
GET /v2/companies/{companyId}/productinvoices/{invoiceId}
{
"id": "…id da Nota de Crédito…",
"purposeType": "CreditInvoice",
"creditType": "RefusedDeliveryPartial",
"additionalInformation": {
"taxDocumentsReference": [
{ "documentElectronicInvoice": { "accessKey": "…44 dígitos da NF-e original…" } }
]
},
"items": [
{ "number": 1, "referencedDFe": { "accessKey": "…44 dígitos…", "itemNumber": 1 } },
{ "number": 2, "referencedDFe": { "accessKey": "…44 dígitos…", "itemNumber": 3 } }
]
}
Hoje o rastreio é unidirecional — da nota nova para a NF-e original. Não existe endpoint de listagem nem de vínculo manual que, a partir da NF-e original, retorne as Notas de Crédito emitidas contra ela. Chamadas a rotas desse tipo respondem 404. Enquanto esse recurso não é lançado, guarde o id da Nota de Crédito retornado no POST e associe-o à venda do seu lado.
Como os tributos são tratados
A NFE.io não recalcula os impostos da Nota de Crédito nem da Nota de Débito. Esses documentos espelham a operação original: você envia os valores de tributos já apurados no payload, exatamente como estavam — ou deveriam estar — na NF-e original.
- Nota de Crédito por recusa reproduz os tributos da NF-e recusada (ICMS destacado, IBS/CBS etc.), sem novo cálculo.
- Nota de Débito usa a tributação IBS/CBS. Na transferência de créditos para cooperativas, o valor transferido vai no grupo próprio de transferência de crédito.
Se você integra com o motor de cálculo automático da NFE.io, saiba que ele fica desativado para esses documentos. O que você enviar é o que vai para o XML — garanta que os valores conferem com a operação original antes de transmitir.
Endpoints
| Método | Rota | Uso |
|---|---|---|
POST | /v2/companies/{companyId}/productinvoices | Emite a nota, de Crédito ou Débito. |
GET | /v2/companies/{companyId}/productinvoices/{invoiceId} | Consulta a nota, incluindo a referência à NF-e original. |
Erros mais comuns
| Sintoma | Causa provável | Solução |
|---|---|---|
400 [V-CN-01] / 400 [V-DN-01] | creditType/debitType ausente, ou usado com purposeType errado | Envie o subtipo correto junto do purposeType correspondente. |
400 [V-CN-02] | Chave da NF-e original ausente, ou sem 44 dígitos, na recusa total | Informe uma accessKey válida de 44 dígitos em taxDocumentsReference. |
400 [V-CN-03] | Item sem referencedDFe na recusa parcial | Preencha referencedDFe em todos os itens. |
400 [V-CN-04] | Itens apontando para NF-es diferentes | Todos os itens devem referenciar a mesma NF-e original. |
400 [V-DN-08] | Hipótese de débito ainda não suportada | Use uma hipótese disponível ou fale com o suporte. |
Rejeição da SEFAZ (cStat ≠ 100) | Divergência fiscal — tributos, destinatário ou referência | Ajuste o payload conforme a mensagem da SEFAZ e reemita. |
Perguntas frequentes
Preciso de um endpoint novo para emitir? Não. É o mesmo POST /productinvoices, mudando o purposeType.
A Nota de Crédito é um evento da NF-e original? Não. É uma NF-e nova, autônoma, com numeração e autorização próprias.
A NFE.io calcula os impostos desses documentos? Não. Você envia os tributos já apurados; eles espelham a operação original.
Como sei quais Notas de Crédito foram emitidas contra uma venda minha? Hoje o rastreio é unidirecional: cada Nota de Crédito guarda a referência à NF-e original. Consulte a nota e leia taxDocumentsReference ou referencedDFe. A listagem inversa, a partir da NF-e original, ainda não está disponível. Enquanto isso, guarde o id da Nota de Crédito associado à venda.
Posso usar a recusa parcial hoje? A API aceita o request, mas trate como sob demanda: as duas normas que regem essa regra (Ajustes SINIEF 49/25 e 8/26) declaram datas de vigência diferentes, e nosso time fiscal ainda está confirmando qual prevalece. Fale com o suporte antes de usar em produção.
Quais hipóteses de Nota de Débito posso usar? Hoje, sem ressalva: a transferência de créditos para cooperativas (TransferCreditsToCooperatives). As demais disponíveis (02, 03, 04, 05) funcionam sob demanda — fale com o suporte antes de produção.
Glossário
| Termo | Significado |
|---|---|
| NF-e | Nota Fiscal Eletrônica de produto, modelo 55. |
| SEFAZ | Secretaria da Fazenda estadual — autoriza ou rejeita a NF-e. |
finNFe | Finalidade da nota (1=Normal … 5=Crédito, 6=Débito). |
tpNFCredito | Subtipo da Nota de Crédito (03=recusa total/não localizado, 06=recusa parcial). |
tpNFDebito | Subtipo da Nota de Débito (01 a 08). |
| Chave de acesso | Identificador único da NF-e, com 44 dígitos. |
refNFe | Referência à NF-e original no nível da nota. |
referencedDFe / DFeReferenciado | Referência à NF-e original por item, usada na recusa parcial. |
| IBS/CBS | Novos tributos da Reforma — Imposto sobre Bens e Serviços e Contribuição sobre Bens e Serviços. |
cStat | Código de status retornado pela SEFAZ (100 = autorizada). |
| DANFE | Representação em PDF da NF-e. |
| Ajuste SINIEF | Norma do CONFAZ que padroniza documentos fiscais entre os estados. |