DeriPayDeriPayDeriv docs
DeriPayDeriPayDeriv docs
Deriv partner portalDeripay Partner API

Get started

Partner portalAuthentication and authorizationCustomer authorization

Move money

Markets and ratesDepositsWithdrawalsWallet and Options transfersTransaction status and eventsFailed transactions and reporting issuesStatistics and CSV exports

Reliability

Idempotency and retriesErrors and recoveryGo-live checklist

API reference

API reference
Health check GETAuthorize customer POSTGet connection GETSave default phone PATCHGet balances GETList payment corridors GETGet exchange rate and limits GETGet Kenya exchange rate and limits GETCreate mobile money deposit POSTCreate crypto deposit POSTSubmit deposit verification POSTStart withdrawal verification POSTResend withdrawal verification POSTComplete withdrawal POSTList transactions GETGet transaction GETMonitor transaction GETList Wallet–Options transfers GETCreate or retry Wallet–Options transfer POSTGet Wallet–Options transfer GETDismiss unconfirmed transfer POSTGet statistics GETExport statistics CSV GETList earnings by transaction GETGet earnings by customer GET

Deripay Partner API

API referencePayment API

Monitor transaction

Receive server-sent events for one transaction. status and complete events contain the transaction object. heartbeat contains {"ts":1791795600}; timeout contains {"message":"reconnect"}. Reconnect to the same URL after a timeout. Once the stream opens, HTTP stays 200. A fatal lookup error ends the stream with an error event containing the standard JSON error response, such as {"success":false,"error":{"code":"NOT_FOUND","message":"The requested resource was not found for this connection."}}. Deripay retries temporary lookup failures within the stream. Reconnecting returns current state without replaying earlier events.

GET
/api/mpesa/transactions/{transaction_id}/monitor

Receive server-sent events for one transaction. status and complete events contain the transaction object. heartbeat contains {"ts":1791795600}; timeout contains {"message":"reconnect"}. Reconnect to the same URL after a timeout. Once the stream opens, HTTP stays 200. A fatal lookup error ends the stream with an error event containing the standard JSON error response, such as {"success":false,"error":{"code":"NOT_FOUND","message":"The requested resource was not found for this connection."}}. Deripay retries temporary lookup failures within the stream. Reconnecting returns current state without replaying earlier events.

Required API key scope: transactions:read.

Request example

GET /api/mpesa/transactions/507f1f77bcf86cd799439011/monitor?connection_id=conn_example_01 HTTP/1.1Host: api.edgepro.siteX-API-Key: <your-api-key>X-Deripay-API-Version: 2Accept: text/event-stream

Authorization

partnerAPIKey
headerX-API-Key<token>

Path Parameters

transaction_id*string

Query Parameters

connection_id*string

The connection_id returned when you authorized this customer.

Header Parameters

X-API-Key*string

Your API key. Send requests from your server.

X-Deripay-API-Version*string

Selects the response and error format documented here. Without it, the same URL returns the original format.

Accept?string

Response Body

Successful request.

response?stringtext/event-stream
curl -X GET 'https://api.edgepro.site/api/mpesa/transactions/507f1f77bcf86cd799439011/monitor?connection_id=conn_example_01' \  -H 'X-API-Key: <your-api-key>' \  -H 'X-Deripay-API-Version: 2' \  -H 'Accept: text/event-stream'
"event: status\ndata: {\"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}\n\nevent: complete\ndata: {\"id\":\"507f1f77bcf86cd799439011\",\"connection_id\":\"conn_example_01\",\"type\":\"deposit\",\"payment_method\":\"mobile_money\",\"status\":\"completed\",\"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\":\"2026-10-12T09:00:00Z\"}\n\n"

Get transaction GET

Get the current transaction status. This request can refresh an unresolved payment’s outcome. A completed status confirms Wallet funding for a deposit or payout for a withdrawal.

List Wallet–Options transfers GET

Get up to 20 of this connection’s newest transfers. Filter by unresolved or by a linked deposit_transaction_id. Payment transaction lists and SSE streams do not include transfers.