Skip to content
Knowledge ERP Docs
API Reference ↗
Sales

Sales Orders & Invoicing

Quote, sell, ship, invoice, and collect — the full order-to-cash flow, with a customer portal for quotes, invoices, and order status.

The Sales module covers order-to-cash: build a quote for a customer (optionally linked to a CRM opportunity), convert it into a sales order, ship it, invoice it, and record payment.

In this section #

Detailed guides for everything covered here:

  • Customer Invoices & Payments — A customer invoice is a payment request issued to a customer — tracking line items, tax, and the full payment history from draft through paid or voided.
  • Recurring Invoices — A billing schedule that fires real customer invoices automatically on a weekly, monthly, quarterly, or annual cadence — define the template once and let the system generate the invoices.
  • Credit Memos — A credit memo is a balance on account — issued to a customer after a return or manual adjustment — that can be applied against open invoices to reduce what they owe.
  • Tax Rates — A named, percentage-based tax that you configure once and apply to invoices, quotes, purchase orders, and rental agreements across every billing-capable module.
  • Price Lists — A named set of per-Product price overrides that lets you give specific customers — or customer segments — different prices without touching your default catalog.

Quotes #

Build a quote with line items and pricing and send it to the customer. When they accept, convert it into a sales order without re-keying anything.

Sales orders #

A sales order captures what the customer is buying, at what price, to which location.

Sales orders are for consumable stock that's sold. Reusable equipment goes out via loans or rentals, not sales orders.

Two status dimensions #

An order tracks two independent statuses, because "where it is in its life" and "where the goods are" aren't the same thing:

  • Lifecycle statusDraft → Confirmed → Processing → Closed, or Cancelled. Processing covers an order that's actively being fulfilled and/or billed; Closed is the terminal "fulfilled, billed, and paid in full" state.
  • Delivery statusNew → Picking → Packed → Shipped → Delivered. This is tracked and filterable independently of the lifecycle (e.g. find every order that has shipped but isn't closed yet).

Billing isn't a status — it's derived from the order's invoices. When every invoice on an order is paid in full, the order closes automatically.

Shipping #

Use the Ship Items flow to fulfill an order. Shipping draws the units out of stock and records the movement, advancing the delivery status (any items shipped → Picking; all lines shipped → Shipped) and moving the lifecycle to Processing. Mark the delivery Delivered once the customer has it — which is also what powers a customer's ability to request a return from the portal.

Invoicing and payments #

Create a customer invoice straight from an order (pre-filled with its line items), record payments against it, and track what's still owed. When the order's invoices are fully paid, the order moves to Closed. Recurring invoices automate repeat billing, and the invoice aging report shows outstanding receivables.

Customer portal #

Customers get a magic-link customer portal to view their quotes, invoices, orders, rentals, and loans — no account required. From it they can accept/decline quotes, pay invoices, and request a return on an order that's shipped or delivered.

Doing it from the API #

# List sales orders
curl "https://your-domain.com/api/v1/sales-orders" \
  -H "Authorization: Bearer $TOKEN"