# Languages

> The hosted checkout, invoices, credit notes and customer emails speak English, German, French, Croatian, Italian and Spanish. How the language is chosen, and what stays English.

Everything your customers see comes in six languages: **English, German, French, Croatian, Italian and Spanish**. That covers the hosted checkout and its waitlist pages, the hosted invoice page, the [customer portal](https://ownrecord.io/docs/concepts/customer-portal.md), invoice and credit note PDFs, and every email a customer gets. The console, the API's messages and the emails your team gets stay in English.

Your brand's default language is set in **Brand → Settings → Languages**, or with `brands.update` (`checkoutSettings.locales`, the default first). It's a default, not a restriction: a customer's own language and their browser's come first.

## How the checkout picks a language

The first language that applies wins:

1. the language the customer picked on the page (the language links at the bottom, or `?lang=de` on the URL);
2. the session's `locale`, if you set one when you created it;
3. the customer's `locale`;
4. the languages the customer's browser asks for (`Accept-Language`);
5. your brand's checkout languages (the first one is the brand's default);
6. English.

The checkout keeps the language from page to page, and tells Ownrecord which language the customer used. When the session has no `locale`, it takes that one, so a new customer, their invoice and their emails follow it. A `locale` you set yourself is never replaced.

```http
POST /api/v1/checkout/sessions

{
  "lineItems": [{ "lookupKey": "credits_100" }],
  "locale": "de",
  "successUrl": "https://shop.example/thanks"
}
```

Amounts, dates and countries are shown the way the customer's language writes them: "1.234,56 €", "4. Oktober 2026", "Allemagne". Tax lines are explained in that language too: "MwSt. 19 % (Deutschland)", "TVA 20 % (France)". For a business customer who is reverse charged, the page shows the exact mention their invoice will carry, as the [knowledge base](https://ownrecord.io/docs/concepts/tax-engine.md) words it for your country.

The consents on the page (your terms, the consent to start a digital service at once, the waitlist's "Notify me when…") are shown in the page's language and recorded with it, so the record says what the customer read.

## The customer portal

The portal follows the same order without a session: the language the customer picked with the links at the bottom of the page (kept for the portal on that browser), the customer's `locale`, the browser's languages, your brand's default, English. Picking a language changes the page only; the customer's `locale`, which their invoices and emails follow, stays as it is.

## Invoices and credit notes

An invoice is written in the customer's language when invoices support it, else in your legal entity's invoice language. Credit notes use the language of the invoice they correct.

If your entity sets a second invoice language (`invoiceSettings.bilingual`, for example English), invoices are bilingual: each label in the invoice's language and the second one ("Račun / Invoice", "Rechnung / Invoice"), the amounts and dates in the first. An invoice already in the second language stays in one language.

Legal notes come from the knowledge base where it has them: the reverse-charge mention of your country (for example "Steuerschuldnerschaft des Leistungsempfängers / Reverse charge" for a German seller) is printed as recorded, whatever the invoice language. Where the knowledge base has no wording, the mention is printed in English, never invented. Issued invoices never change: a PDF is always re-rendered with the template version it was issued with.

## Customer emails

| Email                                                                 | Language                                                             |
| --------------------------------------------------------------------- | -------------------------------------------------------------------- |
| Receipt or invoice, credit note, payment failed, reminders            | The invoice's                                                        |
| Card expiring, trial ending, price change, auto-reload                | The customer's `locale`, else your brand's default, else English     |
| Balance low, subscription renewed, ends or ended, portal sign-in link | The customer's `locale`, else your brand's default, else English     |
| Waitlist confirmation and "you can buy now"                           | The language the customer used at checkout; the links open in it too |

Dates in emails are the days in your legal entity's time zone.

## Set a customer's language

Set `locale` on a customer (`customers.update`) to a language such as `de` or `fr-CH`. Ownrecord uses the language part; a language it doesn't support falls back to the next rule above.
