How LedgerLift works
From a wallet address to a report you can sign off, in five steps.
01
Fetch
Read every transaction from an indexer.
02
Decode
Turn contract calls into plain actions.
03
Price
Value each token on its day.
04
Classify
Your rules first, then known patterns.
05
Export & seal
Files for your accountant, a fingerprint on-chain.
How an entry gets its category
The first match wins.
| Order | When | Category |
|---|---|---|
| 1 | You changed it | Your choice |
| 2 | One of your rules matches | The rule's category |
| 3 | Both sides are your wallets | Own-wallet transfer |
| 4 | Known contract call | Token swap or network fees |
| 5 | Known address in the directory | Its usual category |
| — | Anything else | Needs review |
Your wallets count as one
Money moving between them is neither earned nor spent.
Prices at the time of the transaction
Example: 0.5 tETH on Aug 14 at $3,142.18 = $1,571.09. Network fees are valued the same way.
Sealing a report
The report's fingerprint is written on-chain. Change any entry later and the seal shows it.
For developers
The same pipeline runs on a subgraph query, paged by block range.
Show the query and export columns
Subgraph query
query WalletHistory($wallet: Bytes!, $from: BigInt!, $to: BigInt!) {
transfers(
where: { or: [{ from: $wallet }, { to: $wallet }],
blockNumber_gte: $from, blockNumber_lte: $to }
orderBy: blockNumber
first: 1000
) {
transactionHash blockNumber timestamp
from to value
token { symbol decimals }
transaction { gasUsed gasPrice input }
}
}Ledger export columns
- date_utc
- wallet
- direction
- counterparty
- counterparty_address
- category
- category_source
- token
- amount
- price_usd
- value_usd
- fee_teth
- fee_usd
- tx_hash
- block