# 1、Create Payment Request

API Description

Merchants can use this API to create a new cryptocurrency payment order. The system will return a cashier link and order details, and the user can complete the payment through the cashier page.

Request Method

POST

Request URL

/api/v3/wallet/pay

Request Header

Content-Type: application/json;charset=utf-8
Parameter Name Description Example Value
access_key Merchant's access key pFqV75X3
timestamp Unix timestamp in milliseconds 1679724896223
nonce UUID V4 794c26b0-d33c-4394-b2bb-c485eca16d9e
sign Calculated signature kAXyh+eerqrefyaF8dyFB0M4FVo=

Request Parameters (JSON)

{
  "externalOrderId": "402297358314559082",
  "cashierChainType": "ETH",
  "cashierTokenType": "USDT",
  "cashierCryptoAmount": "1",
  "cashierCurrencyType": "USD",
  "hiddenMerchantLogo": 0,
  "hiddenMerchantName": 0,
  "notifyUrl": "http://192.168.1.135:30002/url",
  "remark": "123"
}

Parameter Description

Parameter Name Type Description Required
externalOrderId String(64) Merchant's order ID Yes
cashierChainType String Cashier main chain type, possible values: ETH, TRON, BSC No
cashierTokenType String Cryptocurrency type, possible values: ETH: USDT,BUSD,TUSD,USDC,PUSD,ETH,TRX,TON,LINK,DAI,SHIB,UNI,LEO,OKB,PEPE
TRON: USDT,TUSD,USDC,PUSD,TRX
BSC:USDT,BUSD,TUSD,USDC,PUSD,BNB,XRP,ADA,DOGE,DOT,LTC,BCH,ETC,FIL,XTZ,CAT,PXP,GOUT,PEPE
No
cashierCryptoAmount String Cryptocurrency amount, with precision according to token (either this or cashierCurrencyAmount) No
cashierCurrencyAmount String Fiat currency amount, with precision ≤2 digits (if provided, it will be automatically converted to the corresponding cryptocurrency amount based on the platform's exchange rate) No
cashierCurrencyType String Fiat currency type, possible values: USD, BRL, CNY (required if providing fiat currency amount) No
hiddenMerchantLogo int64 Whether to hide the merchant logo, possible values: 0, 1. 0 - Do not hide logo, 1 - Hide logo (default is 0 if not provided) No
hiddenMerchantName int64 Whether to hide the merchant name, possible values: 0, 1. 0 - Do not hide name, 1 - Hide name (default is 0 if not provided) No
notifyUrl String Callback URL (if provided, the system will callback this URL; otherwise, it will callback the URL configured in the merchant backend) No
remark String(1024) Order remark No
successRedirectUrl String Redirect URL after successful payment No

Response Type

Content-Type: application/json;charset=utf-8

Response Example 1 (Order based on cryptocurrency type)

{
  "code": "200",
  "success": true,
  "msg": "成功",
  "msgEn": "SUCCESS",
  "data": {
    "cashierId": "OCRYPPAID202307310902391690794159250DOCKER020000000200001107",
    "cashierUrl": "http://192.168.1.74:89/OCRYPPAID202307310902391690794159250DOCKER020000000200001107",
    "cashierExpireTime": 1690794759313,
    "cashierCryptoAmount": "1",
    "cashierCurrencyAmount": "0.98",
    "cashierRate": 0.983,
    "cashierCurrencyType": "USD",
    "cashierTokenType": "USDT",
    "cashierChainType": "ETH",
    "isHiddenMerchantName": false,
    "isHiddenMerchantLogo": false,
    "externalOrderId": "402297358314559082",
    "remark": "123",
    "cryptoOrder": {
      "addressTo": "0xe072c63c1e04f8c6f36133f6629f66778147d5d8",
      "orderId": "OCRYPPAID202307310902391690794159441DOCKER020000000400001108",
      "externalOrderId": "402297358314559082",
      "exchangeRate": 0.983,
      "currencyAmount": "0.98",
      "cryptoAmount": "1",
      "currencyType": "USD",
      "tokenType": "USDT",
      "chainType": "ETH",
      "orderStatus": "Wait pay",
      "orderStatusCode": 1,
      "orderExpireTime": 1690801360527
    }
  }
}

Response Example 2 (Order based on fiat currency type)

{
  "code":"200",
  "success":true,
  "msg":"成功",
  "msgEn":"SUCCESS",
  "data":{
    "cashierId":"OCRYPPAID20250417031656174485981616300000201297223",
    "cashierUrl":"http://192.168.1.74:89/OCRYPPAID2025041703165617448598161630000201297223",
    "cashierExpireTime":1744860416178,
    "cashierCurrencyAmount":10,
    "cashierRate":0,
    "cashierCurrencyType":"BRL",
    "cashierTokenType":"",
    "cashierChainType":"",
    "isHiddenMerchantName":true,
    "isHiddenMerchantLogo":true,
    "externalOrderId":"00637444",
    "remark":"test order",
    "cryptoOrder":{
    }
  }
}

Response Parameter Description

Parameter Name Type Description
cashierId String Cashier ID
cashierUrl String Cashier URL
cashierExpireTime int64 Cashier expiration timestamp
cashierCryptoAmount string Cryptocurrency amount at the cashier
cashierCurrencyAmount string Fiat currency amount at the cashier
cashierRate float64 Exchange rate at the cashier
cashierCurrencyType String Fiat currency type at the cashier
cashierTokenType String Cryptocurrency type at the cashier
cashierChainType String Cryptocurrency main chain type at the cashier
isHiddenMerchantName Boolean Whether the merchant name is hidden
isHiddenMerchantLogo Boolean Whether the merchant logo is hidden
externalOrderId String Merchant's order ID
remark String Remark
addressTo String Blockchain payment address
orderId String Order ID
exchangeRate float64 Exchange rate at the time of order creation
currencyAmount String Fiat currency amount in the order
cryptoAmount String Cryptocurrency amount in the order
currencyType String Fiat currency type in the order
tokenType String Cryptocurrency type in the order
chainType String Main chain type of the cryptocurrency in the order
orderExpireTime int64 Order expiration timestamp
orderStatus String Order status description
orderStatusCode int64 Status code, values: 1, 2, 4, 8, 16. A normal created payment order response is 1; later status updates can be checked via queries or callbacks. Detailed status codes can be found below.

Order Status Code Description

Status Code Status Description Final Status Explanation
1 Awaiting Payment No The order has been created but the user has not made the payment yet; no action needed.
2 Confirming on Blockchain No The user has clicked "Completed Payment" on the cashier page, and the system is checking if the payment is confirmed on the blockchain; no action needed.
4 Completed Yes Payment successful, the system will trigger a callback; the merchant should process according to business logic such as adding balance or fulfilling orders.
8 Payment Amount Mismatch Yes User paid an amount ≠ expected amount, the system will trigger a callback; it is recommended to credit the actual amount paid.
16 Payment Timeout Yes The user did not pay in time, and the system will not trigger a callback; if the merchant confirms receipt, manual handling is needed.
32 Not Paid (Address Released) Yes The user did not pay for a long time, the address is released; if payment is made later, a new order will be generated.