amount.value is an integer number of cents:
4999 means $49.99, and 100 means $1.00. Never send floating-point
values such as 49.99, and never send a currency other than USD.
Hosted-checkout webhook amounts are formatted USD strings. requiredAmount is
the original order price, amount is the actual accepted skin value, and
overpaymentAmount is their non-negative difference. A customer can select
skins worth more than the required price, so amount can legitimately be
greater than requiredAmount. Keep the original integer-cent value in your own
order record and compare it exactly to requiredAmount.
Never use binary floating-point for comparisons or fee calculations. Validate
currency and requiredAmount server-side before fulfillment. Convert formatted
webhook amounts to integer cents with a strict decimal parser, require
amount >= requiredAmount, and verify the overpayment difference exactly.