C Carrot Tickets · Cashless

Cashless demo runbook

The festival cashless system, end-to-end on real NFC hardware — register a band, load cash, let a vendor charge it, hand unspent cash back at the desk, and watch the organizer's report add up. Running against dev (staging); production is untouched.

dev · live POS build v1.0.0 · cashier Cashier desk · in this build Android · NFC
Install the app
Carrot POS — dev build (.apk)
Download APK →
Android phone with NFC turned on (or the ZCS handheld). Allow "unknown sources" if prompted. The build points at dev-api.carrottickets.com.

Who's who at the venue

Five separate roles, each with its own screen. They are deliberately distinct — a reseller is an outside outlet, a cashier is the organizer's own money desk.

O

Organizer — owns the event. Sees every cashless transaction, vendor and cashier from the dashboard.

R

Reseller — an outside outlet (think Shoprite) that sells tickets and helps top up before the event.

C

Cashier — the organizer's in-venue money desk: tops up bands and cashes them out.

V

Vendor — a stall inside the event (the bar, food) that charges bands for what people buy.

G

Gate — binds a band to a ticket and checks people in.

A

Admin — Carrot. Sees everything, across every event.

Desk logins

One app, one login screen — log out and back in to switch desks. The app sends each role to its own screen.

RoleLogin codePINWhat they do
Reseller ticket outlet597081482913Register a band, sell tickets, top up (pre-event)
Cashier money desk502413618240Top up and cash out a band at the venue
Vendor "Test Bar"640220551282Charge bands (tap-to-pay), see takings
Gate entry380443739154Bind band, tap-to-check-in, balance

What you're showing

One physical band is a funded ticket. The balance lives on the server — the tag only carries its UID, and every tap is an atomic move that keeps the books balanced (float = wallets + vendors + fees). After every top-up, purchase or cash-out the app shows the new balance, so the attendee can see exactly what's left.

1

Register a band — a blank tag becomes a ticket + wallet.

2

Top up — load cash onto the band (reseller or cashier).

3

Vendor tap-to-pay — charge debits the attendee, credits the vendor.

4

Cash out — the cashier hands back unspent cash; the balance is debited.

5

Left balance — every action ends on a screen showing what's left.

6

Organizer report — circulated, spent, withdrawn, and left behind.

The demo

Act 1

Register & fund a band

Reseller · 597081 / 482913
  1. Log in, then pick "Cashless NFC Tap Test Fest".
  2. Register band → choose General Admission → (optionally add cash) → tap your tag. It becomes a ticket + wallet + band in one move.
  3. Top up a band → tap the tag → enter R50. The band now holds R50.
This is the money-in half — the wristband is now a funded wallet.
Act 2

A vendor charges the band

Vendor · 640220 / 551282
  1. Log out, log in as the vendor → you land on Test Bar with two tabs: Charge and Takings.
  2. Charge → enter R10tap the band"Charged R10 · New balance R40."
  3. Try to over-charge (more than the balance) → "Declined · Balance R X" — the balance is left untouched.
  4. Takings tab → the charge is listed, and your running total updates.
Test Bar takes 10% commission, so R10 splits: vendor R9, Carrot R1 — debited from the attendee, credited to the vendor, on the ledger.
Act 3

The cashier cashes out

Cashier · 502413 / 618240
  1. At the money desk, the cashier taps a band → sees the balance + full history (top-ups, purchases, cash-outs).
  2. Cash out → enter the amount to hand back → tap the band"Paid out R20 · New balance R20." The attendee sees exactly what's left.
  3. The cashier's own transactions list shows every top-up and cash-out she did, with status — so a "my money didn't reflect" complaint is answerable on the spot.
Cash back = the full remaining balance — the cashier can return everything on the band. The wallet is debited and the venue's cash float pays down, on the same balanced ledger.
Live in this build — log in as the cashier (502413 / 618240) and tap. The organizer's report + staff setup (Act 4) are live on the dashboard.
Act 4

The organizer's report & setup

Organizer · dashboard
Organizer dashboard login — open carrot-tickets-admin-dev.pages.dev
Email cashless-test-1786118543146@example.com · Password CarrotDemo2026!
  1. Log in with the details above → open "Cashless NFC Tap Test Fest".
  2. Open the Cashless tab: Circulated (loaded on bands), Spent (at vendors), Withdrawn (handed back), Left behind (still on bands, un-withdrawn), plus per-vendor takings, per-cashier activity, and the full transaction log.
  3. Set up staff: the Cashiers and Vendors pages let the organizer add money-desk cashiers and in-event vendors — each gets its own login code + PIN — and open a cashier/vendor to see their transactions.
Every figure comes straight off the ledger + wallets — the same source that always balances — so the organizer sees exactly how much money moved and how much attendees left behind.
Act 5

Gate (optional)

Gate · 380443 / 739154
  1. Log in as gate → pick the event.
  2. Check balance → tap a band → see balance + history.
  3. Bind band → scan a ticket QR → tap a blank band → bound.
  4. Tap to check in → tap a bound band → the ticket checks in.

What's real vs. not

✓ Working now

  • NFC read on real hardware
  • Register / sell band, cash top-up, balance + history
  • Vendor tap-to-pay (real debit → vendor credit, commission split, decline)
  • Vendor transactions / takings
  • Gate bind, tap-to-check-in, balance
  • Cashier desk — top-up + cash-out + her own transactions, on the phone
  • Organizer cashless report — circulated / spent / withdrawn / left-behind, on the dashboard
  • Organizer setup — add/manage cashiers & vendors (login code + PIN each) + their detail pages

Good to know & troubleshooting

Before you start
  • It's dev/staging — safe to play with; a separate database from production.
  • Tags are read-only (we only read the UID); 4-byte tags are accepted.
  • To charge or cash out a band it needs a balance — always top up first.
Reseller vs cashier — what's the difference?
A reseller is an outside outlet (like Shoprite) that sells tickets and helps top up before the event. A cashier works for the organizer at the venue and handles the money once people are inside — topping up and cashing out. They're separate roles with separate screens on purpose.
"Tag UID unreadable / too short"
Hold the tag steady on the top-back of the phone, and make sure NFC is on.
A charge or cash-out says "Declined"
The band's balance is lower than the amount. Top it up and retry.
Nothing loads / network error
The phone needs internet — the app talks to dev-api.carrottickets.com.
Fresh start
Reinstall the APK and log in with the codes above.