DeFi Bookkeeping Fundamentals for Finance Teams
Spot crypto bookkeeping is bank reconciliation with a different data source. DeFi is not, and the reason is specific: in DeFi the wallet balance stops being the position.
You deposit assets and hold a token representing a claim. You stake and hold a derivative whose value drifts. Your balance changes with no transaction in your history at all. A finance team that treats the wallet as the ledger will produce accounts that are wrong in ways nobody notices until the audit.
The four patterns that break naive bookkeeping
Receipt tokens. You hold one token that represents a claim on assets you deposited. What appears in the wallet is the receipt; what you are economically exposed to is the underlying. Both need to be visible, because reporting only the receipt token loses the exposure and reporting only the underlying loses the counterparty and protocol risk.
Rebasing balances. Some tokens change your balance without a transfer. There is no transaction to book, and a bookkeeper reconciling on transaction history will find the balance no longer agrees with the ledger and have nothing to explain it. Rebases have to be derived by comparing balances across block heights.
Auto compounding. A vault harvests and reinvests. Your share count stays the same and its value rises. The income event is real and it happened inside the protocol, not in your wallet. Reconstructing it usually requires the protocol's own accounting data.
Composite transactions. One on-chain transaction routinely contains an approval, a swap, a deposit and a reward claim. Booking it as a single line loses most of what happened and makes the resulting figures unauditable.
Gross versus net
Decide early whether protocol interactions are presented gross or net, and apply it consistently. A swap booked net shows only the change in value. Booked gross it shows a disposal of one asset and an acquisition of another. The second is almost always the right answer, because the disposal is a real event with tax and measurement consequences, but the decision should be explicit rather than an artefact of how a tool imported the data.
Pricing, once
Every DeFi position eventually needs a value, and DeFi generates a very large number of small events. One price source, one intraday convention, one policy for illiquid tokens, documented, applied everywhere. Inconsistent pricing across event types is the most common reason a DeFi period cannot be tied out.
Gas
Gas is paid on every interaction, including ones that are not themselves accounting events, such as an approval. A policy is needed: which gas is attributable to an acquisition or disposal, which is operating expense, and how a single transaction's gas is allocated across the several events it contains. Any consistent policy beats a per transaction judgement.
The chart of accounts problem
A conventional chart of accounts has no place for a liquidity position, a staked derivative or protocol denominated receivables. Retrofitting them into whatever account is nearest destroys the information. Build the sub ledger to hold protocol, position type, underlying assets and receipt tokens, and let it summarise into the general ledger rather than forcing the detail into it.
Closing a period
- Enumerate every wallet and every protocol position. A position discovered later invalidates prior closes.
- Pull all activity from the chain, including internal transactions, token transfers and contract interactions a naive export omits.
- Derive rebases and vault accrual by comparing balances across block heights, since no transaction exists to import.
- Eliminate transfers between the entity's own wallets.
- Value everything on the single documented convention.
- Reconcile computed closing balances to on-chain balances at the period end block. If they do not tie, the population is incomplete. This is the control that makes DeFi bookkeeping auditable, and skipping it is what makes it not.
Our crypto sub ledger covers holding this detail, and crypto accounting covers the measurement frameworks the positions land in.
General information, not accounting or audit advice. Confirm the current requirements of the applicable standards with your auditor or a qualified accountant.
FAQ
Because the wallet balance stops being the position. Receipt tokens represent a claim on assets held elsewhere, rebasing tokens change balances with no transaction, auto compounding vaults accrue income inside the protocol, and one on-chain transaction routinely contains several distinct events.
Gross is almost always right, because a swap is a disposal of one asset and an acquisition of another with real measurement and tax consequences. What matters is that the decision is explicit and consistent rather than an artefact of how a tool imported the data.
By deriving it. A rebase changes your balance without a transfer, so there is no transaction to import. It has to be computed by comparing balances across block heights, which is also why transaction based reconciliation alone will not tie out.
Reconciling computed closing balances to actual on-chain balances at the period end block. If they do not tie, the address and position population is incomplete. Everything else, pricing conventions, gas policy, gross presentation, only becomes meaningful once that reconciliation holds.
