A casino backend that connects slots, live dealer and table games from many providers needs one aggregation layer: sessions issued by the operator, balance callbacks that survive retries and rollbacks, rounds that may close after the session, and a daily reconciliation with each provider's own report. This is how that layer is divided and where provider integrations usually break.
An operator that builds its own casino backend and connects slots, live dealer and table games from many providers ends up with as many integration contracts as providers: different launch flows, different wallet calls, different ideas of what a round is. The aggregation layer turns them into one internal contract, so the wallet, the lobby, bonuses, limits and reporting are written once and every provider is adapted to them.
What follows is how that layer is usually divided: what stays with the provider, how sessions are issued, how balance callbacks survive retries and rollbacks, how rounds are recorded when they close after the session, and how the result is reconciled with the provider's own figures.
The short answer is one internal contract with an adapter per provider. The operator issues the session; every debit, credit and rollback carries the provider's transaction ID as an idempotency key scoped by provider and call type; a rollback for a transaction the wallet never saw is stored, so a late original is refused; rounds are recorded as a state that may close after the session ends; and each provider's own report is reconciled against the wallet ledger every day.
The provider runs the game: random number generation, game mathematics, the game client and its certification by a testing laboratory. The operator keeps everything that touches the player and the money: identity, balance, limits, bonuses, the lobby and the records a regulator or a player dispute may ask for. The aggregation layer sits between them and should be the only server-side code that speaks each provider's API.
Providers connect to an operator's money in one of two ways. In a seamless wallet the balance stays with the operator, and the provider calls the operator's wallet for every bet and win. In a transfer wallet the operator moves money into a balance held on the provider's side before play and moves it back only when it calls for it.
The rest of this article assumes a seamless wallet, because there every bet and win is a wallet call.
A game launch starts on the operator's side. The backend checks that this player may play this game now, which covers account state, self-exclusion, limits and whether the game may be offered in the player's jurisdiction. It then creates a session bound to the player, the game and the currency and passes an opaque token to the provider in the launch. When the provider's server calls back, that token identifies whose balance the call is about.
Published operator documents say this plainly. Hub88's wallet API says token validity must not be validated for wins and rollbacks, since they might come after the bet has been played. VeliGames says the operator may not reject the win on a round even if the session has expired.
Any call between two servers can time out after the work on the other side was done. The provider cannot tell a debit that failed from a debit whose response was lost, so it repeats the call or cancels the transaction. The wallet's job is to make both of those safe.
Published integration documents show how persistent the repeats are. Hub88's operator wallet API counts a bet as failed when it does not receive HTTP 200, generates a rollback and retries that rollback up to 500 times with exponential back-off. Gamomat retries a failed request twice, 500 ms apart, then starts a rollback and retries it at intervals growing from one second to 30 minutes. Tom Horn Gaming's wallet timeout is 10 seconds, after which a rollback is sent automatically. A wallet that is down for a few minutes comes back to a queue of repeats and rollbacks, not to silence.
The expected reply to a repeat is not standard either. Hub88 requires that requests with the same transaction ID are not processed twice and that the response is the same for all duplicates; VeliGames asks for an error with HTTP status 409 and DUPLICATE_TRANSACTION; Tom Horn Gaming has a separate result code for a duplicate reference. The adapter answers each provider in its own form, and the ledger underneath stays the same.
The rollback of an unknown transaction is easy to get wrong. If the wallet keeps nothing, a debit that was only delayed in transit arrives a moment later and succeeds, and the player pays for a bet the provider has already cancelled. Storing the rollback first and checking for it under the debit's account lock closes that gap.
Providers state this rule in their own documents. St8's operator API says that when the operator receives a transaction ID for a cancel it has not processed before, the ID must be saved to prevent it from being processed later. Tom Horn Gaming expects its unknown-transaction result code when the wallet never handled the withdrawal a rollback refers to.
A round is the provider's unit of play, and it rarely maps to a single transaction. A slot spin is often one debit and one credit, sometimes sent as one call. Blackjack can add debits for a split or a double. Live roulette takes bets from many players during a betting window and settles all of them when the result is known. Free rounds can produce a series of wins that belong together.
Round history is what a player dispute is settled with. Keep each ledger entry with the provider, the game, the round, the amounts, the balance before and after, and two timestamps, the provider's and the wallet's, and link the provider's own round details where its API offers them. With that, a question about the money in one spin is answered from the records.
Regulators set the minimum that this history has to cover. GLI-19, the interactive gaming systems standard from Gaming Laboratories International, requires a game recall facility for the player, either as a re-enactment or by description. The UK Gambling Commission's remote technical standards require at least three months of account and gambling history without contacting the licensee, and at least 12 months on request. The Malta Gaming Authority's player protection directive gives the player access to their gambling history for the immediately preceding six months.
Slots spread load over time, because every player spins on their own clock. Live dealer tables synchronise players: bets from everyone at a table arrive in the seconds before betting closes, and wins for everyone arrive together when the result is known. A popular table repeats that for every player who bet.
Adapters are where provider differences live, and they should be the only place they live. Each adapter handles:
The internal contract stays small: open a session, read the balance, debit, credit, debit and credit in one call, pay out without a bet, roll back, close a round, and a fixed set of errors the wallet can return. A new provider is then an adapter and a test suite, rarely a change to the wallet.
Each provider keeps its own record of every round and invoices the operator from it. The aggregation layer's ledger is the operator's side of the same money. Reconcile the two every day, on each provider's day boundary and time zone, per provider, currency and game:
How long that evidence has to be kept is part of the integration. Hub88 asks for each transaction ID to be stored on both sides for at least four months for reconciliation purposes, and Gamomat's operator API returns reconciliation data for a date range or for a single round.
The question has three kinds of answer, and they sell different things. Aggregators and platform vendors rent the operator their layer: one contract, many providers, their commercial terms. Turnkey and white-label platforms include the layer inside a platform the vendor owns. Engineering firms build the layer inside the operator's backend, and the operator signs its provider contracts itself.
Whichever kind you talk to, these questions show whether a team has built this before:
An answer that stays general on the first two means the edge cases would be found in production.
amBrain is a software development company specializing in trading platforms, matching engines, real-time bidding systems, and casino platform engineering. amBrain has been building software since 2019.
In iGaming, the figures amBrain publishes as measured are 500+ third-party provider integrations and 12 operators live.
amBrain works in three formats: full delivery, a dedicated team, or engineers embedded in your team. The client keeps full ownership of the product and the code, except amBrain's reusable components.
This article explains how an aggregation layer works; it is not a case study, and it names no clients.
So the first decision is not which providers to sign. It is the internal contract every provider will be adapted to, written down with its error cases before the first adapter exists.
Bring your current architecture and the failure mode that worries you, and we will go through it together in half an hour.