Create Pay-in Order

Creates a fixed-amount shared pay-in order. The response includes order number, receiving address, checkout URL, and payment status.

notifyUrl is required. Later callbacks for this order are delivered directly to this URL.

POST/openapi/payin/orders

Request Headers

FieldTypeRequiredDescription
x-api-keystringYesMerchant API Key. Use the value beginning with mch_ from the merchant API settings page.
x-merchant-uidstringYesMerchant UID.
x-timestampstringYes13-digit millisecond timestamp. The default allowed clock drift is 5 minutes.
x-noncestringYesUnique random string for each request, up to 128 characters. Reuse is rejected.
x-signaturestringYesHex signature generated with HMAC-SHA256. The payload contains Merchant UID, timestamp, nonce, method, path, canonical query, and canonical body.

Request Parameters

FieldTypeRequiredDescription
chainCodestringYesChain code. Supported values: TRON / BSC / SOL.
tokenSymbolstringYesToken symbol, for example USDT.
merchantOrderNostringYesMerchant order number.
amountstringYesPay-in amount, up to 6 decimal places.
notifyUrlstringYesOrder-specific callback URL. A public HTTPS URL owned by the merchant is recommended.

Request Example

{
  "chainCode": "TRON",
  "tokenSymbol": "USDT",
  "merchantOrderNo": "M202604150001",
  "amount": "100.00",
  "notifyUrl": "https://merchant.example.com/api/uugate/payin-notify"
}

Response Fields

FieldTypeRequiredDescription
orderNostringYesPlatform order number.
merchantOrderNostring | nullYesMerchant order number.
bindKeystring | nullYesBinding key for exclusive-wallet orders; empty for shared pay-in orders.
amountstring | nullYesOrder amount.
paidAmountstring | nullYesPaid amount. Empty before payment.
addressstringYesActual receiving address.
cashierUrlstringYesFull checkout URL.
paymentUristringYesWallet payment URI.
expireAtstring | nullYesOrder expiration time.
createdAtstring | nullYesCreated time.
detectedAtstring | nullYesPayment detection time; empty before detection.
confirmedAtstring | nullYesOn-chain confirmation time; empty before confirmation.
completedAtstring | nullYesOrder completion time; empty before completion.
statusstringYesOrder status.

Response Example

{
  "orderNo": "PI1776193200123ABCD1234",
  "merchantOrderNo": "M202604150001",
  "bindKey": null,
  "amount": "100.000000",
  "paidAmount": null,
  "address": "TXYZ3x9nJ5J4xP2gh6mQW7rT31jB8Y2pA9",
  "cashierUrl": "https://open.uugate.com/SK/PI1776193200123ABCD1234",
  "paymentUri": "TRON:TXYZ3x9nJ5J4xP2gh6mQW7rT31jB8Y2pA9?token=USDT&amount=100.000000",
  "expireAt": "2026-04-18T06:30:00.000Z",
  "createdAt": "2026-04-18T06:00:00.000Z",
  "detectedAt": null,
  "confirmedAt": null,
  "completedAt": null,
  "status": "waiting_payment"
}

Code Examples

cURL Request Example
curl -X POST 'https://api.uugate.com/openapi/payin/orders' \
  -H 'Content-Type: application/json' \
  -H 'x-api-key: mch_xxxxxxxxxxxxxxxxxxxx' \
  -H 'x-merchant-uid: 880001' \
  -H 'x-timestamp: 1776193200000' \
  -H 'x-nonce: 2f5c7b147c3748f0a8b3d9bb38aa91a4' \
  -H 'x-signature: <SIGNATURE_HEX>' \
  -d '{
    "chainCode": "TRON",
    "tokenSymbol": "USDT",
    "merchantOrderNo": "M202604150001",
    "amount": "100.00",
    "notifyUrl": "https://merchant.example.com/api/uugate/payin-notify"
  }'

Notes

  • A shared pay-in order may trigger 40105 when the same merchant, chain, token, and amount are still reserved by another valid order.