Transactions
Look up transactions individually or by page.
List transactions
GET
/v1/transactions/{page}/{limit}
List transactions
Returns a paged list of the transactions recorded for your credentials, newest first. Every operation that creates a transaction — purchase, pre-authorization, capture, refund, reversal, credit, oct — appears as its own entry, including declined and pending ones. The list is sorted by created_at, newest first; the order cannot be changed. The list is always scoped to the instance your API key belongs to. If your credentials are issued at merchant level it is additionally scoped to that merchant and the merchant filter is ignored. A transaction that does not belong to you is not reported as forbidden — it is simply not in the result. data is an object, not an array: the transactions are in data.items and the pagination counters data.total_items and data.total_pages sit beside them. An empty list is not proof that no transactions exist: the list is served from a search index, and if that index is unavailable the endpoint returns code 0 with total_items 0 and an empty items array rather than an error — treat a zero result as nothing to show right now and retry before acting on it. Invalid filter values: merchant, user and reference never fail — a value that matches nothing returns an empty list; status never fails — a non-numeric value is read as 0 (Pending); a non-numeric type or an unparseable start_date / end_date fails the request with code 400 (services.general.bad_request), returned with HTTP 200. Any other query parameter is ignored; instance cannot be supplied, it is always taken from your credentials. This is a GET with no request body: the HMAC hash is calculated over ApiKey + Timestamp + Operation, with an empty string in place of the body. Authentication: HMAC (transactions_list).
Path parameters
| Name | Example | Description |
|---|---|---|
page
|
1 |
Page number, starting at 1. There is no default — the segment cannot be left out. 0 is not rejected but the result is not defined; always send 1 or more. |
limit
|
20 |
Number of transactions per page. There is no default and no upper bound; 20 is a sensible starting point. 0 is not rejected but the result is not defined; always send 1 or more. |
Query parameters
| Name | Example | Description |
|---|---|---|
type
|
19 |
Transaction type ID — the numeric ID, not a name: 1 = deposit (top-up), 12 = purchase, 15 = fee, 16 = refund, 17 = reversal, 19 = pre_authorization, 20 = authorization, 21 = capture, 26 = credit, 31 = oct. A non-numeric value such as type=purchase fails the request; it is not ignored. |
status
|
1 |
Transaction status: -2 = cancelled, -1 = failed, 0 = pending, 1 = successful. A non-numeric value is read as 0 and returns the pending transactions. |
merchant
|
df1f946a-8b03-4a21-8eb7-dab86a77a027 |
Restrict the list to one merchant of your instance. Ignored when your credentials are merchant-level — the merchant behind the API key always wins. |
user
|
3f86c24b-dd63-47bc-bc21-1a7deb7ac679 |
Restrict the list to one user token. |
reference
|
ORDER-2026-001 |
Your own reference, as sent on the original operation. Exact, case-sensitive match — not a partial, prefix or case-insensitive search. |
start_date
|
2026-09-01T00:00:00Z |
Return transactions created at or after this moment. Compared against created_at, not execution_date. A full date-time is accepted; a bare date (2026-09-01) means midnight UTC, and relative expressions such as yesterday are accepted too. An unparseable value fails the request. |
end_date
|
2026-09-30T23:59:59Z |
Return transactions created at or before this moment. Compared against created_at, not execution_date. The value is used exactly as given — it is not widened to the end of the day: end_date=2026-09-30 means 2026-09-30 00:00:00 UTC and returns almost nothing from the 30th; to include a whole day, pass its last moment. An unparseable value fails the request. |
Response
| Field | Type | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
code
|
integer (0,any) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
data
|
object required | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Example response
- Transactions found
- Nothing matches
- Invalid filter value
A capture and the pre-authorization behind it. The pre-authorization was partially approved (requested_amount 12.50, amount 10.00).
{
"code": 0,
"data": {
"items": [
{
"token": "9f2b1c44-7d0e-4a91-b3c2-1e5a7d8f0b62",
"type": 21,
"merchant": "df1f946a-8b03-4a21-8eb7-dab86a77a027",
"amount": 10,
"requested_amount": 10,
"currency": "EUR",
"status": 1,
"card": "c6ff4cec-e9e8-4ff3-830b-6d282e08b5db",
"card_pan_obfuscated": "411111XXXXXX1111",
"reference": "ORDER-2026-001",
"linked_transaction": "d428a647-12db-43f9-900c-c5f0779beb67",
"refundable_amount": 10,
"voidable": true,
"system_trace_audit_number": "748868",
"execution_date": "2026-09-10 11:45:56",
"created_at": "2026-09-10 11:45:55",
"response_code": "00",
"card_type": "Visa",
"is_moto": false
},
{
"token": "d428a647-12db-43f9-900c-c5f0779beb67",
"type": 19,
"merchant": "df1f946a-8b03-4a21-8eb7-dab86a77a027",
"amount": 10,
"requested_amount": 12.5,
"currency": "EUR",
"status": 1,
"card": "c6ff4cec-e9e8-4ff3-830b-6d282e08b5db",
"card_pan_obfuscated": "411111XXXXXX1111",
"reference": "ORDER-2026-001",
"refundable_amount": 10,
"voidable": false,
"system_trace_audit_number": "748860",
"execution_date": "2026-09-10 11:40:12",
"created_at": "2026-09-10 11:40:11",
"response_code": "10",
"card_type": "Visa",
"is_moto": false
}
],
"total_items": 2,
"total_pages": 1
}
}
No transaction matches the filters (or the search index is unavailable — see the endpoint description).
{
"code": 0,
"data": {
"items": [],
"total_items": 0,
"total_pages": 0
}
}
A non-numeric type or an unparseable start_date / end_date.
{
"code": 400,
"message": "services.general.bad_request",
"key": "services.general.bad_request"
}
Transaction detail
GET
/v1/transactions/{token}
Transaction details
Returns one transaction by its token — the data.transaction value the original operation returned. The object is the same one the list (GET
/v1/transactions/{page}/{limit}) returns; the detail view carries no extra fields. The lookup is scoped the same way as the list: to your instance, and to your merchant when your credentials are merchant-level. A token that exists but belongs to someone else is reported as not found, not as forbidden. There are no query parameters: anything appended to the query string is ignored, including merchant and user — the scope comes from your credentials alone. Not found is returned with HTTP 200 and code 50004 (services.transactions.not_found) — for a token that is unknown or belongs to another instance or merchant. There is no request body: the HMAC hash is calculated over ApiKey + Timestamp + Operation, with an empty string in place of the body. Authentication: HMAC (transaction_details).Path parameters
| Name | Example | Description |
|---|---|---|
token
|
d428a647-12db-43f9-900c-c5f0779beb67 |
Transaction token — the data.transaction returned by purchase, pre-authorization, capture, refund, reversal, credit or oct. |
Response
| Field | Type | Description | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
code
|
integer (0,any) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
data
|
object required | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Example response
- Transaction found
- Transaction not found
A pre-authorization that the issuer partially approved: 10.00 authorized out of the 12.50 requested.
{
"code": 0,
"data": {
"token": "d428a647-12db-43f9-900c-c5f0779beb67",
"type": 19,
"merchant": "df1f946a-8b03-4a21-8eb7-dab86a77a027",
"user": "3f86c24b-dd63-47bc-bc21-1a7deb7ac679",
"amount": 10,
"requested_amount": 12.5,
"currency": "EUR",
"status": 1,
"card": "c6ff4cec-e9e8-4ff3-830b-6d282e08b5db",
"card_pan_obfuscated": "411111XXXXXX1111",
"card_type": "Visa",
"reference": "ORDER-2026-001",
"reference2": "Second delivery batch",
"refundable_amount": 10,
"voidable": false,
"pos_terminal_id": "12345678",
"system_trace_audit_number": "748860",
"transaction_stamp": "120312472701006",
"response_code": "10",
"description": "Order 2026-001",
"execution_date": "2026-09-10 11:40:12",
"created_at": "2026-09-10 11:40:11",
"is_moto": false
}
}
The token is unknown or belongs to another instance or merchant.
{
"code": 50004,
"message": "services.transactions.not_found"
}