Alwafi, Screen by Screen

Alwafi

الوافي

A desktop bookkeeping app for a money-transfer and currency-exchange office. It replaces the office's Arabic Excel macro workbook with a proper double-entry ledger that runs offline on the office PC and speaks Arabic first.

Who uses it
Counter operators, the office owner and the accountant
Where it runs
A desktop app (NativePHP / Electron). No internet needed.
The book
One SQLite file. Personal data inside it is encrypted.
Languages
Arabic (right-to-left) and English, switchable per user
Built with
Laravel 13, Inertia, React 19, TypeScript

About the figures. Every screenshot comes from the running desktop app, filled with one invented week of business (23 to 29 September 2026). The week was entered through the app's own posting code, so every report balances the way a real book would. All names are fictional.

Operator terminal شاشة العمليات

The counter runs on single keys

Operators work from one quiet screen with no menus to page through while a customer waits. Each job is one letter. The panel on the right is the live till, with the cash held in each currency and the latest operations underneath.

  • XExchange
  • TTransfer
  • PPay out a transfer
  • RReceive from a customer
  • YPay to a customer
  • EExpense
  • SAccount statement
  • QFind a record
  • LReprint the last receipt
  • ZReverse the last entry
Operator terminal. Five operations so far today. The till holds 67,219.95 USD, 37,525.00 AED, 22,126.00 EUR and 739,000.00 TRY.
Arabic is the default. The whole interface mirrors right-to-left. A switch on every screen shows figures in Latin (123) or Arabic-Indic (١٢٣) digits.
Signing in unlocks the book. Sign in with a passkey or email and password. The password also unlocks the encryption key, so a locked app shows nothing personal.
Dashboard لوحة المعلومات

How the office is doing today

Today's profit, income and expenses, profit day by day over the last fortnight, where today's income came from, and each till's opening and closing balance.

Today: 81.71 USD profit. 30.45 USD from transfer commission, 40.00 USD of exchange margin and 11.26 USD from today's revaluation of the foreign currency the office holds.
Transfers الحوالات

Sending money, then handing it over

A transfer records money the office now owes to a beneficiary. The amount sent is a liability, never income; only the commission is income. The destination sets the price, and Paid out by names the correspondent office that will hand the money over, or leaves it with this office.

New transfer. 1,000 USD to Turkey, paid out by Istanbul Exchange House. A commission left blank is charged from the price list, 0.75% for Turkey.
Pay out. Sends already collected and still owed to their beneficiary. Five from the demo week are waiting. Paying out a foreign-currency send books the exchange difference at that moment.
Exchange desk الصرافة

Buying and selling currency

The office buys or sells a currency against the dollar, or against another currency as a single cross deal. The reference rate comes from the rate book. The operator sets the rate they apply, and the margin and profit update as they type. A deal can also be paid now and collected later.

A customer sells 5,000 AED at 0.2700 against a reference rate of 0.2723. They receive 1,350.00 USD and the office earns 11.50 USD. Underneath, a deal paid for on 27 September: 4,500 EUR waiting to be collected.
Customers and correspondents العملاء · المراسلون

Who owes whom

Walk-in customers settle in cash. Business customers run an account up to a credit limit. Correspondents are the partner offices abroad that pay transfers out. Balances read Ours when the other side owes the office and Theirs when the office owes them, the wording the office used in its old workbook.

Business accounts. Al-Sham Logistics has used 40% of a 5,000 USD limit, Nour Trading Co. 10% of 10,000 USD.
Customer file. Nour Trading's Dubai transfer went on account, then they paid 2,000 USD; 1,015 USD is still owed. Scanned passports and IDs attach here, encrypted.
Correspondent account. Istanbul Exchange House paid out a send for the office, so the office owes it 1,500 USD until the two settle.
Pricing. The office's price list: 1% by default, 0.50% for business accounts, 0.75% to Turkey and a flat 10 USD to Syria. A price for a destination wins over a price for a kind of customer.
Accounting المحاسبة

One ledger behind every screen

Everything above posts through a single gateway into a double-entry ledger. An entry that does not balance is refused, and a posted entry is never edited: a mistake is corrected with a reversing entry dated the day it was found. The accountant gets the chart of accounts, a journal per account and a trial balance.

Chart of accounts. Names in Arabic and English, one till per currency, and control accounts for customers and correspondents.
Journal. Every posting to 1001 Cash / Till — USD in date order, with its running balance.
Trial balance. Debits equal credits in the base currency (USD), and each foreign currency also nets to zero on its own.
Reports التقارير

Twelve reports, all read from the ledger

Nothing is kept on the side. Each report is worked out from the postings when it is opened and exports to PDF or Excel.

The report list. Daily cash position, stocktake, end-of-day close, account statement, transfers register, outstanding payables, commission and margin, trial balance, profit and loss, balance sheet, open FX positions and VAT return.
End-of-day close. The day's operations, turnover and income per currency, against what each drawer holds and what was counted in it.
Profit and loss. The demo week earned 250.43 USD: 110.31 of transfer commission, 140.85 of exchange margin and 10.00 of other fees, less 10.73 of exchange losses.
Commission and margin. What each deal earned, and the rate it was priced at against the reference rate of the day.
Open FX positions. Foreign currency the office holds, valued at the closing rate. Balances are revalued every night under IAS 21, so today's unrealised difference is zero.
Transfers register. Every send with its destination, status, amount and commission, filterable by date, status and destination.
Balance sheet. Assets against liabilities and equity at a date, with the current period's result included.
Outstanding payables. Money collected and not yet handed over, per currency, checked two ways: from the ledger and from the transfers register. The difference should be zero, and here it is.
Controls الضوابط

Checks that run before money moves

A send to or from a blacklisted name is refused before anything is recorded. Large sends can wait for the owner's approval, and each operator can have a daily limit. The book locks itself after a period without use, and every change to every record is written to an audit trail with the user and the time.

Blacklist. Matching ignores spelling, diacritics and spacing, and the reason is kept for whoever reads it later.
Waiting for approval. Sends above the office's limit wait here until the owner answers. The demo sets no limit, so nothing is waiting.
Limits and locking. An approval threshold, per-operator daily caps, the auto-lock timer and an optional PIN unlock on a trusted machine. The demo leaves the limits off.
Backups. An encrypted copy of the book every day, read back to prove it opens, with restore from any copy. A readable export exists for an arranged hand-off.
Setting up الإعداد

Settings and old data

The owner sets how the book behaves, and the office's history can be brought across from the old workbook.

Book settings. How every division rounds, VAT, the office's timezone and how often foreign balances are revalued (daily, weekly, monthly or quarterly).
Import. The office's old Excel daybook, a pasted conversation or a photo can be read in. Nothing posts until someone has checked every line.
Appearance المظهر

Day and night themes

The app follows the computer's light or dark setting, or each user can choose one.

Dashboard, day theme.
Exchange desk, day theme.
Under the hood

What keeps the book trustworthy