How an Event Sells Tickets in Stablecoins and Gets Paid Before Load-Out
·6 min readNinety days out
Picture a conference in Nairobi. Two thousand seats, a date locked, a venue deposit already paid out of someone's personal account because the company card was declined for the third time.
The organiser has done this before, so she knows the shape of what is coming. Not the programme — the programme is the fun part. The money.
She knows that a chunk of her audience is in Lagos, Accra, Kampala, Berlin, and Dubai, and that some of them will simply fail to pay her. Not because they do not want to. Because a card issued in one country and a checkout hosted in another will find a reason to decline at 11pm on a Tuesday, and nobody involved will ever learn what the reason was.
She knows the venue wants the balance two weeks before doors, the sound company wants half up front, and the printers want paying on delivery — while her ticket revenue sits in a processor's account on a rolling reserve, arriving in tranches long after she needed it.
And she knows that six weeks *after* the event, when the money is spent and the team has moved on, a handful of chargebacks will land against tickets that were scanned at the gate by people who very much attended.
None of this is a ticketing problem. Selling the tickets was never hard. Getting paid for them is.
The announcement
She sets up four payment links before the announcement goes out: Early Bird, General, VIP, Group of Five. Each one priced in dollars, each one a URL she can drop behind a button, into an email, or straight into a WhatsApp broadcast to last year's attendees.
That is the whole build. No integration, no developer, no sprint. Plenty of events never get more sophisticated than this and never need to.
The announcement goes out at nine. By half past, the links are taking money.
The buyer in Berlin
A designer in Berlin sees the thread, decides she is coming, and taps the link.
She already holds dollars — USDC, sitting on whichever chain she happened to end up on. She is not thinking about which chain. Most people who hold stablecoins could not tell you, in the moment, where their balance lives, and asking them to find out at checkout is how you lose the sale.
So she is not asked. Minisend accepts USDC from nineteen chains and USDT from fourteen — Ethereum, Base, Polygon, Arbitrum, Optimism, Avalanche, BNB Chain and the rest — and works out the routing itself. She pays from where her money already is. No bridge, no network dropdown, no swap she has to understand.
Her ticket email arrives before she has closed the tab.
Meanwhile, in Nairobi, the organiser's dashboard shows a single line: one General Admission, settled, in shillings.
That is the trick, and it is worth being plain about what just happened. The buyer paid in the currency and on the rail that was convenient for her. The organiser was paid in the currency and on the rail that is convenient for her. Neither of them had to care about the other's situation, and no bank sat in the middle deciding whether to allow it.
The week the invoices land
Six weeks out, the bills arrive together, the way they always do.
Her ticket revenue is not sitting in a reserve somewhere. It settled as it came in — to M-Pesa, in about ten seconds a time, or to the bank account, in five to thirty minutes. Same day, every day, since the announcement.
So the venue balance gets paid out of ticket revenue. So does the sound company. This sounds like a small thing and it is not: it is the difference between running an event on the organiser's overdraft and running it on the event's own money. Most independent events die in this gap, not from lack of demand.
She keeps part of the balance in USDC rather than converting all of it, because two of her speakers are being flown in and she would rather hold dollars against that. Same account, different setting. The rest becomes shillings.
The gate
Not everyone buys online. There is always a queue at the door of people who meant to and did not.
That queue is where cash boxes come from, and cash boxes are where reconciliation goes to die — a shoebox of notes, a volunteer with a phone, and a 2am count that nobody enjoys.
Instead the gate runs the same rail backwards. A walk-up attendee pays over M-Pesa or Airtel Money, and the organiser receives USDC. Local currency in, dollars out, same ledger as the website.
At the end of the night the door sales and the online sales are in one list. There is no reconciling the gate against anything.
Load-out
The show ends. The crew is still coiling cable at one in the morning and the organiser is doing the thing she has done at every event, which is working out who she owes and how to reach them.
Twenty-odd people: stewards, the two photographers, the sound crew, the cleaners coming in at six, four vendors. Different amounts, different numbers, and — critically — one bad phone number in the batch, because there is always one bad phone number in the batch.
She sends it as one run. The ones that can pay, pay. The bad number fails on its own and gets fixed in the morning without taking the other nineteen down with it, and nobody gets accidentally paid twice when she retries.
The crew is paid before they get home. This is not a feature anybody puts on a pricing page and it is the thing crews remember.
The morning after
The part that used to take a week takes an afternoon.
Every payment carries the order ID her own system generated, so the export drops into the accounts without a matching exercise. Both the dollar and the shilling values are there, with the rate at the moment of settlement, which means the FX question is answered in the file rather than reconstructed later from screenshots.
And then, six weeks on, the thing that does not happen: no chargebacks. Stablecoin payments are final once they confirm. There is nothing to reserve against, no disputes to contest over tickets that were scanned at the door, no clawback against money already spent on a show already delivered. If she wants to refund someone — and she does, twice, for people whose flights were cancelled — she chooses to, from the dashboard. It is her decision rather than a bank's.
What is actually underneath
Four things, and the organiser above only knowingly touched one of them.
Payment links for selling without writing code. A hosted checkout for when you have a real ticketing flow and want a session per order, carrying your own order ID through to settlement. Webhooks that tell your system a payment cleared, which is what should issue the ticket — not the browser redirect, because buyers close tabs and lose signal in lifts. Settlement on a schedule you set, to M-Pesa, mobile money, a till, a paybill, a bank account across Kenya, Nigeria, Ghana and Uganda, or held as USDC.
If you are wiring this into an existing ticketing platform rather than using links, it is one endpoint to create a checkout session and one webhook to handle. Roughly thirty lines. The API reference has the specifics, and the questions below cover the behaviours worth knowing before an on-sale — particularly what a spike does to rate limits, and why a completed payment is not the same event as funds arriving on a destination chain.
If you have a date in the diary
There is no subscription and no monthly fee. Holding USDC settlement costs 0.5%; local-currency pricing is quoted per account rather than published, so the honest answer is to tell us your expected volume and we will quote it.
The one thing worth doing early is the paperwork. Going live needs business verification — incorporation documents, director details, proof of address — which is acknowledged within a business day and usually cleared within two. Start it a fortnight before the on-sale, not the night before.
Then it is a link, or an afternoon of integration. Open the merchant dashboard, or email info@minisend.xyz with the date and we will work backwards from it.
Frequently asked questions
- Can event organisers sell tickets in stablecoins with Minisend?
- Yes. Minisend Merchant gives organisers a hosted checkout, no-code payment links, and a checkout API for selling tickets priced in USD. Attendees pay USDC or USDT from any major chain, and the organiser receives KES, NGN, GHS, or UGX to M-Pesa, mobile money, or a bank account, or keeps the balance in USDC.
- How fast does ticket revenue reach the organiser?
- M-Pesa payouts land in about 10 seconds once the deposit settles. Bank and mobile money payouts complete in 5 to 30 minutes. Settlement is same day, so supplier and venue costs can be paid out of ticket revenue before the doors open.
- Which chains can ticket buyers pay from?
- USDC from 19 EVM chains and USDT from 14, including Ethereum, Base, Polygon, Arbitrum, Optimism, Avalanche, BNB Chain, Linea, Scroll, and Unichain. The buyer pays from wherever their funds already sit, with no bridging step, and the organiser sees one settled total.
- Are there chargebacks on stablecoin ticket sales?
- No. Stablecoin payments are final once confirmed onchain, so there is no chargeback mechanism and nothing to hold in reserve against disputes filed after the event. Refunds are issued deliberately, from the dashboard or the API.
- How do I match a payment to a ticket order?
- Set external_id on the checkout session to your own order ID. It returns on the webhook and appears as a column in the CSV export, so a payment maps to an order by lookup rather than by matching amounts and timestamps.
- When should the ticket be issued in the integration?
- On the checkout.completed webhook, not on the browser redirect, so a buyer closing the tab does not cost them the ticket. Note that checkout.completed fires before any cross-chain forwarding is attempted: it confirms the payment, not arrival on a destination chain. Read forward.status on the session for that.
- Can we take payments at the door as well as online?
- Yes, in the other direction. The on-ramp collects KES over M-Pesa or Airtel Money and delivers USDC to the organiser, with orders from KES 20 to KES 250,000 and a KES 100 minimum net after fees. Door sales and online sales land in the same ledger.
- What limits apply to a ticket checkout session?
- A hosted checkout session runs from 0.01 to 10,000 USDC. API rate limits default to 60 requests per minute per IP, with checkout creation capped at 30 per minute, which is worth planning around for a spiky on-sale. Limits can be raised on request.
