Manual · Engineering
Manual13 min read

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.

ForSalesFinanceWarehouseExecutive

Choose the right path first

Two paths exist and they behave differently. Choose deliberately before you open a form.

SituationUse
You ship physical stock and must control allocation and availabilitySales-order path (S1–S5)
You sell a service such as a haulage leg, or invoice without an orderDirect 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.

CustomersSales → Customers → New Customer

The order-to-cash cycles

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
Sales order and invoice lifecycles
StatusMeaningNext
PENDING (order)Draft or returnedSubmit, Cancel, or direct approve
PENDING_APPROVAL (order)Awaiting approvalApprove, Escalate, Reject
APPROVED (order)Stock allocatedFulfil, Cancel
FULFILLED (order)Stock issued — no GL—
DRAFT (invoice)Editable, not postedSubmit, delete
PENDING_APPROVAL (invoice)Awaiting approvalApprove, Escalate, Reject
ISSUEDPosted — AR, revenue, taxReceipt, Void
PARTIALLY_PAID / PAIDCash applied—
VOIDReversed—

Reports

ReportAnswers
Sales ReportsRevenue and sales-order pipeline
Invoice (AR) AgingOutstanding receivables by days overdue (issued and partially paid only)
Trial Balance / General LedgerPer-account movements including 1200 AR, 4000 Revenue and 2300 Tax

Worked example

Variant CABLE-10MM has on hand 78, allocated 0.

  1. 01

    Order

    SO-001 for 20 units @ 25 = 500 → PENDING.

  2. 02

    Approve

    Submit → approve → APPROVED; allocated 20, ATP 58 (no GL).

  3. 03

    Fulfil

    FULFILLED; on hand 58, allocated 0, ISSUE 20 (no GL).

  4. 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.

  5. 05

    Collect

    Receipt 550 by bank → GL Dr 1010 Bank 550 / Cr 1200 AR 550; invoice PAID, AR for Acme = 0.

  6. 06

    Check

    Invoice Aging shows nothing outstanding; Stock Levels shows on hand 58.

Troubleshooting

MessageFix
Insufficient stock for variant…: X available, Y requiredReceive stock, adjust, or reduce the order
Only PENDING orders can be approvedSubmit or re-open the order
Only APPROVED orders can be fulfilledApprove the order first
Order must be in PENDING_APPROVAL or ESCALATED statusSubmit for approval first
Only PENDING_APPROVAL orders can be escalatedEscalate only from PENDING_APPROVAL
Cannot cancel an already fulfilled or cancelled orderNothing to do — the order has shipped
Receipt exceeds outstanding balanceReduce to the exact balance
… already fully paidNo action needed
Only draft invoices can be issued from the approval queueRefresh the list
Duplicate line item for variant…Merge quantities into one line
No active warehouse foundActivate 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.