Create a payin
Charges a customer’s Mobile Money wallet directly. Depending on the operator, the response tells you what the customer must do next:
- Phone prompt (most operators) —
checkoutUrlisnull; the customer approves on their phone with their PIN. - Operator redirect (e.g. Wave, Djamo, Orange Money Senegal) — redirect the customer to
checkoutUrl; they come back to yourredirectUrl. - Code (Orange Money Côte d’Ivoire and Burkina Faso) —
otpRequiredis true: showotpInstructionsand send the code to Confirm a payin with a code.
The payin starts as PENDING; listen for the PAYIN_RECEIVED / PAYIN_FAILED webhooks or poll Get a payin.
In sandbox the payin is simulated and returns COMPLETED immediately.
API key scope: payins:write
Authorizations
Secret API key from Dashboard → Developers: kp_sandbox_… for Sandbox, kp_live_… for Production. Server-side only.
Body
Decimal amount with up to 8 fractional digits, e.g. "1500" or "1500.75"
^\d+(\.\d{1,8})?$ISO currency code (fiat) or stablecoin ticker.
XOF, XAF, NGN, GHS, CDF, EUR, USD, USDC, USDT Mobile Money network to charge. Must match currency.
MTN_BJ, MTN_CI, MTN_CM, ORANGE_CI, ORANGE_SN, ORANGE_ML, ORANGE_BF, ORANGE_CM, MOOV_BJ, MOOV_TG, MOOV_CI, MOOV_BF, WAVE_CI, WAVE_SN, FREE_SN, TMONEY_TG, MOBICASH_ML, MOBICASH_BF, DJAMO_CI, MIXX_SN, MTN_CG, AIRTEL_CG, ORANGE_CD, AIRTEL_CD, VODACOM_CD, AFRICELL_CD, AIRTEL_GA, MOMO_NG, AIRTEL_NG, OPAY_NG, MTN_GH, VODAFONE_GH, AIRTELTIGO_GH, BANK_XOF, BANK_XAF, BANK_NGN, BANK_GHS, BANK_CDF, BANK_EUR, BANK_USD, ETH, POLYGON, TRON Where the operator sends the customer back after an operator redirect (checkoutUrl).
How long the customer has to approve the payment, in seconds (60 to 86400).
60 <= x <= 86400