---
title: Creating an Order for a Client
description: "**Create Order** places an order on a client's behalf: you pick the customer, configure one or more products, and decide whether RackHelm raises an invoice and charges their stored payment method. Use it for phone and email sales, migrations, and…"
url: "https://rackhelm.com/documentation/creating-an-order-manually/"
updated: "2026-09-24"
category: "Orders & Provisioning"
---

# Creating an Order for a Client

**Create Order** places an order on a client's behalf: you pick the customer, configure one or more products, and decide whether RackHelm raises an invoice and charges their stored payment method. Use it for phone and email sales, migrations, and anything a customer cannot complete themselves. This article is for operators and staff.

## Before you start

> **Note:** The screen is gated on `edit_orders`, and submitting it additionally requires `create_orders`. Both are needed — creating an order can charge a card, so it is treated as a separate capability from editing one.

> **Tip:** The sidebar's **Create Order** link is gated on a permission key that is not defined in RackHelm, so in practice only a Super Admin sees it. Everyone else should use the **Create Order** button at the top of **All Orders**, which is correctly gated on `create_orders`, or go straight to `/admin/orders/create`.

The client must already exist and should have a default billing address — that address is snapshotted onto the order. The products you want must be active and must have at least one billing-cycle price.

## The three zones

![The Create Order screen with a Customer panel on the left, a product configurator in the centre and an order summary on the right](/wp-content/uploads/rackhelm-docs/orders-create-builder.png)
Customer on the left, configurator in the centre, running order summary on the right. Nothing is saved until you press Generate order.

### 1. Customer

1. Open the **Select client** picker and start typing. It is searchable and lists every non-guest account as *First Last (email)*.
2. The client's **default billing address** is applied automatically — there is no address chooser on this screen.
3. **Create new client** opens the user creation form in a new tab if the customer does not exist yet. Come back to this tab and reopen the picker afterwards.

### 2. Add a product

1. Choose a **Product group**. The **Product** list is then filtered to that group and enabled.
2. Choose a **Product**. RackHelm loads its live pricing, addons and custom fields.
3. Pick a **Billing cycle** tile. Each tile shows the cycle name, the recurring price, and either the setup fee or *No setup fee*. The first tile is selected for you.
4. Set any **Addons**. Each addon is a single-choice dropdown with a *— None —* option; option labels show the price for the currently selected cycle, and the setup fee where there is one. Changing the cycle re-prices every addon option in place.
5. Fill in any **Custom variables**. These are the product's own configurable fields — a domain name, a hostname, a licence email — and are rendered according to their field type.
6. Press **Add to order**. The button label carries the running total for the line you are about to add.

The configurator resets after each line, so repeat the steps to add more products. The same product can be added several times.

![The product configurator showing billing cycle tiles, addon dropdowns priced per cycle, and custom variable inputs](/wp-content/uploads/rackhelm-docs/orders-create-configurator.png)
Addon prices follow the selected billing cycle, and the Add to order button shows what the line costs before you commit it.

### 3. Order summary

Each line you add appears here with its cycle, any setup fee, its addons and a bin icon to remove it. Below the lines:

| Field | What it does |
| --- | --- |
| **Due date** | Required. Becomes the order's `due_date` — the date the next renewal is anchored to. Defaults to today. |
| **Subtotal** | Recurring prices, including addon prices, across all lines. |
| **Setup fees** | Product setup fees plus every selected addon's setup fee. |
| **Total due today** | Subtotal plus setup fees. This is the basis the invoice uses. |
| **Alert user by email** | On by default. Sends the customer the order-created notification, and the matching staff copy. Turn it off for a silent correction. |
| **Generate invoice** | On by default. Raises an invoice for the order. Turning it off also forces **Auto-charge default method** off and disables it. |
| **Auto-charge default method** | On by default. Attempts an immediate payment against the customer's stored payment method once the invoice exists. |

**Generate order** stays disabled until you have both a client and at least one line, and its label carries the total.

> **Warning:** **Auto-charge default method** takes a real payment against the customer's stored card. Turn it off if you are recording an order that has already been paid for by other means.

## Quantity is always 1

Every line this screen creates is saved with a quantity of 1, regardless of the product. There is no quantity control. To sell three of the same package, add the same product three times — you will get three separate packages, which is also what lets each one be provisioned, suspended and cancelled independently.

## What happens when you submit

1. The order is created with status `active` and type `default`, dated with the due date you chose, and stamped with the client's default address.
2. The order's billing cycle is taken from the **first line only**. If you mix cycles on one order, the order still carries just one cycle, which is what renewals are calculated from.
3. Each product line becomes a package with status `pending`, priced from the selected billing-cycle price row.
4. Each selected addon becomes a child item of its package, priced from that addon option's price for the chosen cycle.
5. Depending on the switches, RackHelm raises the invoice and, when asked, queues a payment attempt.
6. You are redirected to the admin dashboard with one of three confirmations: *Order created successfully. No invoice was generated.*, *Order created successfully. Invoice generation queued.*, or *Order created, invoice generated, and automatic payment has been initiated.*

If any addon on the order is flagged for manual provisioning, or its chosen option is flagged to open a ticket, RackHelm also opens a support ticket titled *Addon Setup Request - Order #N* listing what needs setting up by hand.

> **Warning:** Automatic provisioning only ever runs against an order that has a **paid** invoice. An order created with **Generate invoice** switched off, or one whose invoice is still unpaid, will sit at `pending` forever. Either settle the invoice or use **Force Provision** on the package. See [How automatic provisioning works](/docs/automatic-provisioning/).

## Field reference — what is validated on submit

| Field | Rule |
| --- | --- |
| Client | Required; must be an existing user. |
| Due date | Required; must be a valid date. |
| Lines | Required; at least one. |
| Product on each line | Required; must be an existing product. |
| Billing cycle on each line | Required; must be an existing billing-cycle *price* row — that is, a price the product actually has, not just any cycle. |
| Addons and variables | Optional arrays. Required custom variables are only enforced in the browser, so they are not re-checked on submit. |

## Troubleshooting

| Symptom | Cause and fix |
| --- | --- |
| "No pricing configured for this product." | The product has no billing-cycle prices. Add at least one price before it can be sold. |
| A product is missing from the dropdown | Only active products are listed, and the list is filtered by the chosen group. A product with no group will never appear here. |
| The submit button will not enable | You need both a selected client and at least one line in the summary. Adding a line without picking a client leaves it disabled and the label reads *Select a client*. |
| "Failed to create order: ..." | The whole creation is one transaction, so nothing was saved. The message carries the underlying reason; your inputs are preserved. |
| The customer was emailed when you did not want them to be | **Alert user by email** was left on. It is on by default on every visit to this screen. |
| The order was created but no invoice appeared | With **Auto-charge** off, invoice generation is queued rather than immediate. If nothing arrives, check the queue monitor for a failed `GenerateInvoiceJob`. See [The Queue Monitor and Horizon](/docs/queue-monitor-and-horizon/). |
