Mobile Money aggregator for African markets. The payer pays from their mobile money wallet (e.g. MTN, Airtel, Orange, M-Pesa). Deposits are processed through PawaPay's hosted Payment Page; payouts are sent directly to the recipient's wallet. Supports Pay-In and Pay-Out.Operations: Pay-In ✓ | Pay-Out ✓ | Webhook ✓ Processing: Asynchronous - Pay-In redirects the payer to PawaPay's hosted Payment Page; final status for both flows arrives via webhook Payment type: Mobile Money
Currency must match the country: PawaPay charges in the local currency of the selected country, and the currency you send must be the currency of that country or the Payment Page is rejected. For example Senegal/Benin/Ivory Coast/Burkina Faso → XOF, Cameroon/Gabon/Congo → XAF, Zambia → ZMW, Rwanda → RWF, Ghana → GHS, Kenya → KES, Uganda → UGX, DR Congo → CDF, Malawi → MWK.
PawaPay API token (Bearer). Generated in the PawaPay dashboard. Stored per brand, encrypted at rest, and masked in the back office
siteUrl*
Default return URL - PawaPay redirects the payer here after completing or cancelling a Pay-In on the hosted page. Used when the transaction does not send its own returnUrl
webhookUrl*
Your HTTPS endpoint for transaction status updates
The cashier call does not move funds directly. It creates a transaction and returns a paymentUrl (PawaPay's hosted Payment Page, valid for 15 minutes). Redirect the payer to that URL, where they choose their mobile money provider and confirm the payment on their phone. The final status arrives later via webhook.
Currency code. Must match the country's local currency (e.g. "ZMW" for Zambia)
country*
string
ISO 3166-1 alpha-3 country code (e.g. "ZMB"). Determines the market and available providers
phone
string
Payer's mobile money number in international format (e.g. 260763456789). Optional - the payer can also enter it on the hosted page
merchantReference
string
Your reference, echoed back in the response and webhook
customerMessage
string
Short narration shown to the payer. Validation: only letters, digits, and spaces are kept (any other character is removed) and it is truncated to 22 characters; if fewer than 4 characters remain after cleaning, it is dropped and not sent. When not sent, PawaPay defaults it to the company name
returnUrl
string
URL the payer returns to after payment. Overrides the configured siteUrl for this transaction; falls back to siteUrl when omitted
Pay-Out is a direct API call - no hosted page and no paymentUrl. Mozarto predicts the mobile money provider from the recipient's phone and sends the payout to their wallet. The final status arrives via webhook.
Currency code. Must match the recipient's market local currency
phone*
string
Recipient's mobile money number in international format (e.g. 260763456789). The provider is predicted automatically from this number
merchantReference
string
Your reference, echoed back in the response and webhook
customerMessage
string
Short narration shown to the recipient. Validation: only letters, digits, and spaces are kept (any other character is removed) and it is truncated to 22 characters; if fewer than 4 characters remain after cleaning, it is dropped and not sent. When not sent, PawaPay defaults it to the company name
Mozarto calls your webhookUrl when the transaction reaches a final state. PawaPay notifies Mozarto on its own callback URL first; Mozarto then forwards a normalized notification to you.The method field will be PAWAPAY_PAYIN or PAWAPAY_PAYOUT. Non-final statuses (e.g. still processing) are acknowledged but not forwarded.
The cashier call returns an error when the transaction cannot be set up. Payment declines are reported later through the webhook with transaction_status: "Failed", not on this call.
HTTP status
Response
When
400
message: "PSP Configuration not found. Please check you psp Configuration"
The PawaPay apiKey is missing from the back office configuration