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)​
| Method | Key | Countries | Type |
|---|---|---|---|
| Paysera | paysera | Any | Bank Transfer |
| Revolut | revolut | EEA + GB | Bank Transfer |
| Wise | wise | 77 countries | Bank Transfer |
| Bunq | bunq | EU | Bank Transfer |
| Artea Bank | artea | LT | Bank Transfer |
| Citadele | citadele | EE, LT, LV | Bank Transfer |
| Coop Bank | coop | EE | Bank Transfer |
| DSK Bank | dsk | BG | Bank Transfer |
| LHV | lhv | EE | Bank Transfer |
| LKU Credit Union | lku | LT | Bank Transfer |
| Luminor | luminor | EE, LT, LV | Bank Transfer |
| Nordea | nordea | FI | Bank Transfer |
| SEB | seb | EE, LT, LV | Bank Transfer |
| Swedbank | swedbank | EE, LT, LV | Bank Transfer |
| UBB | ubb | BG | Bank Transfer |
| Urbo Bank | urbo | LT | Bank 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.
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​
| Method | Key | Type |
|---|---|---|
| Credit/Debit Cards | card-payment | Card Payment |
| Apple Pay | apple-pay | Digital Wallet |
| Google Pay | google-pay | Digital 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.
| Method | Key | EE | LT | LV |
|---|---|---|---|---|
| Hire Purchase | hire-purchase | 100 – 10 000 | 50 – 10 000 | 50 – 10 000 |
| Pay Next Month | pay-next-month | 30 – 800 | 50 – 10 000 | — |
| Split Into Parts | split-into-parts | 75 – 2 500 | 50 – 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¤cy=EUR" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
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"
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​
| Field | Type | Description |
|---|---|---|
key | string | null | Unique identifier for pre-selection |
title | string | Display name of the payment method |
description | string | null | Detailed description of the payment method |
type | string | Method type: pis, card, wallet, banklink or bnpl. Today's catalogue uses only pis, card and bnpl, but handle the full set. |
flow | string | Flow type: redirect, decoupled or direct. Every method currently uses redirect. |
available_countries | array<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_currencies | object | Map of currency code → { main: boolean }. main: true marks the primary currency for that method. |
logo_url | string | null | URL of the icon variant of the logo, a 48 px disc. Built from the method key, so in practice always present. |
logo_wide_url | string | null | URL of the wide variant, the wordmark for wide slots. Built the same way. |
display_order | integer | null | Position 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_group | integer | null | Group 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())
);
}
Pre-select Method in Payment Link​
<?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"
}
Related Documentation​
- Payment Links - Creating payment links with method pre-selection
- Currencies Reference - Supported currencies