Plain-English summary
Tip Pool is where a restaurant gathers the tips taken over a period and splits them fairly across the staff who worked it. You pick a date range (and optionally one outlet), the system totals the tips collected in that window, and you build a distribution: one line per staff member with the hours they worked and a weight (so a section server and a busser can share at different rates), and each person's share of the pot. While you're still working on it the distribution is a draft you can edit or delete; when the numbers are right you finalize it and it becomes the locked record of who got what. It's a restaurant-only feature — it appears under Sales → Tip Pool in the back office for orgs on the restaurant plan, and not for retail (Shops).
When you'd use this
- End of a shift, day or pay period, to divide pooled tips among the team who earned them.
- When different roles should share tips at different rates (weight lets you do that without maths by hand).
- To keep an auditable record of each tip payout — draft while you reconcile, finalized once agreed.
Where to find it
Back office → Sales → Tip Pool, which opens /restaurant/tip-pool. [code: foodops-admin-app/apps/admin/src/config/brands.ts:312 — nav id 'sales-tip-pool', label 'Tip Pool', path '/restaurant/tip-pool', requiresFeature: 'restaurant' @ main] The page is headed "Tip Pool". [code: apps/admin/src/App.tsx:2623 route /restaurant/tip-pool → pages/restaurant/TipPoolPage.tsx @ main]
It is a restaurant-feature entry (requiresFeature: 'restaurant'), so a retail/Shops login won't see it, and viewing it needs a register-read role. [code: apps/admin/src/config/routePermissions.ts:255 — /restaurant/tip-pool anyOf REGISTER_READ @ main]
Walkthrough — creating a distribution
- Open Sales → Tip Pool and start a new distribution.
- Set the period —
periodStartandperiodEnd. The system reads the tips collected in that window; the period summary shows total tips collected and the payment count behind it.[code: apps/admin/src/types/restaurant/tipPool.ts — TipPoolPeriodSummary { periodStart, periodEnd, outletId, totalTipsCollected, paymentCount } @ main] - Optionally scope to one outlet (
outletId); leave it off to pool across the organisation. - Add a line per staff member. Each line carries the staff member (
applicationUserId), their hours, a weight, and the share amount they receive.[code: tipPool.ts — TipDistributionLineInput { applicationUserId, hours, weight, shareAmount, notes } @ main] - Add an optional note for the distribution as a whole.
- Save as a draft while you're still adjusting — drafts can be edited or deleted.
- When it's right, Finalize. The status moves draft → finalized and the distribution becomes the locked payout record.
[code: TipPoolPage.tsx — Finalize / Delete actions; TipDistributionStatus = 'draft' | 'finalized' @ main]
Key concepts
- Hours + weight. A line has both. Hours capture who worked how long; weight lets roles share at different rates (e.g. a server weighted higher than a runner) without you pre-computing percentages. The share amount is what that person actually receives.
- Draft vs finalized. A draft is a work-in-progress you can change or remove. Finalizing locks it as the record of the payout — treat finalize as the "this is agreed" step.
- Total tips collected is derived from the payments in the period, not typed in — the tool splits a real pool, it doesn't invent a figure.
- Restaurant only. No Tip Pool screen exists for Shops/retail orgs.
Common questions
Q: Where is Tip Pool?
A: Back office → Sales → Tip Pool (/restaurant/tip-pool). It's a restaurant-plan feature, so if you don't see it, your organisation may be on retail (Shops) rather than restaurant, or your role may lack register access.
Q: How do I split tips between staff? A: Create a distribution for the period, then add one line per person with their hours and a weight, and set each person's share of the pooled total. Save as a draft, then finalize when the split is agreed.
Q: What does the weight do? A: It lets different roles share at different rates. Two people with the same hours but different weights get different shares — useful when, say, servers and bussers pool together but don't split evenly.
Q: Can I change a distribution after I've made it? A: While it's a draft, yes — edit or delete it. Once you finalize, it's the locked payout record; you'd create a new distribution rather than rewrite a finalized one.
Q: I can't find Tip Pool — where has it gone?
A: It only appears for restaurant orgs (requiresFeature: 'restaurant') and needs a register-read role. A retail/Shops login or a role without register access won't show it. Check with an admin which brand/feature set and role your account has.
Q: Does it pull the tips automatically, or do I type the total? A: The total tips collected for the period is read from the payments in that window — you're splitting a real pool. You set how it divides (the per-person hours, weight and share), not the pot total.
Edge cases and known issues
Tip Pool isn't in my menu
- Cause: It's gated on the restaurant feature and a register-read permission. Retail/Shops orgs and roles without register access don't see it.
[code: brands.ts:312 requiresFeature 'restaurant'; routePermissions.ts:255 REGISTER_READ @ main] - Workaround: Confirm with an admin that your org is on the restaurant plan and your role includes register access.
Related
- Cash Handling and Cash Variance — the drawer side of end-of-shift money.
- Service Fees — a separate charge added to bills, not the same as pooled tips.
- Reports Catalogue — where sales and payment totals live.