Accounting automation
for payment operators.

Ledgerise translates your settled transactions into double-entry journal entries and posts them to your accounting system automatically. Configure the mapping rules. The engine handles the rest.

No sign-up required · Apache 2.0 · Self-host or cloud

Journal Engine · Live
Inbound transaction
TXN-00419
type payment.electricity
amount ₦5,000.00
biller ikeja-electric
product_line consumer-app
status settled
Mapping rules
applied
Journal entry — JNL-20260601-0419
DR
A1050
Float — BuyPower
₦5,000
CR
I4010
Revenue — Bills
₦5,000
Posted to Zoho Books · 2m ago
How it fits into your stack
Three independent layers, all swappable
Source systems
Your Webhook endpoint
CSV / file export
JSON poll API
Inbound adapters
Normalize to
canonical schema
(80 tx types)
Journal engine
Apply mapping rules
Generate DR/CR entries
Retry on failure
Outbound adapters
Post to accounting
system via API /
CSV file export
Accounting systems
Zoho Books
Any CSV import
QuickBooks (roadmap)

Mapping is everything

Books are always behind
Your transaction system settles in real time. Your accounting records are compiled weekly, or whenever someone finds time.

No engineering bandwidth
Building a custom accounting integration means months of eng time, then maintaining it, then repeating it for each new accounting system.

Mispostings and suspense
New billers, new transaction types, new edge cases. Without a configurable mapping layer, entries go to the wrong accounts or disappear entirely.

Mapping rule evaluation order
1
Exact biller match
Matches on product line + biller + transaction type. Most specific rule wins.
consumer-app + ikeja-electric + payment.electricity
2
Biller category fallback
Catches any biller in a category when no exact match exists.
consumer-app + [electricity] + payment.electricity
3
Product line catch-all
A default rule for everything in a product line with no other match.
consumer-app + [any biller] + [any type]
Suspense account
No rule matched. Transaction parks at X9999 for review — not dropped, not misposted.

Everything the engine needs to run

The things you don't want to discover are missing after go-live are already built.

80 canonical transaction types
Payments, transfers, collections, fees, lending, savings, FX, cards and agency banking are all covered by a single schema.
No-code mapping rules
Finance teams configure debit/credit accounts per product line, biller, and transaction type in the UI.
Automatic reversal handling
Reversed transactions automatically generate mirror journal entries. No manual correction needed; your books stay balanced.
Suspense accounts
Unmapped transactions park in a suspense account rather than disappearing. Nothing falls through the cracks.
Full audit trail
Every posted entry links back to its source transaction. Every admin action logs to an immutable audit table, downloadable as CSV.
AES-256-GCM credentials
All adapter credentials are encrypted at rest. Rate limiting and proxy-aware IP detection on every ingest endpoint.

Connect anything, post anywhere.

Generic adapters work today with any system that can send a webhook, export a CSV, or expose a JSON API.

Inbound — transaction sources
Generic Webhook
Receives mapped JSON payloads from any source system
Built
Generic CSV
File import with configurable column mapping
Built
Generic Poll
Scheduled fetch from any JSON API · cursor-safe
Built
Outbound — accounting systems
Zoho Books
Manual Journals API · OAuth 2.0
Built
Journal CSV Export
Any system accepting file import · pull via API
Built
QuickBooks · Wave · Xero
In development
Roadmap

Try it yourself.

The live demo is fully interactive with transactions, mapping rules, journal log, adapters, and settings.
No sign-up, no account required.

Or clone the repo and run it locally in under 5 minutes.