Deposits
Initiate a Mobile Money deposit. The player receives a USSD notification to confirm with their PIN.
How it works
Call POST /deposits
reference.USSD notification sent
Player confirms
Webhook fired
callback_url receives a POST with event: "payment.succeeded" (or "payment.failed" if refused or timed out).Notes
POST /api/v1/msisdn/detect to automatically detect the player’s operator from their phone number — no need to ask them. The deposit endpoint rejects with 422 any request whose msisdn prefix clearly contradicts operator (MTN: 67x/68x/650-654 · Orange: 69x/655-659).expires_at timestamp in the response indicates when the USSD confirmation window closes (typically +10 minutes). If the player does not confirm before this deadline, the transaction transitions to expired.
Response states
Authorizations
Body
Player UUID on the sportsbook side
Player MoMo number (E.164)
"+237670123456"
Amount in XAF (min 100). XAF has no sub-unit.
x >= 100MoMo operator
"mtn"
"orange"
Unique sportsbook reference (idempotency key). Same reference = same transaction returned.
1 - 128POST URL for notification when payment is confirmed or fails.
"https://sportsbook.example.com/webhooks/payments"
Response
Successful Response
Winam internal transaction UUID. Use this with GET /api/v1/transactions/{id}.
Your idempotency key, echoed back from the request
Initial state. Typically provider_acknowledged (USSD sent to player) or pending (being sent). Terminal states arrive via webhook.
"provider_acknowledged"
Amount in XAF
5000
"mtn" or "orange"
"mtn"
USSD confirmation deadline (typically +10 minutes from creation). The transaction transitions to expired if the player does not confirm before this time.

