Crypto wallet roll-forward: how to build the workpaper auditors ask for

The short answer: A wallet roll-forward proves that a crypto balance moved from opening to closing only through recorded activity. Per wallet and per token, opening balance plus inflows, minus outflows, minus fees, equals closing balance, tied to the on-chain or exchange balance at period end. Auditors request it to test existence and completeness.
Drafted September 2026. Sources: the AICPA Accounting for and Auditing of Digital Assets practice aid (2026 update, September 2, 2026, member-gated), its publicly available January 2022 edition, which the detailed content below is drawn from, and Grant Thornton's ASU 2023-08 summary (December 21, 2023).
Audit teams commonly ask for it in close to the same words, a roll-forward of digital asset balances by wallet. It is not a reconciliation with extra steps, and that difference is the point of this guide.
What a wallet roll-forward is
Opening balance + inflows - outflows - fees = closing balance
You build the crypto version per token and per wallet, and each closing balance ties to an independent figure, either the explorer balance at the period-end block or the exchange statement for that account. The AICPA practice aid's January 2022 edition describes a blockchain balance as the sum of the ins and outs in a public address at a given point in time, and the roll-forward rebuilds that sum from your records.
Per-wallet grain also stops an unrecorded inflow to one wallet from netting against an unrecorded outflow from another.
Roll-forward vs reconciliation
Is a rollforward a reconciliation? No. The two answer different questions, and you need both.
| Reconciliation | Roll-forward | |
|---|---|---|
| Proves | A balance at one date | The movement between two dates |
| Catches | A wrong balance | A missing or misclassified transaction, even when the balance agrees |
| Audit assertion | Existence, mostly | Completeness and occurrence, plus existence at the closing date |
The catch row matters most. A balance can agree while the transaction list is missing a receipt and an equal payment, which is why the month-end close checklist also counts transactions.
Why auditors ask for it on digital assets
The first reason is audit evidence. The AICPA practice aid's publicly available January 2022 edition devotes a section to digital asset safeguarding built around the existence and rights-and-obligations assertions, and treats completeness as a live risk throughout it. That section lists what an auditor may ask management: how it confirms its digital asset reconciliations, how balances are spread across its addresses, and how it sets cut-off times. It also flags the risk of unrecorded forks, airdrops, and validation rewards, and names roll-forwards as a control over the address inventory. One roll-forward answers most of that.
The second reason is disclosure. ASU 2023-08 requires US GAAP filers to present annually "a reconciliation of the opening and closing balances of crypto assets" with additions, dispositions, and gains and losses per asset, effective for fiscal years beginning after December 15, 2024 (Grant Thornton, December 21, 2023). You cannot produce it at year-end without the per-wallet version. The ASC 350-60 guide covers the rest.
The three roll-forwards a crypto team needs
Units, cost, and value move for different reasons.
| Roll-forward | Measured in | What moves it | Closing ties to |
|---|---|---|---|
| Units | Token quantity per wallet | Receipts, payments, transfers, rewards, fees | Explorer or exchange statement at the period-end block |
| Cost basis | Reporting currency | Cost of acquisitions, cost relieved on disposals under your cost basis method | Lot records and the ledger's digital asset account |
| Fair value | Reporting currency | The cost roll-forward plus period-end remeasurement | Closing units at the documented period-end price |
Units is the one auditors mean by wallet roll-forward. Cost basis supports realized gains and the tax file. Fair value is what ASC 350-60 filers disclose. Build units first, since the other two inherit its errors.
A worked example (illustrative)
One Ethereum wallet, one month, two expected tokens and one surprise. All numbers are made up.
Treasury 1 (Ethereum mainnet), 1 to 31 August, closing block at 23:59 UTC on 31 August. Illustrative.
| Token | Opening | Inflows | Outflows | Fees | Computed closing | On-chain closing | Variance |
|---|---|---|---|---|---|---|---|
| ETH | 12.4000 | 8.2912 | 8.1000 | 0.0187 | 12.5725 | 12.5725 | 0.0000 |
| USDC | 25,000.00 | 18,400.00 | 22,750.00 | 0.00 | 20,650.00 | 20,650.00 | 0.00 |
| Token X | 0 | 0 | 0 | 0 | 0 | 1,250 | 1,250 |
ETH inflows: 3.2500 from customers, 5.0000 from the entity's exchange account, 0.0412 of staking rewards. Outflows: 2.1000 to a vendor, 6.0000 to cold storage. Fees are gas, paid in ETH for every transaction including the USDC ones, so the USDC row shows none.
Token X is the point. The ledger never heard of it, the explorer shows 1,250 units, and the variance column is where the unrecorded airdrop turns up. Repeat for every wallet and exchange account, with a transaction list per row and the explorer capture.
What breaks a wallet roll-forward
Most variances have one of these causes.
| Break | Cause | Fix |
|---|---|---|
| Outflow with no matching inflow | Receiving wallet not in scope, or legs never paired | Add every entity-controlled address, then pair transfers so they net to zero |
| Tokens leave one chain, appear on another | Bridge booked as disposal plus unrelated acquisition | Record a transfer with the bridge fee as the only cost, and document the wrapped-token mapping |
| Balance grows with no transaction | Staking or DeFi rewards accrue without a visible transfer | Book rewards as inflows at fair value on receipt, per the DeFi reconciliation checklist |
| Token appears from nowhere | Airdrop or fork never recorded | Scan each address for all token contracts at period end, record what is real, list the spam |
| Native token drifts on a stablecoin wallet | Gas paid in the chain's native token | Add a fees column per native token, including gas on failed transactions |
| Tiny residuals | Dust from rounding, rebasing tokens, partial swaps | Set a materiality threshold per token, write off below it, keep the list |
| Exchange balance does not agree | Earn, staking, or futures sub-accounts outside the spot export | Pull every sub-account and reconcile to the exchange statement |
| Everything agrees except timing | Snapshot at a different block than the transaction cut-off | Use one period-end block for both the balance and the transaction list |
A variance that survives all eight is an unrecorded transaction until proven otherwise. The guide to reconciling crypto transactions covers the matching side.
Building it in a spreadsheet
A spreadsheet works for a few wallets and a few hundred transactions a month. One tab per period, one row per wallet and token, these columns:
- Entity, wallet or account name, address, chain or exchange
- Token ticker and contract address
- Period start and end, with block height or timestamp
- Opening units, linked to the prior closing cell
- Inflows by type: receipts, internal transfers in, rewards, airdrops
- Outflows by type: payments, internal transfers out, disposals
- Fees in the native token
- Computed closing units, as a formula
- Verified closing units from the explorer or exchange, with source
- Variance and status: explained, written off, open
- Opening cost basis, additions, cost relieved, closing cost basis, method
- Period-end price, source, closing fair value, remeasurement
- Preparer, reviewer, dates
The sheet needs two formulas. Computed closing units = opening units + inflows - outflows - fees, calculated per wallet and per token. Variance = computed closing units - verified closing units from the explorer or exchange. Every non-zero variance gets a note before sign-off, either an explanation or a write-off under the materiality threshold. A summary tab groups the per-wallet rows by token and gives the entity-wide position in each token.
At scale it breaks. You match transfers by hand, you look up a price per transaction, and one wrong opening link corrupts every later period. The reconciliation software guide covers where the ceiling sits.
Building it in a subledger
A crypto subledger produces the roll-forward as a by-product of the bookkeeping. Breezing pulls wallet and exchange activity from 80+ blockchains and exchanges, tracks balances per wallet and per token, accrues DeFi rewards, and supports opening balances. It posts the summarized journal entries into Xero, QuickBooks Online, or Bexio, and a correction updates the entry in place instead of deleting and reposting. Unlimited wallets on every tier matter, since the audit population is every address you control. Pricing starts at $29 per month.
What to keep on file
Keep, per period: the roll-forward, the transaction list behind each row, the explorer or exchange capture with block number, the price source and rate, the transfer-matching record, the dust policy and written-off list, and reviewer sign-off. EU crypto-asset service providers face stricter MiCA retention rules, and the MiCA record-keeping guide covers what to keep and for how long.
Quick answers
What is a roll-forward in accounting?
A roll-forward is a schedule that starts with an account's opening balance, adds and subtracts the period's activity, and arrives at the closing balance. It proves the movement between two balance sheet dates. Fixed assets, equity, and digital assets all get one, and auditors use it to test completeness.
Is a rollforward a reconciliation?
No. A reconciliation compares your balance to an external source at one date and proves the balance is right. A roll-forward proves how the balance got there, since opening balance plus recorded activity equals closing balance. You need both. One anchors the endpoints, the other tests the path.
How do I roll forward a crypto wallet balance?
Take the opening units of each token in the wallet, add every inflow, subtract every outflow and the fees paid in that token, then compare the result to the block explorer balance at the period-end block. Any variance is an unrecorded or misclassified transaction.
What do auditors ask for on crypto balances?
Typically a per-wallet, per-token roll-forward for the audit period, the transaction lists behind it, evidence of each closing balance from a block explorer or exchange statement, proof of control over each address, the price source used, and the policy for transfers, rewards, airdrops, and dust.
How often should you roll forward crypto balances?
Every month, as part of the close. Monthly roll-forwards catch breaks while transactions are fresh and explorer data is easy to pull. The annual roll-forward auditors request then becomes a consolidation of twelve monthly ones rather than a rebuild. High-volume entities often check weekly.
What breaks a wallet roll-forward?
Unpaired internal transfers, bridges booked as disposals, staking rewards that accrue without a visible transaction, unrecorded airdrops, gas paid in the native token on stablecoin transfers, dust and rebasing tokens, exchange sub-accounts missing from the export, and a balance snapshot taken at a different block than the transaction cut-off.
Do you roll forward cost basis or units?
Both, in that order. The units roll-forward proves quantities and ties to the blockchain, so build it first. The cost basis roll-forward tracks the reporting-currency cost of additions and the cost relieved on disposals under your chosen method. ASC 350-60 filers add a fair value roll-forward for the annual disclosure.
How does a subledger produce the roll-forward?
A subledger records every wallet and exchange transaction with its classification, so the per-wallet, per-token balance history exists continuously instead of being rebuilt at audit time. Breezing tracks those balances, supports opening balances, accrues DeFi rewards, and posts the resulting journal entries to Xero, QuickBooks Online, or Bexio.
Bottom line
A wallet roll-forward turns a balance into a story the chain can confirm. Build it per wallet and per token, tie every closing balance to an independent source at a fixed block, and run it monthly so the annual version is a consolidation, not a rebuild. Fix the address population and the cut-off first and most breaks disappear. The auditor will ask. The answer should already be on file.
Sources
- Accounting for and Auditing of Digital Assets practice aid (PDF), AICPA & CIMA, 2026 Update published September 2, 2026, checked 2026-09-03: confirms the practice aid's current edition and update date. The page is member-gated, so the detailed content cited in this post is drawn from the January 2022 edition below rather than this 2026 update.
- Accounting for and auditing of digital assets (practice aid, as of Jan. 31, 2022), AICPA, dated January 31, 2022, checked 2026-09-03: supports the blockchain-balance definition (ins and outs in a public address, summed at a point in time, p. 63), the digital asset safeguarding section's focus on existence and rights-and-obligations with completeness as a running risk, the list of questions an auditor may ask management about reconciliations, address dispersal, and cut-off (pp. 64-65), the flagged risk of unrecorded hard forks, airdrops, and validation rewards, and roll-forwards named as a control over the address inventory (p. 65).
- ASU 2023-08 clarifies accounting for certain crypto assets, Grant Thornton, published December 21, 2023, checked 2026-09-03: supports the quoted annual disclosure requirement ("a reconciliation of the opening and closing balances of crypto assets" with additions, dispositions, and gains and losses per crypto asset), the ASC 350-60 scope reference, and the December 15, 2024 fiscal-year effective date.
More articles

Stablecoin invoicing: how to bill, get paid and close the books in USDC or USDT
How to issue an invoice payable in USDC or USDT, get paid on-chain, match the payment in Xero or QuickBooks, book fees and FX, and account for the receipt.

Cryptio alternatives: the 2026 comparison for finance teams
Cryptio is an institutional crypto subledger priced by quote. Compare Breezing, Bitwave, Cryptoworth, SoftLedger, and Ledgible on price, ERPs, wallets, and fit.

How to reconcile crypto transactions: a seven-step process for month-end
A seven-step crypto reconciliation process for bookkeepers: prove completeness, match transfers, price each line, tie balances to the chain, post to the GL.