Skip to main content

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

ParameterTypeRequiredDefaultDescription
pageintegerNo1Page number for pagination
statusstringNoFilter by refund state. One of none, partial, full.
providerstringNoFilter by payment provider. One of stripe, tpay, paypo.
paid_fromstringNoOnly transactions paid on or after this date (inclusive), YYYY-MM-DD.
paid_tostringNoOnly transactions paid on or before this date (inclusive), YYYY-MM-DD.
amount_minintegerNoOnly transactions with a total at or above this amount (minor units).
amount_maxintegerNoOnly transactions with a total at or below this amount (minor units).
is_subscription_followupbooleanNoFilter 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

FieldTypeNullableDescription
idstringNoUnique identifier for the transaction (UUID)
remote_idstringYesThe 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.
providerstringYesPayment provider: stripe, tpay, or paypo. Null for legacy rows whose provider was not recorded.
refund_statestringNoDerived refund state: none, partial, or full.
totalintegerNoCaptured amount in minor units (e.g. cents/grosze)
refunded_amountintegerNoTotal already refunded against this transaction, in minor units
currencystringNoLowercase ISO currency code (e.g. "pln", "eur")
customer_emailstringYesCustomer email, recorded on the transaction
product_namestringNoProduct name from the order, cached at purchase time
is_subscription_followupbooleanNoWhether this is a subscription renewal payment
datestringNoWhen 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."
}