Investment ledger

Positions are built from shares and share prices, every figure above that is calculated, and statuses are derived rather than set by hand.

The ledger is the part of Fundra that has to be right. Everything else – reporting, analytics, LP communication – reads from it, so an error here propagates everywhere.

Built on shares, not summaries

A position isn't a row you fill in. It's derived from the transactions underneath it: shares acquired, the price paid for them, follow-ons, splits, convertible conversions, secondaries, write-downs and exits. Ownership, valuation and returns are all computed from that base.

This is why Fundra won't let you type in a pre-money valuation. Pre-money is among the most frequently wrong numbers in venture – wrong in term sheets, wrong in closing documents, wrong in the spreadsheets that get passed around afterwards. Entering it by hand means inheriting whoever's arithmetic error. Fundra derives it from share price and share count, which are the figures the documents actually get right.

The same rule applies everywhere: anything derivable is derived. You record what happened; Fundra computes what it means.

The payoff shows up in the awkward cases. A 10:1 share split, a bridge that converts at a discount, a partial secondary – these are where hand-maintained portfolio spreadsheets quietly go wrong. Fundra tracks the split multiplier and share lineage, so a measure like multiple on original share price stays correct across all of them. The model behind it was built against thousands of real transactions.

Core figures

Every amount below is in fund currency unless the field says otherwise, and each carries the currency it's denominated in.

Cost

FigureMeaning
invested_capitalTotal capital invested into the company
original_invested_capitalThe part invested in the first round
followon_invested_capitalThe part invested in later rounds
total_transaction_costsTransaction and investment costs
total_acquisition_costinvested_capital + transaction costs – the full cost of the position
fund_divestmentAcquisition cost that has left the fund through exits
remaining_acquisition_costtotal_acquisition_costfund_divestment – cost still held

Value

FigureMeaning
fmvFair market value of the holding, in fund currency
fmv_localThe same value before FX conversion, with fmv_local_currency
fx_rate, fx_dateThe rate used and the date it was taken from
company_valuationEnterprise value of the company
valuation_methodHow the FMV was determined
total_proceedsEverything received back – exits, dividends, interest

Ownership

FigureMeaning
shares_acquiredAll shares ever bought
shares_ownedShares held now
shares_exitedShares sold
options_heldOptions currently held
shareholding_fdOwnership, fully diluted
shareholding_nfdOwnership, not fully diluted
shareholding_original_fdFully diluted ownership at first investment

Performance

FigureMeaning
moicMultiple on invested capital: (fmv + total_proceeds) / total_acquisition_cost
moospMultiple on original share price – current share price against the first price paid, adjusted for splits
irrMoney-weighted return (XIRR) over the position's cashflows
profit_lossTotal gain or loss on the position
unrealized_gain_lossGain or loss on the remaining holding
holding_periodMonths held

moic and irr are computed for you and returned on every portfolio company. Use them rather than recomputing, so your numbers match what the app and your LP reports show. The formula above is for when you need MOIC across an arbitrary grouping the API doesn't provide.

Why moosp matters. MOIC tells you what the money did. Multiple on original share price tells you what the share did – stripped of follow-on averaging and corrected for splits. A position where you invested at €1.00 per share and the latest round prices at €4.00 is a 4.0x on original share price, even if heavy follow-on investment at €3.50 has pulled MOIC down to 1.4x. Both are true; they answer different questions. When a valuation is written to zero but the position produced proceeds, Fundra falls back to the average exit share price so the multiple reflects the actual outcome rather than showing 0x.

Investment status

Status is derived from the ledger, never set by hand – so it can't drift out of line with the transactions.

StatusWhen it applies
newCommitted but nothing invested yet – no capital and no shares acquired
activeCapital invested or shares held, not exited and not written off
partially_exitedSome shares sold with proceeds received, while shares are still held
exitedAll shares sold, or the full acquisition cost divested
inactiveWritten off but still on the books – shares or capital remain, valuation is zero or the method is write-off

A holding valued at zero with no proceeds is treated as a write-off. If it's exited on top of that, it's an exit that returned nothing – which is why exited and a zero return are distinguishable in reporting rather than collapsed together.

investment_phase is separate: it records the round the fund first invested in (Seed, Series A, and so on), not the current state of the position.

Cap tables in any format

Cap tables arrive as whatever the company happens to keep them in – an Excel model, a PDF from counsel, a screenshot in a WhatsApp message. Fundra reads all of them. Upload the file and it extracts the shareholder table directly, no reformatting required.

What comes out is structured rather than a transcription:

  • Shareholders with shares owned (fully diluted), options and warrants.
  • Related entities groupedCreandum IV (X) AB and Creandum VI (Y) AB become one Creandum line, which is what you actually want in an ownership chart.
  • Types assigned: founder, fund, angel investor, individual, option pool – aligned with Invest Europe reporting categories for co-investor breakdowns.
  • ESOP consolidated across options, VSOP and warrants, including jurisdiction-specific instruments.
  • Summary rows, subtotals and option-only holders are excluded rather than double-counted.

It's checked against your ledger. The extracted shares outstanding is validated against what the ledger expects at that event, and the import fails loudly if the two disagree – usually meaning the wrong file, or the wrong date. A cap table that doesn't reconcile doesn't get saved silently. Documents with multiple tables or several levels of ownership are handled by picking the table that contains the full shareholder list.

Capital accounts and carry, calculated independently

Fundra computes LP capital accounts, allocations, management fees and carry from your fund terms – hurdles, preferred return, catch-up and loss carryforward – rather than importing what someone else calculated. Allocations use exact decimal arithmetic with a defined remainder policy, so they sum to the cent.

Running your own numbers alongside your fund administrator's is what makes discrepancies visible. In practice this surfaces a handful of differences per quarter – miscalculated carry, misallocated drawdowns – most of which turn out to be on the administrator's side. Finding them takes a comparison rather than a re-audit.

Funds of funds

Portfolio entries have a type of either company or fund. Fund entries carry fund_metrics instead of company-level figures, so fund-of-fund positions sit in the same ledger and roll up alongside direct investments.

On this page