Guides / currency risk on ai spend
What exchange rates do to AI margin when you don't price in dollars
Model providers bill in US dollars. If your revenue is in another currency, your cost of goods sold moves with an exchange rate you don't control, and your margin moves with it. Culpa, a local-first LLM cost, margin, and forecast ledger, holds cost and revenue together so the effect shows up as margin rather than as a surprise.
Why this happens
This one is invisible until it isn't, because both halves look stable in isolation. Your prices are set in your own currency and they haven't changed. Your provider's rates are set in dollars and they haven't changed either. Between the two sits an exchange rate that moves daily and belongs to neither of you, and it converts a fixed dollar cost into a variable cost in the currency you actually earn. When the dollar strengthens, your cost of goods sold rises in your own books without a single token changing. The exposure scales with how much of your cost base is model spend, which for an AI-native product is a much larger share than it would be for traditional software, so this matters more here than the equivalent risk did a decade ago. It's also asymmetric in practice: customers notice a price rise immediately and never notice a rate move, so the usual response of repricing lands badly and late.
What this usually looks like
- Your prices are in one currency and your provider invoices in dollars.
- Gross margin moved and neither prices nor usage did.
- Nobody knows what share of your cost base is dollar-denominated.
- Your annual plan assumes a rate nobody wrote down.
- Margin is reported without stating the rate it was computed at.
Free, no card, no account
Run the free Cost Leak Scan
It shows your most expensive conversation before you install anything.
Mistakes that cost the most
| Mistake | Why it hurts | Do instead |
|---|---|---|
| Treating model spend as a fixed cost in your own currency. | It's fixed in dollars, which makes it variable in every other currency. | Record the rate used, so a margin change can be split into usage and currency. |
| Budgeting a year at today's rate without saying so. | The assumption is load-bearing and invisible, so nobody revisits it when it breaks. | State the rate in the budget and give a range around it. |
| Repricing in response to a rate move. | Customers experience a price rise, not a currency correction, and the move may reverse. | Decide in advance how much movement you absorb before touching price. |
| Reporting margin without the rate beside it. | Two quarters aren't comparable if they were converted at different rates and nobody noted it. | Report margin and the rate together, so the comparison stays honest. |
Run this check tonight
- Work out what share of your cost base is invoiced in dollars.
- Recompute last quarter's gross margin at a rate 10% less favourable.
- Find the rate assumption inside your annual budget, if one was written down.
- Decide how much movement you'd absorb before changing price, and write it down.
The same usage, three exchange rates
Illustrative example
A modelled business earning 100,000 euros a month with 30,000 dollars of model spend in cost of goods sold. Usage, prices and the dollar cost are held constant across all three rows, so the only thing moving is the rate. Every figure including the rates is modelled: no exchange rate here is quoted as current, because none was verified.
Six points of margin, and nothing happened. No price changed, no customer behaved differently, no token was added. For a product where model spend is a large share of cost of goods sold, this is a real line in the margin bridge and it usually isn't one, because nobody recorded the rate that produced last quarter's figure.
Every number, with its confidence and source
| Figure | What it means | Confidence | Source |
|---|---|---|---|
| 6.06 percentage points | modelled gross margin lost to a currency move alone, with usage and prices unchanged | calculated | A modelled 100,000 euros of monthly revenue against 30,000 dollars of model spend in cost of goods sold. At a modelled 1.10 USD per EUR the cost converts to 27,273 euros for a 72.73% gross margin, and at 0.90 it converts to 33,333 euros for 66.67%, a fall of 6.06 points. Every figure including all three rates is modelled, and no rate is presented as current. |
What a generic answer can’t know
The rate is public and your exposure to it isn't, because that depends on what share of your costs are dollar-denominated and what share of your revenue isn't. Both live in your own books. Culpa prices every call in exact decimal from a versioned price book and takes your revenue alongside, so gross margin is computed rather than assembled, and a movement in it can be separated into the part usage caused and the part conversion caused. That separation is the whole value here: without it a margin fall gets investigated as a cost problem, and the fix for a currency move is a different decision entirely.
Questions founders ask next
Do LLM providers bill in currencies other than dollars?
The published rates are in US dollars, so if you earn in another currency your cost of goods sold converts at whatever rate applies when you pay. That makes a fixed dollar cost a variable cost in your own books.
How much margin can a rate move cost?
It scales with how much of your cost base is dollar-denominated. In the modelled example a move from 1.10 to 0.90 USD per EUR takes gross margin from 72.73% to 66.67%, which is 6.06 points on completely unchanged usage.
Should I reprice when the rate moves?
Decide the threshold before it happens rather than reacting. Customers experience a price rise rather than a currency correction, and rate moves reverse. What helps most is knowing in advance how much movement you absorb.
How do I tell a currency effect from a cost problem?
Report margin with the rate used beside it, and recompute the prior period at the current rate. The difference between those two figures is the currency part, and whatever remains is the usage part. Without recording the rate, the two are indistinguishable after the fact.
On your infrastructure
Culpa runs on your infrastructure. Your prompts and responses never leave it. Culpa counts calls to run your plan, and it fails open, so if it ever breaks your app keeps running.
How Culpa works
Find the culprit. Not just the total.
Your dashboard shows what you spent. It stops short of who spent it. Culpa shows the conversation, the user and the feature behind it.
Your prompts stay local.
Culpa runs on your own infrastructure. What you send to a model reaches us at no point.
Every dollar has a name.
Follow any charge to the conversation, the user, the feature and the customer behind it.
See the bill before it lands.
Cost your next feature before you ship it. You get the likely bill and the worst case, at best, median, p90 and p99.
Three steps to your first answer.
Change one base URL.
Or drop in the Python or TypeScript library.
Find your most expensive conversation.
In the first session, not the first week.
Cost your next feature before you ship it.
Why the bill went up
Example dashboardCalls traced
418,209
across 3 projects
Spend this week
$378.41
+ $182 vs last week
Failed calls
312
74% retried, and you paid for all of them
+ $182 this week traced to one culprit
Spend over 14 days
Most expensive users
Next week forecast
Graded against reality. Accuracy shown as results land.
Keep reading
Sources: Anthropic pricing. Last reviewed 2026-08-05, rates effective 2026-07-02. Plain text version.