Table Service¶
Your servers run each table from the Badger app: open a tab when the party sits down, take the order seat by seat and course by course, send each course to the kitchen when the table is ready for it, then show the bill, split it however the table likes and take each guest's payment, with their tip, at the table. The admin keeps the records the law asks of you: every tip and service charge, your written tip policy, and every dish taken off a bill with the manager who approved it.
In development, off by default
Table service is switched on per shop with Settings › Dining in › Table service
(table-service-enabled). It works alongside table bookings but doesn't need
them: walk-ins get a tab just the same. Setting it up step by step is in
Table service (admin).
The floor¶
The app's Floor shows every table in the dining room, coloured by where it is in the meal: free, booked soon, seated, ordered, waiting for the next course, food ready at the pass, bill asked for, paying, and paid but still to clear. Each shows how long the party has been there and who is serving it. Tap a table to open its tab.
A party seated from a booking keeps the booking: the diary shows them seated, and the table frees up when the tab is cleared. Tables can be pushed together (the tab says "12+13"), a tab can move to another table, lines can move between tabs, and two tabs can be merged before anyone has paid. Only the table's own server or a manager can move, merge or hand over a table.
The menu a server orders from is the dining room's menu collection (its child collections are the sections), or the till's menu when none is set. A table's bill takes dishes, drinks and other goods, but not gift cards, top-ups, tickets, appointments, subscriptions or donations: those are greyed out and sold at the till.
Courses¶
Each line on a tab has a seat (or "shared", for the bread and the bottle of wine) and a course: drinks, starters, mains, desserts. Send sends what has been taken: drinks and the course being eaten go straight to the kitchen, later courses are held there, greyed out, so the kitchen can plan them. Away (also called "fire") tells the kitchen to start the next course. Each fire shows on the kitchen board with the table, the covers and the course, each dish with its seat and its allergens as icons (tap one for its name), and the server sees when it's ready at the pass and when it's served. The kitchen ticks off each dish as it's made with the small ring beside it; ticked, the dish is crossed through, and a second tap brings it back.
Taking things back¶
What happens when a guest changes their mind depends on how far the dish has got:
| Where the dish is | What the server does | Approval |
|---|---|---|
| Taken, not sent | Delete it | None |
| Sent, not made yet | Void it: the kitchen is told to stop | A manager |
| Made or served | Comp it: it stays on the bill at nothing | A manager |
A manager approves on their own phone, or by typing their approval PIN on the server's phone. Five wrong PINs in a row lock it for 15 minutes. A manager's own void or comp approves itself. Each void and comp records the reason, who asked, who approved and when, and Voids and comps in admin lists them with what they took off bills, so you can see where food is being lost.
Clearing the table¶
When a paid table is cleared, anything still outstanding is closed off so the history doesn't say a dish is still being made: fires still on the kitchen board are marked served, and a course that was held back and never sent (but paid for) is marked served too. Nothing is sent to the kitchen at that point. Each step nobody took is recorded against the tab, as never sent to the kitchen (the server's step), the kitchen didn't mark it ready (the station's) or not marked served (the server's or runner's), so managers can see who isn't working the system. See Missed steps below.
The bill and splitting it¶
The bill shows the food and drink, the optional service charge (if you use one) and the total. A table can pay in one go or split it:
- Equally, between however many people;
- By seat, with shared dishes spread across the seats;
- By item, each guest picking what they had (a line of two can be split into two lines);
- By amount, for "I'll put £40 on mine".
Each share is paid on its own, by card on the reader or with Tap to Pay, or in cash, and is taken the moment it's approved, so a guest who has paid can leave. A paid share locks its dishes so nobody pays for the same thing twice. Shares always add up to the penny, and the service charge is shared out in proportion. When the shares cover the bill the tab closes itself and the table is marked for clearing.
Tips¶
Tips are never part of the bill. The guest chooses one after the bill and it is charged with their share. The choice always offers No tip and a custom amount, and nothing is chosen for them (the government said in 2026 that digital tip screens must work this way). Because tips sit outside the bill, they never count towards promotions, your sales figures or VAT: a tip freely given is outside the scope of VAT.
Where the guest chooses depends on what takes the card:
| Taking the card on | Where the guest chooses the tip |
|---|---|
| A smart reader with a screen (Stripe Reader S700/S710, BBPOS WisePOS E, BBPOS WisePad 3) | On the reader, before they tap. The suggestions are the ones in your Stripe reader configuration. |
| Tap to Pay on the server's phone | On the app's tip screen. The server hands the phone to the guest, who picks a tip, then hands it back; the server taps to pay for the share plus the tip. |
| A reader without a screen (such as the Stripe M2) | On the app's tip screen, as for Tap to Pay, then the card goes on the reader. |
The app's tip screen shows the share, the suggested percentages with what each comes to in pounds,
Custom and No tip. When the bill already has a service charge, the screen says so plainly
and starts on No tip, so nobody tips twice without meaning to. A tip above the share's own amount
is usually a slip, so the app asks the guest to confirm it ("That's more than the bill, are you
sure?"); once confirmed there is no upper limit (tipConfirmed on the payment). Cash tips are taken
as entered.
Two settings in Settings › Dining in shape the app's screen:
- Suggested tips (%) (
dining-tip-suggestions): up to four percentages, each at most 50, for example10,12.5,15(the default). Blank offers only No tip and a custom amount. - Suggested tips are worked out on (
dining-tip-base): the food and drink before the service charge (the default) or the total after it.
Every tip record says where the tip was chosen (on the reader, in the app or in cash) and how the card was taken (reader or Tap to Pay).
Service charge¶
You can add an optional service charge, for example 12.5%, to every table or only to parties of a certain size. The bill and the payment screen call it "Optional service charge 12.5%", and the server removes it if the guest asks: who removed it, when and why are recorded. The percentage is taken from your settings when the table opens, so changing it mid-service doesn't move a bill already running.
Only an optional charge is offered, on purpose. Since April 2025 a charge the guest must pay has to be included in your menu prices rather than added at the bill, and a compulsory service charge is part of the price for VAT. If you want a compulsory charge, put it in your prices instead.
Tips and the law¶
The Employment (Allocation of Tips) Act 2023 (in force from 1 October 2024) and its statutory Code of Practice apply to every tip and service charge you, the employer, receive or control, which includes card tips and the optional service charge. In short:
- Pass on all of it. Tips and service charge go to your workers in full, without deducting card fees. They must be shared fairly among the workers at the place of business (an independent tronc counts), and paid no later than the end of the month after the guest paid.
- Have a written policy if you take tips more than now and then, saying how they're shared, and
make it available to every worker, with each change. Badger keeps each version of your tip policy
with the date it was made available, shows it to staff in the app, and can show it to guests at
/tip-policyif you link to it. - Keep records for three years of the tips and service charge received and how they were shared. Badger records every payment that carries a tip or service charge: the place of business, when it was paid, how (card or cash), the gross amounts kept apart from the bill, the table, the server and who took it. These records can't be deleted for three years, and they never travel with a site export.
- Answer workers' requests. A worker can ask for the tip records about them once every three months, and you have four weeks to answer. Their answer covers the totals you received and their own share, never other workers' amounts. Admin has a worker requests log that tracks the four weeks and downloads each worker's statement.
- An employment tribunal can order you to pay a worker up to £5,000 for money lost when the rules aren't followed.
A revised Code of Practice was withdrawn in July 2026 for a fresh consultation, so the 2024 Code still applies. This page is a summary, not legal advice; the Act and Code are on GOV.UK.
What Badger doesn't do for you (yet). Sharing the pool among your staff (by points, hours or role) stays in your payroll for now. The tips report gives the monthly pool for each place of business, and its CSV export is shaped to feed your payroll; the worker's statement says their share comes from payroll. A cash tip is recorded when the server enters it with the share's cash payment; cash handed straight to a server outside the bill isn't recorded.
The Manager section¶
Managers have a Manager screen in the Badger app at their dining room: floor managers (Approve voids and comps) and anyone who may give refunds (the POS supervisor role). It has two parts.
How today is going, refreshed every minute: covers seated, still booked, walk-ins, no-shows and cancellations; sales after voids, comps and refunds against the same weekday last week up to the same time; service charge, tips and the average per cover; open and free tables, with the five sat longest; the kitchen's average ticket time, late fires and dishes gone; voids, comps, walk-outs and refunds; and each server's tables, covers, sales and tips. No guest details.
Bills after they've closed. The day's paid, cleared and voided bills, newest first, searchable by table, order number or amount. Opening one shows the bill as it was paid, with any refunds. When a guest complains after paying, someone who may refund chooses an amount (or everything) and a reason (cold food, wrong dish, long wait, quality, overcharged, other):
- Card payments go back first, to the card they came from, with no tap needed. Then cash: the app says how much to hand back from the till, and it's recorded as paid out.
- Tips only go back when you refund more than the food, drink and service charge.
- The order's payment shows as part or fully refunded in Orders, and a refund on a booked table counts as a complaint on the guest's history.
- If a card refund can't be confirmed (Stripe didn't answer in time), the app says so and the amount
is held as given back, so nobody can refund it twice; trying again finishes it. A card refund Stripe
is still sending shows as pending until Stripe says it has gone. If Stripe or the bank can't send
it, it stops counting and that amount can be refunded again. This needs the Stripe webhook to send
the
charge.refund.updated(orrefund.updatedandrefund.failed) events: System, Stripe webhooks shows whether it does, and adds them.
Floor managers who can't give refunds see both parts but not the refund button.
Reports¶
| Report | Where | What it shows |
|---|---|---|
| Tips | Table service › Tips | Tips and service charge for a period, by month and place of business (the pool), by server, by day, card and cash; CSV of every record |
| Tip policy | Tips › Tip policy | Every version, when each was made available and applies from |
| Worker requests | Tips › Worker requests | Who asked, for which period, when it's due, the statement to send |
| Voids and comps | Table service › Voids and comps | Each one with the dish, the amount, the reason, who asked and who approved |
| Missed steps | Table service › Missed steps | Courses never sent, fires the kitchen never marked ready and fires nobody marked served, found when the table was cleared; counted by server and by station |
| The tab | Orders, a dine-in order | Seats, courses, fires, what was taken back, moves, the shares, payments and tips |
The MCP tableService tool reads the same numbers for an assistant: open tabs (tabs), a day's covers and
takings, and the tips totals (never per worker).
Underneath¶
| Piece | What it is |
|---|---|
| A tab | An open order with channel DINE_IN and dineIn details: tables, covers, server, fires, shares, service charge, moves and corrections. Only TabService changes it. |
TipRecord |
One per paid share with a tip or service charge (tipRecords), kept three years. |
TipPolicy |
A version of the written policy (tipPolicies); never edited, a change is a new version. |
TipRecordRequest |
A worker's request for their records (tipRecordRequests), with its due date; kept three years. |
DiningApproval |
A manager's one-use approval for a void or comp (diningApprovals). |
TableServiceReportService |
The read-only reports: open tabs, a day, the tips report and exports, voids and comps. |
| Refunds | Kept on the tab (dineIn.refunds): amount, card and cash parts, each share's Stripe refund, reason, who and when. Only TabRefundService adds them. |
DiningDaySummaryService, ClosedTabService |
The Manager section's day summary and closed bills, read-only. |
Tip records, policies, requests and approvals are not part of the site data transfer: they're the employer's records for this site.