THE ONE SCREEN YOUR CUSTOMERS SEE
Everything else in this product is for you. The invoice leaves the building with your café's name on it · so it is numbered, itemised, split for GST the way the rule actually asks, and on your customer's phone before they have left the counter.
ONE BILL, END TO END
The same invoice all the way down: the two tabs it was cut from, the document your customer opens, the tax underneath it, how it gets settled, how it reaches them, and the row it leaves in your ledger. The tax figures are computed by the module your real bills run through, not typed into this page.
The café and its customers are invented · an invoice is the most identifying document a café holds about somebody, and no real one appears here.
The rig is free before the bill is
What happens between a session ending and money changing hands
End a session and the station is immediately available to the next customer, while the charge waits at the counter as a tab. Snacks and custom charges keep landing on it. Drag one tab onto another and the two settle as a single invoice · which is how two friends on two rigs pay once, without anybody doing arithmetic in their head.
- check_circleThe station frees the moment the session ends, not when it is paid
- check_circleAdd snacks or a custom charge to a tab that is already open
- check_circleMerge tabs onto one invoice · and split a member back out
- check_circleDiscard a tab that was opened by mistake, stock returned
What changesYour busiest hour stops being gated on how fast somebody can find their wallet.
Open now
2 open tabs
PC-04
Rig freeNEON_DRIFT · 2h 10m
- Gaming PC · 2h 10m₹210
- Cold Coffee ×2₹180
PS5-01
Rig freeGHOST_07 · 1h
- PlayStation 5 · 1h₹150
- Maggi₹60
Two tabs, two rigs, one bill · this is the merge that lets two friends who played separately pay together.
What your customer actually receives
The one screen of this product your customers will see
Every session and every tab closes into a numbered invoice with your café's name on it, the lines itemised, the tax named and a total that adds up. This is the whole of it · not a mock-up, and not a cropped detail. It is what opens when they tap the link, and what prints when they take the PDF.
- check_circleSequential numbers · the same series your accountant follows
- check_circleLines itemised by what they are · gaming, food, membership
- check_circleYour own sign-off at the foot, or a sensible one if you never set it
- check_circleWalk-ins get a bill too · a customer without an account is still a customer
What changesYou stop handing out a scribbled figure and start handing out something that looks like a business.
Invoice
INV-2026-0912
Billed To
NEON_DRIFT
Issued
07 Sep 2026
Paid Via
UPI
Thanks for playing at Apex Gaming
Generated with Respawna · respawna.com
What the customer opens · the same document at respawna.com/i/… and in the PDF, with no login between them and it.
GST split the way Rule 46 asks for it
Whether this invoice survives being looked at properly
“18% GST” is a thing people say, not a thing that appears on a compliant invoice. Tax is shown by component and per line: CGST and SGST listed apart when the customer is standing in your room, IGST when the supply crosses a state. HSN and SAC codes where you have set them, and a place of supply frozen at the moment of issue, because a café can move.
- check_circleCGST and SGST apart on intra-state, IGST on inter-state · never both
- check_circleComputed per line, so two rates on one bill still add up
- check_circleHSN and SAC per line, blank rather than wrong when unset
- check_circleTurn GST off entirely if you are not registered
What changesThe bill you hand a corporate customer is the same bill their finance team accepts without a phone call.
18% · intra-state
| Line | HSN / SAC | Taxable | CGST 9% | SGST 9% |
|---|---|---|---|---|
| Gaming PC · 2h 10m | 998439 | ₹210 | ₹18.90 | ₹18.90 |
| PlayStation 5 · 1h | 998439 | ₹150 | ₹13.50 | ₹13.50 |
| Cold Coffee | 2202 | ₹180 | ₹16.20 | ₹16.20 |
| Maggi | 2106 | ₹60 | ₹5.40 | ₹5.40 |
| Total | ₹600 | ₹54 | ₹54 | |
Place of supply
32 · Kerala
Frozen at issue · a café can move
Tax charged
₹108
CGST + SGST, split apart
Reconciles
₹108
Halves sum to the tax exactly
Why the halves are derived, not rounded twice
Take a line at ₹123.50. 18% of it is ₹22.23 · an odd number of paise, so half is not a whole one.
Rounding each half
₹22.24
A paisa more tax than was charged
Half, then subtract
₹11.12 + ₹11.11 = ₹22.23
Reconciles against the invoice
Computed by lib/gst.ts, the module your café's real invoices run through · not typed into this page.
Five ways to pay, and one bill split between two
How the money actually comes in at an Indian counter
Cash, UPI, GPay, card, or the member's own prepaid wallet. A bill can also be split across methods · three hundred in cash and the rest on UPI is an ordinary evening, and the parts are stored rather than written into a note, so your month's cash figure still knows about the cash.
- check_circleCash, UPI, GPay, card and wallet, each recorded as itself
- check_circleSplit one bill across methods, with the parts kept
- check_circleWallet settlement is one database transaction · it cannot half-happen
- check_circleApply a discount before payment, as a real line, not a fudged total
What changesYour end-of-day cash count matches the console, because the console was told what was cash.
One bill, two methods
- cash₹300
- upi₹228
The parts are stored, not written into a description · so the month's cash figure still knows about the ₹300 that came in as cash.
Paid from the wallet
The debit, the settle, the loyalty points and the revenue row happen in one database transaction · a wallet that empties without the bill closing cannot occur.
The SPLIT pill is the console's own component · hover or tap it and the parts are there, exactly as they are at the counter.
It reaches them on WhatsApp
How a bill gets to a customer who has already left
One tap opens WhatsApp with the invoice written out and a link to it. The link is a capability token rather than a guessable number, and it opens that bill and nothing else · no login, no app, no account. They can read it on the spot or take the PDF.
- check_circleStraight to their chat when you hold a number, the picker when you do not
- check_circleA page at your own address, in your café's theme
- check_circleDownload PDF from the same page, printable as it stands
- check_circleThe link opens that one bill · never the console, never anyone else's
What changes“Can you send me the bill?” stops being a job for tomorrow morning.
APEX GAMING · Invoice
Invoice: INV-2026-0912
Total: ₹708
Status: PAID · UPI
View or download:
respawna.com/i/8f3c1a…
Direct to their chat when you hold their number, and the contact picker when you do not · the button is never a dead end.
What the link opens
A page at your own address
respawna.com/i/8f3c1a…
No login, no app
The token is the key
Download PDF
The same bill, printable
This bill only
Never the console, never another customer
The link is a capability token, not a guessable id · and it opens the bill, never the café's console.
Every bill you have ever raised
Where a figure goes when somebody asks about it three weeks later
Paid, pending, overdue and void, grouped by month and filterable by period, member and method. Four figures sit above it · what is outstanding, what came in, how many are past their due date and what an average bill is worth. Each one is worked out from the rows underneath rather than asserted beside them.
- check_circleStatus follows the money · overdue is derived, not typed
- check_circleFilter by month, member or payment method, and share the URL
- check_circleOutstanding, collected, overdue count and average bill up top
- check_circleExport the lot to PDF or Excel whenever you want it
What changesA customer query from three weeks ago takes eight seconds instead of a shoebox.
Sep 2026
Pending + overdue
Paid bills
Past the due date
Across non-void bills
| Number | Member | Issued | Method | Total | Status |
|---|---|---|---|---|---|
| INV-2026-0912 | NEON_DRIFT | 07 Sep | upi | ₹708 | paid |
| INV-2026-0911 | Walk-in | 07 Sep | ₹528 | paid | |
| INV-2026-0910 | GHOST_07 | 07 Sep | wallet | ₹248 | paid |
| INV-2026-0909 | VOID_KING | 06 Sep | · | ₹413 | pending |
| INV-2026-0908 | Walk-in | 06 Sep | cash | ₹189 | |
| INV-2026-0907 | SPECTRE_9 | 05 Sep | cash | ₹354 | paid |
| INV-2026-0906 | ZEN_MODE | 04 Sep | · | ₹295 | overdue |
| INV-2026-0905 | MIDNIGHT_OWL | 04 Sep | gpay | ₹472 | paid |
Every tile is worked out from the rows underneath it · a headline that disagrees with its own table is worse than no headline.
The one action that cannot be taken back
What happens when a bill was wrong
One control with two meanings. On an unpaid invoice it is a void · nothing was ever booked, so it cancels and the stock goes back. On a paid one it is a refund, and the wording says so, because it moves real money. Both need a typed reason and an explicit confirm, and the row stays in the ledger with that reason on it.
- check_circleVoid an unpaid bill · stock returns to the shelf
- check_circleRefund a paid one, with the method it was paid by kept
- check_circleA reason is required, and it is kept on the row forever
- check_circleNothing is deleted · a bill that vanishes is one nobody can explain
What changesA mistake at the counter becomes a line you can point at, instead of a gap you have to account for.
One control, two meanings
Unpaid → VOID
Cancels it
Nothing was ever booked, and the stock goes back on the shelf
Paid → REFUND
Moves money
The wording changes, because this one leaves the till
Refund ₹189 · INV-2026-0908
Paid by cash. This cannot be undone.
Reason · required
Duplicate tab · charged twice at the counter
And this is the row it leaves behind, forever · at the same height as every PAID row beside it, with the reason and how the money went back on the card it shows when you hover, focus or tap it.
The reason is required, typed at the time, and kept · a bill that vanishes is a bill nobody can explain to an auditor.
MONEY MATHS IS THE PART WORTH TESTING
Whole paise, never floats
Every amount is held as an integer number of paise, so nothing drifts by a hundredth over a year of bills. The GST halves are derived rather than each rounded on their own, which is what keeps CGST plus SGST exactly equal to the tax charged on an odd number of paise.
Append-only, by design
Invoices are not edited and not deleted. A wrong one is voided with a reason and stays on the ledger; a refund keeps the method the money came in by. Your revenue reports read that same ledger, which is why the figure on your analytics screen and the figure on your bills cannot disagree.
Your money, not ours
Respawna never processes what your customers pay you. Cash is cash, your UPI is yours, and the wallet is your café's own prepaid balance. We count it and show it back to you · standing in the middle of it is regulated territory we deliberately stay out of.
The counter's own screen
Open tabs across the top waiting to be cut, then the ledger underneath with every invoice you have raised. A pending bill carries its controls on the row · open it, send it, mark it paid, discount it, void it · so settling somebody at a busy counter is one screen and no navigation.
- check_circleOpen tabs and the full ledger on one screen
- check_circleEvery control on the row · no dialog hunting mid-rush
- check_circleGrouped by month, filtered by period, member or method
- check_circlePDF and Excel export whenever your accountant asks


A real capture of the console · the screen the sections above are drawn from, on a different café's month.
ASKED BEFORE THE FIRST BILL
Does Respawna produce GST-compliant invoices?expand_more
Yes. Tax is shown by component the way CGST Rule 46 asks for it · CGST and SGST listed apart on an intra-state supply, IGST on an inter-state one, computed per line rather than once on the total. HSN and SAC codes print per line where you have set them, the place of supply is frozen at the moment of issue, and your GSTIN and business details sit on the invoice. If you are not GST registered you can switch tax off entirely and the invoice is simply a clean bill.
Can a customer pay part cash and part UPI?expand_more
Yes. A bill can be split across cash, UPI, GPay and card, and the parts are stored as parts rather than written into a description · so a report that asks how much cash came in this month gets the right answer. Wallet is deliberately not available inside a split, because a wallet part has to debit a balance and be reversed on a void, and that is not worth half-building.
How does the customer get their invoice?expand_more
On WhatsApp, in one tap. The message carries the invoice written out plus a link to it, and the link opens a page at your own address showing that bill with a Download PDF button. There is no login and no app · the link is a capability token, so it opens that one invoice and never your console or anybody else's bill.
What happens if we bill someone twice by mistake?expand_more
Void it. On an unpaid invoice that cancels it and returns any stock; on a paid one it is a refund and the wording changes to say so, because it moves real money. Both require a typed reason and an explicit confirm, and the invoice stays in your ledger marked void with that reason attached. Nothing is deleted, which is the point: a bill that disappears is a bill you cannot explain later.
Do walk-in customers get invoices?expand_more
Yes. An invoice does not need a member account behind it · a walk-in gets the same numbered, itemised, tax-correct bill, and it can still be shared by link or WhatsApp. Members simply get theirs attached to their profile as well, alongside their wallet and their history.
Can I bill two people who played on different machines together?expand_more
Yes. Each ended session sits as its own tab, and dragging one tab onto another merges them onto a single invoice · one total, one payment, both sessions itemised. You can split a member back out again before the invoice is cut if they would rather pay separately.
Can I export invoices for my accountant?expand_more
Yes, to PDF and Excel. Take a month as a PDF for filing or a spreadsheet for your own analysis; amounts are held to the paisa and the ledger is append-only, so what you hand over reconciles. There is no lock-in and your data leaves cleanly.
What does it cost?expand_more
Plans start at ₹299 a month, and every plan begins with a 14-day free trial, no card. When the trial ends you either pay to carry on or stop · nothing renews by itself, because we hold no card. Current plans and prices are on the pricing page.