Environment
Credentials, provisioned API users and wallet balances.
The proxy provisions its own API user and key on first use, then caches the access token until it expires. Reset forces a fresh set.
Wallet lookup
Confirm an MSISDN is a live MoMo wallet before moving money to it.
GET /collection/v1_0/accountholder/msisdn/{msisdn}/active — returns
200 {"result": true} for a valid wallet, 404 otherwise.
1MTN → MTN, with a commission split
Collect from a payer's MoMo wallet, then pay out to the recipient and a commission number in the same flow.
There is no native split primitive. The split is two independent
POST /disbursement/v1_0/transfer calls with separate reference ids — so each leg
can succeed or fail on its own, and the ledger has to reconcile the pair rather than assume
atomicity. That is the real finding this card exists to prove.
The sandbox only settles EUR. Put XAF in the currency box and
MTN answers 500 INVALID_CURRENCY — "Currency not supported." It is a property of
the sandbox environment, not of where you are calling from. XAF arrives with production
access, together with X-Target-Environment: mtncameroon.
2MTN ↔ Orange, cross-network
Collect on one network, pay out from our own pre-loaded float on the other.
Once Orange access exists, the outbound leg is the mirror of card 1's payout: debit our Orange float, credit the Orange customer. The inbound leg proven here is unchanged.
3Airtime & data
Buy airtime or a data bundle on MTN and on Orange.
Trace
Every request and response, exactly as it went over the wire. Credentials are redacted by the proxy.
Run something above and the full exchange shows up here.