cashless.read for everything read-only, cashless.write to top up
(requires manual activation).
All amounts are integers in cents.
2500 is €25.00. The event’s currency is
in GET /event.Reading a wristband
It is addressed by its radio code, NFC or UHF, which is what your application has after a scan:Anonymous wristbands — the ones sold at the top-up point with no ticket
attached — return
attendee.name: null and anonymous: true. They have no
identified holder, and the internal name they carry is synthetic.Paid balance and gifted balance
A wristband carries two balances:balance: what the attendee paid. The only one refunded at the end.promo_balance: what the organiser gifted (courtesy credit and top-up bonuses). Spent at the bar like the other one, but never refunded.
Negative balance
balance can be negative. It is not a bug on your side: when a terminal
charges without connectivity and the sale syncs later, the drink has already been
served, and VENTRY would rather record the overdraft than unbalance the till. The
overdraft is capped by the event’s policy.
Purchases
Top-ups and withdrawals
direction: "withdraw" entries are balance refunds to the attendee. amount is
always positive; the direction is given by direction.
Topping up
Only if you havecashless.write. Meant for integrators who charge the top-up on
their own platform — an online top-up app, for instance — and need to reflect it
in VENTRY.
422 topup_failed.
Top-up bonuses
The organiser can gift balance for topping up: “top up €50 and get €5 free”. Rules are set up in the dashboard, and the highest tier reached applies; if several rules match, the most generous one wins. The gift goes topromo_balance.
To work well, the attendee has to see the gift before paying:
-
Ask for the gift of the amounts you offer.
code(ticket or wristband) applies the per-person cap, if the rule has one.nextis the next tier that improves the gift, to encourage a bigger top-up: “add €30 and get €5 free”. - Show it next to the amount and charge.
-
When topping up, send what you showed and when:
The rule is checked at
granted_at, so a top-up paid before the event keeps its gift even if you deliver it after the promotion has ended. At most what the rule allows for that amount is granted; the response tells you how much was given inbonus_amountand leaves the gifted balance innew_promo_balance.
If you hold top-ups to deliver later (for instance, those paid before the event
and delivered at check-in), pass them in
pending_rules when quoting: one entry
per pending top-up with a gift. They count towards the per-person cap, so you
never promise a gift that would no longer apply at delivery.GET /topup-bonuses lists the active rules for the online channel, with their
tiers and dates, in case you want to advertise them.
Reconciliation
To pull the takings into your own system:topups only contains paid top-ups. Balance given away by the organiser
(courtesies, bonuses) goes separately in courtesy: it moves balance, but it is
not money received. In GET /topups, each top-up says so in nature.
Always group by occurred_at
Always group by occurred_at
A sale made at 22:00 without connectivity and synced at 02:00 carries an
occurred_at of 22:00. If you group by created_at, Friday night’s takings
will appear split between Friday and Saturday.Overlap the window when syncing
Overlap the window when syncing
For the same reason: go back a few hours from your last pass and deduplicate
by
id. See Pagination.unconsumed_balance is not revenue
unconsumed_balance is not revenue
It is the balance left unspent on wristbands. Some will be refunded to
attendees and some will not. Do not add it to sales.
If your key is limited to specific days
If your key is limited to specific days
GET /reports/sales-summary without day returns 422 day_required. This is
deliberate: silently handing you a truncated total would look like the whole
event’s total and would not be. Request each day separately.