Currency & unit conversionsReference
Let the app do the currency and unit math. A calc rule converts an amount into another currency, or a quantity into another unit, and stores the result — so a report in euros stays right even when orders arrive in dollars. Put the conversion in the Value column: the target field becomes read-only, updates live as you type, and recalculates every time the record is saved. Four functions are available — two that read conversion tables in your own workbook, and two that need no tables at all:
| Function | What it does |
|---|---|
currency_conversion(amount, from, to) | Converts the amount using the Exchange Rates table in your workbook. |
unit_conversion(quantity, from, to) | Converts the quantity using the Unit Conversions table in your workbook. |
currency_conversion_api(amount, from, to, date) | Converts with live exchange rates — no table needed. The date is optional (see below). |
unit_conversion_api(quantity, from, to) | Converts with Sheetward's built-in unit table — no table needed. |
Reading the brackets. Each function takes the value to convert first — the money or quantity field — then the from and to codes; currency_conversion_api also accepts a fourth item, the date. A blank value stays blank (never 0), and the result always carries the target code — a fixed "EUR" keeps the field in euros, on screen and in exports.
Codes can be fixed or per-record. Write from and to as a code in quotes ("EUR"), or as a field name (currency) so each record converts from its own currency or unit — currency_conversion(total_amount, currency, "EUR") turns every order's total into euros, whatever it was billed in. You can add arithmetic around a conversion too (… * 1.02 for a 2% handling charge, say).
Table conversions keep the rate in your hands. They read two reserved lookup sheets: Exchange Rates with columns From · To · Rate, and Unit Conversions with From · To · Factor. Sheetward uses the exact pair, its reverse, or ×1 when the codes match; if a pair is missing it blocks the save and names the pair to add — so no total is ever computed on a made-up rate. Update the tables any time in Master Data; no re-upload needed.
API conversions need no tables at all. currency_conversion_api uses live European Central Bank reference rates from the free, keyless Frankfurter service (frankfurter.dev): give it a date (a date field, or a date like "2026-07-01") to convert at that day's published rate, or leave the date off to use today's. unit_conversion_api uses a built-in table covering common units of mass, length, area, volume, temperature and time — UNECE codes and everyday names like kg, lb, ft, °C. Both work in standalone apps whenever the computer running them has internet.
currency_conversion_api can't convert a pair it doesn't list; it blocks the save with a message naming the pair. For any currency it doesn't cover, use the table-based currency_conversion and supply the rate yourself — add the From · To · Rate row to your Exchange Rates sheet, or keep it current in the app's Master Data.Total EUR is always €, whatever currency the order came in. If a live rate can't be fetched and none is cached, the save is blocked until the rate service is reachable — so a record never stores a stale guess. A missing table pair blocks the save the same way.| Use… | Rates come from | Best when |
|---|---|---|
| currency_conversion | Your Exchange Rates sheet | You set the rate yourself, or the currency isn't in the live feed |
| unit_conversion | Your Unit Conversions sheet | The factor is your own — pieces per box, pallets per truck |
| currency_conversion_api | Live ECB reference rates (Frankfurter) | Major currencies, today's or a past date's rate, zero upkeep |
| unit_conversion_api | Sheetward's built-in unit table | Common units (kg, lb, ft, °C…) with zero setup |