> ## Documentation Index
> Fetch the complete documentation index at: https://docs.timetracker.in/llms.txt
> Use this file to discover all available pages before exploring further.

# Currencies and exchange rates

> Set your workspace base currency, price rates and clients in other currencies, and supply the exchange rate TimeTracker uses when an invoice mixes currencies.

Every workspace has one **base currency**. Rates, clients and invoices can each use a different one. When they mix on an invoice, you supply the exchange rate.

## The three places currency is set

| Level     | Where                                          | What it decides                                                     |
| --------- | ---------------------------------------------- | ------------------------------------------------------------------- |
| Workspace | **Settings** → **General** → **Base currency** | The default for everything, and the fallback when nothing else says |
| Client    | The client record → **Default currency**       | The currency an invoice for that client starts in                   |
| Rate      | Each rate row → **Currency**                   | The currency of the time entries that rate prices                   |

## Set the workspace base currency

<Steps>
  <Step title="Open Settings → General">
    Click **Settings** in the sidebar, then **General**.
  </Step>

  <Step title="Edit Base currency">
    Enter a three-letter code such as `USD`. The field accepts exactly three letters.
  </Step>

  <Step title="Save">
    The new base currency becomes the default in every currency picker.
  </Step>
</Steps>

Northwind Studio uses **USD**.

<Note>
  Changing the base currency does not convert anything. Existing rates, entries and invoices keep the currency they were created with.
</Note>

## Which currency an entry uses

The currency comes from the rate that won, not from the workspace.

| Situation                                   | Currency on the entry                  |
| ------------------------------------------- | -------------------------------------- |
| The winning rate carries a currency         | That currency                          |
| The winning rate has no currency of its own | The workspace base currency            |
| No rate resolved                            | None – the entry has no billable value |

See [/rates/how-rates-are-chosen](/rates/how-rates-are-chosen).

## Supported currencies

TimeTracker uses standard three-letter ISO codes and knows how many decimal places each one has. That matters more than it sounds.

| Currency                           | Decimal places | `1234` minor units renders as |
| ---------------------------------- | -------------- | ----------------------------- |
| USD, EUR, GBP, INR and most others | 2              | 12.34                         |
| JPY, KRW, VND, CLP                 | 0              | 1234                          |
| BHD, KWD, OMR, TND                 | 3              | 1.234                         |

An unrecognised code is rejected rather than assumed to have two decimals. You see *"That isn't a currency code we recognise. Pick one from the list."*

## Rounding

Money is rounded once, at the end, to the currency's own number of decimal places, using half-up rounding. It is never rounded partway through a calculation.

That is why a subtotal, a discount and a tax line always add up to the total exactly.

## Exchange rates on an invoice

An invoice is always in **one** currency. If a line you select is priced in a different currency, you supply the rate that converts it.

### How it appears

An **Exchange rates** section appears in the invoice builder as soon as a selected line's currency differs from the invoice currency. It reads:

> Some selected lines are billed in a different currency than this invoice (USD). Enter the rate to convert each into USD.

You get one field per source currency, labelled for example **EUR → USD rate**.

### How the rate is used

The rate is a multiplier: one unit of the source currency equals this many units of the invoice currency.

Ana Ferreira bills at **€80/hour**. The invoice is in **USD**. You enter `1.08`.

`€80 × 1.08 = $86.40` per hour
`4 hours × $86.40 = $345.60`

The line is stored in USD at \$345.60, and the rate `1.08` is frozen onto it.

<Warning>
  There is no automatic rate lookup, and there is no silent 1:1 fallback. If a conversion is needed and no rate is supplied, the save is refused rather than the money being mis-priced.
</Warning>

### The rate is frozen

The exchange rate is snapshotted onto the invoice line when the invoice is created. Entering a different rate on a later invoice never re-prices an earlier one. See [/rates/rate-snapshots](/rates/rate-snapshots).

## Avoiding mixed currencies

The simplest setup is one currency per client.

<Steps>
  <Step title="Set the client's default currency">
    On the client record, pick the currency you actually bill them in.
  </Step>

  <Step title="Set matching rates">
    Give everyone who works on that client a rate in the same currency, or a project rate in it.
  </Step>

  <Step title="Invoice">
    No exchange rate section appears, because nothing needs converting.
  </Step>
</Steps>

## Example

Northwind Studio (base `USD`) bills a European client in `EUR`.

| Person       | Rate   | Currency |
| ------------ | ------ | -------- |
| Sarah Lin    | 100.00 | USD      |
| Ana Ferreira | 80.00  | EUR      |

Daniel builds an EUR invoice with time from both.

* Ana's lines are already in EUR – nothing to convert.
* Sarah's lines are in USD, so the **Exchange rates** section shows **USD → EUR rate**.
* Daniel enters `0.92`. Sarah's rate converts to `$100 × 0.92 = €92.00` per hour.

If Daniel had built the invoice in USD instead, he would have been asked for a **EUR → USD rate** to convert Ana's lines.

## Permissions

| Action                               | Capability                 | Default roles                          |
| ------------------------------------ | -------------------------- | -------------------------------------- |
| Change the workspace base currency   | `workspace.updateSettings` | Owner, Admin                           |
| Set a rate's currency                | `rate.manage`              | Owner, Admin, Project Manager          |
| Set a client's default currency      | `client.manage`            | Owner, Admin, Project Manager          |
| Enter an exchange rate on an invoice | `invoice.manage`           | Owner, Admin, Project Manager, Finance |

See [/concepts/roles-and-capabilities](/concepts/roles-and-capabilities).

## Common questions

<AccordionGroup>
  <Accordion title="Does TimeTracker fetch live exchange rates?">
    No. You enter the rate you want to use, on the invoice, at the moment you build it. That rate is then frozen onto the invoice.
  </Accordion>

  <Accordion title="Can one invoice hold two currencies?">
    No. Every line on an invoice is stored in the invoice currency. Anything in another currency is converted first, using the rate you supply.
  </Accordion>

  <Accordion title="Can I change the invoice currency after adding lines?">
    No. The **Currency** field locks as soon as the invoice has a line. Remove every line to unlock it, or start a new invoice.
  </Accordion>

  <Accordion title="What currency does a new invoice start in?">
    The selected client's default currency. You can change it until the first line is added.
  </Accordion>

  <Accordion title="Why does a JPY total have no decimals?">
    Because the yen has no minor unit. TimeTracker rounds each currency to its own number of decimal places rather than assuming two.
  </Accordion>

  <Accordion title="Can I record a payment in a different currency from the invoice?">
    No. A payment must be in the invoice currency. See [/invoicing/record-a-payment](/invoicing/record-a-payment).
  </Accordion>
</AccordionGroup>

## Troubleshooting

| Message                                                                                                     | Meaning                                                  | Fix                                                       |
| ----------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | --------------------------------------------------------- |
| "That isn't a currency code we recognise. Pick one from the list."                                          | Unsupported or malformed code                            | Use a supported three-letter ISO code                     |
| "Enter a valid exchange rate for EUR → USD before saving."                                                  | An exchange rate field is empty or not a positive number | Type a decimal such as `1.08`                             |
| "This invoice is in USD but some lines are in EUR, and no exchange rate is on file. Add one, then invoice." | A conversion is needed and no rate was given             | Fill in the **Exchange rates** section                    |
| "Some lines are in a different currency from the invoice. Convert them, or invoice them separately."        | A line reached the totals in the wrong currency          | Supply the rate, or build a separate invoice per currency |
| "This invoice is in USD, so a payment in EUR can't be recorded against it."                                 | The payment currency does not match                      | Record the payment in the invoice currency                |
| The **Currency** field on an invoice is greyed out                                                          | The invoice already has a line                           | Remove all lines, or start a new invoice                  |

## Related guides

<CardGroup cols={2}>
  <Card title="Taxes and currency" icon="percent" href="/invoicing/taxes-and-currency">
    Currency on the invoice itself.
  </Card>

  <Card title="How rates are chosen" icon="list-ordered" href="/rates/how-rates-are-chosen">
    Which rate decides the currency.
  </Card>

  <Card title="Create an invoice" icon="file-invoice" href="/invoicing/create-an-invoice">
    Where you enter an exchange rate.
  </Card>

  <Card title="Rate snapshots" icon="camera" href="/rates/rate-snapshots">
    Why a frozen rate matters.
  </Card>

  <Card title="Set a person rate" icon="user-pen" href="/rates/set-a-person-rate">
    Choosing a rate's currency.
  </Card>

  <Card title="Record a payment" icon="hand-holding-dollar" href="/invoicing/record-a-payment">
    Payment currency rules.
  </Card>
</CardGroup>
