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
| Element | Data Type | Remarks |
|---|---|---|
| timestamp | string | timestamp (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 | |
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 | |
message | string | Error message for fiat payment failure | |
merchantOrderNo | string | merchant order ID | |
networkFee | string | crypto network fee | Blockchain transaction fees |
rampFee | string | ramp fee | |
signature | string | This is a deprecated signature field. Please use the | |
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:
- For local payment in INR, there is no callback for the completion of fiat payment.
- Failed payment notifications will include two additional fields: returnCode (error code for failure) and returnMsg (failure reason).
The following parameters are not sent by default and will only be sent if the merchant commission rebate feature is enabled.
| Element | Data Type | Remarks |
|---|---|---|
| createTime | string | Order creation time, format YYYY-MM-DD, HH:MM:SS, e.g., 2021-11-25 10:00:00 |
| tokenAddress | string | Contract address of the token returned when purchasing coins; leave blank if it is a native chain coin |
| alpha2 | string | ISO 3166-1 two-letter country code, such as US/JP, etc. |
| rebateFiatAmount | string | Commission amount, valued in fiat currency. |
| rebateUsdAmount | string | Commission amount, valued in USD. |
On Ramp Payload Sample (FINISHED)
{
"payTime": "2025-10-27 14:31:11",
"txTime": "2025-10-27 14:37:06",
"signature": "8740b5ae5fae0559a16bf09e755d***********",
"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 |
string | User's email | |
signature | string | callback signature, the generated signature string is: getMersign(appId,appSecret, appId+orderNo+crypto+network+address) |
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 |
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
}Updated 18 days ago
