Ghana Airports · Car Park

Pay for parking from the driver's seat.

Scan the QR on your printed ticket, pay by mobile money without leaving the car, and drive straight to the barrier. No kiosk, no walk back, no app to install.

Park Scan the QR Pay by MoMo Barrier lifts
0
apps to install
1
QR scan to start
~15s
from scan to gate
100%
from the car seat
How it works

Two screens and a callback.

The whole journey is a scan, a phone prompt, and an open gate. Nothing to download, nothing to queue for.

01

Park & take your ticket

The printed ticket carries a QR code. It encodes a signed link — ticket numbers can't be guessed or enumerated.

02

Scan from your phone

The link opens the exact amount due, priced live by the real fee engine. Part-hours round up; a daily cap keeps long stays sane.

03

Pay by mobile money

Enter any mobile number and approve the prompt on your handset — MTN, Telecel or AT. The screen waits with you.

04

Drive to the barrier

Once settled, the gate is told automatically. The screen turns green and the barrier lifts on arrival.


Under the hood

Built like money is on the line — because it is.

Every seam that touches a payment is verified, replay-safe and independently priced. The pretty part is the least of it.

Signed ticket links

The QR points to a signed URL. Tamper with it and you get a 403 — ticket numbers can't be enumerated.

HMAC-verified callbacks

The provider posts settlement from its own servers. Authenticity comes from a verified HMAC signature, not a session.

Idempotency ledger

A callback delivered twice settles once. The ledger swallows the redelivery — no double charge, no second gate signal.

One real fee engine

Every price — the panel's and the driver's — runs through the same FeeCalculator. What's advertised is what's charged.

Free window & daily cap

A grace period charges nothing but still tells the gate. Beyond a day, a cap keeps multi-day stays from ballooning.

Queue-settled gate

Paid tickets reach the barrier through a worker, so a slow gate never blocks the driver's confirmation.

Tariff

Every edge of the price sheet, on demand.

The live demo can seed any of these on request, so the tricky cases can be shown rather than waited for. Each is priced by the real engine.

ScenarioWhat it shows
Inside the free window Arrived 8 minutes ago. Nothing to pay — the gate is told anyway, and no charge is raised.
Short stay The ordinary case: a 90-minute pickup, billed as two hours.
Half day Part-hours round up — 5h 20m is charged as six hours.
Overnight Past 24 hours, so the daily cap applies to the first day and the remainder is billed hourly.
Long stay (capped) Three days. Without the cap this would be far larger — the cap is what keeps it sane.
Already paid at the kiosk The barrier already considers this settled. Scanning the QR shows the exit screen — we do not charge for it twice. no double charge
Safe to demo

Nothing on stage can move real money or lift a real barrier.

The demo console refuses to load unless both vendor seams — the payment gateway and the barrier — are the fake ones. That's the safety property: no configuration flag can point this at a real gateway or a live gate. Yet approving a payment still exercises the real path.

Real signatures

Approving builds the callback the aggregator would send and signs it with a real HMAC — through the actual webhook.

Real idempotency

“Redeliver the callback” sends the same event id twice. The ledger holds; it stays paid exactly once.

No credentials

The whole flow runs locally with no vendor account and no payment credentials. Both are behind fakes.

See it end to end.

Spawn a ticket, scan the QR with a real phone, and approve the payment from the console — the phone catches up on its own.

Open the live demo