Calculadora de desconto duplo
Um preço de 100 com 20% de desconto e depois mais 10% termina em 72: você economiza 28, não 30, porque o segundo desconto incide só sobre os 80 que sobraram. Informe o preço original e os dois descontos na ordem. 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
- Preço
- 100
- Primeiro desconto
- 20
- Segundo desconto
- 10
- Preço após o primeiro
- 80
- Preço final
- 72
- Economias
- 28
- Porcentagem equivalente
- 28
Quem compra raramente vê um único desconto. A uma promoção de toda a loja segue-se um cupom, um percentual extra de funcionário se sobrepõe a uma etiqueta de liquidação, ou um marketplace empilha o desconto do vendedor e depois um código de todo o site. Somar os dois percentuais infla a oferta: vinte por cento e depois dez não é trinta por cento de desconto, porque o segundo corte se aplica só ao que resta. Esta calculadora de desconto duplo recebe o preço original e dois descontos percentuais sucessivos, aplica-os em ordem e devolve o preço final junto com a economia total para que um carrinho, um post de oferta ou um orçamento trave a cifra empilhada antes do checkout. Zero por cento em qualquer etapa deixa essa etapa inalterada; cem por cento em qualquer etapa zera o saldo restante.
Como dois descontos sucessivos realmente se combinam
Dois descontos percentuais sucessivos não são o mesmo que um único percentual combinado. Um varejista anuncia vinte por cento, depois um cupom tira outros dez por cento do que sobrou; um extra de funcionário se assenta sobre uma etiqueta de liquidação; um marketplace empilha o recorte do vendedor e em seguida um código de todo o site. Somar vinte e dez e chamar a oferta de trinta por cento infla a economia, porque o segundo corte nunca vê o preço original.
Zero por cento em qualquer etapa é um resultado legítimo e deixa essa etapa inalterada em vez de um erro: um SKU que só carrega uma das duas ofertas ainda pertence a um carrinho de comparação. Cem por cento em qualquer etapa zera o saldo restante: o resultado dessa etapa é zero e as posteriores permanecem em zero. Você fornece três números; a calculadora os multiplica em ordem e arredonda cada cifra monetária para duas casas decimais para que os goldens coincidam byte a byte entre runtimes.
Onde uma calculadora de desconto duplo vale o trabalho
Famílias que empilham uma promoção de loja com um cupom recortado usam uma calculadora de desconto duplo para transformar o ticket original em um preço final comparável antes de colocar o item no carrinho. Equipes de produto ligam o mesmo contrato a landing pages e teasers de e-mail que precisam mostrar um preço de oferta empilhado de um SKU de amostra sem chamar um motor de promoções.
Esta é uma busca e um trabalho diferentes de uma calculadora de desconto genérica, de um fator de preço líquido de desconto em cascata no atacado, do Cyber Monday e de um percentual efetivo de leve-um-pague-outro: essas ferramentas calculam um desconto ordinário, uma cascata comercial de comprimento variável voltada ao NPF, um evento de um dia com nome próprio ou uma taxa equivalente de dois pelo preço de um.
Uma calculadora de desconto duplo precifica um valor original contra exatamente dois percentuais sucessivos e devolve o preço final mais o dinheiro economizado nessa pilha. A validação falha não consome saldo. Um terceiro cupom, limiares de frete grátis e imposto sobre vendas ficam fora desta identidade de propósito: incorpore-os na sua própria camada depois de ter o preço final bruto e o dinheiro economizado.
A ordem das duas taxas não muda o produto sem arredondar, mas o arredondamento monetário após a primeira etapa pode deslocar um centavo se você as inverter, então envie-as na ordem em que o caixa as aplicará.
Casos de uso
Pré-visualizar um extra de funcionário sobre um item já em oferta
Aplique primeiro o percentual de liquidação e depois o extra de funcionário, então fixe savings para que a folha de pagamento ou uma loja da equipe possam citar o preço empilhado.
Perguntas frequentes
Por que vinte por cento e depois dez não é trinta por cento de desconto?
O segundo desconto se aplica só ao que resta após o primeiro. Em 100, vinte por cento deixa 80; dez por cento de 80 é 8; o preço final é 72, então a economia é 28 (um equivalente de 28 por cento), não 30.
O que acontece se um desconto ultrapassar 100 por cento?
Um desconto sucessivo que ultrapassa 100 por cento não é faturado.
Qualquer um dos descontos pode ser zero ou cem por cento?
Sim. Zero por cento deixa essa etapa inalterada.
Como isso difere de um desconto em cascata ou de uma calculadora de um só desconto?
Uma calculadora de desconto genérica recebe um único percentual. Uma ferramenta de desconto em cascata recebe uma cascata atacadista de comprimento variável e devolve um fator de preço líquido. Esta calculadora são exatamente dois percentuais de varejo sucessivos mais a economia total.
A ordem dos dois descontos faz diferença?
Para o resultado exato, não: as duas porcentagens se multiplicam igual em qualquer ordem. Mas arredondar os centavos depois do primeiro passo pode mudar o preço final em um centavo, então informe na ordem em que a loja aplica.
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/fin/double-discount \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"price":100,"first_discount":20,"second_discount":10}'const res = await fetch("https://api.kit.forhosting.com/fin/double-discount", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"price": 100,
"first_discount": 20,
"second_discount": 10
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/fin/double-discount",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"price": 100,
"first_discount": 20,
"second_discount": 10
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/fin/double-discount", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"price":100,"first_discount":20,"second_discount":10}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"price":100,"first_discount":20,"second_discount":10}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/fin/double-discount", 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
{
"price": 100,
"first_discount": 20,
"second_discount": 10
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "fin.double_discount",
"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.
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
Um desconto que ultrapassa cem por cento é rejeitado como invalid_input e não é faturado.
Como dois descontos sucessivos realmente se combinam
A identidade que esta calculadora usa é final_price igual a price vezes um menos first_discount dividido por cem, vezes um menos second_discount dividido por cem. O primeiro desconto produz um price_after_first intermediário, que depois é reduzido pela segunda taxa. A economia total é o preço original menos esse final_price, o que equivale a price vezes o percentual combinado equivalente depois que o arredondamento monetário é aplicado em cada etapa para que as partes continuem somando a lista. price é o valor original em uma só moeda; first_discount e second_discount são as duas taxas anunciadas, digitadas como as faixas as imprimem, de modo que vinte significa vinte por cento, não vinte centésimos. O único percentual que coincidiria com o resultado empilhado também é devolvido como equivalent_percent para que uma planilha conserve um número ao lado dos dois percentuais que as pessoas digitam. Um desconto que ultrapassa cem por cento não é um desconto neste contrato e é rejeitado como invalid_input, porque uma faixa que imprime cento e vinte por cento de desconto quase sempre é um erro de dados, não um reembolso que você pretendia modelar. Este endpoint não raspa catálogos de varejistas, não acrescenta um terceiro cupom sobre os dois percentuais que você envia, não soma imposto sobre vendas nem frete, e não converte moedas.
Contrato de entrada, forma da resposta e comportamento em caso de erro
Se price for negativo, o processador rejeita a solicitação porque um preço original não pode ser negativo; uma amostra gratuita de zero é admitida e produz preço final nulo e economia nula. Se qualquer desconto for negativo, o processador rejeita com uma mensagem clara de que um desconto sucessivo negativo não é permitido. Zero por cento em uma etapa é válido e deixa o valor dessa etapa inalterado. Cem por cento em uma etapa é válido e zera o preço restante. Envie por POST um corpo JSON com três números finitos obrigatórios. price é o valor original em uma unidade monetária antes de qualquer um dos dois descontos sucessivos; os aliases original_price, list_price, original e amount apontam para o mesmo campo para que uma exportação de catálogo conserve os nomes de coluna. first_discount é a primeira taxa sucessiva de desconto aplicada ao preço original, não uma fração: vinte significa vinte por cento; aceitam-se os aliases first_percent, discount1, first e percent1. second_discount é a segunda taxa sucessiva aplicada ao que resta após o primeiro desconto; aceitam-se os aliases second_percent, discount2, second e percent2. Cada campo numérico pode chegar como número JSON ou como cadeia numérica. Campos ausentes, cadeias vazias e valores não finitos falham com invalid_input nomeando o campo. Se qualquer desconto ultrapassar cem, o processador rejeita com invalid_input indicando que um desconto sucessivo que ultrapassa 100 por cento não é permitido: essas falhas não são faturadas. Em caso de sucesso, o corpo ecoa price arredondado a duas casas, first_discount e second_discount, depois informa price_after_first como o valor após só o primeiro desconto, final_price como a cifra de checkout após os dois cortes arredondada a duas casas, savings como price menos final_price, equivalent_percent como o único percentual que coincidiria com o resultado empilhado, e uma cadeia formula que reafirma a identidade. Exemplo: cem a vinte e depois a dez produz price_after_first de oitenta, final_price de setenta e dois, savings de vinte e oito e equivalent_percent de vinte e oito. Combine o JSON com a sua própria regra sobre quais SKUs compartilham essas duas taxas —loja inteira mais cupom, liquidação mais extra de funcionário, ou recorte do vendedor mais código do site— porque este endpoint multiplica os três números que você envia; não consulta um varejista, não aplica um terceiro cupom nem converte moedas. Mantenha as solicitações pequenas, fixe o final_price arredondado nos testes e você obtém uma cifra empilhada reproduzível para planilhas, plugins LMS e workers de borda sem montar um motor de promoções próprio.
Onde uma calculadora de desconto duplo vale o trabalho
Editores de sites de ofertas inserem uma lista publicada e os dois percentuais anunciados, depois fixam final_price e savings para que um post não cite um trinta por cento inventado que depois discorde do checkout. Como a implementação é parse de nível A puro, cada chamada bem-sucedida custa o preço-base publicado US$ 0,002 sem tokens de modelo e sem rede de saída. Mantenha ambos os descontos entre zero e cem inclusive, fixe o final_price arredondado nos testes e você obtém uma cifra empilhada reproduzível para teasers, carrinhos e workers de borda sem montar um motor de promoções próprio.
Casos de integração
Empilhar uma promoção da loja com um cupom antes do checkout
Transforme o ticket original mais dois percentuais anunciados em final_price para que uma pilha de vinte e depois dez não seja citada como um falso trinta por cento de desconto.
Conferir um post de oferta contra dois descontos publicados
Insira a lista da página do varejista e ambos os percentuais, depois confirme que final_price e savings coincidem com a cifra empilhada que você está prestes a publicar.
Perguntas técnicas
Quanto custa a calculadora de desconto duplo?
A ferramenta do navegador é gratuita. Solicitações API usam saldo pré-pago do KIT a US$ 0,002 por chamada bem-sucedida; entrada inválida não é faturada.