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
| Currency | Code | Symbol | Minor Units |
|---|---|---|---|
| Euro | EUR | € | 2 |
| British Pound | GBP | £ | 2 |
| Swiss Franc | CHF | Fr | 2 |
| Polish Zloty | PLN | zł | 2 |
| Czech Koruna | CZK | Kč | 2 |
| Hungarian Forint | HUF | Ft | 2 |
| Romanian Leu | RON | lei | 2 |
| Bulgarian Lev | BGN | лв | 2 |
| Croatian Kuna | HRK | kn | 2 |
| Danish Krone | DKK | kr | 2 |
| Swedish Krona | SEK | kr | 2 |
| Norwegian Krone | NOK | kr | 2 |
Other Currencies
| Currency | Code | Symbol | Minor Units |
|---|---|---|---|
| US Dollar | USD | $ | 2 |
| Australian Dollar | AUD | A$ | 2 |
| Canadian Dollar | CAD | C$ | 2 |
| Japanese Yen | JPY | ¥ | 0 |
Currency availability depends on your merchant configuration and may vary by payment method.
Amount Formatting
API 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.,
2500for €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
}
]
}
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");
}
}
}