Catering & Group Orders

Catering — without the spreadsheet chaos

A dedicated catering channel with proper guard-rails: lead time, deposit, quote workflow, and recurring office contracts.

What is the Catering channel?

A separate ordering surface from your regular menu. Customers land on /catering, see only the items you've tagged catering-eligible (with pack-size pricing — Small/Medium/Large tray), enter event details, and submit a quote request.

You review the request in /admin/catering, add custom line items (server staff, linens, setup fee), set deposit terms, and send the quote with one click. Customer accepts via email link, deposit charges to Stripe, balance auto-captures 24 hours before the event.

Why a dedicated catering channel matters

Lead-time enforcement

No more last-minute 100-guest orders that derail Saturday service. Set the minimum hours and the form refuses earlier dates.

Deposit + balance pacing

30% deposit at quote acceptance, balance auto-captures 24h before the event. Both happen in Stripe — no manual chasing.

Pack-size pricing

One product, multiple trays. Small Tray serves 5, Large serves 20 — each with its own price multiplier. No duplicating products on your menu.

Recurring contracts

Turn a successful one-off into an annuity. Weekly office lunch, every Tuesday at 12:30 — clones the bill automatically each cycle.

How catering flows end to end

1

Customer submits on /catering

Picks pack sizes, enters event date and address, contact details. Lead-time + minimum-order checks run server-side before submit.

2

Operator quotes in /admin/catering

Reviews the items, adds custom line items ("Setup +€80", "Server staff 4h × 2 +€240"), overrides bulk pricing if needed, clicks Send Quote.

3

Customer accepts via email

Branded email with itemised quote, total, deposit due. One click accepts; deposit charges immediately, bill flips to OPEN.

4

Balance auto-captures before event

24 hours before, cron sweeps and captures the remaining balance. On event day, the order shows on KDS like any other.

Built for the way caterers actually work

Custom non-menu line items

Charge for staff, linens, equipment rental, setup fees — anything that isn't on the regular menu.

  • Per-unit amount + quantity
  • Taxable / non-taxable toggle
  • Internal notes per line
  • Audit log of every add/remove

Quote workflow built into the Bill state machine

QUOTE_PENDING → QUOTE_SENT → OPEN. No bolt-on tooling — same audit log, permissions, and Pusher events as the rest of your bills.

  • QUOTE_SENT → 7-day reminder, 14-day auto-reject
  • Customer can decline; you see the reason
  • Optional auto-approve for venues that don't want operator review
  • Full edit log of every quote revision

Recurring contracts (weekly / bi-weekly / monthly)

Office lunch programs are sticky. Promote a one-shot into recurring with two clicks; cron generates the next bill on cadence.

  • Pause for holidays
  • Edit template — propagates forward
  • Per-cycle email to the customer
  • Full recurrence log per contract

Pack-size pricing

Each catering-eligible product can have multiple pack sizes — Small / Medium / Large — each with a price multiplier. UI shows "Serves N" and a running total.

  • Multipliers up to 3-decimal precision
  • Per-pack-size translations (EN/BG/EL)
  • Sort order for display
  • Min quantity per product

Catering use-cases we built for

Office lunch programs

HR signs a weekly Tuesday lunch contract. The same bill clones every Tuesday morning, balance charges to the company card.

Family events (birthdays, baptisms)

Small caterers who don't need full enterprise tooling. Quote, deposit, balance — all through one branded email flow.

Corporate offsites

300-person all-hands. Pack-size pricing keeps the math simple; custom line items handle staff and rental.

Wedding pre-orders

Long lead times (30-60 days), large deposits, custom add-ons. The quote PDF is the contract.

School / sports team meals

Recurring weekly orders with predictable per-meal pricing. Skip cron during summer break with one click.

Funeral receptions

Short-notice but well-defined. Auto-approve mode skips operator review when the menu is standardised.

Why catering belongs in your ordering platform

Most restaurants treat catering as an afterthought — phone calls, email chains, paper invoices. That works until it doesn't, usually right around the moment a 50-guest deposit goes uncollected and you eat the food cost.

The Bill model already does most of the work

Ordering.Tools' Bill state machine handles deposits, partial payments, audit logs, and Stripe capture. Catering reuses all of it — we just added a quote-pending phase and event-date scheduling.

Lead time is non-negotiable

A regular order goes to the kitchen in 15 minutes. A catering order needs prep, plating, transport. Server-side lead-time enforcement means a customer can't accidentally book lunch tomorrow for 80 people.

Recurring is where the margin is

One-off catering events are nice. Office lunch contracts are revenue you can forecast. The recurring engine is the difference between catering as a side hustle and catering as a real revenue line.

Pricing flexibility matters

Pack-size multipliers, per-product minimum quantities, custom non-menu line items, deposit percent overrides — all the levers a real caterer pulls when shaping a quote.

Turn on the catering channel

Default-off, opt-in per venue. 30 minutes from settings toggle to first booking. No new payment processor — your existing Stripe handles deposit + balance.

Get Started