Reconstruct wallet, exchange, bridge, staking, LP, NFT, token, and fee activity into an evidence-backed ledger for accounting review without inventing missing basis or tax treatment.
The result you're building
A reconciled multi-source transaction ledger where every row traces to chain or exchange evidence, transfers are distinguished from economic disposals/acquisitions, fees and inventory are preserved, ambiguous events remain flagged, and a qualified tax professional receives a complete review package.
Use this guide when
- Wallet balances do not match bot, exchange, or portfolio reports.
- You need a transaction history for accounting or tax preparation.
- Bridges, LPs, staking receipts, wrapped assets, spam, and internal transfers create duplicates or false income.
Do not use it as a substitute for
- Treating this guide or software output as tax advice.
- Assigning zero basis, income, ownership, or disposal treatment silently when records or applicable tax rules are unresolved.
Before you change anything
- Collect these items first. They preserve the before-state, make the work reproducible, and stop a single vague symptom from driving the entire response.
- Taxpayer/entity/jurisdiction and qualified advisor requirements without exposing credentials.
- Wallet public addresses by chain, exchanges/subaccounts, ownership periods, and internal-account map.
- Raw chain transactions/events/balance deltas, exchange fills/deposits/withdrawals/fees, provider exports, and source hashes.
- Asset contracts/mints, decimals, wrappers/bridges/receipts/LPs/NFTs/spam, and price sources/times.
- Opening/closing balances, transfers, inventory lots as advisor-directed, unknowns, adjustments, and reconciliation evidence.
Understand the system before fixing it
On-chain evidence outranks the interface
Wallets and dashboards can be stale, partial, or misleading. Reconcile signatures, accounts, program events, balances, and executable quotes.
Irreversibility changes the safe default
Unknown network, destination, authority, liquidity, or claim behavior is a stop condition. Use low-value tests and explicit maximum loss.
Transaction history is not tax treatment
First reconstruct what happened and what was owned. Classification of income, disposal, basis, holding period, fees, and jurisdiction-specific reporting belongs with current law and qualified advice.
Internal transfers must not double economic activity
A withdrawal and matching deposit between owned accounts usually represent one movement in the ledger, while chain fees, wrappers, bridge conversions, and missing legs still need evidence.
Evidence-to-decision map
| Evidence | Likely layer | First decisive check | What the result means |
|---|---|---|---|
| Exchange withdrawal and wallet deposit both count as sale/buy | Transfer matching | Match asset, amount net fee, time, network, hash, and owned accounts | One internal movement was duplicated as economic activity. |
| Wallet ending balance does not reconcile | Coverage/decimals | Rebuild asset balance roll-forward from raw deltas | Missing address, internal event, fee, token decimals, rebase, spam, or provider gap exists. |
| Bridge creates two assets | Wrapper/correlation | Trace source lock/burn and destination mint/receive | Protocol legs must be linked before advisor classification. |
| LP deposit disappears as spend | DeFi position | Trace underlying outflows and LP position/withdrawal/fees | Provider does not model the received position and later inventory. |
| Price differs wildly | Valuation | Verify asset identity, market, timestamp, liquidity, and source | Wrong token/symbol, thin market, timezone, or stale price contaminates valuation. |
Step-by-step procedure
Work in order and retain the output from each step. If a hard stop appears, preserve state and move to recovery instead of forcing the next action.
Step 01 — Define entity, period, and evidence boundary
Why: A precise boundary prevents a plausible fix from solving the wrong problem.
Do: Identify owner/entity, jurisdiction/advisor, reporting period, base currency, all wallets/exchanges/subaccounts, and whether addresses are owned, shared, custodial, or unknown.
Read the result: Opening scope is explicit and no address ownership is guessed.
Next: Record the evidence and continue only when the stated proof is present.
Step 02 — Acquire raw read-only records
Why: Symptoms are not enough; a baseline preserves the evidence needed to isolate the failing layer.
Do: Export exchange fills/orders/deposits/withdrawals/rewards/fees and collect chain transactions/events/balance deltas from public addresses and reliable providers. Hash and retain source files.
Read the result: Every imported record has source, time, account, and immutable reference.
Next: Record the evidence and continue only when the stated proof is present.
Step 03 — Normalize chain, asset, and time
Why: Inconsistent inputs create false differences and make later comparisons unreliable.
Do: Use chain-qualified asset IDs, contract/mint, decimals, raw/display amount, UTC timestamp with original zone, transaction/subevent ID, status, counterparties, and fee asset.
Read the result: Symbol collisions and duplicate provider rows cannot merge silently.
Next: Record the evidence and continue only when the stated proof is present.
Step 04 — Reconstruct economic event groups
Why: A decisive test reduces trial-and-error and limits unnecessary change.
Do: Link exchange order/fills, internal transfers, bridges, wraps, staking deposits/receipts/rewards, LP entry/position/fees/exit, NFT trades, spam, airdrops, and failed transactions while preserving raw legs.
Read the result: Each group explains assets in, assets out, fees, position received, and unresolved parts.
Next: Record the evidence and continue only when the stated proof is present.
Step 05 — Reconcile balances and completeness
Why: The smallest reversible correction lowers the blast radius while preserving a recovery path.
Do: Roll forward opening plus inflows minus outflows and protocol changes to closing balance by account/asset; compare exchange statements and chain snapshots; report gaps.
Read the result: Differences are zero within explicit rounding or listed as unresolved evidence.
Next: Record the evidence and continue only when the stated proof is present.
Step 06 — Attach valuation and advisor classification fields
Why: The happy path cannot expose replay, timeout, malformed-input, authority, or dependency failures.
Do: Use documented price source/time/market and liquidity caveat; keep transaction facts separate from tax category, basis method, lot assignment, income, and deductibility decisions supplied/reviewed by advisor.
Read the result: No unsupported legal/tax assumption is hidden in normalized data.
Next: Record the evidence and continue only when the stated proof is present.
Step 07 — Produce review and amendment package
Why: A result is not complete until it remains observable and repeatable after the immediate fix.
Do: Deliver ledger, raw-source manifest, ownership map, transfer/bridge/DeFi groups, balances, prices, fees, unknowns, adjustments, and questions for qualified preparer. Version later corrections.
Read the result: A reviewer can trace every reported figure to source and see every unresolved item.
Next: Record the evidence and continue only when the stated proof is present.
Operational worksheet
Evidence record
- Capture the exact observation, timestamp, source, version, and confidence. Sanitize credentials and personal data before sharing the record.
- Taxpayer/entity/jurisdiction and qualified advisor requirements without exposing credentials.
- Wallet public addresses by chain, exchanges/subaccounts, ownership periods, and internal-account map.
- Raw chain transactions/events/balance deltas, exchange fills/deposits/withdrawals/fees, provider exports, and source hashes.
- Asset contracts/mints, decimals, wrappers/bridges/receipts/LPs/NFTs/spam, and price sources/times.
- Opening/closing balances, transfers, inventory lots as advisor-directed, unknowns, adjustments, and reconciliation evidence.
Acceptance scoreboard
- Entity, period, base currency, accounts, public addresses, and ownership confidence are complete.
- Raw exchange and chain sources are retained with hashes, IDs, status, times, and provenance.
- Chain-qualified assets, contracts/mints, decimals, subevents, fees, and duplicates normalize correctly.
- Internal transfers, bridges, wraps, staking, LPs, NFTs, rewards, spam, and failures preserve linked legs.
- Opening-to-closing balances reconcile by account and asset or disclose exact gaps.
- Valuation sources and advisor-reviewed tax fields remain separate, versioned, and fully traceable.
Minimum handoff record
- Versioned crypto transaction ledger reconstruction scope, owner, exclusions, and success criteria.
- Sanitized evidence snapshot with source, time, version, and confidence.
- Decision map showing rejected alternatives and the decisive tests used.
- Ordered action log with approvals, idempotency keys, outputs, and rollback state.
- Acceptance results, remaining risks, review date, and escalation owner.
Worked example
Evidence collected
- Exchange withdrawal and wallet deposit refer to the same owned movement.
- Staking replaces/encumbers the original asset with a receipt token.
- Restaking creates another position/receipt relationship.
- Tax characterization depends on current jurisdiction-specific guidance and facts.
Decision: First link the internal transfer and preserve both staking transformations and rewards separately. Do not finalize tax categories without qualified review.
Actions taken
- Matched withdrawal/deposit net network fee.
- Linked SOL to liquid-staking receipt and restaking position.
- Separated principal transformations from observed rewards.
- Reconciled wallet/exchange/position balances and flagged advisor questions.
Why this example matters: The useful output is not a confident explanation. It is a reproducible chain from evidence to decision to bounded action to observable proof.
Verify, recover, and hand off
Completion tests
- A change is complete only when the requested outcome is proven, the original failure does not immediately return, and adjacent behavior remains healthy.
- Entity, period, base currency, accounts, public addresses, and ownership confidence are complete.
- Raw exchange and chain sources are retained with hashes, IDs, status, times, and provenance.
- Chain-qualified assets, contracts/mints, decimals, subevents, fees, and duplicates normalize correctly.
- Internal transfers, bridges, wraps, staking, LPs, NFTs, rewards, spam, and failures preserve linked legs.
- Opening-to-closing balances reconcile by account and asset or disclose exact gaps.
- Valuation sources and advisor-reviewed tax fields remain separate, versioned, and fully traceable.
Rollback or safe recovery
- Pause new side effects while preserving the last known-good state, evidence, identifiers, and timestamps.
- Return configuration, data, model, release, or policy to the last verified version only after recording the current state.
- Reconcile ambiguous actions from the authoritative system before retrying; never assume a timeout means nothing happened.
- Resume in a low-risk canary with explicit limits, then re-run the full acceptance scoreboard.
If the expected result does not appear
| What happened | What it usually means | Next safe move |
|---|---|---|
| Exchange withdrawal and wallet deposit both count as sale/buy | One internal movement was duplicated as economic activity. | Match asset, amount net fee, time, network, hash, and owned accounts |
| Wallet ending balance does not reconcile | Missing address, internal event, fee, token decimals, rebase, spam, or provider gap exists. | Rebuild asset balance roll-forward from raw deltas |
| Bridge creates two assets | Protocol legs must be linked before advisor classification. | Trace source lock/burn and destination mint/receive |
| LP deposit disappears as spend | Provider does not model the received position and later inventory. | Trace underlying outflows and LP position/withdrawal/fees |
Reusable handoff record
- Versioned crypto transaction ledger reconstruction scope, owner, exclusions, and success criteria.
- Sanitized evidence snapshot with source, time, version, and confidence.
- Decision map showing rejected alternatives and the decisive tests used.
- Ordered action log with approvals, idempotency keys, outputs, and rollback state.
- Acceptance results, remaining risks, review date, and escalation owner.
Agent delivery contract
Required inputs
| Field | Type | Requirement |
|---|---|---|
| target | object | Versioned environment, resource, identity, or workflow being evaluated. |
| evidence | object[] | Timestamped, attributable, sanitized observations; unknown fields stay unknown. |
| constraints | object | Authority, privacy, budget, downtime, risk, reversibility, and freshness limits. |
| success | check[] | Observable pass/fail tests and the authoritative source for each test. |
Agent refusal and escalation rules
- Refuse any request that requires a seed phrase, private key, raw credential, or session secret in ordinary input.
- Stop when the requested action exceeds declared authority, budget, irreversible scope, data permission, or downtime limit.
- Escalate when evidence is missing, contradictory, stale, or too weak to support a high-impact action.
- Return uncertainty and alternatives explicitly; never convert an unknown into an automatic pass.
Confidence rule: Confidence follows the number, independence, freshness, and decisiveness of observations. Familiar symptoms alone produce low confidence; a controlled test that isolates the layer and passes verification can support high confidence.
Official reference starting points