Interpret Send/Receive Event Webhook Responses

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 NameField TypeDescriptionPossible Values
coinStringType of cryptocurrency involved in the transaction"ETH", "BTC", etc.
txidStringA unique identifier of the transactionAny unique string
raw
walletidIntegerA unique identifier of the wallet involved in the transactionAny integer
txidStringThe transaction ID on the blockchainAny valid transaction ID
dateStringThe date and time when the transaction occurredAny valid date-time string
valueStringThe amount of cryptocurrency transferred in the transactionAny valid amount
valueStringStringAnother representation of the amount transferredAny valid amount
baseValueFloatThe base value of the amount transferredAny valid amount
baseValueStringStringString representation of the base valueAny valid amount
feeStringStringThe gas fee for the transactionAny valid fee
usdStringThe value of the transaction amount in USDAny valid amount
walletTypeStringThe type of wallet used"pipeline", "MPC"
inputsArrayContains information about the transaction inputsArray of input objects
→ addressStringThe address from which the transaction originatedAny valid address
→ amountStringThe amount of cryptocurrency sent from the input addressAny valid amount
→ isMineBooleanIndicates whether the input address belongs to the usertrue, false
outputsArrayContains detailed information for each transaction output; an output may include multiple objects.Array of output objects
→ addressStringThe address to which the transaction was sentAny valid address
→ amountStringThe amount of cryptocurrency sent to the output addressAny valid amount
→ isMineBooleanIndicates whether the output address belongs to the usertrue, false
→ walletObjectContains details about the wallet used in the transactionWallet object
→ → idIntegerThe ID of the walletAny integer
→ → nameStringThe name of the walletAny string
→ → typeStringThe type of wallet used"pipeline", "MPC"
→ → configStringThe configuration of the walletAlways "2of2" for MPC, for multi-sig it can be any config
→ → statusIntegerThe status of the walletAny integer
→ → balanceStringThe current balance of the walletAny valid amount
→ → balanceusdStringThe current balance of the wallet in USDAny valid amount
→ → raw-Raw data related to the wallet
→ → issyncedBooleanIndicates whether the wallet is syncedtrue, false
→ → walletpathStringThe path of the walletAny valid path
→ → walletidentifierStringThe identifier(address) of the walletAny valid identifier
→ → coinStringThe type of cryptocurrency held in the wallet"ETH", "BTC", etc.
→ → chainStringThe blockchain on which the wallet operatesAny valid chain, Ex. ETH
→ → parentchainStringThe parent blockchain of the chain on which the wallet operatesAny valid parent chain. Ex. EVM
→ → subtypeStringThe subtype of the walletDeposit, Hot(withdrawal)
→ → isArchivedBooleanIndicates whether the wallet is archivedtrue, false
→ → teamIdThe ID of the team associated with the wallet
→ → versionIntegerThe version of the walletAny integer
→ → orgidIntegerThe ID of the organization associated with the walletAny integer
sequenceIdStringIf empty, the transaction is a receive transaction; otherwise, it's a send transactionAny string or empty
DestinationTagA tag for the destination of the transaction
typeStringThe 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 NameBlock confirmations in testing environmentBlock confirmations in production environment
Bitcoin1
Ethereum541
Polygon20151
Polygon zkEVM20
Solana10
Cardano10
Binance Smart Chain5
Binance Beacon Chain (BEP2)60
Bitcoin Cash1
DogeCoin20
LiteCoin1
Tron10
XINFIN10
XRP3
XTZ30
Stellar Lumens3
Flair20
Dot30

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".