Calcule quanto falta para ganhar frete grátis
A calculadora de limite para frete grátis transforma dois valores do pedido em uma resposta prática: quanto o cliente ainda precisa adicionar para se qualificar.
Executar grátis
Informe o total atual do carrinho e o limite definido pela loja; a ferramenta retorna a diferença restante. Se o carrinho já atingiu ou ultrapassou a meta, o resultado é zero, sem gerar erro. O cálculo pode alimentar avisos no carrinho, mensagens no checkout, respostas do suporte, testes e relatórios.
Calcule o valor restante com dois totais
Informe o total atual das mercadorias em current_total e o valor mínimo para a promoção em free_shipping_threshold. A calculadora subtrai o total atual do limite e devolve a diferença em amount_needed. Por exemplo, um carrinho de 42.50 com limite de 60 precisa de mais 17.50. Os dois dados devem ser números finitos, não negativos, na mesma moeda e com o mesmo critério contábil. Sua aplicação deve definir antes se descontos, impostos, vales-presente ou produtos excluídos entram no total elegível. A ferramenta não pede o código da moeda porque a subtração é idêntica em qualquer uma delas, mas você deve formatar a resposta com o símbolo e as casas decimais apropriados. Não há consulta a catálogo, conversão cambial nem arredondamento oculto dos valores enviados.
Trate corretamente carrinhos que já se qualificam
Quando o carrinho atinge ou supera o limite, amount_needed é zero. Esse é um resultado válido, não uma falha. Assim, você pode exibir um incentivo somente se o valor for positivo e confirmar o frete grátis quando ele for zero. A mesma regra vale para uma correspondência exata, um pedido acima da meta e um limite igual a zero. Campos ausentes, textos, valores nulos, negativos, infinitos ou não numéricos são rejeitados por não representarem totais válidos. A distinção é essencial: zero descreve um carrinho correto que não exige gasto adicional; uma resposta de entrada inválida sinaliza um problema no contrato dos dados. Como a operação é determinística, valores idênticos sempre geram a mesma saída na loja, no servidor, nos testes automatizados, em pipelines de eventos e nas ferramentas de atendimento.
Transforme o resultado em uma mensagem útil
Considere o número retornado como o cálculo básico e aplique depois as regras de apresentação e merchandising da sua operação. Uma diferença positiva pode virar “Adicione mais 12.00 para ganhar frete grátis”, com a moeda e a localidade corretas. Um zero pode ativar “Você já ganhou frete grátis”. Antes da chamada, derive current_total apenas dos produtos elegíveis para a promoção. Algumas lojas excluem itens volumosos, produtos digitais, impostos, gorjetas ou taxas de entrega; outras avaliam o subtotal antes dos cupons. Manter essas decisões fora da ferramenta evita presumir regras de um catálogo que ela não recebeu. Para análises, registre o limite e o total junto da diferença. Cada solicitação de API custa US$ 0,002, enquanto a versão no navegador executa gratuitamente a mesma função pura, facilitando auditoria, testes e integração.
Casos de uso
Mensagem de progresso no carrinho
Mostre ao cliente o valor elegível exato que ainda falta para liberar o frete grátis.
Verificação de elegibilidade no checkout
Converta o total e o limite em uma diferença consistente, sempre igual ou superior a zero.
Respostas da equipe de atendimento
Dê aos agentes um cálculo rápido e repetível quando alguém perguntar por que o frete ainda é cobrado.
Perguntas frequentes
O que acontece quando o carrinho já se qualifica?
A calculadora devolve amount_needed igual a zero. Atingir ou ultrapassar o limite é um resultado válido, não um erro.
A calculadora inclui impostos ou descontos?
Ela usa current_total exatamente como você o fornece. Aplique antes as regras da loja para elegibilidade, impostos, descontos e exclusões.
Posso usar qualquer moeda?
Sim. Os dois valores devem estar na mesma moeda e seguir o mesmo critério contábil. Formate o resultado monetário na sua aplicação.
Quais entradas são rejeitadas?
Valores ausentes, textos, nulos, negativos, infinitos e dados não numéricos são rejeitados como entrada inválida.
Quanto custa um cálculo pela API?
Cada solicitação de API custa US$ 0,002. A versão para navegador executa gratuitamente o mesmo cálculo determinístico.
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/ecom/free-shipping-threshold-gap \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"current_total":42.5,"free_shipping_threshold":60}'const res = await fetch("https://api.kit.forhosting.com/ecom/free-shipping-threshold-gap", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"current_total": 42.5,
"free_shipping_threshold": 60
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/ecom/free-shipping-threshold-gap",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"current_total": 42.5,
"free_shipping_threshold": 60
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/ecom/free-shipping-threshold-gap", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"current_total":42.5,"free_shipping_threshold":60}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"current_total":42.5,"free_shipping_threshold":60}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/ecom/free-shipping-threshold-gap", 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
{
"current_total": 42.5,
"free_shipping_threshold": 60
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "ecom.free_shipping_threshold_gap",
"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. |