Money is deceptively simple. You have an amount, you have a currency. How hard can it be? Turns out — very. A tiny mistake in how you represent a number can silently drain a business, trigger fraud alerts, or accidentally charge customers ten times what they owe. This post is about the money framework built into Prism — a payment library — and how it gets this right. Why Amount Is Harder Than It Looks When you're building a payment system that talks to dozens of different payment processors, you quickly realize that every processor has its own opinion about what an "amount" looks like. Stripe wants cents as an integer. 1000 means ten dollars. Their docs say: "A positive integer representing how much to charge in the smallest currency unit." Adyen also wants minor units as an integer. Their docs say: "The amount information for the transaction (in minor units)." So 1000 for EUR means €10.00. PayPal wants a string with decimals — "10.00" . The Orders v2 API uses a JSON string, not a number.…