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

Deripay Partner API

Errors and recovery

Handle request errors and unresolved payments.

Use error.code to decide how to handle a failed request. Errors have the following format:

{
  "success": false,
  "error": {
    "code": "PAYMENT_UNCONFIRMED",
    "message": "The payment outcome could not be confirmed. Read the existing operation; do not create a replacement."
  }
}
HTTPCodeHandling
400INVALID_REQUESTCheck field types, required fields and the current transaction status.
401AUTHENTICATION_REQUIREDVerify the key; reconnect the customer's Deriv authorization when required.
403ACCESS_DENIEDCheck workspace approval, scopes, country restrictions and ownership.
404NOT_FOUNDCheck IDs and the authenticated connection.
409OPERATION_CONFLICTCheck the existing transaction or transfer; keep its key or UUID.
410EXPIREDInspect the existing operation before restarting.
412ACCOUNT_NOT_ELIGIBLECheck account permissions, verification, limits and balance.
413REQUEST_TOO_LARGEReduce the request body.
422PAYMENT_REJECTEDReview account eligibility, amount and balance.
429RATE_LIMITEDWait; honor Retry-After when present.
500INTERNAL_ERRORCheck the existing outcome before retrying.
502PAYMENT_UNCONFIRMEDOutcome is unconfirmed; never create a replacement.
503SERVICE_UNAVAILABLEWait, then retry with the same request and key or UUID.
504OUTCOME_UNKNOWNA timeout does not prove failure; read the existing operation.

Each endpoint lists the errors it can return. After an SSE stream opens, errors use this JSON structure in an error event; the HTTP status stays 200.

The transaction's failure field is null unless the payment failed or needs reconciliation. Failed payments use PAYMENT_FAILED; unresolved payments use PAYMENT_UNCONFIRMED. Reports can group processing problems under PAYMENT_PROCESSING_ISSUE. Check the transaction before retrying a payment.

When contacting support, include the transaction or transfer ID, connection ID, UTC timestamp, HTTP status and error code. Leave out API keys, access tokens, verification codes and PINs.

Idempotency and retries

Retry requests without creating duplicate payments.

Go-live checklist

Test payment completion, error handling and retries before launch.