YemenPlus — Multi-currency Ledger for an Exchange & Transfer House
Double-entry ledger · 6 currencies · commissions · transfer matching
- Client
- YemenPlus
- Date
- Oct 2026
- Duration
- شهر واحد
- Role
- Full-Stack
— Overview
Problem
Accounts were run from manual statements and WhatsApp threads: balances scattered across currencies, commissions worked out by hand, and transfers hard to match by reference. Mistakes were fixed by overwriting the number — with no trace of what changed or why.
Solution
A double-entry ledger with a single posting path, balances derived from entries, immutable posted transactions corrected by reversal, cancellation or amendment, transfer matching on the last five digits of the reference, and live commission and rate lookups while the entry is being typed.
— Key features
What it does.
- ✓ Double-entry ledger
- ✓ Balances per account and currency
- ✓ 6 currencies with exchange rates
- ✓ Commissions and network fees
- ✓ Pending transactions preview their postings
- ✓ Reverse / cancel / amend instead of delete
- ✓ Transfer matching on the last 5 digits
- ✓ Live reference lookup while typing
- ✓ Live commission calculation
- ✓ Audit trail for users, settings and currencies
- ✓ Arabic RTL UI with light and dark themes
— Results
Impact in production.
310 automated tests covering the ledger logic
No stored balance that can drift — every balance is derived from entries
Every correction leaves an auditable trace
One system in place of manual statements
Deployed to production in October 2026
— Tech stack
Built with.
More work
View all →
Al Boukhari — Official Website
Mosque + school + donations + prayer times + Halal Village
SomPay — Dutch Digital Accounting Firm Website
Laravel · services + pricing pages · knowledge base · embeddable widget
Vijgjes en Olijfjes — Dutch Daycare Site + CMS
Laravel 13 · Trilingual (NL/EN/AR) · Full admin-editable content
— Let's build
Got a similar project in mind?
Got an idea, a stalled project, or a platform that needs a lift? Reach out — I reply within 24 hours.
Let's Talk