How Quidkey represents money: integer minor units and ISO 4217 currencies
The Payment API represents money in a single, consistent way: amounts are integer minor units, and currencies are ISO 4217 codes. Getting this right is the single most important detail when creating a payment.
On the redirect, embedded, and hosted checkout endpoints, amount is an integer in the currency’s smallest unit: pence for GBP, cents for EUR/USD. For example, 1999 = £19.99.
The 100× footgun. Sending 20 does not mean £20; it means £0.20. To charge £20.00, send 2000. A decimal value such as 19.99 is rejected with a 400 validation error. Always multiply major units by 100 (for two-decimal currencies) before sending.
To convert a display price to minor units, multiply by 100 and round to an integer:
Webhook payloads carry the same minor-unit value, but as a JSON string: data.object.amount (and the numeric fees fields) arrive as a stringified integer such as "1999", not the number 1999. Parse with Number(...) before doing arithmetic, and divide by 100 only at the presentation layer. See Webhooks.
The legacy POST /api/v1/payment-requests (v1) endpoint takes a decimal amount in major units ("19.99" for £19.99), not minor units. It is retained for backward compatibility only. New integrations should use the minor-unit endpoints (redirect, embedded, and hosted checkout).