Dividir dinheiro em cédulas e moedas
Esta calculadora de cédulas e moedas encontra uma forma exata de compor um total com os valores que você informar.
Executar grátis
Ela minimiza a quantidade de peças físicas sem presumir uma moeda nacional nem depender do conhecido método guloso de troco. Informe o valor e as denominações disponíveis, inclusive moedas com casas decimais. O resultado mostra cada denominação com a quantidade necessária, apresenta o total de peças e rejeita claramente valores que não podem ser formados com exatidão.
Informe o valor e as denominações que você pode usar
Comece pelo valor total em dinheiro que precisa montar e depois informe os valores disponíveis de cédulas e moedas. A calculadora não depende da moeda: números como 20, 10, 5, 1, 0.25 e 0.10 funcionam em um sistema decimal, enquanto outro conjunto pode representar vales, fichas ou um caixa sem algumas denominações comuns. Valores totais e denominações podem ter até duas casas decimais. Assim, a conta permanece exata na menor unidade monetária e evita desvios de ponto flutuante. Cada denominação precisa ser positiva e não pode se repetir. A saída ordena os valores do maior para o menor e inclui uma quantidade para todos eles, inclusive zero quando algum valor não é necessário. Isso facilita copiar o resultado para uma folha de caixa, lista de separação, plano de saque ou registro de conferência. A calculadora considera um estoque ilimitado de cada denominação informada; a lista define quais valores existem, não quantas peças você possui no momento.
Por que o resultado realmente usa o menor número de peças
Em muitos sistemas monetários do dia a dia, uma regra simples parece bastar: pegue repetidamente a maior denominação que não ultrapasse o saldo restante. Esse atalho guloso é rápido, mas não funciona para todos os conjuntos de valores. Fichas incomuns, cupons de eventos, moedas estrangeiras ou um caixa sem denominações usuais podem fazer uma combinação que começa com valores menores usar menos peças. Esta calculadora utiliza programação dinâmica. Ela avalia subtotais alcançáveis, registra a menor quantidade de peças capaz de produzir cada um e então reconstrói uma combinação exata para o total solicitado. Como os valores são convertidos em unidades monetárias menores inteiras antes da conta, as comparações são exatas para entradas com duas casas decimais. Se mais de uma combinação tiver o mesmo mínimo, a ordem determinística favorece primeiro as maiores denominações; portanto, a mesma entrada sempre gera o mesmo detalhamento. O processamento tem limite para manter o navegador e a API responsivos. Denominações muito pequenas junto de um total muito grande podem superar o limite publicado de trabalho normalizado e serão recusadas, em vez de consumir recursos sem um limite prático.
Entenda falhas de correspondência exata e use o resultado com segurança
Nem sempre existe uma solução exata. Se todas as denominações forem múltiplas de cinco centavos, por exemplo, um valor terminado em três centavos não poderá ser montado, independentemente da quantidade de peças. A calculadora informa essa condição como erro de entrada, em vez de devolver um valor próximo, arredondar silenciosamente o total ou inventar uma denominação. Essa diferença é importante em conferências de caixa, pacotes de troco preparados e pagamentos controlados, nos quais ficar um pouco abaixo ou acima continua sendo incorreto. Uma resposta bem-sucedida traz o valor normalizado, a quantidade total mínima de peças e o detalhamento por denominação. Quantidades iguais a zero continuam visíveis para que a saída represente todo o conjunto fornecido e possa ser alinhada a uma ficha de estoque. Antes de seguir o plano, lembre-se de que o algoritmo considera ilimitado o estoque de cada valor. Se o seu caixa tiver quantidades restritas, compare a sugestão com o estoque disponível; esta capacidade não resolve o problema diferente de inventário limitado. O mesmo cálculo determinístico funciona no navegador e pela API por US$ 0,002 por solicitação.
Casos de uso
Preparar envelopes de pagamento
Transforme cada pagamento exato em uma lista com o mínimo de peças, usando as denominações aprovadas para distribuição.
Planejar a reposição do caixa
Encontre uma combinação compacta para o valor desejado quando apenas certas cédulas e moedas puderem ser usadas.
Distribuir vales ou fichas de evento
Use um conjunto não convencional e identifique valores que as fichas disponíveis não conseguem representar exatamente.
Perguntas frequentes
A ferramenta sempre encontra o menor número de cédulas e moedas?
Sim. Ela examina subtotais alcançáveis com programação dinâmica e devolve uma combinação exata com o mínimo total de peças.
Posso usar denominações decimais para moedas?
Sim. O valor total e as denominações podem ter até duas casas decimais, como 0.25 ou 0.05.
O que acontece se o valor não puder ser formado exatamente?
A solicitação retorna um erro de entrada explicando que as denominações fornecidas não formam o valor exato. Não há arredondamento para um total próximo.
A calculadora considera o estoque limitado do meu caixa?
Não. Cada denominação listada é considerada disponível em quantidade ilimitada. O estoque não faz parte desta capacidade.
Por que a resposta pode diferir de escolher primeiro o maior valor?
O método guloso do maior para o menor pode ser inferior com denominações personalizadas. Esta calculadora testa combinações e garante o mínimo de peças.
Quanto custa uma solicitação de API?
Cada solicitação de API custa US$ 0,002. A mesma calculadora determinística pode ser usada gratuitamente 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/travel2/currency-cash-denomination-split \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"amount":18.85,"denominations":[10,5,2,1,0.25,0.1,0.05]}'const res = await fetch("https://api.kit.forhosting.com/travel2/currency-cash-denomination-split", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"amount": 18.85,
"denominations": [
10,
5,
2,
1,
0.25,
0.1,
0.05
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/travel2/currency-cash-denomination-split",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"amount": 18.85,
"denominations": [
10,
5,
2,
1,
0.25,
0.1,
0.05
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/travel2/currency-cash-denomination-split", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"amount":18.85,"denominations":[10,5,2,1,0.25,0.1,0.05]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"amount":18.85,"denominations":[10,5,2,1,0.25,0.1,0.05]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/travel2/currency-cash-denomination-split", 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
{
"amount": 18.85,
"denominations": [
10,
5,
2,
1,
0.25,
0.1,
0.05
]
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "travel2.currency_cash_denomination_split",
"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_denominations | 100 |
max_normalized_amount | 250000 |
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. |