The aggregator is yours.The platform is mine.
Xodac Gaming is the other half of a casino — the player app, the wallet, the bonus engine, the reports and the back office your staff work in. It does not sell you games. It connects to the aggregator you already pay for, and leaves that contract in your name.
We call them
Four endpoints, a thin HTTP client, and nothing that can take your casino down if it is slow.
POST /operator/generic/v2/game/url
open a game session
POST /operator/generic/v2/game/list
the catalog, rate-limited to one request a minute
POST /operator/generic/v2/game/round
replay a settled round
POST /operator/generic/v2/products/list
the providers enabled on your account
They call us
Five endpoints we host and operate. Every bet in your casino depends on them answering, which is why this half is the product.
POST /user/info
who this token belongs to
POST /user/balance
the only endpoint exempt from idempotency
POST /transaction/bet
debit, live token required
POST /transaction/win
credit, an expired token is still valid
POST /transaction/rollback
always answers RS_OK, even for a transaction never seen
If you already pay Hub88, you are being sold that subscription a second time
What a new vendor can offer instead of a logo wall
One design system, two applications


No provider ever holds a player’s money
Player wallet
৳1,000.00
| Transaction | Kind | Amount | Status |
|---|---|---|---|
| No rows yet. | |||
A live ledger, with the same rules the API runs. Send a callback and watch the order the writes happen in.
The order of the two writes is the product
The pending row goes to disk before the balance moves. A crash between them leaves a visible row and untouched money, which an operator can see and resolve. The other order fails silently, and silence is the one outcome an audit cannot recover from.
A retry is not a second bet
Idempotency is a unique index on the transaction id scoped to whoever issued it, not a lookup that races. The duplicate-key error is the guarantee: the second insert is refused and the first result is returned. A conflicting reuse of the same id is told apart from a legitimate retry by comparing six fields — no more, no fewer.
- 01The amount is checked as an integer. A caller handing the ledger a float has a bug, so it throws rather than rounding.
- 02The wallet is upserted, never found-then-created — a race on a player’s first spin would otherwise be a duplicate-key error.
- 03The row is written as pending.
- 04A frozen wallet rejects here, with the reason recorded on the row.
- 05One guarded atomic update moves the balance, or matches nothing and refuses.
- 06The row is marked applied, carrying the balance it produced.
There are no multi-document transactions here. Ordering does the work, which means this behaves identically on a standalone MongoDB and on a replica set.
Your staff are the people who actually use this
On a different aggregator? That is one adapter, not a rewrite
An unmapped category is reported to you as a sync error, never defaulted. A game filed under the wrong tab is a bug nobody ever files.
The specification is published. Nobody else does this
Where our responsibility ends
Xodac Gaming is a software supplier. You hold the gaming licence, you hold the aggregator contract, and you are the operator of record in every market you enter. We run no casino, hold no player funds and take no bets. If your regulator requires your critical suppliers to register with them, that registration is something we complete for your licence — ask us about it during onboarding rather than after.
Certification with Hub88 is run under your own Operator ID and key pair, per region, because those credentials are yours. It is a scheduled step in onboarding with a checklist attached, not a gap in the product.
Three things on this platform are narrower than a brochure would make them sound, and they are named on the pages that describe them: payments ship as reference adapters for one market, SMS codes are logged until you contract a gateway, and the sportsbook is a list of brand links rather than an integration. Read what is deliberately not included before you decide.
A demo is a real casino, not a slide deck
We open the player app and the back office against a live API with a mock adapter, make a deposit, clear it from the queue, take a spin, watch the ledger rows land and then reconcile the round. Half an hour. Bring whoever asks the hard questions.
Six fields, and the answer comes from a person. Tell us which aggregator you are on and we will tell you what week one looks like — including none yet, which changes the answer honestly.