List and retrieve Transactions
July 30, 2026
List and filter FlowAlp Pay transactions or retrieve a single one by ID, with all transaction status values explained for the Merchant API.
Every payment processed through FlowAlp Pay is stored as a Transaction. The Merchant API exposes two read endpoints for this resource: one that returns a filtered list and one that returns a single record by its numeric ID. Use API version v1.16 for new integrations and authenticate every call with the x-api-key header as described in Authentication.
List Transactions
https://api.pay.flowalp.com/v1.16/Transaction/v1.14 · v1.15 · v1.16The list endpoint returns the transactions of your instance ordered by creation time. Combine the UTC date filters with limit and offset to page through large result sets. All parameters except instance are optional.
Request parameters
| Parameter | Type | Description |
|---|---|---|
| instance | string (required) | Name of your instance (tenant). Identifies the account the request runs against. |
| filterDatetimeUtcGreaterThan | date | Lower bound in UTC, format YYYY-MM-DD HH:MM:SS. Only transactions created after this moment are returned. |
| filterDatetimeUtcLessThan | date | Upper bound in UTC, same format as above. |
| filterMyTransactionsOnly | boolean | Defaults to false. When set to 1, only transactions created with the API key used for this request are returned. |
| orderByTime | string | ASC (default) or DESC — sort order by transaction time. |
| offset | integer | Number of rows to skip, for pagination. |
| limit | integer | Maximum number of rows to return. |
curl "https://api.pay.flowalp.com/v1.16/Transaction/?instance=<tenant>&orderByTime=DESC&limit=20&offset=0" \
-H "x-api-key: <api-secret>"<?php
use FlowAlpPay\FlowAlpPay;
use FlowAlpPay\Models\Request\Transaction;
$client = new FlowAlpPay(
getenv('FLOWALP_TENANT'),
getenv('FLOWALP_API_SECRET'),
FlowAlpPay::DEFAULT_COMMUNICATION_HANDLER,
'pay.flowalp.com',
'1.16'
);
$request = new Transaction();
$request->setFilterDatetimeUtcGreaterThan(new DateTime('2026-07-01 00:00:00'));
$request->setFilterDatetimeUtcLessThan(new DateTime('2026-07-31 23:59:59'));
$request->setOrderByTime('DESC');
$request->setLimit(20);
try {
$transactions = $client->getAll($request);
foreach ($transactions as $transaction) {
echo $transaction->getId() . ': ' . $transaction->getStatus() . PHP_EOL;
}
} catch (Exception $e) {
error_log('Listing transactions failed: ' . $e->getMessage());
}Retrieve a Transaction
https://api.pay.flowalp.com/v1.16/Transaction/{id}/v1.14 · v1.15 · v1.16| Parameter | Type | Description |
|---|---|---|
| id | integer (required) | Path parameter: numeric ID of the transaction to retrieve. You receive it when the transaction is created and in every webhook notification. |
| instance | string (required) | Query parameter: name of your instance (tenant). |
curl "https://api.pay.flowalp.com/v1.16/Transaction/4712/?instance=<tenant>" \
-H "x-api-key: <api-secret>"<?php
use FlowAlpPay\Models\Request\Transaction;
// $client: same constructor as in the list example above
$request = new Transaction();
$request->setId(4712);
try {
$transaction = $client->getOne($request);
echo $transaction->getStatus();
} catch (Exception $e) {
error_log('Transaction lookup failed: ' . $e->getMessage());
}Response
Both endpoints reply with a status field and a data array; the single retrieve returns an array containing exactly one element. Amounts are expressed in minor units (6250 = CHF 62.50). refundable and partiallyRefundable tell you which refund operations are currently possible, and payoutUuid links the transaction to the payout that settled it.
{
"status": "success",
"data": [
{
"id": 4712,
"uuid": "f384000b",
"status": "confirmed",
"time": "2026-07-12 09:41:27",
"lang": "de",
"psp": "Native_PSP",
"pspId": 26,
"mode": "LIVE",
"referenceId": "ORDER-2026-0815",
"pageUuid": "892dcf5c",
"payment": {
"brand": "visa",
"wallet": null
},
"payoutUuid": "AB12CD34",
"invoice": {
"currencyAlpha3": "CHF",
"products": [
{ "quantity": 1, "name": "Hoodie", "amount": 5900 }
],
"discount": null,
"shippingAmount": 350,
"totalAmount": 6250,
"customFields": null
},
"refundable": true,
"partiallyRefundable": true,
"contact": {
"id": 16,
"uuid": "9c9c0282",
"firstname": "Anna",
"lastname": "Keller",
"email": "anna.keller@example.com",
"country": "Switzerland",
"countryISO": "CH"
}
}
]
}Transaction status values
The status field reflects where a transaction stands in its lifecycle:
| Status | Description |
|---|---|
| waiting | The payment was initiated but not completed yet. |
| confirmed | The payment succeeded and the amount was debited. |
| authorized | A payment method was tokenized successfully; no amount was debited yet. |
| reserved | An amount was reserved through a pre-authorization. |
| refunded | The full amount was returned to the customer. |
| partially-refunded | Part of the amount was returned to the customer. |
| refund_pending | A refund is currently being processed. |
| cancelled | The payment was aborted by the customer. |
| declined | The payment failed 3-D Secure or was rejected by the issuing bank. |
| chargeback | The cardholder reclaimed the funds through their bank. |
| disputed | A dispute was opened for this transaction. |
| error | A technical problem occurred during processing. |
| expired | The payment was aborted due to inactivity. |
Errors
| HTTP status | Meaning |
|---|---|
| 400 | Malformed request — the message field of the error body describes the exact problem. |
| 404 | No transaction with the given ID exists on this instance. |
Error responses use the shape {"status": "error", "message": "..."}.
Post-payment operations — charging, capturing, refunding and cancelling — are covered in Charge, capture, refund and cancel Transactions. To see how confirmed transactions reach your bank account, read the Payouts API, and subscribe to webhook events for real-time status changes.