Calculadora de preços por faixas de markup
Uma escada de preços transforma um único custo-base em um conjunto coerente de preços de venda para diferentes grupos de clientes.
Executar grátis
Informe o custo do item e adicione o percentual de markup para varejo, atacado, VIP, distribuidor, associado ou qualquer outra faixa usada pela empresa. A calculadora aplica cada percentual separadamente e devolve um preço identificado para cada linha. Ela é útil quando o custo é comum, mas as condições comerciais mudam conforme o público, o canal de venda ou o relacionamento com a conta. Markups negativos são recusados para impedir que um sinal de menos inserido por engano transforme silenciosamente uma política de acréscimo em desconto.
Monte todas as faixas sobre o mesmo custo
Uma boa escada de preços começa com um custo-base único e claramente definido. Esse valor pode ser o custo de compra do produto, o custo direto de produção de uma unidade ou outra referência interna que sua política comercial trate de maneira consistente como custo. Inclua cada grupo de clientes em uma linha e informe o markup como percentual dessa mesma base. A faixa de varejo, por exemplo, pode receber um markup maior do que a de atacado, enquanto a VIP pode ficar entre elas ou abaixo das duas. A calculadora não atribui um significado fixo aos nomes das faixas; portanto, você pode usar rótulos adequados ao negócio, como revendedor, associado, parceiro ou região. Cada resultado preserva o rótulo e o percentual informados, facilitando a conferência da relação entre política e preço. Use a mesma moeda no custo-base e nos preços resultantes, pois o cálculo é neutro em relação à moeda e não faz conversões. Markup zero é válido e devolve o próprio custo; qualquer valor negativo gera erro. Essa regra separa uma escada de acréscimos de uma tabela de descontos e detecta um sinal negativo acidental antes que ele chegue ao catálogo ou orçamento.
Entenda a fórmula e o arredondamento
Em cada faixa, o preço de venda corresponde ao custo-base multiplicado por um mais o percentual de markup dividido por cem. Assim, um custo de quarenta com markup de cinquenta por cento resulta em sessenta, pois metade de quarenta é acrescentada ao custo original. O markup é medido sobre o custo, não sobre o preço final. Essa diferença é importante porque markup e margem bruta são conceitos relacionados, mas não equivalentes: cinquenta por cento de markup não representa cinquenta por cento de margem bruta. Os preços retornados são arredondados para duas casas decimais, formato adequado a tabelas monetárias comuns e resultados automatizados estáveis. O custo original e cada percentual informado também aparecem na resposta, permitindo que outros sistemas guardem as premissas junto do valor calculado. As contas são independentes; alterar o percentual do atacado não muda os preços do varejo ou VIP. Custo e markup podem ser zero, desde que todos os valores sejam finitos e respeitem os limites documentados. A ferramenta rejeita campos ausentes, entradas não numéricas, rótulos vazios, listas excessivas e percentuais negativos. Se sua política realmente permitir preço abaixo do custo, represente essa condição como desconto ou ajuste, e não como markup negativo.
Inclua a escada no fluxo de precificação
O resultado por faixas ganha valor quando passa a integrar um processo de precificação repetível. A equipe de compras pode recalcular toda a escada sempre que o fornecedor alterar o custo, em vez de editar vários preços de venda separadamente e correr o risco de aplicar critérios inconsistentes. Operações comerciais pode encaminhar as linhas retornadas para uma ferramenta de propostas, um gerador de catálogo, uma planilha de aprovação ou uma revisão de preços por conta. Pequenas empresas conseguem comparar o preço de varejo proposto com ofertas de atacado e VIP de menor markup antes da publicação. Como o algoritmo é determinístico, a mesma entrada sempre gera a mesma saída, tanto no navegador quanto pela API. Se precisar de histórico de auditoria, armazene juntos o custo-base, o rótulo da faixa, o percentual e o preço calculado; esses campos mostram exatamente a origem de cada número. Verifique também tributos, frete, tarifas de pagamento, preço mínimo anunciado e margem bruta exigida, pois essas regras ficam fora deste cálculo específico. O serviço custa US$ 0,002 por chamada de API, e a versão no navegador atende consultas interativas rápidas. Na automação, envie até cem linhas por solicitação e trate uma resposta de entrada inválida como pedido de correção dos dados, nunca como autorização para aceitar um valor inseguro.
Casos de uso
Atualize preços após uma mudança de custo
Recalcule em conjunto os preços de varejo, atacado e VIP quando o fornecedor alterar o custo-base.
Gere propostas por faixa de cliente
Aplique o markup aprovado para cada classe e encaminhe preços identificados ao fluxo de propostas.
Confira uma política de preços
Compare os resultados lado a lado e detecte markups negativos antes de publicar a tabela.
Perguntas frequentes
Como o preço de cada faixa é calculado?
O custo-base é multiplicado por um mais o percentual de markup da faixa dividido por cem.
Posso usar nomes de faixa personalizados?
Sim. Varejo, atacado e VIP são exemplos comuns, mas qualquer rótulo não vazio dentro do limite é aceito.
O que acontece com um markup negativo?
A solicitação inteira retorna um erro de entrada inválida. Markup negativo não é interpretado como desconto.
Markup é igual a margem bruta?
Não. O markup é medido sobre o custo-base, enquanto a margem bruta é calculada sobre o preço de venda.
Como os preços são arredondados?
Os valores calculados são arredondados para duas casas decimais, produzindo uma saída monetária estável.
Quanto custa uma solicitação pela API?
Cada solicitação pela API custa US$ 0,002. O mesmo cálculo determinístico também está disponível no navegador.
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/calc3/markup-price-ladder \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"base_cost":40,"tiers":[{"tier":"Retail","markup_percent":50},{"tier":"Wholesale","markup_percent":20},{"tier":"VIP","markup_percent":10}]}'const res = await fetch("https://api.kit.forhosting.com/calc3/markup-price-ladder", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"base_cost": 40,
"tiers": [
{
"tier": "Retail",
"markup_percent": 50
},
{
"tier": "Wholesale",
"markup_percent": 20
},
{
"tier": "VIP",
"markup_percent": 10
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/calc3/markup-price-ladder",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"base_cost": 40,
"tiers": [
{
"tier": "Retail",
"markup_percent": 50
},
{
"tier": "Wholesale",
"markup_percent": 20
},
{
"tier": "VIP",
"markup_percent": 10
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/calc3/markup-price-ladder", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"base_cost":40,"tiers":[{"tier":"Retail","markup_percent":50},{"tier":"Wholesale","markup_percent":20},{"tier":"VIP","markup_percent":10}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"base_cost":40,"tiers":[{"tier":"Retail","markup_percent":50},{"tier":"Wholesale","markup_percent":20},{"tier":"VIP","markup_percent":10}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/calc3/markup-price-ladder", 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
{
"base_cost": 40,
"tiers": [
{
"tier": "Retail",
"markup_percent": 50
},
{
"tier": "Wholesale",
"markup_percent": 20
},
{
"tier": "VIP",
"markup_percent": 10
}
]
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "calc3.markup_price_ladder",
"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 | 100 |
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. |