Sales — order to cash
Two paths: the sales-order path that allocates and ships stock, and the direct invoice path for services. Plus receipts and AR.
Choose the right path first
Two paths exist and they behave differently. Choose deliberately before you open a form.
| Situation | Use |
|---|---|
| You ship physical stock and must control allocation and availability | Sales-order path (S1–S5) |
| You sell a service such as a haulage leg, or invoice without an order | Direct invoice path (S4–S5) |
Rule
The order does not post
The sales order does not post a journal and does not create the tax invoice automatically. Revenue and tax post at the invoice.
Customers
Create each customer you invoice once. Customers are used by sales orders, invoicing, containers, port operations and demurrage.
Sales → Customers → New CustomerThe order-to-cash cycles
- S1
Create the sales order
Choose customer, order date, shipping due, currency and line items (variant, quantity, unit price). Save → PENDING. Duplicate variants are rejected.
Sales → Sales Orders → New Sales Order - S2
Approve the order — this reserves stock
Submit → PENDING_APPROVAL, then Approve from the approval queue → APPROVED. On approval the system allocates the ordered quantity against available stock (ATP = on hand − allocated). Not enough stock means the approval is rejected with the available quantity. No journal is posted.
Sales → Sales Orders → Submit for Approval - S3
Fulfil (ship the goods)
Only APPROVED orders can be fulfilled. Fulfilling lowers on hand and allocated and writes one ISSUE movement per line. No journal is posted — the stock leaves and revenue posts at the invoice.
Sales → Sales Orders → Fulfil - S4
Raise the tax invoice — this posts revenue
Create the invoice (customer, issue and due dates, currency, line items with tax). Save → DRAFT. Submit for approval → PENDING_APPROVAL. Approve → ISSUED and the system posts Dr 1200 AR / Cr 4000 Revenue + 2300 Tax. If the invoice came from a fulfilled sales order, link it so the sale is traceable end to end.
Sales → Invoicing → New Invoice - S5
Record the customer receipt
Enter date, amount and method (Cash, Bank Transfer, Cheque). Posts Dr 1000 Cash or 1010 Bank / Cr 1200 AR. Cash routes to 1000; anything else routes to 1010 Bank.
Sales → Invoicing → issued invoice → Record Receipt
Note
Partial and full payment
Partial payments leave the invoice PARTIALLY_PAID. The final payment sets PAID with AR exactly zero — the last receipt trues up rounding. Overpayment is rejected. Deleting a receipt posts a reversing entry and restores the invoice status.
Status reference
Sales order : PENDING ─(Submit)─► PENDING_APPROVAL ─(Approve)─► APPROVED ─(Fulfil)─► FULFILLED
│ └─(Escalate / Reject)─┘
└──────────────(Cancel)─► CANCELLED
Invoice : DRAFT ─(Submit)─► PENDING_APPROVAL ─(Approve)─► ISSUED ─(Receipts)─► PARTIALLY_PAID ─► PAID
└─(Void)─► VOID| Status | Meaning | Next |
|---|---|---|
| PENDING (order) | Draft or returned | Submit, Cancel, or direct approve |
| PENDING_APPROVAL (order) | Awaiting approval | Approve, Escalate, Reject |
| APPROVED (order) | Stock allocated | Fulfil, Cancel |
| FULFILLED (order) | Stock issued — no GL | — |
| DRAFT (invoice) | Editable, not posted | Submit, delete |
| PENDING_APPROVAL (invoice) | Awaiting approval | Approve, Escalate, Reject |
| ISSUED | Posted — AR, revenue, tax | Receipt, Void |
| PARTIALLY_PAID / PAID | Cash applied | — |
| VOID | Reversed | — |
Reports
| Report | Answers |
|---|---|
| Sales Reports | Revenue and sales-order pipeline |
| Invoice (AR) Aging | Outstanding receivables by days overdue (issued and partially paid only) |
| Trial Balance / General Ledger | Per-account movements including 1200 AR, 4000 Revenue and 2300 Tax |
Worked example
Variant CABLE-10MM has on hand 78, allocated 0.
- 01
Order
SO-001 for 20 units @ 25 = 500 → PENDING.
- 02
Approve
Submit → approve → APPROVED; allocated 20, ATP 58 (no GL).
- 03
Fulfil
FULFILLED; on hand 58, allocated 0, ISSUE 20 (no GL).
- 04
Invoice
INV-001 for 500 net + 10% tax = 550 → submit → approve → ISSUED; GL Dr 1200 AR 550 / Cr 4000 Revenue 500 / Cr 2300 Tax 50.
- 05
Collect
Receipt 550 by bank → GL Dr 1010 Bank 550 / Cr 1200 AR 550; invoice PAID, AR for Acme = 0.
- 06
Check
Invoice Aging shows nothing outstanding; Stock Levels shows on hand 58.
Troubleshooting
| Message | Fix |
|---|---|
| Insufficient stock for variant…: X available, Y required | Receive stock, adjust, or reduce the order |
| Only PENDING orders can be approved | Submit or re-open the order |
| Only APPROVED orders can be fulfilled | Approve the order first |
| Order must be in PENDING_APPROVAL or ESCALATED status | Submit for approval first |
| Only PENDING_APPROVAL orders can be escalated | Escalate only from PENDING_APPROVAL |
| Cannot cancel an already fulfilled or cancelled order | Nothing to do — the order has shipped |
| Receipt exceeds outstanding balance | Reduce to the exact balance |
| … already fully paid | No action needed |
| Only draft invoices can be issued from the approval queue | Refresh the list |
| Duplicate line item for variant… | Merge quantities into one line |
| No active warehouse found | Activate or create a warehouse (CH 04) |
Ledger boundary
- The sales-order steps (approve, fulfil) move stock only — no journal.
- Only an ISSUED invoice posts revenue, tax and AR.
- A receipt clears AR; deleting it reverses.
- There is no automatic Cost of Goods Sold on sale.
Cheat sheet
- Order
- Customer → SO → Submit → Approve → Fulfil → Invoice → Submit → Approve/Issue → Receipt
- Sell shipped goods
- Sales Orders → New Sales Order
- Ship it
- Open the approved SO → Fulfil
- Bill any customer
- Invoicing → New Invoice
- Collect cash
- Open the issued invoice → Record Receipt
Rule
Rules that never change
Stock is allocated at sales-order approval and issued at fulfilment. Only ISSUED invoices post revenue; order steps post nothing. AR clears to exactly zero on full payment; overpayment is rejected. Posted entries are reversed, never edited.