Skip to content

The double-entry ledger for platforms that move money.

Marketplaces, payout platforms, rentals - anywhere a buyer, a seller, and you all have a claim on the same dollar. Ledfra keeps them straight.

Built for engineers. Loved by accountants.

Free during Early Access, then half rate, for as long as you stay. See pricing

Assets
$6,267,985
↑ 56.9% this month
Liabilities
$3,358,078
↑ 5.5% this month
Equity
$1,775,987
↑ 128.9% this month
Transactions
126,515
↑ 13.5% this month
Daily Balance
Assets · Liabilities · Equity
Assets Liab. Equity
Cumulative Profit
This period
$1,133,920

Every number above reconciles.

$6,267,985 assets$3,358,078 liabilities$1,775,987 equity$1,133,920 profit

Computed from one series of bookings, never typed in, which is why it balances to the dollar. Check it against a live ledger

Why Ledfra

Correct by construction

Double-entry is enforced at the API level. You literally can't post an unbalanced transaction.

Real-time, audit-ready

Every balance, P&L, and balance sheet is live. Every entry is immutable and traceable back to the source event.

Built to integrate

Idempotency keys, OpenAPI spec, sandboxes. Ship your first transaction in an afternoon.

Three steps from account to audit.

01

Model your money

Define accounts, account types, and posting rules once. Ledfra validates them against accounting invariants at setup time so broken models fail before they ship.

02

Post transactions

One API call per business event (payout, refund, fee). Ledfra turns it into balanced double-entry postings automatically and records the source event for audit.

03

Query anything

Real-time balances, trial balance, P&L, and balance sheet, all derived from the same source of truth. No nightly jobs, no separate analytics pipeline.

One balance per user. Zero provisioning.

A marketplace has millions of sellers - you can't create an account by hand for each one. In Ledfra you don't. Address any account by a readable slug like liabilities:user/123, and the first transaction that references it creates the account automatically.

  • Human-readable slugs, not numbered codes like 2100
  • Sub-accounts created on first use: no pre-provisioning, no races
  • Unlimited per-object accounts: one wallet per user, one payable per seller
  • The slug is its own audit trail: it says exactly what the account is
How accounts work
Accounts
from template liabilities:user
liabilities:user/123
USD:1,240.00
liabilities:user/456
USD:88.50
liabilities:user/9981
auto-created
USD:50.00
liabilities:user/…created on demand, as transactions arrive
For developers

An API that reads likethe mental model you already have.

Post a balanced transaction and get back the source of truth: real-time balances, P&L, and balance sheet all derive from it. Double-entry is enforced at the API boundary, so an unbalanced write is rejected, not absorbed.

What a rejection looks like - nothing is written in any of these cases:

400
Debits and credits do not net to zero in some currency.
409
An idempotency key was reused with a different body.
422
The posting would leave a guarded account below zero.
Read the API reference
POST
curl 'https://ledfra.com/api/ledgers/{ledgerId}/transactions' \
  -H "Authorization: Bearer $LEDFRA_KEY" \
  -H 'Idempotency-Key: payout-5f72a1' \
  -H 'Content-Type: application/json' \
  -d '{
    "description": "Marketplace payout",
    "metadata": { "seller_id": "42" },
    "entries": [
      {
        "account": "liabilities:seller/42",
        "operation": "DEBIT",
        "amount": "USD:95.00"
      },
      {
        "account": "assets:cash",
        "operation": "CREDIT",
        "amount": "USD:95.00"
      }
    ]
  }'
Daily Income & Expenses
Last 17 days
Total Income
$223,724.93
Total Expenses
$11,186.25
Cumulative Profit
Running total
Total Profit
$212,538.68
For finance teams

Dashboards that don't need a data engineer.

Every view is derived from the ledger itself, so numbers never drift from source of truth, and month-end stops meaning all-nighter.

Close
No nightly jobReports derive from the ledger on read. There is no export, no warehouse copy, and no window where the dashboard and the books disagree.
Time zones
Every team, its own dayA team in New York and a team in Tokyo each see the same ledger rolled up by their own calendar day, from the same entries.
See how reporting works

Free while we’re in Early Access.

What you pay now, and what you’ll pay later.

Free

during Early Access

Everything Ledfra offers, at no cost while we’re in Early Access.

  • No credit card required
  • Sign up in under 30 seconds
  • Full access to all features
  • Direct access to the founder

Your rate locks at half price the day you sign up.

Start building
Paid plans

Numbers aren’t set.Your terms are.

We won’t publish a price until it’s real.

Half the published rate, for life.
Sign up during Early Access and your workspace pays 50% of the published rate, for as long as it stays active, not for a first year.
Sixty days, and your rate up front.
You’ll see the exact number you’ll be charged at least 60 days before the first invoice. Nothing switches on automatically, there’s no card on file to charge.

Ten minutes to set up. Correct for life.

Free to try. No credit card. Sandbox included.