Skip to main content

Currencies Reference

Supported currencies and amount formatting guidelines.

Paysera Checkout supports payments in various currencies. All currency codes follow the ISO 4217 standard.

Supported Currencies​

European Currencies​

CurrencyCodeSymbolMinor Units
EuroEUR€2
British PoundGBP£2
Swiss FrancCHFFr2
Polish ZlotyPLNzł2
Czech KorunaCZKKč2
Hungarian ForintHUFFt2
Romanian LeuRONlei2
Bulgarian LevBGNлв2
Croatian KunaHRKkn2
Danish KroneDKKkr2
Swedish KronaSEKkr2
Norwegian KroneNOKkr2

Other Currencies​

CurrencyCodeSymbolMinor Units
US DollarUSD$2
Australian DollarAUDA$2
Canadian DollarCADC$2
Japanese YenJPY¥0
note

Currency availability depends on your merchant configuration and may vary by payment method.

Amount Formatting​

API Format​

Amount Format

All amounts use minor currency units (e.g., cents for EUR):

  • Request: integer (e.g., 2500 for €25.00)
  • Response: Long/integer format (e.g., 2500 for €25.00)

Request Example:

{
"purchase": {
"amount": 2500,
"currency": "EUR"
}
}

Response Example:

{
"amount": 2500,
"currency": "EUR"
}

SDK vs Direct API​

Both the SDK and direct API use minor units (cents):

// SDK: Amount in cents (integer)
$order = [
'amount' => 2500, // €25.00 in cents
'currency' => 'EUR',
];

// Direct API: Amount in cents as integer
$payload = [
'purchase' => [
'amount' => 2500, // €25.00 in cents
'currency' => 'EUR',
],
];

Currencies Without Minor Units​

Some currencies (like JPY) don't use minor units:

// Japanese Yen - no minor units, 2500 = ¥2500
{
"purchase": {
"amount": 2500,
"currency": "JPY"
}
}

Currency Conversion​

Conversion Examples​

Since the API uses minor units (cents), no conversion is typically needed. However, if you need to display amounts to users:

<?php

class CurrencyHelper
{
// Convert cents to display format (e.g., "25.00 EUR")
public static function toDisplayFormat(int $cents, string $currency): string
{
$minorUnits = self::getMinorUnits($currency);

if ($minorUnits === 0) {
return $cents . ' ' . $currency;
}

$amount = number_format($cents / pow(10, $minorUnits), $minorUnits, '.', '');
return $amount . ' ' . $currency;
}

// Convert user input (e.g., "25.00") to cents for API
public static function toCents(string $displayAmount, string $currency): int
{
$minorUnits = self::getMinorUnits($currency);
return (int) round(floatval($displayAmount) * pow(10, $minorUnits));
}

private static function getMinorUnits(string $currency): int
{
return match ($currency) {
'JPY' => 0,
'HUF' => 2, // Technically 2, but often rounded to 0
default => 2,
};
}
}

// Usage
$displayAmount = CurrencyHelper::toDisplayFormat(2500, 'EUR'); // "25.00 EUR"
$cents = CurrencyHelper::toCents('25.00', 'EUR'); // 2500 (for API request)

JavaScript Example​

class CurrencyHelper {
static getMinorUnits(currency) {
const noMinorUnits = ['JPY'];
return noMinorUnits.includes(currency) ? 0 : 2;
}

static toDisplayFormat(cents, currency) {
const minorUnits = this.getMinorUnits(currency);
if (minorUnits === 0) {
return `${cents} ${currency}`;
}
const amount = (cents / Math.pow(10, minorUnits)).toFixed(minorUnits);
return `${amount} ${currency}`;
}

static toCents(displayAmount, currency) {
const minorUnits = this.getMinorUnits(currency);
return Math.round(parseFloat(displayAmount) * Math.pow(10, minorUnits));
}
}

// Usage
const displayAmount = CurrencyHelper.toDisplayFormat(2500, 'EUR'); // "25.00 EUR"
const cents = CurrencyHelper.toCents('25.00', 'EUR'); // 2500 (for API request)

Payment Method Availability​

Payment methods may have currency restrictions:

# Get payment methods for a specific currency
curl -X GET "https://api.paysera.com/checkout-project/integration/v1/methods?currency=EUR" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Response includes currency-specific limits (amounts in minor units):

{
"items": [
{
"key": "swedbank",
"name": "Swedbank",
"country_code": "LT",
"min_amount": 1,
"max_amount": 5000000
}
]
}
note

min_amount of 1 = €0.01, max_amount of 5000000 = €50,000.00 (in minor units)

Currency Validation​

PHP Example​

<?php

class CurrencyValidator
{
private const SUPPORTED_CURRENCIES = [
'EUR', 'USD', 'GBP', 'PLN', 'CZK', 'HUF',
'RON', 'BGN', 'CHF', 'DKK', 'SEK', 'NOK',
];

public static function isSupported(string $currency): bool
{
return in_array(strtoupper($currency), self::SUPPORTED_CURRENCIES, true);
}

public static function validate(string $currency): void
{
if (!self::isSupported($currency)) {
throw new InvalidCurrencyException("Currency $currency is not supported");
}
}
}