Create mobile money deposit
Collect mobile money and fund the customer’s Deriv Wallet. Send connection_id, phone_number, amount and an idempotency key. Kenya also accepts amount_kes. Follow next_action when present and monitor until the status is completed.
Collect mobile money and fund the customer’s Deriv Wallet. Send connection_id, phone_number, amount and an idempotency key. Kenya also accepts amount_kes. Follow next_action when present and monitor until the status is completed.
Required API key scope: deposit.
Request example
POST /api/mpesa/deposit HTTP/1.1Host: api.edgepro.siteX-API-Key: <your-api-key>X-Deripay-API-Version: 2Accept: application/jsonContent-Type: application/jsonIdempotency-Key: order-1001{ "connection_id": "conn_example_01", "phone_number": "254712345678", "country": "KE", "amount": 700, "account_login_id": "CR123456"}partnerAPIKeyX-API-Key<token>X-API-Key*stringYour API key. Send requests from your server.
X-Deripay-API-Version*stringSelects the response and error format documented here. Without it, the same URL returns the original format.
Accept?stringIdempotency-Key?stringRequired unless idempotency_key is supplied in the JSON body. Header takes precedence.
1 <= lengthapplication/json- body
Idempotency-Key header or idempotency_key body value is required. Header takes precedence. Unknown fields are ignored. Send only the documented fields.
account_login_id?stringAn eligible USD account linked to the customer. Omit to use their selected account.
amount*integerDeposit amount in whole local currency units. Kenya also accepts amount_kes. Send one field; a nonzero amount takes precedence.
1 <= valueamount_kes?integerDeposit amount in whole local currency units. Kenya also accepts amount_kes. Send one field; a nonzero amount takes precedence.
1 <= valueconnection_id*stringcountry?stringCountry code. Defaults to your workspace country, or KE if none is assigned. The country must be permitted for your workspace.
idempotency_key?stringRequired here or in Idempotency-Key. The nonempty header takes precedence. Reuse the same key and exact payload across retries.
operator?stringNetwork code returned by GET /corridors. Required when the selected market has multiple networks; otherwise optional.
phone_number*string[key: string]?anyRequest accepted. Check the transaction status to confirm payment completion.
application/json- response
success*booleanmessage*stringdata*curl -X POST 'https://api.edgepro.site/api/mpesa/deposit' \ -H 'X-API-Key: <your-api-key>' \ -H 'X-Deripay-API-Version: 2' \ -H 'Accept: application/json' \ -H 'Idempotency-Key: order-1001' \ -H 'Content-Type: application/json' \ -d '{ "connection_id": "conn_example_01", "phone_number": "254712345678", "country": "KE", "amount": 700, "account_login_id": "CR123456"}'{ "success": true, "message": "Deposit initiated successfully", "data": { "id": "507f1f77bcf86cd799439011", "connection_id": "conn_example_01", "type": "deposit", "payment_method": "mobile_money", "status": "pending", "country": "KE", "network": "mpesa", "local": { "amount": "700", "currency": "KES" }, "settlement": { "amount": "5.00", "currency": "USD" }, "idempotency_key": "order-1001", "account_login_id": "CR123456", "next_action": null, "failure": null, "created_at": "2026-10-12T09:00:00Z", "updated_at": "2026-10-12T09:00:00Z", "completed_at": null }}Get Kenya exchange rate and limits GET
Get exchange rates and payment limits for Kenya. Rates are local currency units per USD. Use deposit_rate to calculate the USD credited by a deposit and withdrawal_rate for withdrawals. Kenya also returns crypto_payment_rate: divide the KES deposit amount by this rate to estimate the USD to pay at crypto checkout. The checkout confirms the final payment amount. Rates and limits can change before submission. This endpoint always returns the USD/KES quote.
Create crypto deposit POST
Create a crypto checkout with a quote in KES. Open next_action.url so the customer can choose an asset and network. Check the transaction after checkout and wait for completed to confirm Wallet funding.