New: multi-entity reconciliation is liveNow indexing Cosmos, Substrate, Solana & BitcoinPost journal entries straight to QuickBooks OnlineRead-only API access, no keys, no withdrawal permissionsBook a 30-minute walkthrough with our team
SimplyLedger

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.

DepositDraft

14/08 · stETH / WETH · Uniswap V2

stETH−30.4200
WETH−32.0200
LP token+61.48
Growth index1.626642
WithdrawalDraft

06/10 · same position

LP token−25.00
stETH+12.4000
WETH+13.0500
Growth index1.631047
Finalised asSplit fees as income
stETHprincipal12.3665
stETHLP_FEE_INCOME0.0335
WETHprincipal13.0148
WETHLP_FEE_INCOME0.0352

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.

How the fee is worked outstETH / WETH
  1. 01Average deposit indexDeposits' growth indexes, weighted by LP tokens minted1.626642
  2. 02Withdrawal indexPool value per LP token at the block1.631047
  3. 03Fee share1 − 1.626642 ÷ 1.6310470.27%
  4. 04Fee, per token received12.4000 stETH × 0.27%0.0335
  5. 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.

  1. Step 01

    Sync

    LP deposits and withdrawals arrive as drafts with their LP token, protocol, pool tokens and type worked out.

  2. 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.

  3. Step 03

    Choose how withdrawals book

    Split fees as income, or keep them at cost basis, withdrawal by withdrawal.

  4. 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.

LP transactions grouped by position, showing wallet, pool, protocol, LP balance, fee treatment and status

Every position at a glance

Wallet, pool, LP balance, how its withdrawals will be finalised, and whether anything is still in draft.

A stETH / WETH Uniswap V2 position with a deposit and a withdrawal set to split fees as income

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 us
Which 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.

Your crypto. Your books. In sync.

Book a call and we’ll walk you through the workflow for your stack.