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),
invoices, and the shipping address — 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, address. 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, invoices, and address 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,address" \
-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"
}
],
"address": {
"first_name": "Jane",
"last_name": "Doe",
"phone": "+48600100200",
"address": "Main Street 1/2",
"post_code": "00-001",
"city": "Warsaw",
"country_code": "PL"
}
}
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,
"address": 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. |
address | object | Yes | Shipping and contact address. null unless address is included, and also null when the order has no shipping details. |
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 |
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. |
address
The shipping and contact address collected for the order. Returned as null when the order has
no shipping details — for example a digital product that does not ship. Every field is optional,
so an order may provide only some of them (a phone number with no street address, for instance).
| Field | Type | Nullable | Description |
|---|---|---|---|
first_name | string | Yes | Recipient first name |
last_name | string | Yes | Recipient last name |
phone | string | Yes | Contact phone number |
address | string | Yes | Street address line |
post_code | string | Yes | Postal code |
city | string | Yes | City |
country_code | string | Yes | Two-letter ISO 3166-1 alpha-2 country code (e.g. "PL") |
Error Responses
Bad Request (400)
{
"message": "Invalid order ID"
}
Order Not Found (404)
{
"message": "Order with ID 3e1a6d9c-5b8f-44a3-9d2e-7c4b1f8a3e65 not found"
}
Unauthorized (401)
{
"message": "Unauthenticated."
}