Webhook

Interface Description

When users buy or sell coins, we will push order information to merchants based on the results of the transactions.

Retry Mechanism: By default, webhooks are sent only once. If needed, please contact us to configure webhook retries with the following intervals: 5 minutes, 15 minutes, 30 minutes, 1 hour, 2 hours, 4 hours, 8 hours. Retrying will stop once we receive an HTTP 200 response with a success message.Currently, webhook retries are only supported for OnRamp.

📘

We recommend using the webhook in conjunction with the Order Query API.

Interface Explanation

Request Method: POST

Request Address: The callbackUrl provided by the merchant when placing an order.

Header Parameter

ElementData TypeRemarks
timestampstringtimestamp (used for signature verification) reference here

On Ramp Webhook

Body Parameter List

Element

Data Type

Explanation

Remarks

appId

string

partner unique ID, once a merchant has been on-boarded with Alchemy Pay, the merchant will be provided with the credentials with appId and appSecret

orderNo

string

Alchemy Pay Order ID

email

string

end user's email

merchantUid

string

User’s UUID from merchant side

crypto

string

crypto type

cryptoPrice

string

crypto price

cryptoQuantity

string

crypto amount

payType

string

fiat payment method

fiat

string

fiat type

amount

string

fiat amount

payTime

string

fiat payment time

network

string

crypto network

address

string

crypto address

txTime

string

crypto received time

txHash

string

crypto hash

status

string

Order status, details
send webhook to merhcant only when order status as: PAY_FAIL, PAY_SUCCESS, FINISHED

message

string

fait payment failed cause

merchantOrderNo

string

merchant order ID

networkFee

string

crypto network fee

Count as USD

rampFee

string

ramp fee

signature

string

This is a deprecated signature field. Please use the newSignature field instead.

fiatInUSD

string

fiat amount(count in USD)

Returned if status is FINISHED.

rampFeeInUSD

string

service charge(count in USD)

Returned if status is FINISHED.

cryptoNetworkFee

string

priced counted on purchased tokens

Returned if status is FINISHED.

networkFeeInUSD

string

Network fee (priced in USD), calculated as cryptoNetworkFee and priced in USD

Returned if status is FINISHED.

cryptoAmountInUSDT

string

The token received by user (priced in USDT)

Returned if status is FINISHED.

rampFeeUnit

string

Unit of Ramp fee, such as USD, INR

newSignature

string

newSignature,reference here

📘

Note:

  1. For local payment in INR, there is no callback for the completion of fiat payment.
  2. Failed payment notifications will include two additional fields: returnCode (error code for failure) and returnMsg (failure reason), without the "message" parameter.

The following parameters are not sent by default and will only be sent if the merchant commission rebate feature is enabled.

ElementData TypeRemarks
createTimestringOrder creation time, format YYYY-MM-DD, HH:MM:SS, e.g., 2021-11-25 10:00:00
tokenAddressstringContract address of the token returned when purchasing coins; leave blank if it is a native chain coin
alpha2stringISO 3166-1 two-letter country code, such as US/JP, etc.
rebateFiatAmountstringCommission amount, valued in fiat currency.
rebateUsdAmountstringCommission amount, valued in USD.

On Ramp Payload Sample (FINISHED)

{
    "payTime": "2025-10-27 14:31:11",
    "txTime": "2025-10-27 14:37:06",
    "signature": "8740b5ae5fae0559a16bf09e755dfe8e130a2553",
    "networkFee": "0.10092527",//count as fiat
    "rawRampFee": "5.188000",
    "fiatInUSD": "120",//Exchange rate between payment fiat currency and USD
    "network": "LTC",
    "cryptoPrice": "100.92520000",//Crypto price count as fiat
    "payType": "Apple Pay",
    "rampFee": "5.18000000",//User purchase fee count as fiat
    "appId": "**************",
    "fiat": "USD",
    "newSignature": "M3yP3sMg97cfuwCk/tQkUrr*****************",
    "txHash": "6f3cb23402837e3dbe3e52aff2f995ff********************",
    "email": "H**********@icloud.com",
    "rampFeeInUSD": "5.18",
    "amount": "120.00000000",//Fiat payment amount
    "orderNo": "1432224***********",
    "address": "ltc1q5hs99hj3rq5e04fsr5******************",
    "cryptoNetworkFee": "0.00446791",//Token network fee,count as purchase token
    "networkFeeInUSD": "0.45",//Token network fee,count as USD
    "cryptoAmountInUSDT": "114.36907472",//User token received amount count as USDT
    "merchantOrderNo": "647b0a96************",
    "crypto": "LTC",
    "rampFeeUnit": "USD",
    "cryptoQuantity": "1.1332055",
    "status": "FINISHED"
}

Off Ramp Webhook

Body Parameter List

Element

Data Type

Remark

orderNo

string

Alchemy Pay Order ID

address

string

ACH address for receiving user tokens

payTime

string

The time when ACH starts to transfer fiat to the user's account

completeTime

string

The time when this order receives the cryptos

merchantOrderNo

string

Merchant order number

crypto

string

Crypto name

network

string

Network of crypto

cryptoPrice

string

Crypto price in fiat type

cryptoAmount

string

Order's crypto amount

fiatAmount

string

The fiat amount user will receive, contains ramp fee

appId

string

appID

fiat

string

fiat currency

txHash

string

Token transferred txHash

email

string

User's email

signature

string

callback signature, the generated signature string is: getMersign(appId,appSecret, appId+orderNo+crypto+network+address)
#getMersign is the sign function for Initiate API

status

string

Order Status, details

orderAddress

string

Url to the order detail page

cryptoacturalAmount

string

The actual received crypto amount

rampfee

string

Ramp fee, based on fiat type

receiptTime

string

Time of user receives payment

paymentType

string

card: transfer to the user's card
account: transfer to the user's account

newSignature

string

newSignature,reference here

📘

Note: Different statuses may have empty values and fields.

Off Ramp Payload Sample(Payment Success)

{
    "orderAddress": "https://ramp.alchemypay.org/#/sellOrder?sellOrderId=1432901579********",// order detail page
    "orderNo": "1432901579**********",
    "address": "************************", // wallet address user need to transfer
    "fiatRate": "0.8580540000",
    "payTime": "2025-10-29 09:54:22",// transfer fiat start time
    "signature": "6d465fd********5627276d03",
    "completeTime": "2025-10-29 09:54:20",// block confirm time
    "merchantOrderNo": "6f34ca6****************",
    "crypto": "USDT",
    "network": "TRX",
    "paymentType": "10010",//  10010 banktransfer
    "cryptoPrice": "1.0000000000",//in fiat
    "receiptTime": "2025-10-29 09:58:04", //transfer fiat success time
    "rampFee": "15.0700000000",//in fiat
    "cryptoAmount": "550.0000000000",
    "fiatAmount": "471.9297000000",//fiat amount contains ramp fee
    "appId": "B93LC4********",
    "name": "Ed**************",// account name
    "fiat": "EUR",
    "cryptoActualAmount": "550.0000000000",
    "txHash": "c67ba35a403f0bd8a946d76f546fb0fc09ce6c7f*************",
    "email": "e************@gmail.com",
    "account": "************4965",// account number
    "status": "4" // 1:create order success  2:user trnasfered token  3:start to pay fiat to user  4:payment success 5:payment fail 6:refund success 7:order expired
}