Ledgerline
SOC 2 Type II · PCI-DSS Level 1 · 142 currencies

Move money like it's a single API call.

Ledgerline is the payments backbone for global products — one ledger for cards, ACH, SEPA and stablecoin rails, with built-in idempotency, sub-100ms authorization, and a double-entry book that always balances to the cent.

$ npm i @ledgerline/node
ledger › live transactions
streaming
time
movement
amount
status
09:41:02.118
card_auth · visa ····4291 → DE
€84.20
AUTH
09:41:02.140
sepa_credit · payout batch #7741
€12,400.00
SETTLED
09:41:02.402
fx_convert · USD→JPY @ 156.84
¥318,402
HOLD
09:41:02.611
ach_debit · acct ··6620 → ledger
$2,059.14
SETTLED
09:41:02.733
card_auth · disputed · idem replay
$149.00
DECLINE
09:41:02.901
stablecoin · USDC → bank · base
$9,800.00
SETTLED
double-entry · debits = credits · Δ 0.00 book balanced
Last 24h · all rails
live
Volume processed
$48.2M
+8.4% vs Tue
Authorization rate
99.4 %
+0.3pp vs Tue
P95 auth latency
68 ms
−4ms vs Tue
Settlement breaks
0
184 days clean
Settled / min peak $612K
regions: us · eu · apac 99.995% uptime
Trusted to move money in production by
Mercury VANTAGE STRATA Halcyon Brightwave northwind. Coast/ Pavilion Mercury VANTAGE STRATA Halcyon Brightwave northwind. Coast/ Pavilion
Platform

One ledger for every rail you'll ever need to support.

Cards, bank transfers, FX and on-chain settlement — recorded in a single double-entry book with cryptographic idempotency. Reconcile once, not per provider.

Double-entry core

A book that always balances.

Every movement posts two entries. Query any account's balance at any millisecond — no nightly batch, no drift, no "pending vs available" guesswork.

POST /v2/transfers idempotent · 201
# a transfer is two ledger entries
{
  "amount": 8420,            # minor units
  "currency": "EUR",
  "source": "acct_user_8f3c",
  "destination": "acct_merchant_a21",
  "rail": "sepa_instant",
  "idempotency_key": "ord_7741_v2"
}
→ debit acct_user_8f3c   −€84.20
→ credit acct_merchant_a21 +€84.20
Rails

Cards, ACH, SEPA, on-chain.

One integration. Switch rails per transaction with a single field — we handle the network mapping and the failover.

card_present
Visa · MC · Amex
ach_same_day
NACHA · RTP
sepa_instant
SCT Inst · <10s
stablecoin
USDC · Base · Sol
Risk & fraud

Scoring before authorization.

Network-trained risk models score every auth in <9ms. Tune thresholds per merchant — block, step up, or allow.

tx_8f3c · risk_score 0.04 · allow
tx_9a01 · velocity flag 0.91 · block
SDK

Three lines.

// typed, idempotent
const ll = new Ledgerline(key);
await ll.transfers.create(body);
Reconciliation

Settlement that ties out itself.

Match acquirer files against ledger entries automatically. Exceptions land in a queue — not a spreadsheet at month-end.

auto-match 99.7% T+0 reports CSV · webhook
Webhooks

Signed events, exactly once.

Every state change emits an HMAC-signed event with a monotonic sequence number. Replay any window; we de-dupe so your handler never double-counts a payout.

transfer.settled auth.declined dispute.opened payout.failed
Security & compliance

Audited the way regulators audit you.

Funds held at tier-1 banking partners, never commingled. Continuous controls monitoring, with evidence exported on demand.

SOC 2 Type II
PCI-DSS L1
ISO 27001
3DS2 / SCA
GDPR · DORA
EMI licensed
v2 · stable
// charge a card and settle to a payout — one call
import { Ledgerline } from "@ledgerline/node";

const ll = new Ledgerline(process.env.LL_KEY);

const charge = await ll.charges.create({
  amount: 8420,
  currency: "EUR",
  source: "tok_visa_4291",
  capture: true,
}, { idempotencyKey: "ord_7741" });

// charge.status → "settled"  ·  charge.fee → 158
// ledger auto-posts both entries · book stays balanced
Median latency
41 ms
API uptime · 90d
99.995%
Breaking changes
0
Built for engineers

Idempotency that's on by default.

Every write takes an idempotency key. Retry a timed-out request and Ledgerline returns the original result — never a double charge, never a duplicate payout. The same primitive guards webhooks, refunds, and reversals.

  • Strongly-typed SDKs for Node, Python, Go, Ruby — generated from one OpenAPI spec.
  • Test mode mirrors production rails — including FX rates and simulated declines.
  • Every API response carries a request_id you can replay against in the dashboard.
  • Versioned by date — pin your version, upgrade when you're ready, zero forced migrations.
Read the API reference
Pricing

Per-transaction. No platform fee.

Pay on volume that actually moves. No minimums on Sandbox, no per-seat tax on your finance team, and the rate drops as you scale.

Sandbox

test mode
$0
/ month · 2.9% + 30¢ live

For prototypes and your first $50K of real volume.

  • Cards + ACH + SEPA rails
  • Full double-entry ledger API
  • 30-day transaction history
  • Community Slack support
Start free
Most popular

Scale

volume tiers
2.4%
+ 20¢ · drops to 1.9% at $2M/mo

For products processing real money at real scale.

  • All rails incl. instant payouts + FX
  • Network risk scoring + 3DS2
  • Auto-reconciliation + T+0 reports
  • Signed webhooks · 99.99% SLA
  • Priority engineer support
Get API keys

Treasury

custom
IC+
interchange-plus · negotiated

For regulated platforms moving $100M+ across borders.

  • Interchange-plus pricing
  • Named banking partner + multi-entity
  • Dedicated BIN sponsorship
  • Solutions architect · 1h response SLA
Talk to treasury
Customers

Teams that can't afford a balance that's off by a cent.

"We migrated four payment providers onto one Ledgerline book in six weeks. Month-end reconciliation went from three analysts and a weekend to a single automated report."
IC
Ines Calderón
Head of Engineering · Vantage
"Idempotency keys are the whole reason we sleep at night. We retry aggressively at the network edge and have never double-charged a customer — 14 million transactions in."
YA
Yusuf Abara
CTO · Northwind
"Adding SEPA Instant and USDC payouts was a one-line rail change. Our European settlement times dropped from two days to under ten seconds."
HS
Hana Suzuki
Platform Lead · Halcyon
FAQ

Questions a payments lead actually asks.

Can't find it? Our solutions team answers integration questions in the shared Slack within an hour during business days.

How do you guarantee the ledger never goes out of balance? +

Every transfer is written as two opposing entries inside a single serialisable database transaction — if either entry fails, both roll back. We run a continuous invariant check that sums all debits and credits per currency; any non-zero delta pages on-call immediately. In 184 days of production we've had zero settlement breaks.

What's your P95 authorization latency under load? +

For a card auth including risk scoring: P50 41ms, P95 68ms, P99 112ms, measured at 4,000 auths/sec sustained. Risk scoring adds under 9ms because the model runs in-region, not as a remote call.

Are customer funds held separately from yours? +

Yes. Funds are held in safeguarded accounts at our tier-1 banking partners under our EMI licence, never commingled with operating capital. You can reconcile your ledger balance against the safeguarding statement at any time via the API.

How does multi-currency FX settlement work? +

You hold balances in 38 settlement currencies. Conversions lock a quoted rate for 30 seconds with a guaranteed spread, and the FX leg posts as its own ledger entry so your books show the exact rate and fee per conversion — no blended monthly average.

Can I migrate off Ledgerline without a lock-in? +

Your full ledger — every entry, balance, and signed event — is exportable as newline-delimited JSON at any time, and stored tokens are portable under PCI network rules. There's no exit fee and no data-egress charge.

Ship your first transfer this afternoon.

Test-mode keys are instant, the docs have copy-paste snippets in four languages, and you only pay when real money moves.

$ curl https://api.ledgerline.com/v2/charges