Gere um orçamento com desconto e valores totais
Três linhas, um desconto fixo e validade de 21 dias viram um orçamento estruturado com totais de linha, subtotal, desconto e total final, tudo com o seu código de moeda: informe itens, quantidades e preços. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Desconto
- 250
- Moeda
- usd
- Dias de validade
- 21
- Referência do orçamento
- Q-2026-104
- Nome do cliente
- Northwind Studio
- Tipo de documento
- quote
- Moeda
- USD
Transforme uma lista de serviços ou produtos em um orçamento estruturado e consistente, sem copiar valores entre uma calculadora e um modelo. O gerador calcula cada item, o subtotal, um desconto fixo e o total final, além de registrar por quantos dias a oferta permanecerá válida. Também aceita código da moeda, nome do cliente e referência.
Prepare itens claros para o orçamento
Comece com um registro para cada serviço ou produto que o cliente estiver avaliando. Cada registro precisa de uma descrição e um preço unitário; quando a quantidade for omitida, será usado um. Prefira descrições que continuem claras depois que o orçamento sair da conversa comercial: informe a entrega, o pacote, a licença ou a etapa do trabalho em vez de depender de abreviações internas.
As quantidades podem representar unidades físicas, usuários de assinatura, dias de consultoria ou qualquer outra medida consistente. O gerador multiplica cada preço unitário pela respectiva quantidade e arredonda o total do item para duas casas decimais. Os preços devem ser iguais ou superiores a zero, e as quantidades devem ser positivas.
Um item de valor zero é útil para registrar uma entrega incluída ou um serviço de cortesia sem alterar o subtotal. Todos os itens usam o código de moeda informado para o documento. Esta capacidade identifica os valores com esse código, mas não converte moedas, adiciona impostos nem consulta preços em catálogos.
Informe valores comerciais definitivos e prontos para a proposta. Uma entrada explícita torna o documento retornado previsível, auditável e adequado para automações posteriores.
Aplique o desconto e confira os totais
O desconto opcional é um valor fixo na mesma moeda dos itens. Quando ele for omitido, o gerador usará zero. Primeiro, o sistema calcula o total de cada item, soma esses valores arredondados para formar o subtotal, arredonda o desconto para duas casas decimais e faz a subtração para obter o total final.
Essa ordem oferece resultados estáveis para faturas, sistemas de aprovação e geradores de documentos que esperam a precisão monetária convencional. O desconto não pode ser negativo nem superior ao subtotal. Se ultrapassar o subtotal, a solicitação retorna um erro de entrada inválida em vez de produzir um orçamento com total negativo.
Essa proteção é especialmente útil quando os descontos vêm de um campo do CRM ou de uma regra comercial automatizada que pode estar desatualizada após alterações nos itens. Impostos, entradas, cronogramas de pagamento e descontos percentuais não fazem parte deste cálculo. Converta uma promoção percentual no valor fixo aprovado antes de chamar o gerador, preservando a clareza do cálculo e do documento.
Use o documento estruturado e o prazo de validade
O resultado é um orçamento estruturado, e não um PDF diagramado. Ele identifica o tipo do documento, a moeda, o prazo de validade em dias corridos, os itens normalizados e um resumo dos totais. Os campos opcionais de cliente e referência só aparecem quando são fornecidos, mantendo a saída limpa para sistemas que diferenciam informações ausentes de campos vazios.
O prazo padrão é de trinta dias e pode ser configurado entre um e 3,650 dias. Como esta capacidade é determinística e nunca consulta a hora atual, a validade é expressa como duração, sem inventar uma data de emissão ou vencimento. O sistema de destino pode combinar essa duração com a data e hora reais quando enviar ou armazenar o orçamento.
Essa separação impede mudanças entre novas tentativas e permite testes de referência confiáveis. Se você precisar de um arquivo visual finalizado, envie esta estrutura validada ao seu próprio renderizador. A capacidade não realiza solicitações de rede, não armazena dados do cliente e gera o mesmo resultado sempre que recebe a mesma entrada.
Casos de uso
Prepare uma proposta de serviços
Calcule workshops, dias de implementação e pacotes de suporte em um único resumo consistente.
Faça cotações por quantidade
Transforme preços unitários e quantidades em itens conferidos antes de gerar o documento para o cliente.
Automatize aprovações comerciais
Crie dados estáveis que mostrem subtotal, concessão, total e validade ao fluxo de aprovação.
Perguntas frequentes
O desconto é percentual?
Não. O desconto é um valor monetário fixo na moeda do orçamento.
O que acontece se o desconto superar o subtotal?
A solicitação retorna um erro de entrada inválida e nenhum orçamento é produzido.
O gerador calcula impostos?
Não. Ele calcula apenas os itens, o subtotal, o desconto fixo e o total final.
O prazo de validade contém uma data de vencimento?
Não. Ele retorna uma quantidade determinística de dias para o seu sistema combinar com a data real de emissão.
Posso incluir no orçamento um item sem custo?
Sim. Uma linha com preço zero registra um entregável incluído ou um serviço de cortesia sem alterar o subtotal, e o cliente vê todo o escopo da proposta.
Ferramentas relacionadas
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/quote-estimate-generate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"items":[{"description":"Discovery workshop","price":450,"quantity":1},{"description":"Implementation day","price":800,"quantity":3}]}'const res = await fetch("https://api.kit.forhosting.com/doc/quote-estimate-generate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"items": [
{
"description": "Discovery workshop",
"price": 450,
"quantity": 1
},
{
"description": "Implementation day",
"price": 800,
"quantity": 3
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/doc/quote-estimate-generate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"items": [
{
"description": "Discovery workshop",
"price": 450,
"quantity": 1
},
{
"description": "Implementation day",
"price": 800,
"quantity": 3
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/doc/quote-estimate-generate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"items":[{"description":"Discovery workshop","price":450,"quantity":1},{"description":"Implementation day","price":800,"quantity":3}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"items":[{"description":"Discovery workshop","price":450,"quantity":1},{"description":"Implementation day","price":800,"quantity":3}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/doc/quote-estimate-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
{
"items": [
{
"description": "Discovery workshop",
"price": 450,
"quantity": 1
},
{
"description": "Implementation day",
"price": 800,
"quantity": 3
}
]
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "doc.quote_estimate_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_mb | 25 |
max_pages | 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. |
Notas técnicas
O resultado é um JSON determinístico que pode alimentar aprovações, portais de clientes, modelos de documentos, e-mails ou registros internos, mantendo os cálculos fáceis de conferir.
Aplique o desconto e confira os totais
Antes de enviar o orçamento, compare o resumo retornado com a aprovação comercial: subtotal mostra o valor antes das concessões, discount_amount deixa a concessão explícita e total apresenta o valor proposto ao cliente.
Use o documento estruturado e o prazo de validade
Use o JSON retornado diretamente em um portal de clientes, converta-o em um modelo com a sua marca, anexe-o a uma oportunidade ou encaminhe-o a um fluxo de aprovação.
Perguntas técnicas
Quanto custa uma solicitação?
Cada solicitação custa US$ 0,002.