Ask AwraIQ about features, pricing, onboarding, login, integrations, security, demos, mobile apps, automation, reports, or support.
We never convert.
We never add.
Trade in three currencies and most systems will hand you one number, silently summed at some rate, from some day, reconciling to nothing. We show you the largest real total, labelled with its code, and tell you what else is there.
Three real balances. There is no honest single number that combines them without naming a rate and a date — so we do not print one.
One number, two ways to produce it.
This is the AR aging report. On the left, what most systems print. On the right, what we print instead.
- It needs a rate, and nothing on the page says which one.
- It needs an as-at date, so the same closed period reads differently next week.
- It ties to no ledger, so nobody can check it.
- It needs no rate, so there is nothing to argue about.
- It is true at every viewing, including a year from now.
- It reconciles, and it tells the reader there is more to look at.
Where this came from
The aging report was found summing dollars into shillings and printing the result with no currency label at all. The sweep that followed found the same shape on the dashboard, in the top-customers report and in credit-hold exposure — all sitting on a shared money helper that hardcoded two decimal places. The rule above is what replaced it, and it is applied everywhere a single figure is shown.
UGX 1,234.56 is not a rounding quirk.
It is an amount that cannot exist, printed as though it does. Two decimal places is a habit, not a rule — across the 137 currencies in the 188 shipped country rows, 26 are written with none and 6 with three.
The bigger half, and the easier one to miss. XOF alone covers the eight UEMOA states and XAF the six of CEMAC, so a single line in this list reaches fourteen countries.
A Tunisian tax total of 201.900 was being stored and shown as 201.90. The missing digit is a millime, and it is the difference between a figure that foots and one that does not.
Where the answer comes from
ICU, not a list we keep
The framework already ships the minor units, and measured against all 137 currencies in the shipped rows there are zero unknowns. A hand-kept table would be a second copy of a fact somebody else maintains — and second copies are how these things drift.
The honest wrinkle
ICU is not ISO 4217
ICU gives the digits a currency is written with in practice, which for a subunit inflated into disuse is fewer than ISO still assigns. The sharpest case is IQD — three places by ISO, zero by ICU. For display, practice is the answer we want, and we would rather tell you than have you find it.
“Largest” is weaker than it sounds.
Without a rate, the only ordering available is by nominal amount — and nominal amounts are not comparable across currencies. Watch:
So a surface with a base currency passes it, and that currency leads whenever it is present — it is the one you think in, and it does not reshuffle as balances move. Nominal ordering only ever arranges the disclosed remainder; it is never used to claim one exposure is bigger than another. Where a whole report needs one basis, scope it to one currency rather than asking a mixed figure to carry the weight.
Asked by finance.
- Does AWRA OpsHub convert currencies on reports?
- No, and that is deliberate. A converted total needs a decision about which rate and as at when, it moves between two viewings of the same closed period, and it reconciles to no ledger. Instead a single figure shows the largest single-currency total with its code, and names how many other currencies sit behind it.
- What happens when a report mixes currencies?
- It shows the largest single-currency total, labelled with its code, plus an affordance naming the remainder. Unlike currencies are never added together. Where a whole report needs one basis, scope it to one currency instead.
- How are decimal places decided?
- From ICU, through Symfony's Intl component, which already ships with the framework. Of the 137 currencies across the shipped country rows, 26 are written with no decimal places and 6 with three. A hand-kept table would be a second copy of a fact somebody else already maintains.
- Why does my currency show no decimal places?
- Because it is written that way in practice. Shillings in Uganda, francs across UEMOA and CEMAC, yen, won and 20 others carry no minor unit in daily use, so a figure like UGX 1,234.56 describes an amount that cannot exist. Six currencies go the other way and carry three places, including the Tunisian dinar.
- Is the exchange rate used anywhere?
- For your AWRA subscription, yes — that is priced in Kenyan shillings and shown in dollars at a live rate. Inside your own books it is not: your figures stay in the currency each transaction happened in.
- Which currency leads when several are present?
- A surface with a base currency passes it, and that currency leads whenever it appears — it is the one the reader thinks in and it does not reshuffle as balances move. Without one, ordering falls back to nominal amount, which is why passing a base currency is worth doing.
Help Center
Need a quick answer while you read?
Run inventory, procurement, assets, sales, and field work with approved AWRA guidance for setup, migration, integrations, security, pricing, and support.