---
title: "Get the CHF exchange rate for a currency on a given date."
method: GET
path: "/core/v1/accounting/currencies/exchange-rate"
tags: ["Accounting"]
---

# Get the CHF exchange rate for a currency on a given date.

`GET /core/v1/accounting/currencies/exchange-rate`

## Request

- Base URL: `https://api.klara.ch`
- URL: `https://api.klara.ch/core/v1/accounting/currencies/exchange-rate`
- Auth: one of:
  - API key in header `X-API-KEY`
  - HTTP bearer

Returns the Swiss National Bank reference rate that converts one unit of <code>from-currency-code</code> into CHF on <code>exchange-date</code>. When <code>from-currency-code</code> equals <code>CHF</code> (case-insensitive) the rate is always <code>1</code>. The exchange-rate table is global SNB data — the same response is returned for every tenant, so there are no tenant or company path parameters. If no rate is stored for the requested day, the downstream service transparently fetches the SNB feed for that date and persists the result; if the feed has no entry either, the most recent rate strictly before <code>exchange-date</code> is returned instead. The endpoint is a pure read for the caller — idempotent. Requires a bearer token whose principal carries the <code>ACCOUNTING</code> permission.

## Query parameters

- `exchange-date` string, date, required
- `from-currency-code` string, required

## Response `200`

Exchange rate as a JSON number; the value <code>1</code> when <code>from-currency-code</code> is CHF.

- number

## Other responses

- `400`: <code>exchange-date</code> is not a valid ISO-8601 calendar date, or no rate could be resolved for the supplied <code>from-currency-code</code>.<br/><br/>Failures detected by a downstream service carry that service's own <code>code</code>, which this reference does not enumerate, so the <code>code</code> field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
- `401`: No Authorization header found or invalid token<br/><br/>Failures detected by a downstream service carry that service's own <code>code</code>, which this reference does not enumerate, so the <code>code</code> field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
- `429`: API rate limit exceeded<br/><br/>Failures detected by a downstream service carry that service's own <code>code</code>, which this reference does not enumerate, so the <code>code</code> field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.
- `500`: Something went wrong on our side while processing the request. Please kindly contact our support.<br/><br/>Failures detected by a downstream service carry that service's own <code>code</code>, which this reference does not enumerate, so the <code>code</code> field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list.

---

[API](https://skmtc.dev/klara/apis/klara-public-api.md) · [All operations](https://skmtc.dev/klara/apis/klara-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/klara/apis/klara-public-api/revisions/490b1a879fc2?raw)
