Etherscan CSV export format
parser live🔒 CSV conversion runs in your browser — files are not uploaded
This is the format reference for Etherscan-family explorer CSV export — where the file comes from, what each column means, and the export quirks that matter. Our parser reads the layout(s) below and converts it in your browser.
Layout evidence: All four export layouts per BittyTax’s etherscan.py, which encodes the exact column sets of the real "CSV Export" downloads — see research/parser-fixture-validation-2026-10.md.
How to export the file
- Open the explorer for your chain — Etherscan, BscScan, PolygonScan, Arbiscan (same export layout).
- Look up your wallet address, then scroll to the bottom of the Transactions / Internal Txns / Token Transfers / NFT Transfers table and click "Download CSV Export".
- Keep your 0x… address in the file name — token-transfer files carry no direction column and the parser reads direction from the filename.
Column reference
Transactions
| Column | What it means |
|---|---|
Txhash / Transaction Hash | On-chain txid. |
Blockno / UnixTimestamp / DateTime | Block number and both timestamp shapes. |
From / To | Counterparty addresses. |
ContractAddress | Contract when the tx targets one. |
Value_IN(ASSET) / Value_OUT(ASSET) | Direction-split native value — the ticker is inside the parens (ETH, BNB, MATIC…). |
TxnFee(ASSET) / TxnFee(USD) | Gas fee in native asset and USD. |
Historical $Price/ASSET | Native-asset price at the tx. |
Status / ErrCode | Non-empty Status = failed transaction. |
Method / PrivateNote | Optional method label and your note. |
Internal transactions
Same shell plus parent-call columns; no fee columns.
| Column | What it means |
|---|---|
ParentTxFrom / ParentTxTo / ParentTxASSET_Value | Parent-call legs for internal value moves. |
TxTo | Recipient (replaces "To"). |
Status | Must be "0" for the row to count. |
ERC-20 token transfers
| Column | What it means |
|---|---|
Txhash / UnixTimestamp / DateTime | Txid and timestamps. |
From / To | Token sender/recipient — direction resolved against the filename address. |
TokenValue / Value | Token quantity. |
USDValueDayOfTx | USD value at tx time (optional). |
ContractAddress / TokenName / TokenSymbol | Token identity — LP tokens get the contract prefix appended. |
NFT transfers (ERC-721/1155)
| Column | What it means |
|---|---|
Txhash / UnixTimestamp / DateTime / From / To | Same envelope as token transfers. |
ContractAddress / TokenId|Token ID / TokenName / TokenSymbol | NFT collection and id. |
Type / Quantity | Token standard and quantity (defaults to 1). |
Format quirks
- The asset ticker lives inside the column name — "Value_IN(ETH)" — read per file, which is why the same adapter covers BscScan, PolygonScan, and Arbiscan.
- Token-transfer files carry NO direction column — direction is resolved by matching your wallet address in the FILENAME. Rows that cannot be attributed stay as flagged "other" rows instead of being dropped or guessed.
- A non-empty Status means a failed transaction: the out-value is treated as 0 and the row becomes a fee-only spend (the gas was still burned).
- Internal-transaction rows only count when Status is "0".
- "-LP" token symbols get the first characters of the contract address appended — LP tokens from different pools do not collide.
- All-zero transaction rows emit a fee-only record — a real gas cost even with no value moved.
Convert this file (1)
| Convert an Etherscan CSV to CoinLedger | live |
All Etherscan CSV converters · Format reference index · All converters