If you sell in more than one currency — or run ad accounts billed in a currency your store doesn’t use — the raw numbers can’t simply be added together. Upstack converts every money value into one reporting currency before totalling it, so a revenue figure always means one thing.
Choosing the reporting currency
Every query endpoint accepts an optional currency parameter, and every CLI query command accepts --currency:
If you omit currency, results are converted to USD — not to your store’s currency. A shop selling in GBP that queries without the parameter receives GBP revenue converted into USD. Pass the parameter explicitly, or set a CLI default with upstack config set currency GBP, so totals come back in the currency you expect.
In the dashboard this is handled for you: the display-currency picker sends your account’s currency on every request.
Rates are historical, not current
Each amount is converted at the rate for the day that amount occurred — the order’s date for revenue and cost, the spend date for ad spend. It is not converted at today’s rate.
This matters because it makes reports reproducible. Running the same April report in June returns the same numbers it returned in April; a March order is always valued at March’s rate, no matter when you ask. Converting everything at today’s rate would make historical revenue drift every day.
Rates come from a daily feed and cover every calendar day. If a particular day is missing, Upstack falls back to the most recent earlier day rather than guessing. If no rate can be found at all, the amount passes through unconverted rather than being dropped or estimated — a missing rate never removes a row from your results.
What is not converted
Ad-account budgets. On query-channel-details, the basicDetails fields — dailyBudget, budgetRemaining, and amountSpent — are point-in-time settings read from the ad platform. They have no date to attach a historical rate to, so they stay in the ad account’s own currency. Each row reports that currency in its own currency field. The time-series metrics in results[].measures are converted.
Product and operating costs at entry. Costs you enter in settings — COGS, handling fees, shipping, gateway fees, fixed costs — are recorded in the currency you pay them in, and the settings screens label them that way. They’re converted into your reporting currency when they appear in reports, not when you type them in.
Ratios and counts. Percentages, session counts, and order counts have no currency. Ratios built from money (ROAS, MER, CPA, CPM) are computed from converted values, so they’re independent of which reporting currency you pick.
See also