郵便切手計算ツール
この郵便切手計算ツールは、必要な郵便料金以上になる実用的な切手の組み合わせを求めます。必要額と主に使う切手の額面を入力すると枚数をすぐに計算でき、異なる額面をお持ちの場合は追加することもできます。結果には必要枚数、充当される金額、避けられない超過額、額面ごとの内訳が表示されます。近似的な浮動小数点比較ではなく、整数に換算した通貨単位で処理するため、発送窓口や郵便室、自動化された受注処理でも再現性のある結果をご利用いただけます。
無料で実行
必要な郵便料金とお手元の切手をご入力ください
まず、配送業者、郵便事業者、または発送ソフトウェアが示した郵便料金の合計をご入力ください。次に、主に使用する切手の額面を入力します。お手元の切手がすべて同じ額面であれば、この2つだけで計算できます。ツールは必要額に達する最小の枚数を求めます。複数の額面をお持ちの場合は、追加額面として登録してください。登録した各額面は何枚でも使えるものとして計算されるため、在庫数の上限は考慮されません。金額には小数点以下3桁まで指定でき、1セントより細かな単位を使う通貨や郵便商品にも対応します。必要額とすべての額面には同じ通貨をお使いください。この機能は数値を計算するもので、為替換算は行いません。重複する額面は自動的にまとめられます。必要額がゼロなら切手は0枚になりますが、額面は必ず正の値でなければなりません。ゼロまたは負の切手では有効な組み合わせを作れないためです。
最適な組み合わせの選び方
最初の目的は、必要額を超えて支払う金額を最小にすることです。ツールは、必要な郵便料金以上で実現できる最も低い合計額を探します。そのため、ちょうどの金額になる組み合わせは、切手の枚数が多くても、超過する組み合わせより常に優先されます。支払可能な最小合計額が決まった後、その金額を作れる組み合わせのうち、切手の枚数が最も少ないものを選びます。この優先順位は、まず郵便料金の無駄を避け、次に貼り付ける切手を減らすという一般的な発送作業に合っています。内部では、組み合わせを調べる前にすべての金額を整数へ換算します。たとえば小数点以下2桁の金額は、整数の100分の1単位として扱います。これにより、二進浮動小数点の誤差で本来一致する金額がわずかに不足しているように判定されることを防ぎます。探索には明確な上限があり、結果は決定的です。ネットワークを使用せず、ブラウザーと API のどちらでも同じ内訳を返します。
結果をご確認のうえ安全にご利用ください
結果は4つの情報に分かれています。必要枚数は、選ばれた組み合わせに含まれる実際の切手の総数です。必要郵便料金には正規化された目標額が再掲されるため、後から記録を比較しやすくなります。郵便料金合計は推奨された切手の額面合計で、超過額はその合計と目標額との差です。内訳には、実際に使用する額面と枚数だけが表示されます。発送前には、入力した金額が配送業者の最新見積もりと一致していること、各切手が対象のサービス、宛先、郵便種別、発送日に使用できることをご確認ください。このツールが行うのは算術計算のみです。最新料金の照会、地域ごとの利用制限の判定、料金の予約、ラベルの印刷は行いません。また、各額面を無制限に使えるものと仮定します。在庫に限りがある場合は、十分な枚数を用意できる額面だけを入力し、封筒や荷物を準備する際に現物の枚数をご確認ください。自動処理では、同じ決定的な応答を発送指示や郵便室の作業票に1回 $0.002 でご利用いただけます。
活用例
封筒を準備する
同じ額面の切手で手紙の料金を満たす最小枚数を求め、貼る前に超過額をご確認いただけます。
異なる額面を組み合わせる
お手元の複数の切手を使い、郵便料金の超過が最も小さくなる組み合わせを選べます。
郵便室の指示を自動化する
配送業者が提示した料金を、発送担当者向けの再現可能な額面別内訳へ変換できます。
よくある質問
利用料金はいくらですか?
ブラウザーでは無料で実行できます。API の各リクエストは $0.002 です。
1種類の額面で必要額を正確に作れない場合はどうなりますか?
必要額以上で実現できる最小の合計を選び、その合計を作る切手の枚数を最小化します。
異なる額面の切手を組み合わせられますか?
はい。主となる額面を指定し、ほかの額面を additional_denominations に追加してください。
額面を正の値にする必要があるのはなぜですか?
ゼロまたは負の値は有効な郵便料金にならず、枚数の最適化も成立しないため、無効な入力として扱われます。
最新の郵便料金も確認できますか?
いいえ。配送業者または郵便事業者から得た必要額をご入力ください。この機能は切手の組み合わせだけを計算します。
手元にある切手の在庫枚数も考慮されますか?
いいえ。入力した各額面は、枚数の上限なく使用できるものとして計算されます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/date/postage-stamp-count \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"total_postage":2.73,"denomination":0.68}'const res = await fetch("https://api.kit.forhosting.com/date/postage-stamp-count", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"total_postage": 2.73,
"denomination": 0.68
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/postage-stamp-count",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"total_postage": 2.73,
"denomination": 0.68
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/postage-stamp-count", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"total_postage":2.73,"denomination":0.68}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"total_postage":2.73,"denomination":0.68}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/postage-stamp-count", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"total_postage": 2.73,
"denomination": 0.68
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.postage_stamp_count",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_amount | 100000 |
max_denominations | 20 |
max_decimal_places | 3 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |