Divisione conto per voci
Su un conto di 35 in cibo, con 2,8 di imposta e 6,3 di mancia, Alice, che ha ordinato per 20,5, deve 25,83 e Bob 18,27. Assegni ogni piatto e bevanda a una persona: imposta e mancia seguono ciò che ciascuno ha davvero consumato. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Tax
- 2,8
- Servizio
- 6,3
- Numero di elementi
- 4
- Numero di persone
- 2
- Totale cibo
- 35
- Totale complessivo
- 44,1
I conti del ristorante e gli ordini di gruppo raramente sono equi quando tutti pagano la stessa quota di un totale condiviso. Questo calcolatore di divisione del conto per voci Le consente di assegnare ogni piatto, bevanda o riga a una persona nominata, sommare il subtotale cibo di quella persona e poi ripartire l'imposta assoluta e il servizio del conto in proporzione a quei subtotali, così gli ordini più pesanti sostengono una quota maggiore di imposta e mancia.
Come funzionano l'assegnazione delle voci e l'imposta e il servizio proporzionali
Parta dallo scontrino stampato o dall'app come elenco di righe anziché come un unico totale. Ogni riga porta un importo in una valuta e una stringa person che identifica chi ha ordinato o ha accettato di pagare quel piatto. Le righe con la stessa stringa person confluiscono in un subtotale cibo per quel commensale.
Il calcolatore prende l'importo assoluto dell'imposta e il servizio o mancia scritti sul conto e alloca entrambi con la regola proporzionale classica: la quota d'imposta di ciascuna persona è l'imposta moltiplicata per il subtotale di quella persona diviso per il totale cibo del tavolo, e lo stesso rapporto moltiplica l'importo del servizio. Sommando le tre parti ottiene quanto deve quella persona: subtotale cibo più quota imposta più quota servizio.
La divisione uguale dell'intero conto, comprese imposta e mancia tra N teste, è un'altra intenzione di prodotto trattata altrove; qui l'intento SEO è esplicitamente l'assegnazione per voci con oneri proporzionali. Quando il totale cibo è zero e imposta o servizio restano positivi, il rapporto dividerebbe per zero, quindi il motore rifiuta quella combinazione invece di inventare quote arbitrarie. Quando ogni riga è gratuita e imposta e servizio sono zero, ogni totale per persona è zero e la chiamata ha comunque successo per completezza.
Quando conviene dividere il conto per piatto
Cene di gruppo, pranzi di coworking e consegne condivise necessitano di un dettaglio neutro che tutti possano verificare riga per riga invece di discutere su metà uguali. Demo di hospitality e strumenti di formazione al punto vendita possono mostrare come imposta e servizio si collegano a chi ha davvero ordinato, anziché spargere quote fisse su posti che non hanno ordinato nulla.
Mantenga gli elenchi a dimensioni di tavolo ordinarie, fissi nei test i totali arrotondati per persona e otterrà saldi riproducibili per chat di gruppo, esempi LMS e worker all'edge senza erigere un foglio di calcolo o un motore di mance su misura per ogni lingua che pubblica.
Casi d'uso
Tavoli al ristorante con ordini diversi
Assegni ogni portata e bevanda a un commensale, incolli le righe di imposta e mancia del conto e veda esattamente quanto deve ciascuno senza divisione uguale.
Consegna e asporto di gruppo
Mappi le righe del carrello a coinquilini o colleghi e ripartisca imposta e costi di servizio della consegna in proporzione al subtotale cibo di ciascuno.
Domande frequenti
Imposta e servizio sono percentuali o importi monetari?
Importi monetari assoluti nella stessa valuta delle voci di riga. Copi imposta e mancia o servizio dallo scontrino; sono ripartiti per rapporto di subtotale cibo, non per teste uguali.
E se due persone condividono un piatto?
Divida il piatto in due righe (metà importo ciascuna) assegnate a ciascuna persona, oppure assegni l'intera riga a una e saldi la metà in privato.
Come vengono divise imposta e mancia tra le persone?
In proporzione a quanto ognuno ha ordinato: la sua quota di imposta è l'imposta per il suo subtotale diviso il totale del cibo, e lo stesso vale per la mancia. Con 20,5 su 35, ad Alice spettano 1,64 di imposta e 3,69 di mancia.
Perché non dividere il conto in parti uguali?
Perché chi ha preso solo un'insalata pagherebbe quanto chi ha mangiato una bistecca, imposta e mancia comprese. Qui ognuno paga i propri piatti più la sua parte degli extra; per una divisione uguale usi un calcolatore di divisione in parti uguali.
Come inserisco più piatti della stessa persona?
Scriva esattamente lo stesso nome su ogni riga di quella persona. Le righe con lo stesso nome si sommano in un unico subtotale, quindi hamburger e patatine di Alice diventano 20,5 prima di ripartire imposta e mancia.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
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)Esempio di richiesta
{
"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"
}
]
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "life.itemized_bill_split",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
Elenchi voci vuoti, importi negativi, nomi persona vuoti e imposta o servizio positivi su un subtotale cibo zero falliscono con un chiaro errore invalid_input e non vengono addebitati.
Come funzionano l'assegnazione delle voci e l'imposta e il servizio proporzionali
È lo schema equo che si usa già sul tovagliolo quando un ospite ha preso una bistecca e un altro solo un'insalata, ma senza errori di arrotondamento manuale che lasciano centesimi non riconciliati.
Contratto di ingresso, campi di risposta e regole di validazione
Ogni oggetto richiede amount come numero finito non negativo e person come nome o id breve non vuoto; description opzionale etichetta il piatto nel dettaglio restituito. Entrambi gli oneri sono importi monetari assoluti nella stessa valuta delle righe, non punti percentuali, così Lei copia direttamente le righe di imposta e mancia dallo scontrino. Invii in POST un corpo JSON con un array items obbligatorio da uno a duecento oggetti. Gli alias lines, line_items, dishes e orders sono accettati per l'array quando il Suo client usa già quelle chiavi. L'opzionale tax predefinito a zero accetta alias tax_amount, sales_tax e vat; l'opzionale service predefinito a zero accetta service_amount, service_charge, tip e gratuity. Items mancanti, array vuoti, importi riga negativi, stringhe person vuote, tax o service negativi e numeri non finiti falliscono con invalid_input indicando il problema; tali fallimenti non consumano mai il saldo prepagato. In caso di successo il corpo restituisce item_count, person_count, l'elenco items normalizzato con index, description, amount e person, food_total, tax, service, grand_total e un array people ordinato per prima comparsa di ciascuna stringa person. Ogni riga people include person, subtotal, share_ratio, tax_share, service_share, total e item_count. I campi monetari usano arrotondamento half-up a due decimali con aggiustamento residuo sull'ultima persona a subtotale positivo affinché le quote imposta arrotondate sommino ancora tax, le quote servizio sommino service e i totali per persona sommino grand_total. method è itemized_proportional_tax_service e formula riafferma la regola proporzionale per la visualizzazione accanto al risultato.
Dove un'API di divisione conto per voci crea valore
I bot di spese e rimborso possono accettare lo stesso payload strutturato raccolto da un modulo mobile e restituire totali per persona pronti per un messaggio di saldo o una scrittura contabile. Poiché l'implementazione è aritmetica analitica di livello A senza token di modello né rete in uscita, ogni chiamata riuscita costa il prezzo base pubblicato $0.002 e i fallimenti di validazione sono gratuiti.
Casi di integrazione
Bot spese e app di saldo
Chiami un endpoint prepagato stabile che restituisce totali per persona pronti per messaggi di rimborso, registri o interfacce di richiesta di divisione.
Domande tecniche
Come funziona il calcolatore di divisione del conto per voci?
Invii items come righe {amount, person}, più tax e service assoluti opzionali. Il totale di ciascuna persona è il subtotale cibo più una quota proporzionale di imposta e servizio basata su subtotal su food_total.
Quali errori restituisce il calcolatore?
invalid_input per items vuoti, importi negativi, nomi persona vuoti, tax o service negativi, oppure tax/service positivi quando food_total è zero. Tali fallimenti non vengono addebitati.
Quanto costa il calcolatore di divisione del conto per voci?
Lo strumento nel browser è gratuito. Le richieste API usano il saldo prepagato KIT a $0.002 per chiamata riuscita; l'input non valido non viene addebitato.