Skip to main content

Webhook - Offramp

This section explains the steps to configure callback URLs for receiving events about completed offramp transactions.

Configuring Webhook

Webhooks are configured in the merchant dashboard.

Inside the Setup section, webhooks can be added and modified under the Callback URL's section.

Webhook Configuration

Generating HMAC

Signature is computed using Hash-based message authentication code (HMAC) using a secret key. The secret key is the API Secret present in your merchant dashboard.

The example implementation in Node.js is shown below:

let hmac = crypto.createHmac('sha256', apiSecret);
hmac.update(JSON.stringify(postBody));
let hash = hmac.digest('hex');
assert(hash == headers["X-Onmeta-Signature"])

Completed Order

POST{{configured_webhook_url}}

This callback will be triggered when the crypto coins are deposited to the given receiver address. It will use the configured webhook URL to send order completed details in the POST body.

info

Event Type: offramp

Make sure you have firewall rules configured to allow receiving the webhook body, otherwise your firewall might block our webhook requests.

Headers

NameTypeRequiredDescription
AcceptstringYesapplication/json
Content-TypestringYesapplication/json
X-Onmeta-SignaturestringYesHMAC signature for webhook verification

Request Body Parameters

ParameterTypeRequiredDescription
fiatnumberYesFiat amount
senderWalletAddressstringYesWallet address sending the crypto
sellTokenSymbolstringYesSymbol of the sold token
sellTokenAddressstringYesContract address of the sold token
orderIdstringYesUnique order identifier
statusstringYesOrder status
currencystringYesFiat currency code
chainIdnumberYesBlockchain network chain ID
customerobjectYesCustomer information object
created_atstringYesOrder creation timestamp
updated_atstringYesOrder update timestamp
tenantIdstringYesTenant identifier
transactionIdstringYesTransaction identifier
tokensDeductednumberYesAmount of tokens deducted
tdsnumberYesTDS amount
eventTypestringYesEvent type identifier (offramp)
metaDataobjectNoAdditional metadata

Code Examples

curl --location -g --request POST '{{configured_webhook_url}}' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'X-Onmeta-Signature: string' \
--data-raw '{
"fiat": 100,
"senderWalletAddress": "0x12E217bf293b242r1r1414fcw42g1",
"sellTokenSymbol": "MATIC",
"sellTokenAddress": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
"orderId": "63c51a9e598f1f0fabbe8fbc",
"status": "completed",
"currency": "inr",
"source": "",
"chainId": 80001,
"customer": {
"id": "63c514c142e2ae343ed283ed",
"name": "",
"email": "test@onmeta.com",
"phone": {
"countrycode": "",
"number": ""
},
"created_at": "2023-01-16T12:00:00.000Z"
},
"created_at": "2023-01-16T12:00:00.000Z",
"updated_at": "2023-01-16T12:30:00.000Z",
"tenantId": "122345677",
"transactionId": "S11FWKNM931",
"tokensDeducted": 1.22,
"tds": 1,
"eventType": "offramp"
}'

Response Sample

{
"fiat": 100,
"senderWalletAddress": "0x12E217bf293b242r1r1414fcw42g1",
"sellTokenSymbol": "MATIC",
"sellTokenAddress": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
"orderId": "63c51a9e598f1f0fabbe8fbc",
"status": "completed",
"currency": "inr",
"source": "",
"chainId": 80001,
"customer": {
"id": "63c514c142e2ae343ed283ed",
"name": "",
"email": "test@onmeta.com",
"phone": {
"countrycode": "",
"number": ""
},
"created_at": "2023-01-16T12:00:00.000Z"
},
"created_at": "2023-01-16T12:00:00.000Z",
"updated_at": "2023-01-16T12:30:00.000Z",
"tenantId": "122345677",
"transactionId": "S11FWKNM931",
"tokensDeducted": 1.22,
"tds": 1,
"eventType": "offramp"
}

Offramp Webhook Events

Onmeta offramp flow allows you to receive real-time notifications through webhook events when certain events occur.

#Event NameDescription
1pending

This event is triggered when a user has initialised the order but crypto transfer is pending.

2orderReceived

This event is triggered when a user transfers crypto and the tokens are received by Onmeta.

3InProgress(optional)

This event is triggered when the order is in-progress on the blockchain while swapping tokens (in case of non-base tokens).

4CryptoReceived

When we successfully validate the crypto received from user we send this event.

5PayoutSuccess

This event is triggered when the fiat amount is successfully deposited in the users bank account.

6refunded

This event is triggered when refund is successfully completed in case of amount/token mismatch.

Example Webhook Request

{
"fiat": 100,
"senderWalletAddress": "0xf12dcsdadefed2eeb4d0475de270447a92a481635caf4a",
"sellTokenSymbol": "MATIC",
"sellTokenAddress": "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
"chainId": 137,
"orderId": "641c311afdsaddfwcd2768aa5e",
"status": "PayoutSuccess",
"currency": "inr",
"created_at": "2023-03-23T10:59:38.494Z",
"updated_at": "0001-01-01T00:00:00Z",
"source": "",
"customer": {
"id": "63b52390dsaddefsfefwfw25d377ae",
"email": "documentation@onmeta.in",
"phone": {},
"created_at": "2023-01-04T06:58:24.968Z"
},
"tenantId": "",
"transactionId": "TRAREFXXXXXXXXX",
"tokensDeducted": 1051823.63,
"tds": 1,
"eventType": "offramp",
"metaData": {
"submeta1": "metadata"
}
}