Error Codes
The canonical wallet-callback status enum used across the 155.io API
This page is the single source of truth for the status values your wallet returns on the operator callbacks (/balance, /bet, /win, /rollback). The callback pages link here rather than re-listing the enum, so this is the one place it lives.
Always return HTTP 200
Every operator callback response uses HTTP 200 — the outcome lives in the body status, never in the HTTP status code. Our system treats any non-200 response as a transport-level failure (which may trigger retries or rollbacks) before the body is ever parsed. A declined bet is still a 200 with an error status.
Status enum
These are the only status values 155.io recognises on a direct-integration wallet callback. Any value not in this list is treated the same as UNKNOWN_ERROR.
| Status | Meaning | Typical callback(s) |
|---|---|---|
SUCCESS | The operation completed. Return this whenever you accept the request (and for idempotent replays of an already-applied /win or /rollback). | /balance, /bet, /win, /rollback |
INSUFFICIENT_BALANCE_ERROR | The player does not have enough balance to cover the bet. | /bet |
DUPLICATE_TRANSACTION_ERROR | The transactionId has already been processed — reject the duplicate (idempotency). | /bet |
UNKNOWN_ERROR | Any other failure. The operation could not be completed and no more specific status applies. | /balance, /bet, /win, /rollback |
BONUS_ERROR | The bet does not pass your bonus / promotion rules. | /bet |
BET_LIMIT_REACHED_ERROR | The player has reached a configured betting limit. | /bet |
On HTTP-status vs `status`
Returning a non-200 HTTP status (e.g. 400/500) to signal a declined bet is the most common integration mistake. Return 200 with INSUFFICIENT_BALANCE_ERROR (or the relevant status above) instead.
These are NOT status values
ROUND_CLOSED— a 155-side internal error (code4006), never something your wallet returns.BET_LIMIT_REACHED— a common typo; the real value isBET_LIMIT_REACHED_ERROR(the_ERRORsuffix is required).
Aggregator integrations (Hub88) use a different status set (RS_OK, …) — the enum above is for direct integrations only.
Error response format
Echo back the requestId and clientPlayerId alongside the status:
{
"status": "INSUFFICIENT_BALANCE_ERROR",
"requestId": "original-request-id",
"clientPlayerId": "player-id"
}Sign your operator-side responses (including error responses) with the X-Marbles-Signature header. 155.io does not currently verify response signatures, but signing now is forward-compatible — see Security.