Foodops
All docs

Guides · Updated 2026-08-17 · v78bb6e9

Tip Pool

Audio narration for this article is generated with the weekly docs refresh.

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

  1. Open Sales → Tip Pool and start a new distribution.
  2. Set the periodperiodStart and periodEnd. 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]
  3. Optionally scope to one outlet (outletId); leave it off to pool across the organisation.
  4. 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]
  5. Add an optional note for the distribution as a whole.
  6. Save as a draft while you're still adjusting — drafts can be edited or deleted.
  7. 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

Go beyond POS.
Choose the total solution.

Focus on creating the best experience for your guests while we handle the rest.