Get Transactions
Retrieve a list of transactions (captured payments) from your store.
Transactions are returned newest first, by settlement date. Narrow the list with the optional
filters below — for example status=partial to return only partially refunded payments, or
provider=stripe. All filters combine with AND.
Request
GET /transactions
Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
page | integer | No | 1 | Page number for pagination |
status | string | No | — | Filter by refund state. One of none, partial, full. |
provider | string | No | — | Filter by payment provider. One of stripe, tpay, paypo. |
paid_from | string | No | — | Only transactions paid on or after this date (inclusive), YYYY-MM-DD. |
paid_to | string | No | — | Only transactions paid on or before this date (inclusive), YYYY-MM-DD. |
amount_min | integer | No | — | Only transactions with a total at or above this amount (minor units). |
amount_max | integer | No | — | Only transactions with a total at or below this amount (minor units). |
is_subscription_followup | boolean | No | — | Filter to subscription renewal payments (true) or first/one-time payments (false). |
Omitting a filter or passing it empty means "no filter on that field". Passing a non-empty
but unparseable value — an unknown status / provider, a malformed date, a non-numeric
amount, or a non-boolean is_subscription_followup — returns a 400 (see
Bad Request).
Example Request
curl -X GET "https://cart.easy.tools/api/v1/transactions?status=partial&provider=stripe&page=1" \
-H "Authorization: Bearer YOUR_API_TOKEN"
Response
Success Response (200)
Returns a paginated list of transactions.
{
"items": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"remote_id": "pi_3PqL2kEa1b2c3d4e",
"provider": "stripe",
"refund_state": "none",
"total": 11800,
"refunded_amount": 0,
"currency": "pln",
"customer_email": "buyer@example.com",
"product_name": "Premium Course",
"is_subscription_followup": false,
"date": "2026-05-27T10:16:00+00:00"
},
{
"id": "550e8400-e29b-41d4-a716-446655440001",
"remote_id": null,
"provider": "tpay",
"refund_state": "partial",
"total": 4900,
"refunded_amount": 1000,
"currency": "pln",
"customer_email": "renewal@example.com",
"product_name": "Monthly Membership",
"is_subscription_followup": true,
"date": "2026-05-26T08:00:00+00:00"
}
],
"pagination": {
"current_page": 1,
"total_pages": 5
}
}
Response Fields
| Field | Type | Nullable | Description |
|---|---|---|---|
id | string | No | Unique identifier for the transaction (UUID) |
remote_id | string | Yes | The provider's own transaction id (e.g. Stripe payment-intent id, Tpay UUID), useful for reconciliation against the provider dashboard. Null for legacy rows that predate this field. |
provider | string | Yes | Payment provider: stripe, tpay, or paypo. Null for legacy rows whose provider was not recorded. |
refund_state | string | No | Derived refund state: none, partial, or full. |
total | integer | No | Captured amount in minor units (e.g. cents/grosze) |
refunded_amount | integer | No | Total already refunded against this transaction, in minor units |
currency | string | No | Lowercase ISO currency code (e.g. "pln", "eur") |
customer_email | string | Yes | Customer email, recorded on the transaction |
product_name | string | No | Product name from the order, cached at purchase time |
is_subscription_followup | boolean | No | Whether this is a subscription renewal payment |
date | string | No | When the payment was settled (ISO 8601 format) |
To read the money breakdown, refund details, order, customer, or invoices for a transaction,
call Get Transaction with the include parameter.
Error Responses
Bad Request (400)
Returned when a filter has a non-empty but unparseable value. The message names the
offending field and the value received.
{
"message": "Invalid value for 'provider': 'paypal'"
}
Unauthorized (401)
{
"message": "Unauthenticated."
}