Automating Exchange Rates for Global Publisher Payouts
There is a quiet failure mode in every international publisher program, and it does not announce itself. A payout run goes out. The dollar amounts are right. But the conversion to euros, pounds, or rupees was pulled from a rate someone eyeballed on a search engine three days ago, typed into a spreadsheet, and never revisited. Multiply that by dozens of partners across a handful of currencies, month after month, and small errors compound into reconciliation headaches, underpaid or overpaid publishers, and an audit trail that amounts to a shrug.
Paying partners in their own currency is table stakes. Doing it accurately, on schedule, and with a defensible record of exactly which rate applied on which day is the harder problem. That is an infrastructure problem, and it is the one TrackingMD solves quietly in the background so you never have to think about it.
The manual FX tax
Manual rate lookups are slow, but slowness is not the real cost. The real cost is that a hand-copied rate is a rate with no provenance. When a publisher disputes a payout six weeks later, or your finance team reconciles against a bank statement, or an auditor asks how you arrived at a figure, "I checked a website that Tuesday" is not an answer. You need to know the source, the effective date, and the precise number, retrievable on demand.
The other cost is silence. When a manual process breaks, nobody gets paged. The spreadsheet just goes stale, and the first sign of trouble is a partner emailing to ask why their payment looks off. By then the damage is done and the trust is dented.
A daily heartbeat for your rates
TrackingMD treats exchange rates the way a good clinician treats vitals: measured on a fixed schedule, recorded, and flagged the moment they drift out of range.
Every day, a scheduled command reaches out to a public reference-rate provider (the Frankfurter API, which republishes European Central Bank reference rates) and pulls the latest figures for the currencies your program supports. The fetch runs at a fixed time each morning in UTC, deliberately scheduled well after the ECB publishes its daily set, so the numbers it captures are the settled official rates rather than a mid-cycle guess. The job is protected against overlapping runs, so a slow response never stacks two fetches on top of each other.
At launch the system tracks twenty major currencies against a US-dollar base, spanning the currencies most publisher programs actually pay in, from euros and pounds to yen, rupees, real, and rand. Cross-currency payouts (say, euros to yen) resolve through the base rate automatically, so you are never limited to dollar-denominated pairs.
History you can stand behind
Here is the part that matters for auditability: TrackingMD does not overwrite yesterday's rate with today's. Each day's fetch is stored as its own record, keyed to the base currency, the target currency, and the effective date, alongside the source it came from and the exact timestamp it was fetched. Today's fetch never disturbs the historical record.
That means the rate that applied on the day a payout was calculated stays retrievable forever. Every stored rate carries:
- The effective date it applies to
- The precise rate, kept to six decimal places
- The source that provided it
- The exact moment it was fetched
When you need to answer "what rate did we use, and where did it come from," the answer is a lookup, not an archaeology project. The admin surface lets you pull the full set of current rates as of any past date, or chart the day-by-day history of a single currency over a range. Reconciliation stops being a debate and becomes a query.
An audit log for the machine itself
It is not enough to trust that the daily fetch ran. You need proof that it ran, and a record of what happened when it did not. Every single fetch attempt, successful or failed, writes an entry to a dedicated fetch log. Each entry captures the provider, whether it succeeded or failed, how many currencies came back, how long the call took in milliseconds, and, if something went wrong, the exact error message the provider returned.
This is the operational vital sign. At a glance you can confirm the pipeline is healthy, spot a provider that is getting slower over time, and see precisely why a given day's fetch fell over. Nothing about the rate machinery is a black box.
When rates go stale, someone gets told
The most dangerous state is not a loud failure. It is quiet staleness: the fetch fails, nobody notices, and the system keeps using an aging rate.
TrackingMD closes that gap. If a fetch fails, it does not fall back to nothing. It holds onto the most recent good rates and reports which date those cached rates came from, so payouts can still proceed on the last known-good numbers rather than grinding to a halt. At the same time, it raises a system alert that a fetch failed, with the underlying reason attached.
Separately, it watches the age of the freshest rate on hand. If the newest rate on file crosses a staleness threshold (twenty-four hours by default), it raises a distinct staleness alert, so a run of quiet failures cannot slip past unnoticed. And because the system is self-healing, the next successful fetch automatically resolves both the failure and the staleness alerts. You are notified when something needs attention and left alone when it does not.
Infrastructure you never have to think about
The whole point of this machinery is that it disappears. You configure the currencies you pay in, and from then on your rates arrive on schedule, land in an immutable historical record, log every attempt for audit, and page someone the moment they go stale. Payouts convert against the right number for the right day, every time, and you can prove it.
As publisher programs push into more markets and more currencies, the programs that scale cleanly will be the ones whose FX foundation was automated from day one, not the ones still copying numbers into a spreadsheet and hoping. Accurate international payouts are not a matter of diligence. They are a matter of infrastructure, and it is the kind of thing that should simply run.
See it in your own program
Start your free 7-day trial and put these ideas to work — no credit card required.
Start free trial