Sales & Orders
Part of the IP4CMS portal. β All module guides
What it's for β Sales & Orders is where you build and sell your catalogue. You set up the products and bundled packages your organisation offers, capture sales orders for customers, take the upfront payment, and (where configured) push each purchased line out to an external system to be fulfilled or provisioned. Everything a customer buys becomes a tracked "account item" you can manage for the life of the subscription.
Where to find it β In the main left-hand menu under Sales. The section opens at Sales β Orders (/app/sales/orders) and includes Products, Packages, and Customer Products (account items). The supporting catalogue building blocks β product types, attributes, units of measure, product/package categories β live under Settings β Products (/app/settings/products).
Before you start
- Your tenant licence must include the
salesmodule for the menu to appear. Sub-areas are gated separately: Orders needssales:ordersand Packages needssales:packages. If you don't see a sub-item, your licence or your role doesn't include it. - Pushing orders out to external fulfilment systems needs the
order_management(ororder_management:channels) module; the Order Management tab is hidden without it. - You'll want some Financials groundwork in place first: tax types, currencies, and billing cycles are all referenced when you price products and orders. Define these before building the catalogue so the dropdowns are populated.
- Typical permissions:
sales:products:read:all/:create/:update/:deletefor the catalogue,sales:products:manage_settingsfor the Settings building blocks,sales:packages:*for packages, andsales:orders:read:all/:createfor orders.admin:full:accesscovers everything.
Key tasks
Set up the catalogue building blocks (Settings β Products)
These configuration entities power the dropdowns and behaviour you'll use when creating products. Edit them under Settings β Products using the tabs across the top. All of them need sales:products:manage_settings to change (and sales:products:read:all to view).
- Unit of Measure tab β define the units a product is sold in (e.g. "Kilogram"/
kg, "Each"/ea). Fields: Name, Abbreviation, Category (weight, length, volume, quantity, or other), Active, Display Order. System units cannot be edited or deleted. - Product Types tab β classify your products (e.g. Service, Physical Good, Subscription). Fields: Name, Description, Requires Inventory Tracking, Active, Display Order. System types are protected.
- Product Attributes tab β custom fields that attach to products. Fields: Label, Attribute Key (lowercase identifier), Data Type (text, number, boolean, date, select, multiselect), Required, Help Text, Placeholder, Default Value, Options (for select/multiselect), and validation rules (min/max value, min/max length, pattern). Use Applicable Product Types and Applicable Categories to control which products the attribute shows up on β leave both empty to apply it everywhere. Display Order sets the order fields appear in.
- Product Categories tab β group the catalogue into a tree (a category can have a parent, forming sub-categories). Used to organise products and to filter them on lists and the customer portal.
- Package Categories tab β the equivalent grouping for packages. Fields: Code, Name, Display Order. Used to group packages on the public pricing page.
Tip: the old/app/sales/product_categoriesand/app/sales/package-categorieslinks now redirect straight to these Settings tabs.
Create a product
- Go to Sales β Products and click New Product (top right). Needs
sales:products:create. - Fill in the Basic Information: Product Code, Name, and SKU are required. Add Description, Short/Long Description, Category and Sub-category, Product Type, and Unit of Measure. Choose a Status (Active, Inactive, Discontinued).
- Set the product flags as needed: Digital, Service, Add-on, Allow quantity edit, Subject to feasibility, and Feasibility resource (the last two integrate with the Feasibility module β a feasibility resource also gains an Availability Schedule tab).
- On the Pricing & Inventory tab, choose the Currency, pick a Tax Type, then enter the price. Toggle between Exclusive and Inclusive pricing β the portal auto-calculates the other figure from the tax rate. Tick Recurring and pick a Billing Cycle for subscriptions, and Requires upfront payment if it must be paid before the order can complete. Set Cost Price and supplier cost fields if relevant. Tick Price on request to hide the price. If quantity edits are allowed you can also define tiered pricing (price-per-unit bands by quantity).
- On Supplier Information (shown once a supplier is linked), search for and attach a Supplier and Supplier Product Code.
- Use the Product Attributes tab to fill in the custom fields applicable to this product's type/category, Media & Attachments for images/documents, and Terms & Conditions for product terms.
- If the order_management module is on, set the Order Management Channel on the Basic tab β this attaches a fulfilment/provisioning integration to the product, and a channel-specific configuration form appears for you to complete.
- Save with Save & Continue (stays on the page) or Save & Close.
On the Products list you can search (name/SKU/description), filter by status, category, digital/service, inventory tracking, stock level and price range, Edit or Delete each row, and use Bulk Upload to import many products from a spreadsheet (link categories by category_name, suppliers by supplier_name, units by unit_of_measure_name, tax types by tax_type_code).
Build a package
A package is a bundle of products sold together as one offering. Unlike a single product, its price is calculated from the products inside it (sum of the lines) rather than entered as one figure, and the lines can be marked optional, made into add-ons, or given dependencies.
- Go to Sales β Packages and click New Package. Needs
sales:packages:create. - In the create dialog enter a Package Code (e.g. PKG001), Package Name, and Currency β every product in the package must use this currency. Optionally add a Description and Status. You're taken straight into the package editor.
- On the Package Details tab, review the read-only Once-off and Recurring pricing summaries (these total automatically as you add items), and set portal options: Package category, Show on customer portal pricing page, Highlight Badge (e.g. "Most Popular"), Display Order, and a Feature List of bullet points for the plan card.
- Switch to the Products tab. Search for a product and click Add to Package. To make a line an add-on of another line, use the Add as add-on to dropdown before adding.
- Click Edit on any package line to set its Quantity, override Price (excl/incl with a tax-mode toggle) and Tax Type, apply a Discount (percentage or fixed), mark it Recurring with a Billing Cycle, or set Requires Upfront Payment. For recurring lines you can mark one as the Core product that drives the billing cycle. You can also define per-line tiered pricing and customer-portal quantity limits.
- For add-on lines, mark them Optional (customer can include/exclude in the portal), give a portal Display name/description, and set dependencies (mutually-exclusive groups, "unavailable whenβ¦", "requires all ofβ¦"). Per-line provisioning channel and usage-based billing overrides are available here too.
- Save with Save & Continue or Save & Close.
Create a sales order
- Go to Sales β Orders and click Create New Order (needs
sales:orders:createoradmin:full:access). - Open Edit Details to set the order header: Lead Type (Order, Upgrade, Downgrade, Cancellation, Add-on Order), Customer (search), contact Name/Email/Phone, Currency, Status, and customer-facing Notes / staff-only Internal Notes.
- Add lines with Add Product or Add Package. For a product, set Quantity, Price (excl/incl toggle), Tax Type, Discount (none / percentage / fixed), Recurring + Billing Cycle, Requires Upfront Payment, and Service Start Date. A package expands into its individual lines automatically.
- For recurring lines with a billing cycle and a service start date, the order shows a pro-rata calculation β click Show Details to see the daily rate, period dates, and days used.
- Review the totals cards: Total (excl/incl tax), Upfront Payment due, Recurring, and Once-off. Each line shows its own pricing, discount, billing badges, and (for upfront items) a Payment Status with amounts Due and Allocated.
- The order moves through statuses New β In Progress β Complete, or Cancelled. If completion rules are configured for your tenant, an eligibility checklist shows what's outstanding (e.g. upfront payment settled, payment method on file, item config valid, linked flows completed); when all pass you get Complete order now (or it auto-completes). The Status History and Audit History tabs record every change.
Process payment on an order
- Open the order and find the Upfront Payment card. If an upfront amount is due, click Generate Invoice to raise an invoice for that amount in Financials.
- To collect from the customer, click Generate Payment Links. This produces a link and QR code for each active payment channel, showing the provider and the amount due β share these with the customer to pay online.
- As payment comes in, the Payment Status on each upfront line updates its Allocated amount against the amount Due, and you can open the linked invoice via View Invoice.
- Once the upfront payment is settled and any other completion prerequisites are met, the order can be completed (or auto-completes if that's enabled). Recurring lines then begin billing from their service start date.
Supplier users see a cut-down view: their own items only, no pricing, plus a Fulfilment Status column (pending / in progress / fulfilled / cancelled) they can update per item or in bulk.
Manage customer products and provisioning channels
Everything a customer buys becomes an account item under Sales β Customer Products (also reachable from a customer's record, where it's titled "Account Items").
- The list shows Account, Product, usage snapshot, Type (Recurring/Once-off), Quantity, Unit Price, Discount, Total, Next Billing, and Status (Active, Suspended, Cancelled, Expired). Search and filter by status or type, Edit or Delete rows, or Bulk Upload from a spreadsheet.
- Click an item to open its detail page. The Details tab shows pricing, billing cycle, usage, and next billing date, and lets you edit account-item-level values.
- The Provisioning tab appears when the product has a provisioning channel. It shows which channel is in use (inherited from the product, or overridden on this item) and the channel-specific action buttons β typically Provision, Suspend, Resume, and Cancel / Deprovision, plus any custom actions the channel defines. Actions may prompt for parameters and ask for confirmation before running.
- The Order Management tab appears when the order_management module is enabled. It offers the channel's fulfilment / maintenance / reporting actions against the external system.
- Every action you run is recorded in the Request History for that tab: timestamp, action, status (Completed / Failed / Pending), the external reference returned, and the request/response detail β your audit trail for fulfilment.
An order management / provisioning channel is, in plain terms, a connection to an outside system that actually delivers the service (a provisioning API, a ticketing system, a billing gateway). You attach a channel to a product (Settings/product edit), it's inherited by every account item created from that product, and you can override it per item. Channels themselves are created under Settings β Provisioning Channels / Order Management Channels.
How the data connects
Catalogue β orders. Products and packages you define in Sales are the items operators pick when building an order. The product's currency, tax type, billing cycle, recurring flag and upfront-payment flag all flow into the order line as defaults (and can be overridden per line). A package brings all its constituent lines, add-ons and per-line settings with it.
Orders β Financials. When an order has an upfront amount, Generate Invoice creates an invoice (a transaction) in the Financials module, and Generate Payment Links ties into your configured payment channels. Payments allocated against an order's upfront lines feed the order's completion check. Recurring lines hand off to the billing cycle so they're charged on schedule.
Orders β customers / account items. Completing or placing an order creates account items against the customer's account β the durable record of what they own, its quantity, price, status and next billing date.
Account items β provisioning. Each account item carries the order-management / provisioning channel inherited from its product. Running a provisioning action sends a request to the external channel; the response (and any external reference) is logged back against the item. So the chain is: order line β account item β provisioning request β external channel β logged result.
Settings building blocks β catalogue. Product types, attributes, units of measure, and categories (all under Settings β Products) populate the dropdowns and custom fields on the product editor; tax types, currencies and billing cycles come from Financials. Define these first so the catalogue forms are complete.
Permissions & access
- Licence module:
sales(the whole section). Sub-areas needsales:orders(Orders) andsales:packages(Packages); external fulfilment needsorder_managementororder_management:channels. The menu and tabs hide themselves when the licence doesn't include them. - Products: view
sales:products:read:all(or:read:ownfor supplier users); manage withsales:products:create/:update/:delete; catalogue settings needsales:products:manage_settings. Tiered-pricing tags needtags:readortags:manage. - Packages:
sales:packages:read:allto view;:create/:update/:deleteto manage. - Orders:
sales:orders:read:all(or:read:own) to view;sales:orders:createto raise orders. - Suppliers see a restricted view throughout β their own items only, no pricing or internal notes, and a fulfilment-status workflow instead of full order editing.
admin:full:accessgrants everything regardless of the specific permissions above.
Tips & gotchas
- Packages have no single price. The once-off and recurring totals are summed from the lines you add β there's no "package price" field. To change the total, change the line prices or the items in the bundle.
- One currency per package. Every product added to a package must use the package's currency; you can't mix currencies in one bundle.
- Exclusive vs inclusive pricing auto-calculates. Enter the price one way and the portal fills in the other from the selected tax type β but only once a tax type is chosen. With no tax type, both figures are equal. Tax types are filtered by the chosen currency, so set the currency first.
- Feasibility and availability are flag-driven. The Availability Schedule and Feasibility Availability tabs only appear after you tick Feasibility resource and save; they won't show on an ordinary product.
- The "core" line on a package is what drives the billing cycle for the bundle β only recurring, non-add-on lines can be marked core.
- Order Management vs Provisioning tabs are licence-gated. If you can't see them on an account item, the product has no channel attached or your tenant doesn't licence that module β navigating to the tab by URL just redirects you back to Details.
- External actions are logged, not silent. Provisioning/order-management actions can fail at the external system; always check the Request History for a Completed status and the external reference rather than assuming success.
- Completion can be blocked or automatic. If completion rules are configured, an order won't complete until the checklist (upfront payment settled, payment method on file, valid item config, linked flows done) passes β and may then complete itself automatically.
- Deleting is a soft delete. Removing a product, package or order cancels/hides it rather than erasing it, preserving history.
- Menu labels may be renamed for your deployment, so "Sales", "Orders" or "Customer Products" might appear under different wording in your portal.