The webhook response structure contains several fields that provide information about the transaction.
Webhook Response: Received Native Coin and Token Events
{
id: 1965382,
txid: '0x62eaf9706dac678d8daf672259c44a22e13c7f73b62c6240bd8b5719764d9ae8',
raw: null,
walletid: 2876,
type: 'receive',
fee: '0.00824932',
effectivechange: '4.00000000',
runningbalance: null,
timestamp: '2023-10-05T07:20:29.000Z',
externaladdress: '0x505e71695e9bc45943c58adec1650577bca68fd9',
coin: 'USDT',
effectivechangeusd: '4.00000',
wallet: {
id: 2876,
name: 'Lightning Nodes Deposit POLYGON',
type: 'pipeline',
config: '2of2',
balance: '0.00000000',
address: '0x6d3E8E04f8F178eF755627546aA84Fca4397B20b',
coin: 'MATIC',
chain: 'POLYGON',
parentchain: 'EVM',
subtype: 'deposit',
isArchived: 0,
orgid: 864,
balanceUSD: '0.00000000',
orgWebhook: 'https://testnet-api.pi42.exchange/v1/liminal/webhook',
orgSigningKey: 'ccb56455-9b3d-75e1-8510-482a3a938f26'
},
tokenContractAddress: '0xc2132D05D31c914a87C6611C10748AEb04B58e8F',
sequenceId: '',
explorerLink: 'https://polygonscan.com/tx/0x62eaf9706dac678d8daf672259c44a22e13c7f73b62c6240bd8b5719764d9ae8',
inputs: [
{
address: '0x505e71695e9bc45943c58adec1650577bca68fd9',
amount: '0.00000000',
isMine: false
}
],
outputs: [
{
address: '0x1963159d1f64538b5dc105d4498d248d615ae57c',
amount: '4.00000000',
isMine: true,
wallet: {
id: 2876,
name: 'Lightning Nodes Deposit POLYGON',
type: 'pipeline',
config: '2of2',
balance: '0.00000000',
address: '0x6d3E8E04f8F178eF755627546aA84Fca4397B20b',
coin: 'MATIC',
chain: 'POLYGON',
parentchain: 'EVM',
subtype: 'deposit',
isArchived: 0,
orgid: 864,
balanceUSD: '0.00000000',
orgWebhook: 'https://testnet-api.pi42.exchange/v1/liminal/webhook',
orgSigningKey: 'ccb56455-9b3d-75e1-8510-482a3a938f26'
}
}
]
}
Each field is explained below:
Field Name | Field Type | Description | Possible Values |
---|---|---|---|
coin | String | Type of cryptocurrency involved in the transaction | "ETH", "BTC", etc. |
txid | String | A unique identifier of the transaction | Any unique string |
raw | |||
walletid | Integer | A unique identifier of the wallet involved in the transaction | Any integer |
txid | String | The transaction ID on the blockchain | Any valid transaction ID |
date | String | The date and time when the transaction occurred | Any valid date-time string |
value | String | The amount of cryptocurrency transferred in the transaction | Any valid amount |
valueString | String | Another representation of the amount transferred | Any valid amount |
baseValue | Float | The base value of the amount transferred | Any valid amount |
baseValueString | String | String representation of the base value | Any valid amount |
feeString | String | The gas fee for the transaction | Any valid fee |
usd | String | The value of the transaction amount in USD | Any valid amount |
walletType | String | The type of wallet used | "pipeline", "MPC" |
inputs | Array | Contains information about the transaction inputs | Array of input objects |
→ address | String | The address from which the transaction originated | Any valid address |
→ amount | String | The amount of cryptocurrency sent from the input address | Any valid amount |
→ isMine | Boolean | Indicates whether the input address belongs to the user | true, false |
outputs | Array | Contains detailed information for each transaction output; an output may include multiple objects. | Array of output objects |
→ address | String | The address to which the transaction was sent | Any valid address |
→ amount | String | The amount of cryptocurrency sent to the output address | Any valid amount |
→ isMine | Boolean | Indicates whether the output address belongs to the user | true, false |
→ wallet | Object | Contains details about the wallet used in the transaction | Wallet object |
→ → id | Integer | The ID of the wallet | Any integer |
→ → name | String | The name of the wallet | Any string |
→ → type | String | The type of wallet used | "pipeline", "MPC" |
→ → config | String | The configuration of the wallet | Always "2of2" for MPC, for multi-sig it can be any config |
→ → status | Integer | The status of the wallet | Any integer |
→ → balance | String | The current balance of the wallet | Any valid amount |
→ → balanceusd | String | The current balance of the wallet in USD | Any valid amount |
→ → raw | - | Raw data related to the wallet | |
→ → issynced | Boolean | Indicates whether the wallet is synced | true, false |
→ → walletpath | String | The path of the wallet | Any valid path |
→ → walletidentifier | String | The identifier(address) of the wallet | Any valid identifier |
→ → coin | String | The type of cryptocurrency held in the wallet | "ETH", "BTC", etc. |
→ → chain | String | The blockchain on which the wallet operates | Any valid chain, Ex. ETH |
→ → parentchain | String | The parent blockchain of the chain on which the wallet operates | Any valid parent chain. Ex. EVM |
→ → subtype | String | The subtype of the wallet | Deposit, Hot(withdrawal) |
→ → isArchived | Boolean | Indicates whether the wallet is archived | true, false |
→ → teamId | The ID of the team associated with the wallet | ||
→ → version | Integer | The version of the wallet | Any integer |
→ → orgid | Integer | The ID of the organization associated with the wallet | Any integer |
sequenceId | String | If empty, the transaction is a receive transaction; otherwise, it's a send transaction | Any string or empty |
DestinationTag | A tag for the destination of the transaction | ||
type | String | The type of transaction | "receive", "send" |
Note: The arrow (→) indicates a nested field.
Developer Note:
- Multiple Addresses: Transactions may have outputs with multiple addresses. Systems should be designed to accommodate and iterate through each address within an output.
- Iterative Processing: Process each output object in the array, considering all addresses and amounts specified.
Note: In the webhook response, when tokens are transmitted, the field "tokenContractAddress" will be populated.
Block Confirmation Thresholds
Block confirmations play a critical role in the security and efficiency of transactions on the blockchain. In the context of deposits and withdrawals on Liminal, a specific number of block confirmations are required to ensure the validity and finality of the transactions. This additional confirmation provides an extra layer of security, reducing the risk of fraudulent transactions.
Refer to the table below :
Chain Name | Block confirmations |
---|---|
Bitcoin | 2 |
Ethereum | 20 |
Polygon | 50 |
Polygon zkEVM | 50 |
Solana | 30 |
Cardano | 10 |
Binance Smart Chain | 20 |
Binance Beacon Chain (BEP2) | 60 |
Bitcoin Cash | 10 |
DogeCoin | 10 |
LiteCoin | 5 |
Tron | 30 |
XINFIN | 10 |
XRP | 3 |
XTZ | 30 |
Stellar Lumens | 3 |
Flair | 20 |
Dot | 30 |
Webhook Response: Send Event
{
"id": 1917889,
"txid": "936ad03ff2229b16f6689dfdcdd9e6327f9a8ea7be0bfb95cce51ff13e486584",
"raw": null,
"walletid": 2570,
"type": "send",
"fee": "0.00000000",
"effectivechange": "7.00000000",
"runningbalance": null,
"timestamp": "2023-09-12T13:47:04.000Z",
"externaladdress": "TKsWjWy7bsaZhsqMcLKY3N3hP1koBmgsGd",
"coin": "TRX",
"effectivechangeusd": "0.55391",
"wallet": {
"id": 2570,
"name": "Sample deposit",
"type": "pipeline",
"config": "2of2",
"balance": "27.00000000",
"address": "TYDmpfsPdtEwdsMgnqRiy36WTDovZfcJjx",
"coin": "TRX",
"chain": "TRON",
"parentchain": "TRON",
"subtype": "deposit",
"isArchived": 0,
"orgid": 854,
"balanceUSD": "2.13649785",
"orgWebhook": "https://api-qa.bitdelta.com/api/v1/hooks/lml-hook",
"orgSigningKey": "abc4b309-e8dd-1aef-5f05-3ea0fdaa2fcd"
},
"tokenContractAddress": "",
"sequenceId": "",
"explorerLink": "https://tronscan.org/#/transaction/936ad03ff2229b16f6689dfdcdd9e6327f9a8ea7be0bfb95cce51ff13e486584",
"inputs": [
{
"address": "TKsWjWy7bsaZhsqMcLKY3N3hP1koBmgsGd",
"amount": "0.00000000",
"isMine": false
}
],
"outputs": [
{
"address": "TBfsbAHE9CVL8XiNwL9w2R14RjivoFudGo",
"amount": "7.00000000",
"isMine": true,
"wallet": {
"id": 2570,
"name": "Bitdelta Deposit TRON",
"type": "pipeline",
"config": "2of2",
"status": 1,
"balance": "27.00000000",
"balanceusd": "2.13649785",
"raw": null,
"issynced": true,
"walletpath": null,
"walletidentifier": "TYDmpfsPdtEwdsMgnqRiy36WTDovZfcJjx",
"coin": "TRX",
"chain": "TRON",
"parentchain": "TRON",
"subtype": "deposit",
"isArchived": false,
"teamId": null,
"version": 1,
"orgid": 854
}
}
]
}
For the webhook response corresponding to a "send" event, the "type" field will be set to "send".