It looks like a settings question and it is not. The currency your agent balances are held in decides what your reconciliation looks like for as long as the business exists, and it is one of the few decisions that is genuinely hard to reverse.
Here is how to make it once, correctly.
The rule that makes the decision easy
Hold balances in the currency your agents already think in, and price in the same one.
Not the currency you bank in, not the currency your suppliers invoice in, and not "whatever is strongest". The currency of the conversation you are already having with your agents.
If a Delhi wholesaler quotes rupees to its sub-agents, the wallet is rupees. If a Dubai operator quotes AED to agents across the GCC, the wallet is AED. If a Maldives resort operator has always quoted dollars, the wallet is dollars — even though the country's currency is the rufiyaa.
The reason is not sentiment. It is that every mismatch between the quoting currency and the holding currency creates a conversion, every conversion happens at a moment, and every moment has to be recorded and defended later.
What a mixed-currency ledger actually costs you
It is tempting to hold each agent in their own currency. Do not, unless you have a treasury function.
The costs arrive in this order:
- You cannot add up your own receivables without picking a rate, and the number changes depending on which rate you pick.
- Refunds drift. A booking debited in one currency and refunded weeks later at a different rate leaves a small difference that belongs to nobody. Multiply by a year.
- Nobody can answer "what does this agent owe us?" in one sentence, which is the question you will be asked most.
- Every report needs a footnote.
One currency per agency, chosen once, keeps every one of those problems out of the business.
When a conversion is unavoidable, pin it
Sometimes you genuinely have to cross currencies — your subscription is billed in one currency and your wallet is in another, or you buy from a supplier who invoices in dollars.
Three rules make that survivable:
- Use a persisted rate, not a live lookup. Store the rate you used, with the record, at the moment you used it. "The rate at the time" is not auditable unless the rate is written down.
- Declare the margin. If you add a conversion margin, show it before the money moves. An agent who discovers it afterwards treats it as a hidden fee, correctly.
- Pin the refund to the original. A refund converts at the rate of the debit it reverses, not at today's rate. Otherwise currency movement turns every cancellation into a small gain or loss that you did not trade for.
The arithmetic that quietly goes wrong
Two things cause almost every one-cent complaint in travel systems.
Money held as a decimal. 12.50 in a floating-point number is not exactly 12.50, and after a few thousand multiplications the error becomes visible in a total. Money should be an integer count of minor units — 1250 — with the currency carried alongside it.
Rounding more than once. Round per night and then sum, and you get a different total from summing and rounding once. Both are defensible in isolation; the problem is having both in one system. Round once, at the end, in the currency the agent sees.
Currencies without minor units make this concrete. Rupiah, dong and yen have no subunit in practice, so a system that assumes two decimal places everywhere will show an agent in Jakarta a price with a meaningless ,00 on the end — or, worse, round a real amount away.
Currencies that need thinking about
- IDR and VND run to seven and eight figures on ordinary transactions. Whatever displays them needs tabular figures and thousands separators, or agents will misread a price by a factor of ten. They will only do it once, and it will be expensive.
- INR groups digits differently — 12,34,567 rather than 1,234,567. A system that formats it the Western way looks foreign to every Indian agent who reads it.
- AED, SAR and QAR are pegged to the dollar, which makes them stable to hold and simple to price against.
- TRY, EGP, NGN and ARS move. If your agents trade in one of these, the wallet is still the right place for their money — but price with a shorter validity, and take the conversion question seriously rather than hoping.
- USD is the right answer surprisingly often for inbound operators whose agents are in ten different countries, because it is the currency the trade already uses for cross-border settlement.
What to do if you get it wrong
Change it while the ledger is empty.
That sounds glib, but it is the honest answer: re-expressing a history of movements at rates that may no longer exist is not a migration, it is a rewrite of your own accounts. A currency change should be possible only while an agency has taken no money and made no booking — and after that, the right move is a new agency account rather than a conversion of the old one.
Which is why this is worth ten minutes at setup rather than an afternoon in year two.