Almost every Iraqi business runs on two currencies at once. You quote and invoice in Iraqi dinar, you settle a large share of your costs in US dollars, and the rate that connects them is rarely the single, stable number accounting software assumes. Getting this right inside your ERP is the difference between books that reconcile and a permanent, unexplained variance.
Two rates, not one
The official rate published by the Central Bank of Iraq and the parallel "market" rate you actually transact at can diverge by several percent — and that gap moves week to week. If your ERP holds a single exchange rate as a setting, every document silently inherits whichever number happened to be loaded that day, and your dinar and dollar ledgers slowly drift apart.
The fix is to treat the rate as data, not a setting: maintain a dated rate table, record which rate applied to each document, and never overwrite history when the rate changes.
Weekly rate locks
Many firms lock an internal rate for a week or a month for operational simplicity. That is perfectly workable — as long as the lock is explicit and auditable rather than a number someone remembers.
- Store each locked rate against the date range it covers, not a single day.
- Tag every invoice and payment with the exact rate that was applied to it.
- Run a period-end revaluation so realised and unrealised currency differences land in the right accounts.
The structural gap: dinar invoices, dollar cash
The hardest case is invoicing a customer in dinar while holding or paying in dollars. The receivable is dinar-denominated; the cash that ultimately backs it is dollars. Between issue and settlement the rate moves, and that difference is a real gain or loss — not a rounding error to be wished away. Left unmodelled, it surfaces as a mysterious gap at year-end that no one can attribute.
Modelling it cleanly
A clean multi-currency setup in Odoo or Oracle NetSuite rests on a few decisions:
- One functional currency, applied consistently. Choose dinar or dollar as the company currency and keep it; everything else is a foreign currency that revalues against it.
- Foreign-currency revaluation switched on. Let the system compute unrealised differences on open balances at each close instead of doing it by hand.
- Separate accounts for realised and unrealised differences. Auditors expect to see them apart, and so should management.
- An auditable rate source. One owner, one table, and a clear policy on which rate is used where.
What good looks like
When this is set up properly you can answer three questions at any moment: what is my dinar position, what is my dollar position, and how much of last quarter's "profit" was actually currency movement. That clarity is what lets management price correctly and lets auditors sign off without a fight.