Skip to main content

Payment Methods Reference

Available payment methods and their capabilities.

Paysera Checkout supports multiple payment methods across different countries. Payment method availability depends on your merchant configuration.

Currently Available​

These payment methods are currently available in production:

Bank Transfers (PIS)​

MethodKeyCountriesType
PayserapayseraAnyBank Transfer
RevolutrevolutEEA + GBBank Transfer
Wisewise77 countriesBank Transfer
BunqbunqEUBank Transfer
Artea BankarteaLTBank Transfer
CitadelecitadeleEE, LT, LVBank Transfer
Coop BankcoopEEBank Transfer
DSK BankdskBGBank Transfer
LHVlhvEEBank Transfer
LKU Credit UnionlkuLTBank Transfer
LuminorluminorEE, LT, LVBank Transfer
NordeanordeaFIBank Transfer
SEBsebEE, LT, LVBank Transfer
SwedbankswedbankEE, LT, LVBank Transfer
UBBubbBGBank Transfer
Urbo BankurboLTBank Transfer

The table follows the order the checkout displays: Paysera first, then Revolut, Wise and Bunq, then the rest alphabetically.

  • Any — Paysera has no payer-country restriction.
  • EEA + GB — the EEA countries plus the United Kingdom, 31 in total.
  • EU — the 27 EU member states.
  • 77 countries — Wise reaches well beyond Europe, including the US, Japan, Australia, Canada and Singapore.

Call the endpoint for the exact available_countries of any method.

note

UBB is the one method restricted by merchant country as well: it is enabled only for merchants registered in BG, PL or UA. A merchant outside those three never sees it, whatever the payer's country.

Card Payments​

MethodKeyType
Credit/Debit Cardscard-paymentCard Payment
Apple Payapple-payDigital Wallet
Google Paygoogle-payDigital Wallet

Card methods are available in roughly 250 countries, but they are only returned when your project is eligible — see Method Visibility.

Instalments​

Buy-now-pay-later methods provided by Inbank, of type bnpl.

The accepted amount differs per payer country, so the limits are listed per country rather than per method. All figures in EUR.

MethodKeyEELTLV
Hire Purchasehire-purchase100 – 10 00050 – 10 00050 – 10 000
Pay Next Monthpay-next-month30 – 80050 – 10 000—
Split Into Partssplit-into-parts75 – 2 50050 – 10 000—

Outside the range the method is not returned at all, so an order of €20 will never offer instalments — and an Estonian buyer will not see Pay Next Month above €800, even though the same method reaches €10 000 in Lithuania.

Today these are the only methods in the catalogue with amount limits, but per-country limits are a general mechanism and any method can carry them.

Querying Available Methods​

Get All Methods​

curl -X GET "https://api.paysera.com/checkout-project/integration/v1/methods" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Filter by Amount and Currency​

curl -X GET "https://api.paysera.com/checkout-project/integration/v1/methods?amount=2500&currency=EUR" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
note

Filtering by limits is applied only when both amount and currency are provided.

What limit filtering does to the response​

With amount and currency supplied, each method comes back with available_countries already trimmed to the countries whose limits accept that amount. A method drops out of the response entirely only when no country is left.

This is how you discover the per-country instalment caps: ask for €900 in EUR and Pay Next Month comes back without EE in its country list, because the Estonian cap is €800, while Lithuania still accepts it.

Payer country​

The endpoint accepts a payer_country parameter (ISO 3166-1 alpha-2):

curl -X GET "https://api.paysera.com/checkout-project/integration/v1/methods?payer_country=LT" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
warning

payer_country is validated and accepted, but it has no effect on the response yet — nothing downstream reads it. Use amount and currency to narrow the list, and read the trimmed available_countries as described above. Do not build on payer_country until this note is removed.

Response​

{
"items": [
{
"key": "swedbank",
"title": "Swedbank",
"description": "Leading Nordic-Baltic bank.",
"type": "pis",
"flow": "redirect",
"available_countries": ["EE", "LT", "LV"],
"available_currencies": {
"EUR": { "main": true }
},
"logo_url": "https://api.paysera.com/checkout-engine/public/v1/assets/payment-method/swedbank/logo",
"logo_wide_url": "https://api.paysera.com/checkout-engine/public/v1/assets/payment-method/swedbank/logo/wide",
"display_order": null,
"display_order_group": null
},
{
"key": "wise",
"title": "Wise",
"description": "Pay via Wise.",
"type": "pis",
"flow": "redirect",
"available_countries": ["AT", "AU", "BE", "CA"],
"available_currencies": {
"EUR": { "main": true },
"RON": { "main": false }
},
"logo_url": "https://api.paysera.com/checkout-engine/public/v1/assets/payment-method/wise/logo",
"logo_wide_url": "https://api.paysera.com/checkout-engine/public/v1/assets/payment-method/wise/logo/wide",
"display_order": 6,
"display_order_group": null
}
]
}

available_countries is shortened here for readability — Wise holds 77 entries and the card methods roughly 250. Swedbank carries no display_order, so it sorts alphabetically after the ranked methods; Wise is ranked sixth. Wise carries a second currency, which is what main: false marks.

Response Fields​

FieldTypeDescription
keystring | nullUnique identifier for pre-selection
titlestringDisplay name of the payment method
descriptionstring | nullDetailed description of the payment method
typestringMethod type: pis, card, wallet, banklink or bnpl. Today's catalogue uses only pis, card and bnpl, but handle the full set.
flowstringFlow type: redirect, decoupled or direct. Every method currently uses redirect.
available_countriesarray<string>ISO 3166-1 alpha-2 country codes. An empty array means the method has no payer-country restriction. When amount and currency are supplied, the list is trimmed to the countries whose limits accept that amount.
available_currenciesobjectMap of currency code → { main: boolean }. main: true marks the primary currency for that method.
logo_urlstring | nullURL of the icon variant of the logo, a 48 px disc. Built from the method key, so in practice always present.
logo_wide_urlstring | nullURL of the wide variant, the wordmark for wide slots. Built the same way.
display_orderinteger | nullPosition in the ordering. null means unranked — unranked methods follow the ranked ones, sorted by name. A project can override the catalogue default, so the value is not the same for every project.
display_order_groupinteger | nullGroup the method belongs to. Methods sharing a group are meant to be rendered as one block. null means the method is not grouped.

Method Visibility​

The methods you get back depend on your project's configuration, not only on the amount and currency you pass. A method that is unavailable is simply absent from the response — this is not an error, and nothing in the payload explains the omission.

Card methods need an MCC, and may need a service agreement. card-payment, apple-pay and google-pay are returned only when your project has an MCC set. A card-payments service agreement may be required on top of that — that check is controlled by a feature flag, so ask your account manager whether it currently applies to you.

Merchant country matters, not just the payer's. A method can be restricted by the country your business is registered in. UBB is the one such case today: a merchant outside BG, PL or UA never sees it, whatever the payer's country.

Instalments depend on the amount and the payer country. See the Instalments table — the accepted range differs per country.

Test mode narrows the list. A project in test mode receives only card-payment and a mock method, whatever else it has enabled.

A method can be switched off for your project specifically. Not only by you: Paysera can disable a method for an individual project. This is the case where nothing in your own settings explains the absence — ask your account manager.

No currency, no method. A method with no currency configured is left out entirely.

Pre-selecting a Payment Method​

Skip the payment method selection screen by specifying the method when creating a payment link:

curl -X POST https://api.paysera.com/checkout-payment-link/integration/v1/payment-links \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"order_id": "order-uuid",
"name": "Order #12345",
"experience": {
"language": "en"
},
"purchase": {
"amount": 2500
},
"payment_details": {
"key": "swedbank",
"country_code": "LT"
}
}'

SDK Usage​

Get Payment Methods​

<?php

use Paysera\CheckoutSdk\Entity\PaymentMethodFilter;

$paymentsFacade = $sdk->getPaymentsFacade();

// Get all methods
$methods = $paymentsFacade->getPaymentMethods();

// Filter by amount and currency
$filter = new PaymentMethodFilter(
amount: 2500, // €25.00 in cents
currency: 'EUR'
);
$filteredMethods = $paymentsFacade->getPaymentMethods($filter);

// Display methods
foreach ($filteredMethods as $method) {
echo sprintf(
"%s (%s) [%s/%s] countries: %s\n",
$method->getTitle(),
$method->getKey() ?? 'n/a',
$method->getType(),
$method->getFlow(),
implode(', ', $method->getAvailableCountries())
);
}
<?php

$linkRequest = $paymentsFacade->buildPaymentLinkCreateRequest([
'name' => 'Order #12345',
'lifetime' => 3600,
'payment_details' => [
'key' => 'swedbank', // Pre-select Swedbank
'country_code' => 'LT', // Lithuania
'purpose' => 'Order #12345', // Payment description
],
'purchase' => [
'amount' => 2500,
],
]);

Error Handling​

Validation Errors​

When payment_details.key references an unavailable method, the create-payment-link endpoint returns:

{
"error": "invalid_properties",
"error_description": "Validation failed",
"error_properties": {
"payment_details.key": ["Payment method is not available for this configuration"]
}
}

Authentication Failure​

{
"error": "unauthorized",
"error_description": "Authentication is required to access this resource"
}