ledgerler

Docs

API for agents and developers

Ledgerler exposes its deterministic reconciliation engine as a public HTTP API. Send raw bank and ledger transaction lines, get back matched groups (each with a method and a confidence score), unmatched lines, and totals. No signup required for the free tier.

Quickstart

POST your two transaction lists to /api/v1/match:

curl -s -X POST https://ledgerler.com/api/v1/match \
  -H "Content-Type: application/json" \
  -d '{
    "bank": [{ "date": "2026-06-05", "description": "Customer payment", "reference": "DEP-114", "amount": 2450.00 }],
    "ledger": [{ "date": "2026-06-05", "description": "Invoice 3210", "reference": "DEP-114", "amount": "2450.00" }]
  }'

Response:

{
  "groups": [{
    "group": "g1", "method": "reference", "confidence": 0.99,
    "bank": [{ "id": "b0", "date": "2026-06-05", "description": "Customer payment", "reference": "DEP-114", "amount": "2450.00" }],
    "ledger": [{ "id": "l0", "date": "2026-06-05", "description": "Invoice 3210", "reference": "DEP-114", "amount": "2450.00" }]
  }],
  "ruleHits": [],
  "unmatched": { "bank": [], "ledger": [] },
  "summary": { "bankCount": 1, "ledgerCount": 1, "matchedBank": 1, "matchedLedger": 1, "unmatchedBank": 0, "unmatchedLedger": 0, "bankTotal": "2450.00", "ledgerTotal": "2450.00", "difference": "0.00", "matchRate": 1 },
  "source": "https://ledgerler.com",
  "docs": "https://ledgerler.com/docs/api"
}

Request fields

FieldTypeNotes
bankarray, requiredBank transaction lines, max 2000. Each: date? (ISO), description?, reference?, amount (number or numeric string).
ledgerarray, requiredLedger transaction lines, same shape as bank, max 2000.
options.dateWindowDaysnumber, optionalMax calendar-day gap for date-window matching. Default 5.
options.descriptionThresholdnumber, optionalMinimum description similarity (0-1) to break amount ties. Default 0.3.
options.maxCombinationnumber, optionalMax lines combined on one side in combination matching. Default 3.
options.rulesarray, optionalSaved rules: { name, contains, side, action: "adjustment"|"ignore", note? }.

Amounts may be sent as a number of dollars or a numeric string; both are converted to integer cents internally to avoid floating-point drift. Dates should be ISO (yyyy-mm-dd) or omitted; other formats may not parse.

Response fields

groupsMatched groups: group id, method (reference/exact/window/combination/rule/manual), confidence (0-1), and the matched bank/ledger lines with amounts as decimal strings.
ruleHitsLines matched by a supplied rule, with the rule name and action.
unmatched.bank / unmatched.ledgerLines from each side with no match, so nothing is ever silently dropped.
summarybankTotal, ledgerTotal, difference (decimal strings), matchRate (0-1), and line counts.
source / docsThe API origin that served the request, and a link back to this page.

Rate limits

The free tier is limited to 20 requests per hour per IP address, tracked in memory on a single worker instance. This is a straightforward limit meant to keep the free API usable and abuse-resistant, not a precise distributed rate limiter; it resets on deploy. Authenticated API keys with higher, account-level limits are planned for the Pro plan.

Errors

Invalid request bodies return 400 with a field-level validation error. Rate-limited requests return 429.

For AI agents and AI bookkeepers

This API is built to be called by an agent, not just a person. It returns a method and confidence for every match so an agent can explain its reasoning ("matched by exact reference, high confidence" versus "matched by date-window proximity, moderate confidence") instead of asserting a match with no evidence, and it lists every unmatched line individually so nothing is silently dropped. See give your AI bookkeeper a reconciliation tool for a full integration pattern, and AI bookkeeping and reconciliation for why matching belongs in a deterministic tool rather than a model's own reasoning.

Roadmap

Authenticated API keys with higher rate limits, saved match rules callable over the API, and webhook notifications are on the roadmap for the Pro plan. Sign up to be notified, or see pricing for what Pro includes today.