Skip to main content
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.

Amounts Are Integer Minor Units

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.
Display amountCurrencyamount to send
£19.99GBP1999
£0.20GBP20
€100.00EUR10000
$5.00USD500
{
  "amount": 1999,
  "currency": "GBP",
  "locale": "en-GB"
}
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:
// £19.99 -> 1999
const amount = Math.round(19.99 * 100); // 1999
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.

Currencies Are ISO 4217

The currency field is an ISO 4217 currency code, for example GBP, EUR, or USD. The currency you send determines how amount is interpreted.
There is no FX (currency conversion) on the redirect payment path. The payment is created and settled in the currency you specify.

Legacy Decimal Endpoint

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).
EndpointAmount formatExample for £19.99
POST /api/v1/payment-requests:redirectInteger minor units1999
Embedded / hosted checkoutInteger minor units1999
POST /api/v1/payment-requests (legacy v1)Decimal major units"19.99"

Next Steps

Accept a Payment (Redirect)

Create a payment with minor-unit amounts

Errors

Validation errors from bad amounts

Webhooks

Amounts in webhook payloads

Testing

Try payments in the sandbox