Get Transaction
Retrieve a specific transaction from your store.
By default the response contains the transaction's base fields, including the money breakdown
and refund hints. Use the include query parameter to expand related sections — the order,
customer, invoices, and individual refunds — in the same call.
Request
GET /transactions/{id}
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Transaction UUID |
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
include | string | No | Comma-separated list of sections to expand. Allowed values: order, customer, invoices, refunds. Unknown values are ignored. |
A section that is not requested is returned as null — the key is always present, so the
response shape stays stable. Requesting include=refunds therefore leaves order,
customer, and invoices as null.
Example Request
curl -X GET "https://cart.easy.tools/api/v1/transactions/550e8400-e29b-41d4-a716-446655440000?include=order,customer,invoices,refunds" \
-H "Authorization: Bearer YOUR_API_TOKEN"
Response
Success Response (200)
Returns a single transaction. The example below requests all sections.
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"remote_id": "pi_3PqL2kEa1b2c3d4e",
"provider": "stripe",
"provider_name": "Stripe",
"refund_state": "partial",
"total": 11800,
"net_amount": 10486,
"tax_amount": 1314,
"refunded_amount": 3900,
"remaining_refundable": 7900,
"currency": "pln",
"customer_email": "buyer@example.com",
"product_name": "Premium Course",
"is_subscription_followup": false,
"refundable": true,
"date": "2026-05-27T10:16:00+00:00",
"order": {
"id": "550e8400-e29b-41d4-a716-446655440050",
"status": "completed",
"product_name": "Premium Course",
"quantity": 1
},
"customer": {
"id": "7a1b2c3d-4e5f-6789-abcd-ef0123456789",
"email": "buyer@example.com",
"name": "Jane Doe"
},
"invoices": [
{
"id": "5b2c0f2e-1d4a-4c8b-9f3a-7e1a2b3c4d5e",
"number": "EASY/2026/05/123",
"issued_at": "2026-05-27T10:20:00+00:00",
"type": "invoice"
}
],
"refunds": [
{
"amount": 3900,
"net_amount": 3171,
"tax_amount": 729,
"refund_reason": "requested_by_customer",
"refunded_at": "2026-05-28T09:00:00+00:00",
"keep_access": false
}
]
}
A lean read (no include) returns the base fields with every section set to null:
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"remote_id": "pi_3PqL2kEa1b2c3d4e",
"provider": "stripe",
"provider_name": "Stripe",
"refund_state": "none",
"total": 11800,
"net_amount": 10486,
"tax_amount": 1314,
"refunded_amount": 0,
"remaining_refundable": 11800,
"currency": "pln",
"customer_email": "buyer@example.com",
"product_name": "Premium Course",
"is_subscription_followup": false,
"refundable": true,
"date": "2026-05-27T10:16:00+00:00",
"order": null,
"customer": null,
"invoices": null,
"refunds": null
}
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). Null for legacy rows. |
provider | string | Yes | Payment provider: stripe, tpay, or paypo. Null for legacy rows. |
provider_name | string | Yes | Human-readable provider name (e.g. "Stripe", "Tpay", "PayPo") |
refund_state | string | No | Derived refund state: none, partial, or full. |
total | integer | No | Captured amount in minor units (e.g. cents/grosze) |
net_amount | integer | Yes | Net amount in minor units |
tax_amount | integer | Yes | Tax amount in minor units |
refunded_amount | integer | No | Total already refunded against this transaction, in minor units |
remaining_refundable | integer | No | Maximum amount a new refund may request (total - refunded_amount) |
currency | string | No | Lowercase ISO currency code (e.g. "pln") |
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 |
refundable | boolean | No | Whether the order's refund window is still open. A hint only — refunds are gated by the payment provider, not by this flag. |
date | string | No | When the payment was settled (ISO 8601 format) |
order | object | Yes | The transaction's order. null unless order is included. |
customer | object | Yes | The transaction's customer. null unless customer is included. |
invoices | array | Yes | Tax documents issued for the transaction. null unless invoices is included. |
refunds | array | Yes | Refunds issued against the transaction. null unless refunds is included. |
order
| Field | Type | Nullable | Description |
|---|---|---|---|
id | string | No | Order identifier (UUID) |
status | string | Yes | Order status: created, awaiting_payment, processing, completed, canceled, or refunded. Null for legacy orders without a status. |
product_name | string | No | Primary product name, cached at purchase time |
quantity | integer | No | Quantity of the primary product |
customer
Resolved from the order's account. When the account no longer exists, id is null and the
email/name fall back to the values recorded on the transaction itself.
| Field | Type | Nullable | Description |
|---|---|---|---|
id | string | Yes | Customer identifier (UUID). Null when there is no linked account. |
email | string | Yes | Customer email |
name | string | Yes | Customer full name |
invoices[]
| Field | Type | Nullable | Description |
|---|---|---|---|
id | string | No | Invoice identifier (UUID). Pass to Get Invoice to read the full document. |
number | string | Yes | Invoice number |
issued_at | string | Yes | When the invoice was issued (ISO 8601 format) |
type | string | No | Document type: invoice or correction. |
refunds[]
| Field | Type | Nullable | Description |
|---|---|---|---|
amount | integer | No | Refunded amount in minor units |
net_amount | integer | Yes | Net portion of the refund in minor units |
tax_amount | integer | Yes | Tax portion of the refund in minor units |
refund_reason | string | Yes | Reason recorded for the refund |
refunded_at | string | Yes | When the refund was processed (ISO 8601 format) |
keep_access | boolean | No | Whether the customer kept product access after the refund |
Error Responses
Bad Request (400)
{
"message": "Invalid transaction ID"
}
Transaction Not Found (404)
{
"message": "Transaction with ID <UUID> not found"
}
Unauthorized (401)
{
"message": "Unauthenticated."
}