Customer Transactions
Customer transactions are the financial documents at the heart of accounts receivable — invoices, credit memos, and debit memos. FAR models these using a header/line pattern: a transaction header carries document-level details, while transaction lines hold the individual line items.
Transaction headers
A Transaction Header represents a single financial document. Each header records:
- Transaction code — an auto-generated, human-readable identifier
- Transaction type — defaults to
INVOICE; also supports credit and debit memos - Transaction status — defaults to
DRAFT, progressing through the document lifecycle - Transaction date — when the document was issued
- Transaction currency — the currency for all amounts on the document
Party references
Each transaction distinguishes two parties:
- Sold-to — the customer being billed, referenced by customer ID, customer site ID, and contact point ID
- Ship-to — the party receiving goods or services, referenced by party ID, party site ID, and contact point ID
The sold-to and ship-to can be the same customer or different parties, supporting scenarios like drop-shipping or third-party billing.
Payment information
Transaction headers also carry:
- Payment term — defines when the transaction amount is due
- Payment method — how the customer will pay
- Customer PO number — the customer's purchase order reference
- Customer reference — any additional reference the customer provides
- Salesperson — the person responsible for the sale
Transaction lifecycle
Transaction headers move through the following lifecycle:
| Status | Meaning |
|---|---|
DRAFT | The transaction has been entered but not yet opened |
OPEN | The transaction is open and awaiting confirmation or finalisation |
MANUAL_REVIEW | The transaction has been flagged for manual review |
CUSTOMER_CONFIRMED | The transaction has been confirmed by the customer |
SUPPLIER_CONFIRMED | The transaction has been confirmed by the supplier |
FINAL | The transaction has been finalised; tax is calculated and accounting is raised |
CLOSED | The transaction has been closed |
Status changes follow a fixed set of transitions:
| From | Allowed next statuses |
|---|---|
DRAFT | OPEN |
OPEN | MANUAL_REVIEW, CUSTOMER_CONFIRMED, SUPPLIER_CONFIRMED, FINAL |
MANUAL_REVIEW | OPEN |
CUSTOMER_CONFIRMED, SUPPLIER_CONFIRMED | FINAL |
FINAL | CLOSED |
Transitions are made using the transition action on the transaction rather than by editing the status field directly.
Update controls
As a transaction progresses, header fields are progressively restricted to protect data integrity:
| Fields | Editable in |
|---|---|
| Transaction code, transaction type, transaction date, currency, start and end dates, organisation | DRAFT only |
| Sold-to and ship-to party, site and contact point; salesperson; payment term; payment method | DRAFT, OPEN, MANUAL_REVIEW, CUSTOMER_CONFIRMED, SUPPLIER_CONFIRMED |
| Customer PO number, customer reference | All of the above, plus FINAL and CLOSED |
Metadata updates are permitted in any status.
Transaction lines
Transaction Lines hold the individual items on a financial document. Each line records:
| Field | Purpose |
|---|---|
| Line number | Auto-generated sequence within the transaction |
| Line status | Tracks the line's lifecycle independently of the header |
| Item ID | Optional reference to an inventory item |
| Item description | Free-text description of the goods or services |
| Line reference | Optional reference for the line item |
| Quantity | Number of units |
| Unit of measure | How the quantity is measured |
| Unit list price | Standard price per unit |
| Unit transaction price | Actual price per unit on this transaction (may differ from list) |
| Extended list price | List price × quantity |
| Extended transaction price | Transaction price × quantity |
| Tax classification code | Controls the tax rate applied to this line (see below) |
Tax classification
Each transaction line can carry a tax_classification_code that determines which tax rate is applied when tax is calculated. Common values are STANDARD, ZERO, and EXEMPT. When left blank, the default rate for the organisation's tax regime is used (typically STANDARD).
Tax is calculated automatically when the transaction status moves to FINAL. The result is a set of tax lines — one per transaction line — that record the taxable amount and calculated tax. Tax lines are visible as a child grid on the transaction.
See Tax Calculation for details on how tax rates are resolved and applied.
Accounting events
When a transaction reaches FINAL status, the subledger automatically raises an accounting event:
- Invoices and debit memos raise an
AR_INVOICEevent — debiting the receivable and crediting revenue and tax liability - Credit memos raise an
AR_CREDIT_MEMOevent — crediting the receivable and debiting revenue and tax liability
These events are processed by fsl_create_accounting into balanced subledger journal entries. See Accounting Events for the full lifecycle.
Authorisation
Transaction headers and lines follow the standard authorisation pattern. Access to a customer implicitly provides access to that customer's transactions.
Further reading
- Customers — the customer records that transactions are raised against
- Customer Sites and Site Uses — how bill-to and ship-to addresses are determined
- Cash Receipts and Receipt Schedules — how payments are applied against transactions
- Tax Calculation — how tax is calculated on transaction lines
- Accounting Events — how transaction status changes raise subledger events