Skip to contact form
← BlogEngineeringAugust 15, 2026 · 4 min read

Prices in pounds, not converted pounds

A price that is converted when it is displayed is a price that changes on its own — including on the contract, and after the client agreed to it.

hen the studio moved to the UK, the catalogue had to become sterling. There are two ways to do that, and only one of them is a currency change — the other is a display filter with a currency's name on it.

We took the boring one: the integers in the catalogue are pounds, in pence, and nothing converts anything at any point. The number stored is the number decided.

Aconvertedpriceisnotaprice.Itisafunctionofthepriceandtheafternoon.

The failure mode is not that a figure looks slightly different on the website. It is that a client agrees to a number, the contract prints a number, the invoice charges a number, and there is no guarantee those are the same number — because each was rendered at a different moment against a rate that moves. The contract says the price is fixed in writing. A display-time conversion quietly makes that untrue.

The catalogue, the calculator, the price sheet, the brochure and the invoice PDFs all moved correctly. Four things did not, and the guard test that existed to catch exactly this missed every one of them, because it only knew how to find one shape: a currency written as an object key. None of the four were object keys.

  • The contract's payment clause still named the currency we had just stopped billing in, and its no-add-ons branch compared against a literal zero written with the wrong symbol — so a base-only contract itemised nothing, twice, in two different currencies.
  • The commissions dashboard and a rep's earnings page both defaulted their number formatter to a US locale, so pay computed in pounds rendered with a dollar sign.
  • Invoice rows took a column default nothing ever set, which is precisely why it could stay wrong: nothing reads it.

The guard now also checks formatters that were left to default, the locale sitting above a currency-style format, and the currency named in ordinary prose. That third check found seven more the first time it ran.

Partway through, a full converted price table arrived, worked out from the old dollar figures. Applied to a catalogue that had already gone sterling-native, it would have cut most of the line items by roughly a fifth — the exact opposite of the argument being made in the same message, which was that several of these lines were underpriced.

That is the trap in a nutshell. Once a system is native to a currency, a conversion table is not a translation any more; it is a discount with arithmetic in front of it. Every argued increase was applied. The cuts were not, because they were an artefact rather than a decision — and a price change should always be a decision.

Want this kind of thinking on your project?

This is how we work through real decisions. If you're weighing a build of your own, tell us about it — we reply within one working day.