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 for six months. Then from $99 a month, 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 for your first six months.

Early Access rates close 31 December 2026.

Free

for your first six months

Everything Ledfra offers, at no cost. The six months start the day you create your workspace.

$99 a month after that

Early Access rate. The price is locked.

Growth is $399 a month from 1 January 2027.

See the published rates

The lock is on the monthly fee. It includes 30,000 posted transactions, however many entries each one carries, and transactions past that are $10 per 1,000 on top. A seven-leg payout costs the same as a two-leg transfer.

Reports, reads, failed writes and the sandbox are free, and always will be.

Create a workspace before 31 December 2026 and this rate is yours for as long as it stays active.

Start building

What Early Access locks

Early Access is the period up to 31 December 2026. A workspace created before it closes carries these commitments from the day it is created, and keeps them.

The fee has a ceiling, and it is the price above.
Whatever we publish, the monthly fee for an Early Access workspace never rises above $99. A published rate that goes up widens the gap rather than reaching you.
It lasts as long as the workspace does.
The lock attaches to the workspace on the day it is created, not to your account. It survives every rate change we publish, and ends only when the workspace is closed.
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, and there’s no card on file to charge.

Every commitment on this page is written into the agreement you sign.

Read what the price lock means (opens in a new tab)

Ten minutes to set up. Correct for life.

Free to try. No credit card. Sandbox included.