Skip to main content

What is winam-payments?

winam-payments is a payment abstraction layer between your sportsbook or frontend platform and Mobile Money providers in Cameroon (MTN MoMo, Orange Money). Ilustration how it works

What you need to implement

1

Initiate a payment

Call POST /api/v1/deposits or POST /api/v1/withdrawals with your unique reference key.
2

Expose a webhook endpoint

Provide a callback_url that accepts POST JSON requests — this is where winam-payments sends the payment outcome.
3

Verify webhook signatures

Each webhook includes an X-Winam-Signature header (JWT RS256). Verify it with the public key from GET /api/v1/security/callback-public-key.
4

Always read the status field

A 200 HTTP response means the request was processed — not that the payment succeeded. Read the status field in the body, and treat the webhook (or GET /transactions/{id}) as the source of truth for the final outcome.
HTTP 200 ≠ payment success. winam-payments returns 200 whenever the request is processed, regardless of the transaction outcome. A deposit rejected by the operator at initiation comes back as 200 with status: "failed" (reason in state_reason). Never treat the HTTP status alone as confirmation — always inspect the body status and rely on the webhook for terminal states.

Base URLs

End-to-end deposit flow

Deposits

Initiate a Mobile Money deposit

Withdrawals

Initiate a Mobile Money withdrawal

Webhooks

Receive and verify payment notifications

State machine

Transaction lifecycle diagram