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

Create or retry Wallet–Options transfer

Save a UUID as request_id before the first request. Retry with the same UUID and body. An unresolved transfer blocks new transfers on this connection. Only completed confirms that funds moved. For to_options, you can link a completed deposit using deposit_transaction_id.

POST
/api/deriv/connections/{connection_id}/transfers

Save a UUID as request_id before the first request. Retry with the same UUID and body. An unresolved transfer blocks new transfers on this connection. Only completed confirms that funds moved. For to_options, you can link a completed deposit using deposit_transaction_id.

Required API key scope: transfers:write.

Request example

POST /api/deriv/connections/conn_example_01/transfers HTTP/1.1Host: api.edgepro.siteX-API-Key: <your-api-key>X-Deripay-API-Version: 2Accept: application/jsonContent-Type: application/json{  "direction": "to_options",  "amount": "12.50",  "request_id": "f152a643-04b6-4f78-ae92-e6378fbc1e4b"}

Authorization

partnerAPIKey
headerX-API-Key<token>

Path Parameters

connection_id*string

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

Request Body

application/json
  1. body
  1. body
  2. …
amount*|

Positive USD amount with at most two decimals. Exponent notation is rejected; prefer a decimal string. Zero is rejected even as a string.

deposit_transaction_id?string

A completed deposit belonging to this connection. Use only with to_options. An existing active or completed transfer prevents transferring the same deposit twice.

Match^[0-9a-fA-F]{24}$
direction*string
Value in"to_options""to_wallet"
request_id*string
Formatuuid

Response Body

Successful request.

application/json
  1. response
  1. response
  2. …
success*boolean
message*string
data*
curl -X POST 'https://api.edgepro.site/api/deriv/connections/conn_example_01/transfers' \  -H 'X-API-Key: <your-api-key>' \  -H 'X-Deripay-API-Version: 2' \  -H 'Accept: application/json' \  -H 'Content-Type: application/json' \  -d '{  "direction": "to_options",  "amount": "12.50",  "request_id": "f152a643-04b6-4f78-ae92-e6378fbc1e4b"}'
{  "success": true,  "message": "Transfer completed",  "data": {    "request_id": "f152a643-04b6-4f78-ae92-e6378fbc1e4b",    "direction": "to_options",    "amount": "12.50",    "currency": "USD",    "options_account_id": "CR123456",    "status": "completed",    "created_at": "2026-10-12T09:00:00Z",    "updated_at": "2026-10-12T09:00:00Z"  }}

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.

Get Wallet–Options transfer GET

Get a transfer and check for an updated outcome. Deripay may confirm an unresolved transfer from account history. After a timeout or outcome_unknown, keep using the original request_id.