Debit Flow
-
The debit must be confirmed (successful) before any payout (credit) can be processed.
-
If the debit fails due to a deterministic error (e.g., no funds, player locked), the transaction is canceled and does not proceed.
-
A “round finished” request is not needed after the debit rollback has been sent, as the rollback of the debit voids the round.
-
-
If the debit fails due to an indeterministic error (e.g., server or network error), the transaction also does not proceed.
-
This needs to be retried until it succeed or fails.
-
-
A debit transaction cannot be rolled back once a credit request has been received.
Credit Flow
-
If the credit operation fails, it should be retried according to normal procedures.
-
Due to idempotency (i.e., repeated requests within the idempotency window will not double credit the player), retries are safe.
-
Most errors resolve within 5 minutes, but during maintenance windows, it can take longer.
-
We recommend retrying for up to 24 hours, using incremental backoff.
-
-
A credit must always be retried until paid out.
-
If there are multiple credits, all must be processed before the final "round finished" request is sent.
Round Finished
-
Rounds must always be completed by sending a “round finished” request.
-
In the event of a failure, the "round finished" request must be retried using the same failure handling and retry logic as for credits.
-
Regardless of any failures, every round's state must ultimately reach a final status of either "completed" or "cancelled." The game provider must not leave any round in an unresolved (incomplete) state.