A trader in Jeddah buys steel in US dollars, quotes a contractor in riyals and sells a shipment to a client in dirhams. Done on a spreadsheet, each conversion is a manual step and each exchange difference is discovered at year end.
The fix is to make the rate part of the document.
A rate on every document
Each company has a base currency, any of 43 ISO codes, and each currency carries its own minor units, so yen has none and dinar has three. A quotation, order, invoice, purchase order or supplier bill can be raised in another currency. The rate, expressed as base units per one unit of the document currency, is frozen on the document.
If you leave the rate blank, the latest stored rate on or before the document date is used. If there is no rate, it is an error, not a guess.
Derived documents inherit currency and rate. The order takes them from the quotation, the invoice from the order, the bill from the purchase order. An issued invoice keeps both permanently.
Reports that add up
You cannot add 10,000 USD to 8,000 EUR. Anything that totals documents converts each one to base currency at its own rate: receivables and payables aging, revenue and collected, VAT summary, project committed cost, the sales and procurement reports.
Detail pages show the amounts in the document currency with the base equivalent. Lists show each row in its own currency.
Where the exchange difference comes from
A payment settles documents in one currency, at the rate of the day the money moved. If an invoice was raised at 3.75 and settled at 3.76, the difference per allocation is stored as a realised gain or loss in base currency and shown on the payment.
With Accounting on, the difference posts as exchange gain or loss, the receivable is cleared at the invoice rate, and the bank is debited at the actual one. Nobody keys a journal.
Tax by line
Every line form offers the company's tax codes. A code carries a category (standard, zero-rated, exempt or out of scope) and a rate, and the server resolves it. Zero, exempt and out-of-scope codes are always 0 percent. A default standard code mirrors into the company's default rate so new quotations pick it up.
Limits to plan around
- Open balances are not revalued. A receivable still open at month end stays at its original rate. Only the difference realised at settlement is recorded, so unrealised gains and losses are not on the books.
- Rates are entered by hand. There is no rate feed.
- Three-decimal currencies are rounded to two on documents. Formatting knows dinar has three, but amounts are stored to two places.
- Saudi sellers cannot issue foreign-currency tax invoices, because ZATCA's currency rules are not implemented.
- Rent and manpower invoicing use the company currency only.
A habit worth building
Enter the month's rates on the first working day, and check the latest date before you raise a foreign document. The system will use what you gave it, and a rate from three weeks ago is still a rate.
The currency and tax setup guide covers the order of setup.