Sales & payments
The Sales module runs the selling side: customer orders, payments, discounts, fulfillment and returns.
The order lifecycle
A sales order moves through Draft → Confirmed → Fulfilled (or Cancelled). It's the customer
order until you fulfill it. Fulfillment is what posts the SALE movement, decrements stock and
captures cost at sale time as COGS. That keeps margin and profit & loss accurate.
Payments
Payment and fulfillment are independent. Take a deposit on a draft, then the balance later. The order shows Paid, Balance due and a status of Unpaid / Partial / Paid. Payments are capped at the remaining balance.
Discounts
Discounts are controlled by policy:
- Per-line price overrides and an order-level bulk discount are both supported.
- Combined discounts are capped at your organization's maximum discount percentage, enforced server side.
- Every authorized discount requires a valid override code, an attributed confirmation that's recorded for compliance, even for users who normally can discount. See Roles & permissions.
Editing an order
You can edit the line items of a Draft or Confirmed order: add, remove or change quantities and prices. The order-level discount re-fits to the new lines and cap. Fulfilled or cancelled orders use Returns instead.
Returns
Record a sales return from a fulfilled order to restock items at their original sale cost, keeping your ledger honest.
Rentals
If your organization enables rentals, a rental is a normal sale with a return-by date: items leave stock on fulfillment and come back through the restock return flow, with a live return state (Pending / Out / Returned / Overdue).