# Units and currency

> Quantities are stored in the product's unit and prices in the record's currency; totals are converted to the installation's base currency.

Solk is built for industrial sales: an opportunity's value is often calculated as **monthly quantity × unit price**, and different products are sold in different units (kg, ton, liter, piece, m²…).

## Units

- The installation's **base unit** is a company-wide setting (e.g. `kg`); company potential and dashboards are expressed in this unit. `GET /api/v1/me` → `app.unit_default`; enabled units are in `app.units`.
- Each product can have its own unit. In opportunity responses, `unit` (e.g. `lt`), `unit_code`, and the price unit `pu` (e.g. `€/lt`) reflect the product's unit.
- The `_kg` suffix in field names is historical: fields such as `potential_kg` and `commit_kg` hold quantities **in the product's or the installation's unit**, which isn't always kilograms.

## Currencies

- The installation has a **base currency** (`app.currency_base`, e.g. `EUR`) and a list of enabled currencies (`app.currencies`).
- Each company can have a default transaction currency (`currency_default`); opportunities and quotes carry their own currency (`currency`, `cur_sym`).
- Totals and dashboards are calculated from values converted to the base currency: `value_base` on opportunities, and `value_open` and `base_currency` in lists.

## Exchange rates

Exchange rates are fetched from the Central Bank of the Republic of Türkiye every business day (22 currencies). An admin chooses whether to use the **buying** or the **selling** rate, and can manually enter and lock a rate for a given day. Conversion uses the **current** rate, not the rate on the record's date — so historical reports in the base currency can change as exchange rates change.

## Numbers in the API

- Quantities and amounts are JSON numbers (`12000`, `2.35`), with no thousands separators or currency symbols. For display, use `value_short` (e.g. `"338K"`, `"2,46M"`) and `cur_sym`.
- Send numbers in request bodies as JSON numbers. Strings such as `"2,35"` and `"1.250,50"` are also parsed correctly (Turkish notation: period for thousands, comma for decimals).