Midnight Bars
QR Table Ordering Platform

Your venue's menu,
in every guest's hand.

Midnight Bars turns any table into a self-ordering terminal. Guests scan a QR code, browse your photo menu with categories and size options, and order directly — no app, no account, no waiting.

60s
Setup per table
0
Apps to download
Menu items
Split
Bills per guest
💳
Pay requests
100%
Web-based
Setup in minutes

From sign-up to first order in four steps

No hardware to install, no integrations to configure. Just a browser and your menu details.

Step 01
👤
Create your account
Register with your email and password. One account can manage any number of venues — useful if you run a group of bars, restaurants, or event spaces.
Step 02
🏢
Add your venue
Set your venue name, address, currency, default VAT rate, and accent colour. Configure your legal business details and billing address for receipt printing.
Step 03
🍽️
Build your menu
Create categories (Drinks, Food, Specials…) and add items with photos, descriptions, size options, bundle deals, and individual VAT rates where needed.
Step 04
📱
Print QR codes & go live
Add your tables, download the auto-generated QR codes, and place them on the tables. Guests scan and your live order dashboard lights up immediately.
What's included

Everything your venue needs

Every feature is built into the platform — no plugins, no add-ons, no per-feature pricing.

📋
Live Order Dashboard
Real-time order feed that auto-refreshes every 10 seconds. Move orders through Pending → Confirmed → Ready → Done with one tap. Sound-on alert for new orders.
📱
QR Table Ordering
Each table gets a unique, secure QR token. Guests scan it and land directly on your menu — no app, no login, no friction. Works on any smartphone browser.
🖼️
Visual Menu Builder
Upload photos directly from your device, write descriptions, and toggle availability on/off. Hierarchical sub-categories (e.g. Drinks → Alcoholic → Beer) keep even large menus navigable. Guests see a 2-column photo grid.
⚖️
Sizes & Options
Create up to any number of size variants per item (e.g. 0.3 L / 0.5 L / 1 L or Small / Medium / Large), each with its own price. Guests must pick one before ordering.
🍺
Bundle Deals
Set a bulk deal per item — e.g. 10 beers for €18 instead of €20. The discount threshold and bundle price are fully configurable. Guests toggle it in the item detail.
📊
Analytics Dashboard
Daily, weekly, monthly, or custom date-range analytics. See total revenue, order count, average order value, daily bar chart, top-10 items, and VAT breakdown by rate.
🖨️
Bill & Receipt Printing
Print a formatted receipt for any order. Configure your logo, legal name, VAT number, billing address, and footer text. A sandbox preview lets you test the layout before saving.
📄
Monthly Reports
Generate a full printable month report — total revenue, all sold items with quantities, VAT summary per rate, and order status breakdown. Ready for your accountant.
📤
Excel Export
Export any date range of orders to an Excel file. Each row is an order-line with item name, quantity, net price, VAT amount, and gross. Assembled in your browser via SheetJS.
🏢
Multi-Venue
Manage unlimited venues from one owner account. Each venue has its own menu, tables, currency, VAT rate, and accent colour — completely isolated from each other.
💻
Desktop & Mobile Views
The owner dashboard offers both desktop (wide layout) and mobile simulation. The guest menu also detects device type automatically and can be toggled manually.
🔒
Secure & Isolated
Owner auth uses long-lived server tokens (90-day expiry) stored client-side. All pricing is validated server-side — guests cannot manipulate prices from their browser.
👥
Guest Sessions & Split Bills
Every guest names themselves on scan. The Tables panel lists each person separately with their running total and arrival time. When ready to leave, guests tap "Ready to pay" and choose card or cash — you see a pulsing badge instantly.
💳
Payment Requests
Guests signal when they want to pay and how — card or cash. A pulsing badge appears on the guest row in the Tables panel. One tap to acknowledge and clear the request. No waiting, no shouting across the room.
Platform deep dive

How each feature works

A closer look at the core pillars of the platform.

Live order management

The moment a guest places an order you see it in the dashboard. A pending counter in the navigation badge keeps you aware even when you're in another tab. Orders are sorted newest-first and colour-coded by status.

  • Auto-refreshes every 10 seconds without page reload
  • Filter by status: All, Pending, Confirmed, Ready, Done, Cancelled
  • Each card shows table number, items, total gross, and timestamp
  • Tap the status dropdown to advance or cancel an order
  • Print a formatted bill from any order with one click
  • Guest's phone updates in real time as you change status
Live orders
Table 4 · 2 items · €12.50
Helles 0.5L × 2 · Pretzel × 1
Pending
Table 7 · 3 items · €9.00
Cola × 2 · Water 0.5L × 1
Confirmed
Table 2 · 1 item · €18.00
Beer bundle ×10
Ready ✓
Visual menu builder

Guests see your menu as a 2-column photo grid. Tapping any card opens a full detail sheet with size options and the bundle deal selector. Hierarchical categories (up to 3 levels deep) keep large menus organised without overwhelming the guest.

  • Upload photos directly — JPEG, PNG, WebP, GIF up to 5 MB
  • Category images shown as visual tiles for top-level navigation
  • Hierarchical sub-categories: Drinks → Alcoholic → Beer Specialties
  • One-tap "seed default categories" creates a full bar menu structure
  • Size variants each carry an independent absolute price
  • Bundle deal: set a minimum quantity and a discounted total price
  • Toggle item availability instantly — dimmed and unorderable for guests
Menu — Drinks → Alcoholic
🍺 Beer
🍷 Wine
🥃 Spirits
🍺
Helles Lager
from €2.80
3 sizes · ×10 bundle
🍻
Weißbier
from €3.00
2 sizes
Analytics & reporting

The analytics panel gives you a live picture of your venue's performance for any time window. Switch between Today, This Week, This Month, or set a custom date range. The monthly report prints everything your accountant needs.

  • Revenue, order count, and average order value at a glance
  • Day-by-day bar chart for revenue within the selected period
  • Top-10 items ranked by quantity sold with revenue contribution
  • VAT summary: net, VAT amount, and gross grouped by VAT rate
  • Monthly report: sold items table + VAT accounting + status breakdown
  • Excel export covers any custom date range, down to itemised order lines
€1,240
Revenue
148
Orders
€8.38
Avg order
Top items this month
Helles Lager×312 · €873
Cola×98 · €245
Pretzel×77 · €270
Bills, receipts & VAT

Every order can be printed as a professional receipt. Configure the layout once in the Financial & Billing settings — the format applies to every bill and monthly report automatically. A live sandbox preview lets you see changes before saving.

  • Legal name, billing address, VAT registration number
  • Per-item VAT rates — different rates for food and drinks
  • Toggle show/hide: order ID, date/time, table number, address, VAT breakdown
  • Custom footer line (e.g. thank-you message or bank details)
  • Print opens a clean white-background page, ready for any printer
  • Monthly report includes full VAT accounting by tax rate bucket
Zum Goldenen Krug
Marienplatz 4 · Munich · VAT DE123456789
Order #247 · Table 429 May 2026
Helles 0.5L × 2€7.00
Pretzel × 1€3.50
Net (19% VAT)€8.82
VAT 19%€1.68
Total€10.50
Thank you for your visit!
Guest sessions, split bills & pay requests

Each guest names themselves on scan, creating a personal tab linked to the table. Multiple guests share a table but each has an independent running total. When ready to leave, the guest taps "Ready to pay" and picks card or cash — a pulsing badge appears on your dashboard instantly.

  • Arrival time displayed per guest so you know how long they've been seated
  • Each guest's orders tagged with their name throughout the order feed
  • Individual totals and combined table grand total at a glance
  • Payment request badge (card 💳 / cash 💵) pulses until you tap "Paid ✓"
  • Owner closes a session with one tap — clears the table for new guests
  • Sessions persist across rounds — guests keep ordering without re-entering their name
Table 4 — active guests
👤 Anna3 orders · since 19:42 💳 Card€24.50
👤 Marco2 orders · since 19:55 €18.00
👤 Lea1 order · since 20:10 €7.50
Table 4 total €50.00
For your guests

Zero friction, start to finish

The guest interface is a Progressive Web App — fast, installable on the home screen, and requires no account or app download whatsoever.

Step 01
📷
Scan the QR code
Guest points their camera at the table QR. No QR app required — it works with the default camera on every modern smartphone.
Step 02
✍️
Enter your name
A quick name prompt creates a personal session. It takes two seconds, is remembered between rounds, and lets the owner see individual tabs in the dashboard.
Step 03
🖼️
Browse the menu
A photo grid with category pill navigation at the top. Sub-categories expand into a second pill row so even large menus stay easy to explore.
Step 04
👆
Order & track
Tap a card, choose a size or bundle deal, add to cart, then place the order. A live status badge updates from Pending → Confirmed → Ready (pulsing green).
Step 05
💳
Request payment
When ready to leave, tap "Ready to pay" and choose Card or Cash. The venue owner sees a pulsing badge on your row and comes to you — no shouting required.
Technical details

Built for reliability

🌐
100% web-based
No native app installation for owners or guests. The owner dashboard runs in any modern desktop browser. The guest menu works on every smartphone browser.
📦
Progressive Web App
The guest ordering page is a PWA with a service worker and offline manifest. Guests can add it to their home screen for faster subsequent scans at the same table.
🔐
Server-side price validation
All pricing — including size variants and bundle deals — is verified on the server when an order is placed. Guests cannot alter prices from their browser.
🏷️
Multi-currency & VAT
Each venue can use EUR, GBP, or USD. VAT rates are set at venue level (default) and can be overridden per menu item — useful for mixed food/drinks menus.
🔑
Token authentication
Owner sessions use a 90-day server-side auth token stored in browser localStorage. Tokens are invalidated on sign-out. Completely separate from any other Midnight platform account.
🔀
Independent venue isolation
Each venue's tables, menu, orders, and settings are fully isolated. One account can run multiple venues with zero data crossover between them.
Common questions

Frequently asked questions

Do guests need to download an app or create an account?+
No. Guests open the menu entirely in their phone's browser by scanning the QR code. There is no app to download and no account or login required. The experience is intentionally friction-free.
How many tables, menu items, or venues can I add?+
There is no hard limit enforced by the platform. You can create as many venues, tables, categories, and items as your business requires. Bulk table creation lets you add 1–100 tables in one action.
Can I change the menu while the venue is open?+
Yes. Menu changes take effect immediately. You can toggle item availability on/off, update prices, add new items, or disable entire categories at any time. The guest menu reflects changes on the next page load or refresh.
How does VAT work when items have different rates?+
Each menu item carries a VAT rate — inherited from the venue default or overridden individually. When an order is placed, the system stores the VAT rate per line item. The analytics VAT summary and printed bills break down net, VAT amount, and gross per tax rate bucket, making it straightforward for accounting.
Can guests manipulate prices on their phone?+
No. The guest app only sends item IDs, quantities, and option selections to the server. The server looks up every price — including variant prices and bundle deals — from the database. Even if a guest modifies the network request, the order is always priced at your configured rates.
What currencies and languages are supported?+
Currencies: EUR (€), GBP (£), and USD ($) are supported, selectable per venue. The platform interface is in English. Menu content — categories, item names, and descriptions — is whatever language you write them in.
How do I print bills or receipts?+
Every order card in the dashboard has a "🖨 Bill" button. Clicking it opens a clean, printer-ready HTML page formatted with your business details. You can also print a full monthly report from the Analytics panel. The format — including which sections to show — is configured in Settings → Financial & Billing.
How does the bundle deal work for guests?+
When you configure a bundle deal (e.g. 10 beers for €18), a tappable bundle card appears in the item detail view. The guest taps it to toggle the deal on — the quantity locks to 10 and the total shows €18. The order is sent to your dashboard exactly like any other, with the bundle notation visible in the item name and the discounted unit price applied.
Is my data secure?+
Owner authentication uses a securely generated 64-character hex token with a 90-day server-side expiry. The token is stored in your browser's localStorage and sent in an HTTP header on every request. Signing out immediately invalidates the token on the server. Venue data, menus, and orders are stored in an isolated MySQL database accessible only through the API with a valid owner token.
How do split bills work?+
Every guest who scans the table QR creates their own named session. All orders placed during that session are automatically tagged with the guest's name. In the owner dashboard's Tables panel, you see each guest at the table listed separately with their individual running total. The table card also shows the combined grand total. You can print a bill for any individual order, making it trivial to charge each person for exactly what they ordered.
What happens when the same guest scans the QR code again?+
The guest's session key is saved in their browser's localStorage, keyed to that specific table. On a second scan the platform validates the key with the server — if the session is still open, the guest skips the name screen and lands directly on the menu. Their previous orders are already attributed to them. If the session was closed by the owner (for example at the end of their tab), the key is cleared and they are prompted to enter their name again, starting a fresh session.
Can I remove or close a guest's session?+
Yes. Each guest row in the Tables panel has a "✓ Check out" button. Tapping it marks the session as closed on the server. The guest's name disappears from the active guests list, and if they scan the QR code again they will be prompted to enter their name and start a new session. This is the intended workflow for turning a table: close all guest sessions, clean the table, and the next guests start fresh.
How does the payment request work?+
When a guest is ready to pay, they tap the "Ready to pay" button that appears in the cart area after their first order. They then choose Card or Cash. On your owner dashboard (Tables panel), a pulsing coloured badge immediately appears on that guest's row showing their preferred payment method. Tap "Paid ✓" to clear the request and close or continue the session. The guest sees a confirmation toast on their phone so they know the request was sent.
How do I add photos to my menu items?+
Photos are uploaded directly from your device — no external hosting needed. In the menu editor, open any item (or create a new one) and tap the image upload button to pick a file from your camera roll or file system. JPEG, PNG, WebP, and GIF files up to 5 MB are accepted. The same upload flow is available for category images, which appear as visual tiles in the guest's top-level navigation. Images are stored securely on the platform and served over HTTPS.
Ready to get started?

Start accepting orders
in under 10 minutes

Create your free account, add your venue, build your menu, and print your first QR codes — all from this browser window.

Orders 0
Analytics
Menu
Tables & QR
🥡 Takeaway
📅 Reservations
Export
Settings
Desktop
Mobile

Live Orders

Auto-refreshes every 10 s

🍺

No orders yet.

Analytics

Today
This Week
This Month
Custom
Daily Revenue

Top Items

ItemQtyRevenue

VAT Summary

RateNetVATGross

Menu

Tables & QR Codes

Guest sessions refresh automatically. Click Refresh Guests to see the latest.

Reservations

Manage bookings across all rooms and tables.

Bookings
Rooms & Tables
📅

No bookings for this day.

Takeaway & Pickup

Create named pickup spots, generate QR codes, and manage takeaway orders separately from dine-in.

🥡

No takeaway spots yet.

Export Orders

Download Excel with full itemised orders and VAT breakdown.

Settings

Venue
Financial & Billing
Bill Preview
Account

Venue Details

Danger Zone

Delete venue and all its data. This cannot be undone.

Financial Information

This information appears on printed bills and reports.

Bill Format Options

Choose what appears on printed customer bills.

Bill Preview

This is how a printed bill will look for your customers.

Your Venue Name

Order #1042
Date
Table5

2× Craft Lager€9.60
1× House Burger€12.90
1× Mineral Water€2.50

Net (excl. VAT)€21.34
VAT 19%€4.66
TOTAL€25.00

Quick Edit

Changes here update the preview only. Save from the Financial tab.

Change Password