# Orders

Orders live under **Webshop → Orders**. Most orders arrive through your storefront, but you can also create one by hand for phone or email sales. The list screens in this chapter need an active business selected in the header; without one they only show "Select a business first."

## The orders list

The list shows every order for the active business, 25 per page, with **Previous** / **Next** buttons and a total count at the bottom.

- **Search** filters orders as you type.
- **Status** filter narrows the list to one status (or **All**).
- **Placed** filter limits the list to a date range (from/to).
- Click the **#**, **Total**, **Status**, or **Placed** column header to sort by that column.

| Column | Description |
| --- | --- |
| # | Order number, shown as `#1042` |
| Total | Order total |
| Status | Status badge |
| Placed | Date the order was placed |
| Customer | The order's email address |

Click any row to open the order's detail page. If you have no orders yet, the empty state offers a **New order** button and an **API docs** button that opens the storefront API reference in a new tab.

### Order statuses

| Status | Meaning |
| --- | --- |
| Pending payment | Order placed, payment not yet received |
| Paid | Payment received |
| Shipped | Order handed to the carrier |
| Completed | Order delivered and closed |
| Cancelled | Order cancelled; sold stock was restocked |
| Refunded | Order refunded; sold stock was restocked |

Cancelled and Refunded are terminal: once an order reaches either status it cannot change again.

### Change status in bulk

Tick the checkbox on one or more rows (or the select-all checkbox in the header) to reveal the bulk actions:

- **Mark paid**
- **Mark shipped**
- **Cancel** (destructive)

Every bulk action asks for confirmation first ("Apply "Mark paid" to N items?"). Note that bulk **Mark shipped** does not ask for carrier or tracking details; to record tracking, mark the order shipped from its detail page instead.

## Create an order manually

1. Click **New order** on the orders list.
2. **Customer** (optional): type 2 or more characters in **Search customers...** and pick a customer from the results. Picking one fills the **Email** field if it is still empty. Click **Change** to unlink the customer again.
3. **Email** is required, even without a linked customer.
4. **Lines**: for each line choose a **Product**, a **Variant** (the dropdown only appears when the product has active variants), and a **Qty**. The quantity follows the product's unit: a **Piece** product takes a whole number, other units take up to 3 decimals with a dot or a comma (`0,75` kg). For a Made to measure product, click **Configure** (see [Configure a made-to-measure line](#configure-a-made-to-measure-line)). Click **Add line** for more lines, or **Remove** to drop one (you cannot remove the last remaining line). Lines where you never picked a product are silently dropped when you submit.
5. **Fulfilment**: choose a **Shipping method** (or leave **No shipping**) and a **Status**. Only **Pending payment** (the default) and **Paid** are available at creation; every other status is reached later through transitions.
6. **Addresses** (optional): click **Show** to expand the billing and shipping address fields (Name, Street, Postal code, City, Country). An address is only saved if you fill in at least one of its fields.
7. Click **Create order**. On success you land directly on the new order's detail page. Validation problems appear under the matching field or line.

A line the platform cannot sell is refused with a message under that line, and nothing is created: a product that is not active or has no price, a variant that is missing or inactive, a made-to-measure product you did not configure, or a product whose way of selling is switched off (for example Made to measure while the Configurator module is off). Fix or remove the line and click **Create order** again.

### Configure a made-to-measure line

A Made to measure product cannot go on an order unconfigured. After picking one, click **Configure** next to the line to open the **Configure {name}** dialog: "Enter the measurements and choose the options. The price updates as you go."

- **Dimensions**: one field per dimension, with its unit and allowed range ("{min} to {max} {unit}"). Dimensions are whole numbers: a value like `120,5` shows "Use a whole number." and is not priced.
- **Option groups**: one choice per **Required** group, or several in a **Multiple** group. An optional single-choice group also offers **None**.
- **Unit price**: the live price with its breakdown. Until everything needed is filled in, the box says what is missing ("Enter {labels} to see the price." or "Choose {groups} to continue."). "Customer group pricing is applied when the order is created."

Click **Confirm** to put the configuration on the line. The line then shows its description (name, dimensions and choices) and "{price} per unit"; the button reads **Edit configuration** to change it. Picking another product on the line drops the configuration. The order prices, reserves stock for the components, and records the configuration exactly as a storefront checkout would.

## Order detail

The detail page shows the order number, email, placed date, status badge, and (when the order is linked to a customer) a **Customer:** link to that customer's page.

### Documents and email

- **Invoice** opens the invoice PDF in a new tab. The page then reloads the order, because generating the first invoice assigns the invoice number.
- **Packing slip** opens the packing-slip PDF in a new tab.
- **View email** opens a preview of the order confirmation email.
- **Resend email** queues the confirmation email again; you'll see the notice "Confirmation email queued." and a new entry in the timeline.

### Lines, totals, and addresses

The lines table shows Product (with variant label and, for configured products, a configuration snapshot such as "width: 200 x depth: 300" with a price breakdown), SKU, Qty, Unit, VAT (rate and tax amount), and line Total. Below it, the totals block lists the Subtotal, a **Shipping ({method})** row when a shipping method is set, one **VAT {rate}%** row per tax rate, and the Total.

The Billing address and Shipping cards render each address on a single line. When tracking exists, the Shipping card also shows **Tracking: {carrier} {number}**.

### Change an order's status

The available buttons depend on the current status:

| Current status | Available actions |
| --- | --- |
| Pending payment | **Mark paid**, **Cancel order** |
| Paid | **Mark shipped**, **Refund**, **Cancel order** |
| Shipped | **Mark completed**, **Refund** |
| Completed | **Refund** |
| Cancelled | none (terminal) |
| Refunded | none (terminal) |

**Mark shipped** opens a dialog where you can optionally add a **Carrier** (for example PostNL or DHL) and a **Tracking number** before confirming.

**Cancel order** and **Refund** ask for confirmation and warn you exactly what happens: sold stock is restocked and the order cannot be reopened. There is no undo. Restocking returns exactly what the order took from stock, never more: a line that was sold without tracked stock (or converted from a quote without stock) puts nothing back.

### Timeline

The timeline card lists every event on the order with its date and time, and who triggered it (Merchant, Storefront, or System). Status changes appear as "Status: {from} → {to}"; tracking appears as "Tracking added ({carrier} {number})". When an accepted quote became this order and one of its lines could not take stock (for example the product was drafted or its way of selling switched off in the meantime), the line is still on the order and the timeline shows "Stock not reserved for {name} ({code})", so you know to check that line's stock by hand. See [Quotes](/docs/sales/quotes#after-acceptance).
