Going live
What GoHub sets up for you
Before you can call anything, we create:
- Your agent — your identity in the engine, and the channel your pricing hangs off.
- An API key — see Authentication.
- Entitlements — which verticals and suppliers you may sell. Inventory outside them is
filtered out of search and rejected at booking with
403 not-entitled. - A settlement mode —
PREPAIDorPOSTPAID.
None of this is self-service. Talk to us to get provisioned.
Settlement modes
Check yours at GET /api/v1/agent/account:
{
"settlementMode": "PREPAID",
"currency": "MYR",
"balance": 1250.00,
"held": 77.00,
"available": 1173.00,
"creditLimit": 0.00
}
PREPAID — bookings are funded from this account. A booking whose payable exceeds
available is rejected with 409 insufficient-funds before anything is booked. Funds are held
while a booking is in flight and debited on confirmation.
POSTPAID — bookings post unbilled debits that feed your invoice. available is not a gate.
If you are PREPAID, poll this endpoint or watch for insufficient-funds and alert your own
operations before customers start failing at checkout.
Integration checklist
Credentials
- API key held server-side only — never in an app bundle or browser
- Separate keys per environment; no key committed to source control
The flow
- Discovery called late, close to payment, so quotes are fresh
-
expiresAtread from the offering — no hardcoded TTL -
quoteIdsent unquoted - One quote per item; nothing reused
- Prices taken from the quote; never sent in the request
Idempotency — the part that matters most
- One key per booking attempt, persisted before the call
- Timeouts retried with the same key
-
409 RECONCILINGretried with the same key until201or422 - No path in your code books again with a fresh key after an unresolved attempt
Errors
- Branching on
reasonand status, not message text -
409split three ways: expired quote,RECONCILING,insufficient-funds -
403 not-entitledsurfaced to your operations, not retried -
items[].state == UNKNOWNnever retried locally
Delivery
-
detail.typeswitched on to render the artifact -
redemptionRef/qrCode/boardingCodereaching the customer -
referenceNostored against your own order, for support
Operations
-
GET /api/v1/bookings/{id}used for polling instead of re-booking -
PREPAID: balance monitored - A runbook for "we think it booked but we never got a 201"
Environments
| Environment | Base URL |
|---|---|
| Development | https://api-booking-dev.gohubwallet.com.my |
Production is provisioned per partner — ask us.
The dev environment books against real supplier staging tenants, and some of them cannot be cancelled. Do not loop booking calls to test throughput.
Getting help
Email engineering@zoltpay.com with the order's referenceNo —
that is the handle we can trace end to end.