Ledger

// every total derived · nothing stored twice

Expenses in.Net worth out.

A spreadsheet drifts because every month you re-type five totals that could have been computed. Ledger stores the detail and derives the rest — so the summary and the detail cannot disagree.

Net worth₱1,108,311.45
cash + investments + receivables − creditsposted 2 rows · just now
0
stored totals
every figure is a view over the rows
13
derived views
net worth, spend, categories, merchants
4
kinds of holding
cash, investments, receivables, credits
2
spreadsheets replaced
expenses and net worth, in one place

// watch

Ninety seconds with Bill.

Spending logged in plain words, totals the database adds up, a month rolled forward and closed, and the report that follows — the whole routine, start to finish. The emailed report and recurring bills are available in Ledger.

Ledger in ninety seconds, with Bill · 1:29

// why

The total was the problem.

In a workbook, the monthly summary is a figure someone maintains by hand. It is correct until the month you add an account and forget to widen a formula — and nothing tells you, because a spreadsheet cannot know what its own total was supposed to be.

Here it is a view over the rows. There is no stored total anywhere in the database, so there is nothing to fall out of step.

// how it works

Three things, in the order you will do them.

step 1

Bring the workbook in

Import reads your expense sheets and your cash, investments, receivables and credits tabs — then checks itself against the totals your own history sheet already carried, month by month, before writing anything.

What the import reads
Five tabs, in the shape the workbook already has.
  • Expensesone sheet per month
  • Casha column per month
  • Investmentsa column per month
  • Receivablesone line per loan
  • Creditsone line per card or loan

step 2

Log the way you talk

“grab 336, moveit 121” becomes two rows with the right categories. Merchants you have used before resolve instantly with no AI call at all; only genuinely new ones ask the model, and nothing saves until you have checked it.

step 3

Fill in what changed

Opening a new month copies last month’s balances forward, so you only type the numbers that actually moved. Net worth, the month-on-month change and every category total follow from there.

// what it does

Built to be checked, not believed.

One shape for everything you own and owe
Cash, investments, money lent out and money owed all live in one table. Receivables carry who borrowed AND what for, so “Sam owes me ₱50,000” is still answerable six months later.
Your data, and only yours
Every row is scoped to your account by row-level security in the database itself, not by application code that could forget. A probe of every one of those rules runs after every schema change.
Readable exports with merge restore
Download one XLSX with readable sheets. All-time exports include versioned financial restore data; review additions and conflicts before merging. Partial downloads are spreadsheet reports.

// get started

Start with the month you are in.

Your nine expense categories are created for you at sign-up, so you can log something in the first minute — and import the back catalogue whenever you feel like it.