DeFi liquidity
LP transactions,
booked the right way.
Deposits into and withdrawals from liquidity pools are picked up on sync and held back as drafts, grouped by position. Decide how each withdrawal is booked, split trading fees off as income, then finalise into your pending transactions.
How it books
Principal stays principal. Fees become income.
A deposit and a withdrawal on the same position. Between them the pool earned trading fees, so the withdrawal pays out a little more per LP token. Split fees as income and that extra is booked as LP_FEE_INCOME.
14/08 · stETH / WETH · Uniswap V2
06/10 · same position
Sent to pending transactions, then categorised and posted like any other row.
The calculation
Growth index in, fee share out.
The growth index is the pool's value per LP token at the end of a transaction's block. Comparing a withdrawal's index with the deposits before it gives the share of what it paid out that was fees.
- 01Average deposit indexDeposits' growth indexes, weighted by LP tokens minted1.626642
- 02Withdrawal indexPool value per LP token at the block1.631047
- 03Fee share1 − 1.626642 ÷ 1.6310470.27%
- 04Fee, per token received12.4000 stETH × 0.27%0.0335
- 05Principal12.4000 − 0.033512.3665
Coverage
The pools your treasury actually uses.
Protocols are detected from the indexer's tags or read on chain, along with each pool's tokens.
- Uniswap V2
- Uniswap V3
- Uniswap V4
- Curve
- Balancer V1
- Balancer V2
- Balancer V3
- Trader Joe LB
Fees can be split from principal. Uniswap V3 and V4 fee claims are booked as income whichever way you choose.
Capabilities
Liquidity pools, without the spreadsheet.
Detected on sync
Transfers and swaps the indexer tags as liquidity pool activity are held back as drafts instead of landing straight in pending transactions.
Grouped by position
One position per account, pool and chain, named after the pool's tokens, with its LP balance, LP token price and status.
Protocol aware
Uniswap V2, V3 and V4, Curve, Balancer and Trader Joe LB. Protocol and pool tokens are read on chain wherever the protocol allows it.
Fees split from principal
The pool's growth index at every deposit and withdrawal gives each withdrawal's fee share, booked as LP fee income.
Cost basis by default
Keep a withdrawal at cost basis and the fees stay inside what you received. Choose per withdrawal; Uniswap V3 and V4 fee claims are always income.
Locked once finalised
Finalising writes the rows to pending transactions, where they post like any other. Revert the posting and the row comes back.
Workflow
From pool activity to posted entries.
- Step 01
Sync
LP deposits and withdrawals arrive as drafts with their LP token, protocol, pool tokens and type worked out.
- Step 02
Fetch growth indexes
Read the pool's value per LP token at the end of each transaction's block, plus any missing LP token prices.
- Step 03
Choose how withdrawals book
Split fees as income, or keep them at cost basis, withdrawal by withdrawal.
- Step 04
Finalise
Preview every row it adds, then send them to pending transactions to categorise and post to QuickBooks.
In the product
See it in SimplyLedger.

Every position at a glance
Wallet, pool, LP balance, how its withdrawals will be finalised, and whether anything is still in draft.

One position, transaction by transaction
LP minted and burned, running balance, growth index and LP token price, with the fee treatment chosen per withdrawal.
FAQ
Common
questions.
Quick answers about how SimplyLedger fits your stack. Need something more specific?
Talk to usWhich protocols are supported?
Uniswap V2, V3 and V4, Curve, Balancer V1, V2 and V3, and Trader Joe Liquidity Book. Fees can be split on positions whose growth index can be read: Uniswap V2, Curve, Balancer V2 and Balancer V3.
How is the fee worked out?
Each deposit's growth index is weighted by the LP tokens it minted. A withdrawal's fee share is one minus that average over the withdrawal's own index, never below zero. The fee is the amount received times that share, for every token the withdrawal paid out.
What about pools with yield-bearing tokens?
When a pool holds a yield-bearing token such as stETH, its growth is part of the index, so the split shows pool earnings (fees plus yield). On Curve cryptoswap pools, fees are net of rebalancing.
Keep exploring
More of what SimplyLedger handles.
- Cost basisCost basis & realized gainsAVCO, FIFO, LIFO, HIFO or Spec ID per token. Opening lots, the cost of every disposal, and realized gains posted by period.Explore
- IFRS valuationIAS 38 remeasurementsCost or revaluation model per token. Impairment tested against recoverable amount, OCI surplus and disposal results posted to QuickBooks.Explore
- ReconciliationPeriod-end closePer token reconciliation against the balance actually held, recorded differences, valuation adjustments and a QuickBooks tie-out.Explore
- MatchingSwaps & bridgesBoth legs of a swap or bridge posted to a hold account and matched, with the residual posted to a difference account.Explore
- StakingStaking balancesAvailable, delegated and unclaimed reward balances tracked as separate token cards, each read from the chain and reconciled on its own.Explore
- Payables & receivablesBills & invoicesPick the open QuickBooks bill or invoice a crypto payment settles, and the payment is written against it as you post.Explore
- MonitoringBalance alertsAn email, Slack or Telegram message when a token card's balance goes below or above a threshold. In portfolio and accounting.Explore
Your crypto. Your books. In sync.
Book a call and we’ll walk you through the workflow for your stack.