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.
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​
| Parameter | Type | Required | Description |
|---|---|---|---|
id | UUID | Yes | Payment 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​
| Field | Type | Description |
|---|---|---|
id | UUID | Payment identifier |
order_id | UUID | Associated order identifier |
order_reference | string | Merchant reference of the order |
project_id | string | Project the payment belongs to |
amount | integer | Amount in minor units |
currency | string | ISO 4217 currency |
status | string | Payment status |
payment_method_id | string | Payment method identifier |
payment_method_key | string | Payment method key (e.g., swedbank) |
payment_method_name | string | Human-readable payment method name |
payment_method_type | string | Payment method type (e.g., banklink) |
purpose | string | Payment purpose |
original_amount | integer | Original amount before conversion (nullable) |
original_currency | string | Original currency before conversion (nullable) |
exchange_rate | number | Applied exchange rate (nullable) |
external_payment_id | string | Identifier in the external provider system |
created_at | integer | Creation Unix timestamp (seconds) |
updated_at | integer | Last 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​
| Parameter | Type | Description |
|---|---|---|
order_id | UUID | Filter by order |
status[] | string | Filter by one or more payment statuses |
payment_method_id[] | string | Filter by payment method id |
payment_method_key[] | string | Filter by payment method key |
currency[] | string | Filter by ISO 4217 currency |
amount, amount_gte, amount_lte | integer | Exact / range filter on amount (minor units) |
created_at_gte, created_at_lte | integer | Created-at range (Unix seconds) |
q | string | Free-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.
| Parameter | Type | Default | Description |
|---|---|---|---|
size | integer | 10 | Items per page (1–1000). Out-of-range values return 400 invalid_properties. |
after | string | — | Cursor for the next page. Take it from _metadata.cursors.after. |
before | string | — | Cursor for the previous page. Take it from _metadata.cursors.before. Mutually exclusive with after. |
order_direction | string | desc | Sort direction: asc or desc. |
order_by | string | creation time | Field to sort by. Allowed values differ per endpoint — see the endpoint's parameter table. |
include_total_count | boolean | false | Set 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"
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.
Related Documentation​
- Payment Orders - Read and manage orders
- Refunds - Initiate and track refunds
- Activity - Event log for orders and payments