Swiss National Bank Reference Rate API for Accounting, Invoicing & Compliance
If your business invoices, imports, or reports in a currency other than the CHF, sooner or later someone will ask which rate you used — and “the one on the internet that day” is not an answer that survives an audit. For that, you want the official number: Swiss National Bank’s published monthly average exchange rates.
What are the Swiss National Bank monthly average exchange rates?
The Swiss National Bank publishes official franc exchange rates through its data portal. The SNB publishes monthly averages (no daily official series exists), with history reaching back to 1914 — one of the longest official exchange rate records anywhere.
It is published once a month, after the month has closed, currently covering 26 currencies, and the published record runs back to 1914. Crucially it is a published figure, not a live market price — it does not move after it is set, which is exactly the property an accountant or an auditor needs.
Why finance teams need the official rate
Book closing and month end
Foreign-currency balances have to be translated at a defensible rate on a specific date. Using a live market rate means the number changes depending on what minute you pulled it, and two people closing the same month can produce two different sets of books. The central bank’s published rate for that date is fixed and reproducible forever.
FX gain and loss
Revaluing receivables and payables needs the rate at invoice date and the rate at settlement date. Both have to come from the same series, or the gain and loss you report is partly an artefact of switching data sources mid-stream.
Audits and compliance
An auditor does not want a screenshot. They want a rate that traces back to a named publisher and a publication date they can independently check against Swiss National Bank’s own release. That is the entire reason official rates exist.
Management reporting
Group reporting across entities only consolidates cleanly when every entity converts at the same published rate for the same date. Left to their own devices, subsidiaries will each pick a different source.
The problem with collecting the rate by hand
Swiss National Bank publishes the data — but publishing and being easy to consume are different things. In practice teams end up copying figures off the bank’s rates page into a spreadsheet every period, which creates four familiar problems:
- It is manual, so it gets skipped. Someone is on leave, a period gets missed, and the gap is only discovered at close.
- Typos are invisible. A transposed digit in a rate looks exactly like a correct rate until the variance shows up somewhere else entirely.
- History is awkward. Restating a prior period, or answering an auditor about a shipment from two years ago, means digging through archives rather than making one query.
- Non-publication days trip people up. Weekends and public holidays have no rate at all, and every team invents its own rule about what to use instead — usually without writing it down.
The Swiss National Bank rates as an API
AllRatesToday ingests Swiss National Bank’s published table shortly after each release and serves it back in a consistent shape, alongside 37 other central banks and national tax authorities on identical endpoints.
- Official figures, unmodified — served with Swiss National Bank’s own publication date on every response.
- 26 currencies against the CHF.
- History back to 1914 — query any past date, or pull a full time series.
- Honest holiday handling — non-publication dates resolve to the most recent published table and say so, rather than silently interpolating.
- Formats finance actually uses — JSON, CSV, XML and genuine Excel workbooks, so it lands in a spreadsheet, Power BI or an ERP without a conversion step.
- Published vs derived is labelled — a pair Swiss National Bank did not print itself is computed from its table and flagged, never passed off as an official quote.
Sample response
A real response for EUR to CHF, from Swiss National Bank’s publication of 2026-07-31:
{
"bank": "snb",
"rate_date": "2026-07-31",
"source": "EUR",
"target": "CHF",
"rate": 0.92538,
"rate_type": "monthly_average",
"derived": false
} The rate_date is the central bank’s own publication date — the date you cite in the ledger — and derived tells you whether Swiss National Bank printed this pair itself.
Who this is for
- Exporters and importers converting invoices and customs values at a rate that has to hold up later.
- Finance and accounting teams closing books across currencies.
- Auditors and advisors who need to reproduce a client’s conversion months after the fact.
- ERP, accounting and invoicing platforms that need an official rate feed their own customers can defend.
- Fintech and payments teams that price on market rates but must report on official ones.
What it actually saves
- Time — no one copies rates into a spreadsheet each period again.
- Accuracy — the figure is whatever Swiss National Bank published, with no retyping in between.
- Audit risk — every number carries its publication date, so “where did this come from?” has an answer.
- Consistency — every entity, report and invoice converts from the same series.
Getting started
- Create a free account — 300 requests a month, no card.
- Call
/api/v1/central-bank/snb/latest, or download the table as Excel from the Swiss National Bank coverage page. - Wire it into your close, your invoicing, or a scheduled spreadsheet refresh.
Developers who want the endpoints, SDK and code samples should read the Swiss National Bank API guide instead — this page is the business case; that one is the integration.
FAQ
Where do Swiss National Bank exchange rates come from in this API?
Directly from Swiss National Bank's own published monthly average exchange rates. Rates are stored unmodified with the central bank's publication date attached, so the figure in your ledger is the figure Swiss National Bank printed, going back to 1914.
Can I get the Swiss National Bank rate for a past date, like an invoice or shipment date?
Yes. Ask for any past date and you get the rate in force then, back to 1914. If the central bank did not publish that day — a weekend or a public holiday — the API returns the most recent published table and flags that it did, so your audit trail stays honest instead of silently guessing.
Do I need a developer to use this?
Not necessarily. Every coverage page offers the latest published table as an Excel or CSV download, and finance teams commonly pull the API straight into Excel, Power BI or their ERP on a schedule. A developer helps if you want it wired into invoicing or your accounting system automatically.
Final thought
Official rates are not a nicer version of market rates — they answer a different question. Market data tells you what a currency is worth right now. Swiss National Bank’s published table tells you what rate your books, your customs entries and your auditor are entitled to expect for a given date. Getting that second number automatically, with its publication date attached, removes an entire category of month-end argument.
Official Swiss National Bank rates, automated
Free tier: 300 requests a month, no credit card.
Get your free API key