送料無料までの不足金額を計算
送料無料しきい値計算ツールは、現在のカート合計と送料無料の基準額から、追加購入が必要な金額を算出します。カートが基準額に達している、または上回っている場合は、エラーではなくゼロを返します。結果はカート内の案内、決済画面、カスタマーサポート、施策テスト、レポートなどで一貫してご利用いただけます。
無料で実行
2つの金額から不足額を算出します
現在の商品合計を current_total、送料無料になる最低額を free_shipping_threshold として入力してください。現在額を基準額から差し引き、差額を amount_needed として返します。たとえば、カートが 42.50、基準額が 60 なら、不足額は 17.50 です。入力値はどちらも有限の0以上の数値で、同じ通貨と会計基準を使用する必要があります。割引、税、ギフトカード、対象外商品を合計に含めるかは、呼び出し前にお客様のアプリケーションで決定してください。減算は通貨を問わないため通貨コードは受け取りませんが、記号や小数桁の表示は適切に整形してください。商品情報の照会、為替換算、非公開の丸め処理は行いません。
条件達成済みのカートも正しく扱います
カートが基準額以上の場合、amount_needed はゼロです。これは正常な結果であり、エラーではありません。値が正のときだけ追加購入の案内を表示し、ゼロなら送料無料の達成を通知できます。完全に一致する場合、基準額を超える場合、基準額自体がゼロの場合にも同じ規則が適用されます。項目の欠落、文字列、null、負数、無限大、数値でない値は、有効な金額ではないため拒否されます。この区別により、ゼロは追加購入不要の正常なカートを示し、入力エラーはデータ契約の不備を示します。計算は決定論的なので、同じ数値からは店舗画面、サーバー、テスト、イベント処理、サポートツールのどこでも同じ結果が得られます。
結果を分かりやすいカート案内に活用します
返された数値を計算結果として受け取り、その後でお客様の表示規則や販売方針を適用してください。正の差額は、通貨と地域に合った形式で「送料無料まであと 12.00 です」のように表示できます。ゼロなら「送料無料の条件を満たしました」に切り替えられます。呼び出し前に、キャンペーン対象商品のみから current_total を求めてください。大型商品、デジタル商品、税、チップ、配送料を除外する店舗もあれば、クーポン適用前の小計を使う店舗もあります。こうした規則を外部で管理すれば、受け取っていない商品情報をツールが推測することはありません。分析時は差額と一緒に基準額と合計も記録してください。API は1回 $0.002、ブラウザー版は同じ純粋な計算を無料で実行します。
活用例
カート内の進捗メッセージ
送料無料になるまでに必要な対象商品の追加金額を正確に表示します。
決済時の条件判定
カート合計と基準額から、常に0以上となる一貫した差額を取得します。
カスタマーサポートでの回答
送料が発生する理由を尋ねられた際に、担当者が迅速かつ同じ基準で計算できます。
よくある質問
カートがすでに条件を満たしている場合はどうなりますか?
amount_needed をゼロとして返します。基準額への到達または超過は正常な結果であり、エラーではありません。
税や割引も自動的に含まれますか?
受け取った current_total をそのまま使用します。対象商品、税、割引、除外条件は事前に店舗側で適用してください。
どの通貨でも利用できますか?
はい。2つの値は同じ通貨と会計基準で入力し、結果の通貨表示はお客様のアプリケーションで整えてください。
どのような入力が拒否されますか?
値の欠落、文字列、null、負数、無限大、数値ではない値は無効な入力として拒否されます。
API での計算料金はいくらですか?
API は1回 $0.002 です。ブラウザー版では同じ決定論的な計算を無料で実行できます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
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)リクエスト例
{
"current_total": 42.5,
"free_shipping_threshold": 60
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "ecom.free_shipping_threshold_gap",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |