明細割り勘計算機
料理代35、税2.8、チップ6.3の会計で、20.5分を頼んだAliceは25.83、Bobは18.27を払います。料理と飲み物をそれぞれ人に割り当てれば、税とチップは各自が実際に頼んだ分に応じて分かれます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- Tax
- 2.8
- サービス
- 6.3
- 項目数
- 4
- 人数
- 2
- 食費合計
- 35
- 総合計
- 44.1
レストランの会計やグループ注文は、全員が同じ総額の均等負担では公平になりにくいものです。この明細割り勘計算機では、各料理・飲み物・明細行を指名した人に割り当て、その人の食事小計を集計し、伝票上の絶対額の税とサービス料(またはチップ)をその小計の比率で配分します。注文が多い人ほど税とチップの負担が大きくなります。
明細の割り当てと比例配分の税・サービス料の仕組み
印刷された伝票やアプリの会計を、一括の総額ではなく行の一覧として扱ってください。各行は単一通貨の金額と、誰がその料理を注文したか(または支払うことに合意したか)を示す person 文字列を持ちます。同じ person 文字列の行は、その食事客の食事小計にまとめられます。
計算機は伝票に記載された絶対額の税と、サービス料またはチップを取り、古典的な比例規則で両方を配分します。各人の税負担は税にその人の小計を掛けて卓の食事合計で割った値であり、同じ比率がサービス料にも掛かります。三つの要素を足すと、その人が支払うべき金額になります。
食事小計に税負担とサービス負担を加えたものです。ステーキを頼んだ人とサラダだけの人がいるときにナプキンで行う公正な割り勘と同じ考え方ですが、手計算の丸め誤差で端数が合わなくなることはありません。税とチップを含む全額を N 人で均等に割るのは別の製品意図であり、ここでは明細割り当てと比例の上乗せ費用という SEO 意図を明示しています。
食事合計がゼロなのに税やサービス料が正の場合、比率はゼロ除算になるため、エンジンは任意の負担を捏造せずその組み合わせを拒否します。すべての行が無料で税とサービス料がゼロのときは各人の合計もゼロとなり、完全性のため呼び出しは成功します。
料理ごとの割り勘が役立つ場面
会食、コワーキングのランチ、共同デリバリーでは、均等半分で揉める代わりに、誰もが行単位で監査できる中立な内訳が必要です。ホスピタリティのデモや POS 研修ツールは、何も頼んでいない席に固定費を均等配分するのではなく、実際に注文した人に税とサービスが結び付く様子を示せます。
リストは通常の卓人数に保ち、丸めた一人あたり合計をテストに固定すれば、表計算や言語ごとの独自チップエンジンを立てずに、グループチャット、LMS 例、エッジワーカー向けの再現可能な精算が得られます。
活用例
注文が異なるレストランの卓
各料理と飲み物を食事客に割り当て、伝票の税とチップ行を貼り付け、均等割りなしで各人がいくら払うべきかを正確に確認します。
デリバリーとグループのテイクアウト
カート行を同居人や同僚に対応付け、配達の税とサービス料を各人の食事小計に比例して配分します。
よくある質問
税とサービス料はパーセントですか、金額ですか?
明細と同じ通貨の絶対金額です。レシートから税とチップまたはサービス料をコピーしてください。頭数均等ではなく、食事小計の比率で配分されます。
二人で一つの料理を分ける場合は?
料理を二行(各半額)に分けて各人に割り当てるか、一行を一人に割り当てて半額は私的に精算してください。
税とチップはどのように分けられますか?
各自の料理代の割合で分けます。税の負担は、税に本人の小計を掛けて料理代の合計で割った額で、チップも同じです。35のうち20.5を頼んだAliceは、税1.64、チップ3.69になります。
均等に割り勘しないのはなぜですか?
均等に割ると、サラダだけの人もステーキを食べた人と同じ額を払うことになります。ここでは各自が自分の料理代と、それに見合う税とチップを払います。均等割りには均等割り勘の計算ツールを使ってください。
同じ人の料理が複数あるときはどう入力しますか?
その人の各行にまったく同じ名前を書きます。同じ名前の行は1つの小計にまとめられるので、Aliceのハンバーガーとポテトは、税とチップを分ける前に20.5になります。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/life/itemized-bill-split \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"items":[{"description":"Burger","amount":14.5,"person":"Alice"},{"description":"Salad","amount":11,"person":"Bob"},{"description":"Fries","amount":6,"person":"Alice"},{"description":"Soda","amount":3.5,"person":"Bob"}]}'const res = await fetch("https://api.kit.forhosting.com/life/itemized-bill-split", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"items": [
{
"description": "Burger",
"amount": 14.5,
"person": "Alice"
},
{
"description": "Salad",
"amount": 11,
"person": "Bob"
},
{
"description": "Fries",
"amount": 6,
"person": "Alice"
},
{
"description": "Soda",
"amount": 3.5,
"person": "Bob"
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/life/itemized-bill-split",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"items": [
{
"description": "Burger",
"amount": 14.5,
"person": "Alice"
},
{
"description": "Salad",
"amount": 11,
"person": "Bob"
},
{
"description": "Fries",
"amount": 6,
"person": "Alice"
},
{
"description": "Soda",
"amount": 3.5,
"person": "Bob"
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/life/itemized-bill-split", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"items":[{"description":"Burger","amount":14.5,"person":"Alice"},{"description":"Salad","amount":11,"person":"Bob"},{"description":"Fries","amount":6,"person":"Alice"},{"description":"Soda","amount":3.5,"person":"Bob"}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"items":[{"description":"Burger","amount":14.5,"person":"Alice"},{"description":"Salad","amount":11,"person":"Bob"},{"description":"Fries","amount":6,"person":"Alice"},{"description":"Soda","amount":3.5,"person":"Bob"}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/life/itemized-bill-split", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"items": [
{
"description": "Burger",
"amount": 14.5,
"person": "Alice"
},
{
"description": "Salad",
"amount": 11,
"person": "Bob"
},
{
"description": "Fries",
"amount": 6,
"person": "Alice"
},
{
"description": "Soda",
"amount": 3.5,
"person": "Bob"
}
]
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "life.itemized_bill_split",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
計算は完全に決定的で、同じ明細・税・サービス料は常に同じJSONを返すため、グループチャット、経費ボット、ホスピタリティのデモ、継続的インテグレーションのフィクスチャに適しています。空の明細、負の金額、空の人名、食事小計がゼロなのに税やサービス料が正の場合は、明確な invalid_input エラーで失敗し、課金されません。
入力契約、応答フィールド、検証規則
各オブジェクトには非負の有限数 amount と、空でない名前または短い id の person が必要です。任意の description は返却される内訳で料理をラベルします。どちらも行と同じ通貨の絶対金額であり、パーセント点ではありません。レシートの税行とチップ行をそのままコピーできます。必須の items 配列(1〜200 個のオブジェクト)を含む JSON ボディを POST してください。クライアントが既に lines、line_items、dishes、orders を使っている場合、配列の別名として受け付けます。任意の tax は既定値ゼロで、別名 tax_amount、sales_tax、vat を受け付けます。任意の service は既定値ゼロで、別名 service_amount、service_charge、tip、gratuity を受け付けます。items 欠落、空配列、負の行金額、空の person、負の tax または service、非有限数は問題を示す invalid_input で失敗し、前払い残高は消費しません。成功時は item_count、person_count、index・description・amount・person を含む正規化 items、food_total、tax、service、grand_total、各 person 文字列の初出順の people 配列を返します。people の各行には person、subtotal、share_ratio、tax_share、service_share、total、item_count が含まれます。金額は half-up で小数第二位に丸め、正の小計を持つ最後の人で残差を調整し、丸めた税負担の合計が tax、サービス負担の合計が service、各人 total の合計が grand_total になるようにします。method は itemized_proportional_tax_service、formula は比例規則を結果の横に表示するための文字列です。
明細割り勘 API が役立つ場面
経費・精算ボットはモバイルフォームが集めた同じ構造のペイロードを受け取り、精算メッセージや仕訳用の一人あたり合計を返せます。実装はモデルトークンも外向きネットワークもないティア A の解析的算術であるため、成功呼び出しは公開された基本価格 $0.002 で、検証失敗は無料です。
連携の活用例
経費ボットと精算アプリ
払い戻しメッセージ、台帳、割り勘依頼 UI 向けに一人あたり合計を返す、安定した前払いエンドポイントを呼び出します。
技術的な質問
明細割り勘計算機はどのように動作しますか?
items を {amount, person} の行として送り、任意で絶対額の tax と service を付けます。各人の合計は食事小計に、subtotal を food_total で割った比率の税とサービスを加えたものです。
計算機はどのようなエラーを返しますか?
空の items、負の金額、空の人名、負の tax または service、food_total がゼロなのに正の tax/service のときは invalid_input です。これらの失敗は課金されません。
明細割り勘計算機の料金はいくらですか?
ブラウザツールは無料です。API リクエストは成功呼び出しごとに前払い KIT 残高から $0.002 です。無効な入力は課金されません。