Skip to main content

Payload Structure

Every event contains a data object with the transaction snapshot at the moment of the event. The payload structure is the same for all event types, but field values differ depending on the transaction type and lifecycle stage.

Amount Fields Explained

There are four amount-related fields and they serve different purposes depending on the transaction type.

Withdrawal (Buy)

If the integrator passes includeFeeInAmount: true, the calculation is reversed: expectedAmount = original amount, requestedAmount = original amount - networkFee. The relationship is always: expectedAmount = requestedAmount + networkFee. usdtTotal is calculated as: convert expectedAmount to USDT at preview rate, then add 1.25% hold buffer. This is the total USDT deducted from the merchant’s balance. After conversion, excess hold is returned. Example:

Acquiring (Sale)

For acquiring, requestedAmount and expectedAmount are always identical. The amount field shows the actual total received. By comparing amount to expectedAmount, the system determines the transaction status: Paid (equal), Overpaid (more), Underpaid (less). Example:
Summary

Status Values

Currency Logic

The currency field represents what was expected, not what was actually received:
  • Withdrawal: the target cryptocurrency being purchased (e.g. "TRX", "BTC")
  • Acquiring: the expected deposit cryptocurrency from the order configuration (e.g. "BTC")
The actually received cryptocurrency is reported in receivedCurrency (see below).

Received Fields (receivedCurrency, receivedNetwork, receivedAmount)

These three fields represent what was actually deposited on the blockchain for a specific deposit. They are only populated on the deposit_received event and always null for all other events.
  • receivedAmount contains the individual deposit value from the specific webhook, NOT the cumulative total (use amount for cumulative)
  • receivedCurrency is the cryptocurrency ticker of this specific deposit
  • receivedNetwork is the blockchain network of the deposit

Per-Event Field Details

Withdrawal Events

Acquiring Events

Notes:
  • deposit_received is always emitted together with one of: completed, overpaid, underpaid, or currency_mismatch
  • declined may or may not have deposit data depending on whether any deposits were received before the decline
  • Acquiring amounts are cumulative across multiple deposits (each was_final_exchange webhook adds to the total)
  • For currency_mismatch, currency shows what was expected and receivedCurrency shows what was actually sent