Get Order
Retrieve a specific order from your store.
By default the response contains only the order's base fields. Use the include query
parameter to expand related sections — line items, customer, transactions (with refunds), and
invoices — in the same call, so you don't have to stitch together several requests.
Request
GET /orders/{id}
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Order UUID |
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
include | string | No | Comma-separated list of sections to expand. Allowed values: line_items, customer, transactions, invoices. 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=transactions therefore leaves line_items,
customer, and invoices as null.
Example Request
curl -X GET "https://cart.easy.tools/api/v1/orders/550e8400-e29b-41d4-a716-446655440000?include=line_items,customer,transactions,invoices" \
-H "Authorization: Bearer YOUR_API_TOKEN"
Response
Success Response (200)
Returns a single order. The example below requests all sections.
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "completed",
"amount": 11800,
"currency": "pln",
"quantity": 1,
"product_name": "Premium Course",
"customer_email": "buyer@example.com",
"created_at": "2026-05-27T10:15:30+00:00",
"line_items": [
{
"product_name": "Premium Course",
"variant_name": "Standard",
"amount": 7900,
"amount_total": 7900,
"currency": "pln",
"quantity": 1,
"is_order_bump": false,
"access": [
{
"type": "product",
"id": "9b2c8400-e29b-41d4-a716-446655440022"
}
]
},
{
"product_name": "Workbook",
"variant_name": null,
"amount": 3900,
"amount_total": 3900,
"currency": "pln",
"quantity": 1,
"is_order_bump": true,
"access": [
{
"type": "product",
"id": "9b2c8400-e29b-41d4-a716-446655440023"
}
]
}
],
"customer": {
"id": "550e8400-e29b-41d4-a716-446655440050",
"email": "buyer@example.com",
"name": "Jane Doe"
},
"transactions": [
{
"type": "stripe",
"payment_method": "card",
"amount": 11800,
"net_amount": 10486,
"tax_amount": 1314,
"currency": "pln",
"paid_at": "2026-05-27T10:16:00+00:00",
"refunds": [
{
"amount": 3900,
"refunded_at": "2026-05-28T09:00:00+00:00"
}
]
}
],
"invoices": [
{
"id": "5b2c0f2e-1d4a-4c8b-9f3a-7e1a2b3c4d5e",
"number": "EASY/2026/05/123",
"issued_at": "2026-05-27T10:20:00+00:00",
"type": "invoice"
}
]
}
A lean read (no include) returns the base fields with every section set to null:
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "completed",
"amount": 11800,
"currency": "pln",
"quantity": 1,
"product_name": "Premium Course",
"customer_email": "buyer@example.com",
"created_at": "2026-05-27T10:15:30+00:00",
"line_items": null,
"customer": null,
"transactions": null,
"invoices": null
}
Response Fields
| Field | Type | Nullable | Description |
|---|---|---|---|
id | string | No | Unique identifier for the order (UUID) |
status | string | Yes | Order status: created, awaiting_payment, processing, completed, canceled, or refunded. Null for legacy orders without a status. |
amount | integer | No | Order total in minor units (e.g. cents/grosze) |
currency | string | No | Lowercase ISO currency code (e.g. "pln") |
quantity | integer | No | Quantity of the primary product |
product_name | string | No | Primary product name, cached at purchase time |
customer_email | string | Yes | Customer email. Null when the customer account is missing. |
created_at | string | No | When the order was created (ISO 8601 format) |
line_items | array | Yes | Purchased line items. null unless line_items is included. |
customer | object | Yes | Full customer details. null unless customer is included. |
transactions | array | Yes | Transactions with their refunds. null unless transactions is included. |
invoices | array | Yes | Tax documents issued for the order. null unless invoices is included. |
line_items[]
An order always has at least one line item — its primary product. Orders with order bumps
return one line per purchased product (the primary product plus each bump). For an order with
no bumps, the single line reflects the order itself, so amount and amount_total both equal
the order total.
| Field | Type | Nullable | Description |
|---|---|---|---|
product_name | string | No | Product name |
variant_name | string | Yes | Variant name |
amount | integer | No | Unit price in minor units |
amount_total | integer | No | Line total in minor units |
currency | string | No | Lowercase ISO currency code |
quantity | integer | No | Quantity for this line |
is_order_bump | boolean | No | Whether this line was added as an order bump |
access | array | No | What this line granted the customer. Empty ([]) when the line granted nothing trackable, and until the order completes. See below. |
line_items[].access[]
Each line item carries an access array — handles to what the purchase granted on that line.
Access is created once an order completes, so every line on an order that has not yet completed
(for example created or awaiting_payment) returns access: []. A line that grants nothing
trackable also returns []. A single line can grant more than one entry (for example a quantity
greater than one), so always read access as a list.
Each entry's id is the same UUID the Get Customer endpoint returns
for that access in its products[] / subscriptions[] sections, so you can join a line to the
customer's access list to read its live expiry or status. Use the id to act on the access
directly:
type: "product"—idis a product access UUID, accepted by Revoke Product Access.type: "subscription"—idis a subscription UUID, accepted by the subscription endpoints: cancel, resume, and change plan.
| Field | Type | Nullable | Description |
|---|---|---|---|
type | string | No | Kind of access granted: product or subscription |
id | string | No | UUID of the granted access — a product access id for product, a subscription id for subscription |
A line that granted a subscription returns an entry shaped like this:
{
"type": "subscription",
"id": "7c4a1e2f-1b3d-4c6a-9f02-2a5b6c7d8e90"
}
customer
| Field | Type | Nullable | Description |
|---|---|---|---|
id | string | No | Customer identifier (UUID) |
email | string | Yes | Customer email |
name | string | Yes | Customer full name |
transactions[]
An order may have several transactions (for example subscription follow-ups); a one-time order returns a single-element array.
| Field | Type | Nullable | Description |
|---|---|---|---|
type | string | Yes | Payment provider (e.g. "stripe", "tpay", "paypo") |
payment_method | string | Yes | Payment method used (e.g. "card") |
amount | integer | No | Gross amount in minor units |
net_amount | integer | Yes | Net amount in minor units |
tax_amount | integer | Yes | Tax amount in minor units |
currency | string | No | Lowercase ISO currency code |
paid_at | string | Yes | When the transaction was settled (ISO 8601 format) |
refunds | array | No | Refunds issued against this transaction (empty if none) |
refunds[].amount | integer | No | Refunded amount in minor units |
refunds[].refunded_at | string | Yes | When the refund was processed (ISO 8601 format) |
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. |
Error Responses
Bad Request (400)
{
"message": "Invalid order ID"
}
Order Not Found (404)
{
"message": "Order with ID <UUID> not found"
}
Unauthorized (401)
{
"message": "Unauthenticated."
}