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
EuroEUR2
British PoundGBP£2
Swiss FrancCHFFr2
Polish ZlotyPLN2
Czech KorunaCZK2
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: String format (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 string
$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");
}
}
}