Skip to main content
By CryptoBankStatement editorial team

USDC Wallet Statements: From ERC-20 Transfer Events to a Reconciled Financial Record

USDC support means the Ethereum mainnet USDC contract, not USDC on every chain where the ticker appears.

Written by: CryptoBankStatement editorial team

Last reviewed:

Product documentation review only. No legal, tax, financial, immigration or banking advice.

CryptoBankStatement is designed for financial documentation rather than crypto tax calculation. For Ethereum-mainnet USDC, it reconstructs transfer activity at 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48, establishes statement-period balances and reconciles the statement using exact 6-decimal token units.

USDC on Solana, Base, Polygon, Arbitrum and other networks is outside this statement. A wallet interface can show those balances; they are not part of an Ethereum-mainnet USDC statement.

Start from the transfer event, not the ticker

An ERC-20 transfer is a log emitted by a token contract. For a USDC statement, the relevant logs are Transfer events from the Ethereum mainnet USDC contract during the statement's block range. The wallet address is the sender or the recipient.

The contract address is 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48. Decimals are 6, so one displayed USDC is 1,000,000 base units. Accounting stays in those integer units until the statement is formatted for reading.

What the statement keeps for each transfer

  • Transaction hash, so the Ethereum transaction can be opened
  • Log index, so one transfer inside a transaction is not confused with another
  • Direction: transfer in or transfer out for the statement address
  • Exact base-unit amount, then a display amount
  • Historical fiat value for the transaction's UTC date

Opening balance, activity and closing balance

Opening Balance + Money In - Money Out = Closing Balance

The opening balance is the USDC balance of the address immediately before the statement period, read from the token contract at that boundary. Transfers in and transfers out are the classified Transfer events inside the period. The closing balance is the contract balance at the end of the period. Those figures have to agree. The statement does not start from zero and it does not add a plug figure to hide a gap.

ETH gas paid to move USDC is an ETH effect. It is not subtracted from the USDC reconciliation identity.

Completeness is checked against Ethereum logs

Supported ERC-20 activity is independently cross-checked against Ethereum Transfer logs for the statement block range, at exact base-unit and event identity. The check is there to catch a missing or mismatched transfer even when the net balance still appears to reconcile.

If required blockchain data cannot be validated, the platform is designed not to knowingly issue an apparently complete statement. That is a fail-closed rule for the document, not a claim that every Ethereum application has been interpreted.

PDF, CSV and what they are for

The PDF is the review document: period, balances, classified activity, fiat estimates and verification references. The CSV carries the same period for a spreadsheet or an accountant's working papers. Neither file is a tax return, and neither file is a regulated bank statement.

A reviewer can follow a row to its transaction hash. Where a verified statement is selected, wallet-control evidence and identity evidence are separate layers and are described on their own terms.

How CryptoBankStatement can help

Generate one statement for one Ethereum address and the USDC asset. PDF and CSV cover the same period. A verified workflow can add wallet-control evidence and, where selected, identity verification.

Important limitations

CryptoBankStatement is not a bank, accountant, solicitor, tax adviser, immigration adviser or financial adviser. This content is not legal, tax, financial, immigration or banking advice. The receiving institution decides what documents it accepts. This article does not describe USDC on any network other than Ethereum mainnet.

Related pages

Continue reading

Frequently asked questions

Which USDC contract is included?
Ethereum mainnet USDC at 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48, which uses 6 decimals. A token that uses the USDC symbol on another contract or chain is not this asset.
What identifies one USDC transfer?
An ERC-20 Transfer event is identified by its transaction hash and log index, against the configured contract. The statement keeps that evidence so a transfer can be found on Ethereum rather than only as a spreadsheet row.
Does the statement use today's USDC price?
No. Historical fiat figures use the daily closing price for the applicable UTC valuation date. That is not an intraday trade price.