Skip to main content

Payments

Read the payment records associated with your orders.

A payment represents a single attempt to pay an order through a chosen payment method. Use these endpoints to look up a payment or list payments for your project.

Amount Format

All amounts are in minor currency units (e.g., cents for EUR) and returned as integers (e.g., 2500 for €25.00).

Get a Payment​

GET /payment-executor/integration/v1/payments/{id}

Retrieves a single payment by its identifier. The payment must belong to your project.

Request​

curl https://api.paysera.com/payment-executor/integration/v1/payments/{id} \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Path Parameters​

ParameterTypeRequiredDescription
idUUIDYesPayment identifier

Response​

{
"id": "0c2d4e6a-1b3c-4d5e-9f8a-2b4c6d8e0f12",
"order_id": "a6f2b8e3-5e5f-47d9-b13f-87ed2db2938a",
"order_reference": "ORDER-12345",
"project_id": "your-project-id",
"amount": 2500,
"currency": "EUR",
"status": "settled",
"payment_method_id": "3f9a1c20-7b4d-4e8a-9c1f-5d6e7a8b9c0d",
"payment_method_key": "swedbank",
"payment_method_name": "Swedbank",
"payment_method_type": "banklink",
"purpose": "Order #12345",
"original_amount": null,
"original_currency": null,
"exchange_rate": null,
"external_payment_id": "EXT-998877",
"created_at": 1736433500,
"updated_at": 1736433570
}

Response Fields​

FieldTypeDescription
idUUIDPayment identifier
order_idUUIDAssociated order identifier
order_referencestringMerchant reference of the order
project_idstringProject the payment belongs to
amountintegerAmount in minor units
currencystringISO 4217 currency
statusstringPayment status
payment_method_idstringPayment method identifier
payment_method_keystringPayment method key (e.g., swedbank)
payment_method_namestringHuman-readable payment method name
payment_method_typestringPayment method type (e.g., banklink)
purposestringPayment purpose
original_amountintegerOriginal amount before conversion (nullable)
original_currencystringOriginal currency before conversion (nullable)
exchange_ratenumberApplied exchange rate (nullable)
external_payment_idstringIdentifier in the external provider system
created_atintegerCreation Unix timestamp (seconds)
updated_atintegerLast update Unix timestamp (seconds)

List Payments​

GET /payment-executor/integration/v1/payments

Returns a cursor-paginated list of payments for your project. Filters can be combined freely.

Request​

curl "https://api.paysera.com/payment-executor/integration/v1/payments?order_id=ORDER_ID&size=20" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Filter Parameters​

ParameterTypeDescription
order_idUUIDFilter by order
status[]stringFilter by one or more payment statuses
payment_method_id[]stringFilter by payment method id
payment_method_key[]stringFilter by payment method key
currency[]stringFilter by ISO 4217 currency
amount, amount_gte, amount_lteintegerExact / range filter on amount (minor units)
created_at_gte, created_at_lteintegerCreated-at range (Unix seconds)
qstringFree-text search over order_reference (max 255 chars)

Pagination Parameters​

The order, payment link, payment and refund list endpoints share the same cursor-based pagination. Cursors are opaque strings — read them from _metadata.cursors and send them back unchanged; never build or parse them yourself.

ParameterTypeDefaultDescription
sizeinteger10Items per page (1–1000). Out-of-range values return 400 invalid_properties.
afterstring—Cursor for the next page. Take it from _metadata.cursors.after.
beforestring—Cursor for the previous page. Take it from _metadata.cursors.before. Mutually exclusive with after.
order_directionstringdescSort direction: asc or desc.
order_bystringcreation timeField to sort by. Allowed values differ per endpoint — see the endpoint's parameter table.
include_total_countbooleanfalseSet to true to populate _metadata.total. Off by default because counting is more expensive.

Every list response has the same envelope:

{
"items": [],
"_metadata": {
"has_next": true,
"has_previous": false,
"cursors": {
"after": "MDE5ZmRiMmUtOWE5NC03ZDVmLThmY2ItNGRhMTQ1MzFkZGQ0",
"before": "MDE5ZmRjMjgtNWQ5YS03NjQ5LWExOWItZDhjNDAzODQ2NTRi"
},
"total": null
}
}

total is null unless you pass include_total_count=true.

To walk the whole collection, keep sending after until has_next is false:

# first page
curl "https://api.paysera.com/merchant-order/integration/v1/orders?size=50" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"

# next page — reuse _metadata.cursors.after from the previous response
curl "https://api.paysera.com/merchant-order/integration/v1/orders?size=50&after=MDE5ZmRiMmUtOWE5NC03ZDVmLThmY2ItNGRhMTQ1MzFkZGQ0" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
Unknown query parameters are ignored

The API does not reject parameters it doesn't know. Sending limit or cursor (names used by some other APIs) does not return an error — the values are silently dropped and you keep receiving the first page with the default size of 10. If pagination seems stuck, check the parameter names first.

order_by accepts created_at (default), amount, currency, status, order_reference and payment_method_key.

Response​

{
"items": [
{
"id": "0c2d4e6a-1b3c-4d5e-9f8a-2b4c6d8e0f12",
"amount": 2500,
"currency": "EUR",
"status": "settled",
"payment_method_id": "019493f8-f999-7000-0000-0000000000d1",
"payment_method_key": "swedbank",
"payment_method_name": "Swedbank",
"order_id": "a6f2b8e3-5e5f-47d9-b13f-87ed2db2938a",
"order_reference": "ORDER-12345",
"project_id": "your-project-id",
"created_at": 1736433500,
"updated_at": 1736433560,
"external_payment_id": "019fdb2e-eec2-756c-91f4-8623333f7b24",
"purpose": "Payment for order #ORDER-12345 at My Shop",
"original_amount": null,
"original_currency": null,
"exchange_rate": null
}
],
"_metadata": {
"has_next": true,
"has_previous": false,
"total": null,
"cursors": {
"after": "MDE5ZmRiMmUtZWNlMi03ZmVjLWFkNzMtYTFmYTUwYzFlMWZi",
"before": "MDE5ZmRjMjgtYmYxYy03ZDYxLThlZGItOWExNzQ0MjkyYmI0"
}
}
}

original_amount, original_currency and exchange_rate are populated only when the payment was converted from another currency.