Multi-currency finance
"Approximately right" is the wrong default for finance. A business with a US company and a team in Pakistan can keep both sides in one system, and last year's report still gives the same numbers when you open it again.
Under the hood
Off-the-shelf tools treat multi-currency as a configuration setting and produce reports that drift over time as exchange rates move. The pattern I ship treats currency as a first-class field on every monetary row.
Each row stores: native amount, native currency code, an FxRateSnapshot foreign key pointing to the rate that was current when the row was created. Reports compute convertedAmount = nativeAmount * snapshotRate rather than calling live FX, so they reconcile both sides retroactively, without time-machine bugs. The cost at the schema level is one column. The benefit is audit-ready reproduction by design.