Skip to main content
Merkle Street

Protocols, markets, policy, people

Reconcile BNB Chain Payouts from Transaction Logs

Match each expected payout to its on-chain transfer, then check the receipt, token contract and raw amount to find missing, duplicate or mismatched payments.

Merkle Street Newsroom#bd519f4 min read

Abstract cover artwork

To reconcile BNB Chain payouts, match each expected payment to a confirmed transaction and verify the transfer recorded by the chain. A transaction is the instruction sent to the network; its receipt records whether execution succeeded and which logs it produced. For a token payout, the token contract emits a transfer event during execution. For a payout in native BNB, the amount is recorded as a transaction value, not as a token transfer event.

Start with the payout list. For every payment, record the recipient address, asset, expected amount and relevant time window. Then collect transaction hashes from the payout system, or search the chain’s records for transfers from the paying wallet and token contract. A transaction explorer can make individual checks easier, while an RPC service can retrieve receipts and matching logs in batches. A Poocoin guide to connecting token charts with wallet activity goes further into using those views to inspect a wallet’s token movements.

What does a transaction log show?

A transaction log shows an event emitted by a contract while the transaction ran. It is included in the transaction receipt, alongside the execution status. Each log identifies the contract that emitted it and includes topics and data that must be interpreted using the contract’s event definition, or ABI.

For a typical BEP-20 transfer, the event identifies a sender, a recipient and a token quantity. The token contract address matters: two contracts can emit events with the same shape, and the same token name or ticker can appear on different contracts. Check the contract address against the token contract used by the payout system before counting the transfer.

A receipt marked successful means the transaction executed without reverting. It does not by itself prove that the intended recipient received the intended asset. The useful record is the successful receipt plus the correct contract’s transfer log, with the expected recipient and amount. Native BNB needs a different check: inspect the transaction’s value and destination, since it does not use a BEP-20 contract log.

How do you match logs to a payout list?

Match one expected payment at a time, using the asset contract, recipient and amount as the main fields. Use the transaction hash to open its receipt, or query logs by block range, contract address and event topics. An RPC log query can filter by indexed event fields, such as a recipient address, but the returned data still needs decoding and comparison.

  • Confirm the network is BNB Smart Chain and the receipt belongs to the expected transaction.
  • Check that the receipt succeeded and that the log came from the intended token contract.
  • Compare the recipient address and amount with the payout record.
  • Count each matching event once, and flag expected payments with no match or more than one match.

Token amounts in logs use integer base units. Convert them using the token’s decimals before comparing them with a payout list shown in human-readable units. Keep the raw value as well as the converted figure; rounding a display value can hide a small difference. Some tokens also charge a transfer fee or apply other custom transfer rules. In that case, compare the recorded event and the recipient’s actual balance change with the token’s documented behavior, rather than assuming the requested amount equals the received amount.

What causes a payout mismatch?

A missing match can mean a payout was never sent, the receipt failed, or the search covered the wrong block range or contract. A duplicate match can mean the same event was counted twice, or that two transfers reached the same recipient. Compare transaction hash and log index as well as recipient and amount: one transaction can emit multiple transfer events.

Keep separate records for native BNB and tokens, and save the transaction hash, block number, contract address, recipient, raw amount and receipt status for each match. This makes a review repeatable and exposes the source of a discrepancy. The reliable reconciliation is a row-by-row match between the payout list and confirmed on-chain records, with unmatched rows left visible for investigation.