Barmaan software department
Accounting & ERP we built — and run ourselves every day
A four-language chart of accounts, an append-only multicurrency ledger, an expense approval workflow and AI invoice reading — the same system we close our own books with every day. We build this for your company too.
The two demos below (ledger/trial-balance and approval workflow) run on entirely made-up data. The third one is different: you upload your own real file and our real internal AI assistant reads it.
Problem
Before we built this system
A ledger scattered across currencies
Sales in dollars, rent in dinar, advertising in toman — without one unified ledger, closing the books gets slower and more error-prone every month.
Expenses with no approval trail
How many people have to sign off before an employee's expense claim reaches the accountant? Without a defined workflow, accountability disappears too.
Manually typing invoices
Every paper invoice means minutes of line-by-line typing and the risk of a mistyped number — across hundreds of invoices a month, that time adds up.
Solution
What we built
A multicurrency ledger, unified code
Every document keeps its original amount; the trial balance is computed live against the Iraqi Unified Accounting System code, not just a single final number.
A defined approval workflow
Submit → manager approval → accountant finalization → payment; at every moment it's clear who's responsible and until when the employee can still edit it.
AI invoice reading
Upload an invoice or receipt; line items, amount and currency are extracted automatically — the same path our own internal expense form uses.
Live demo
Try it yourself
All three demos below run on this system's real code, not a static screenshot.
Upload an invoice and read it with AI
Drop your own invoice or receipt file, or try a sample.
Capped at 3 uploads per hour per visitor, 20 MB max; the file is deleted immediately after reading and is never connected to Barmaan's real accounting ledger.
Ledger & unified trial balance
Six made-up documents across three currencies; the real unified trial-balance function runs right here on whatever you pick.
Expense approval workflow
Switch roles and move a sample expense claim through the real approval workflow.
What always stays internal
Barmaan's real accounting ledger — actual customer/supplier names, real amounts, balance-sheet reports — is never published here or on any other public page. Every number you see here is either entirely made up, or a file you just uploaded yourself and that gets deleted immediately.
Modules
Under the hood — 26 admin sub-routes
What our own accounting team opens every day; the evidence column points straight at the code path.
| Module | Evidence | Access |
|---|---|---|
Four-language chart of accounts Group/general/detail levels with Persian/English/Arabic/Kurdish titles and the Iraqi unified code. | src/lib/accounting/coa.ts, coa-i18n.ts | Try it above |
Documents & ledger Append-only documents; no record is edited after posting, only a fresh correcting document. | src/models/Accounting.ts (AccTransaction), admin/accounting/docs, /vouchers | Try it above |
Multicurrency Dollar, Iraqi dinar, toman and more; the original entered amount is always kept, not just a dollar equivalent. | accountingSample.ts (fixed fixture rates) + buildUnifiedTrialBalance | Try it above |
Sales documents Invoice/proforma totals computed from the same engine, no manual rounding. | src/lib/accounting/sales/docTotals.ts (saleTotals, docTotals — pure) | Internal only |
Petty cash Petty cash balance tracked separately per branch/holder. | src/lib/accounting/petty/compute.ts (pettyBalances), admin/accounting/petty | Internal only |
Expense approval workflow Submit → approve → finalize → pay, with an automatic edit lock after every stage. | src/lib/accounting/expenseWorkflow.ts (wfEntry, selfEditable) | Try it above |
Treasury & cheques Incoming/outgoing cheques with cleared/bounced status. | src/models/Accounting.ts (AccCheque), admin/accounting/treasury, /cheques | Internal only |
Payroll & attendance Payroll calculation and staff attendance tracking. | src/lib/accounting/hr/{payroll,attendance}.ts | Internal only |
Inventory & shipments Stock and shipments synced with the storefront — covered in depth on the separate store-platform page. | src/lib/accounting/shopSync.ts, admin/accounting/inventory, /shipments | Internal only |
AI invoice reading The same assistant you tried above is used inside our own internal expense form. | src/lib/ai/invoice.ts (internal form) + src/lib/ai/invoiceDemo.ts (this demo) | Try it above |
Architecture
Why we built it this way
Three decisions that directly affect correctness and trust.
Append-only ledger
No document is ever deleted or overwritten; a correction is a fresh correcting document, so the full history stays traceable.
Original amount, not just dollars
Every document keeps the amount as entered, in its own currency; conversion to dollars is for reporting only, never a replacement for the data.
Chart of accounts, version 3
Group/general/detail levels plus the Iraqi unified code — the same standard our own accountant works with every day.
We build this for you too
This same system, for your business
Chart of accounts, approval workflow and the AI connection — we implement any of them, separately or together, for your company.
- 26 admin modules, from chart of accounts to payroll
- Chart of accounts and UI in four languages
- Append-only ledger with a full history of every correction

