Gere uma nota de crédito a partir de uma fatura
Crie um registro consistente de nota de crédito usando a referência da fatura original, um motivo claro e os itens exatos que devem ser estornados.
Executar grátis
O gerador calcula o subtotal e o imposto de cada linha, soma o crédito final e confirma que o resultado não ultrapassa o total da fatura original. A resposta em JSON estruturado pode ser revisada, armazenada, usada em fluxos contábeis ou convertida pelo seu sistema em um documento imprimível com a identidade da empresa.
Comece pela fatura de origem e por um motivo preciso
Uma nota de crédito útil precisa estar vinculada sem ambiguidade à transação que corrige. Informe a referência da fatura original exatamente como aparece no seu sistema de faturamento ou contabilidade e, em seguida, forneça o total da fatura com impostos e o código de moeda de três letras. O motivo deve explicar o evento comercial, e não apenas repetir que um crédito está sendo emitido. Alguns exemplos são mercadorias devolvidas, redução de serviço acordada, estoque danificado, correção de preço ou cobrança indevida. Um motivo específico oferece a aprovadores, clientes, contadores e auditores o contexto necessário para entender por que receita e impostos estão sendo estornados. O gerador preserva esse texto no documento estruturado, mas não inventa número da nota, data de emissão, identidade do cliente, texto jurídico nem status de autorização. Esses campos dependem da sua organização e jurisdição e devem ser acrescentados pelo sistema responsável pela numeração e emissão. Separar os fatos de origem dos identificadores gerados mantém o cálculo determinístico e evita que um documento pareça oficialmente emitido antes de passar pelo seu processo normal de aprovação.
Descreva cada item creditado e deixe o cálculo somar tudo
Adicione uma linha para cada produto, serviço, tarifa ou ajuste que será creditado. Cada linha exige descrição, quantidade positiva e preço unitário não negativo antes dos impostos. A alíquota opcional é uma porcentagem e assume zero quando omitida. Em cada linha, o gerador multiplica a quantidade pelo preço unitário, arredonda o subtotal resultante para duas casas decimais, calcula o imposto sobre esse subtotal arredondado e obtém o total da linha. Depois, soma todos os subtotais e valores de imposto para produzir o crédito total. O arredondamento por linha é intencional, pois acompanha a forma como muitos sistemas de faturamento exibem e contabilizam documentos discriminados, além de garantir que todas as linhas visíveis conciliem com o resumo. Use valores positivos: o tipo do documento já informa que os valores estornam parte da fatura, portanto quantidades ou preços negativos criariam uma dupla negação confusa. Caso a fatura original tenha descontos ou arredondamentos especiais, represente o valor realmente estornado como uma linha de ajuste clara, permitindo conciliar o total gerado com o documento de origem.
Valide o resultado antes de emitir o documento final
A resposta concluída contém o tipo do documento, a referência da fatura original, o motivo, a moeda, linhas numeradas e uma seção de totais. Os totais mostram subtotal creditado, imposto creditado, crédito total, total da fatura original e valor restante após o crédito. O gerador rejeita a solicitação quando o crédito calculado é maior que o total informado da fatura original. Essa proteção evita um erro comum de digitação, mas não substitui a verificação de notas de crédito anteriores vinculadas à mesma fatura. Como a ferramenta recebe somente a solicitação atual e não usa rede nem histórico armazenado, seu sistema de faturamento precisa verificar o valor acumulado quando vários créditos forem emitidos ao longo do tempo. Antes da aprovação, compare descrições, quantidades, preços, tratamento tributário, moeda e dados do cliente com a fatura original. Depois, atribua o número oficial da nota de crédito e a data de emissão conforme seus controles contábeis e requisitos locais. A resposta estruturada pode alimentar um modelo, fluxo de livro-razão, fila de aprovação ou gerador de PDF sem impor decisões de apresentação e conformidade à etapa de cálculo.
Casos de uso
Creditar mercadorias devolvidas
Transforme quantidades devolvidas, preços originais e alíquotas em uma nota de crédito discriminada e pronta para aprovação.
Corrigir uma cobrança indevida
Documente um ajuste de preço ou tarifa e calcule o valor exato que deve ser estornado.
Preparar dados para a contabilidade
Crie totais estruturados e consistentes para armazenar, revisar ou enviar a um gerador de documentos da empresa.
Perguntas frequentes
Quanto custa uma solicitação?
Cada solicitação de API custa US$ 0,002. A versão no navegador é executada localmente sem uma solicitação paga de API.
A ferramenta emite um número oficial de nota de crédito?
Não. Ela reúne os dados calculados, mas deixa a numeração oficial e as datas de emissão para o seu processo controlado de faturamento.
Como o imposto é calculado?
O imposto é calculado em cada linha a partir do subtotal arredondado e da alíquota; depois, os valores de todas as linhas são somados.
O que ocorre se o crédito for maior que a fatura?
A solicitação falha com um erro de entrada inválida quando o crédito calculado ultrapassa o total informado da fatura original.
É possível detectar créditos anteriores da mesma fatura?
Não. Não há rede nem histórico armazenado; portanto, seu sistema de faturamento deve conferir os créditos acumulados antes da emissão.
Posso usar uma alíquota zero?
Sim. Omita tax_rate ou defina-o como zero em uma linha que não deva acrescentar imposto.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/doc/credit-note-generate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"original_invoice_reference":"INV-2026-0042","original_invoice_total":250,"currency":"USD","reason":"Two items were returned unopened.","items":[{"description":"Wireless keyboard","quantity":2,"unit_price":45,"tax_rate":10},{"description":"Shipping adjustment","quantity":1,"unit_price":5}]}'const res = await fetch("https://api.kit.forhosting.com/doc/credit-note-generate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"original_invoice_reference": "INV-2026-0042",
"original_invoice_total": 250,
"currency": "USD",
"reason": "Two items were returned unopened.",
"items": [
{
"description": "Wireless keyboard",
"quantity": 2,
"unit_price": 45,
"tax_rate": 10
},
{
"description": "Shipping adjustment",
"quantity": 1,
"unit_price": 5
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/doc/credit-note-generate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"original_invoice_reference": "INV-2026-0042",
"original_invoice_total": 250,
"currency": "USD",
"reason": "Two items were returned unopened.",
"items": [
{
"description": "Wireless keyboard",
"quantity": 2,
"unit_price": 45,
"tax_rate": 10
},
{
"description": "Shipping adjustment",
"quantity": 1,
"unit_price": 5
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/doc/credit-note-generate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"original_invoice_reference":"INV-2026-0042","original_invoice_total":250,"currency":"USD","reason":"Two items were returned unopened.","items":[{"description":"Wireless keyboard","quantity":2,"unit_price":45,"tax_rate":10},{"description":"Shipping adjustment","quantity":1,"unit_price":5}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"original_invoice_reference":"INV-2026-0042","original_invoice_total":250,"currency":"USD","reason":"Two items were returned unopened.","items":[{"description":"Wireless keyboard","quantity":2,"unit_price":45,"tax_rate":10},{"description":"Shipping adjustment","quantity":1,"unit_price":5}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/doc/credit-note-generate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"original_invoice_reference": "INV-2026-0042",
"original_invoice_total": 250,
"currency": "USD",
"reason": "Two items were returned unopened.",
"items": [
{
"description": "Wireless keyboard",
"quantity": 2,
"unit_price": 45,
"tax_rate": 10
},
{
"description": "Shipping adjustment",
"quantity": 1,
"unit_price": 5
}
]
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "doc.credit_note_generate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_items | 200 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |