Supplier Transactions
Supplier transactions are the financial documents at the heart of accounts payable — invoices, credit memos, debit memos, and prepayments received from suppliers. FAP models these using a header/line pattern: a transaction header carries document-level details, while transaction lines hold the individual line items. This mirrors the header/line pattern used for customer transactions in FAR.
Transaction types
FAP supports four supplier transaction types:
| Type | Meaning |
|---|---|
INVOICE | Standard supplier invoice — an obligation to pay |
CREDIT_MEMO | Credit issued by the supplier — reduces the amount owed |
DEBIT_MEMO | Debit raised against the supplier — increases the amount owed |
PREPAYMENT | Advance payment to a supplier before goods or services are received |
Transaction headers
A Transaction Header represents a single financial document. Each header records:
- Transaction number — a supplier-provided reference (up to 64 characters), unique per supplier
- Transaction type — the document type (see above)
- Transaction status — the current lifecycle state
- Approval status — whether the transaction has been approved for payment
- Transaction date — when the document was issued by the supplier
- Transaction currency — the currency for all amounts on the document
Transaction number
The transaction number is supplier-provided and must be unique for each supplier. This protects against accidentally entering the same supplier invoice twice.
When the transaction number is left blank, Raytio generates one automatically in the standard platform code format.
Party references
Each transaction header references the billing supplier:
- Bill-from supplier — the supplier sending the document (required)
- Bill-from supplier site — the specific site the document is from (optional)
- Bill-from supplier contact point — the contact at the supplier site (optional)
Optional ship-from references can also be recorded for the party, party site, and contact point that physically shipped the goods — these reference PRM directly rather than FAP supplier records.
Payment information
Transaction headers also carry:
- Payment term — defines when the transaction amount is due; resolved from the supplier site use or supplier level
- Supplier reference — the supplier's own reference number for the transaction
- Our PO number — the buyer's purchase order reference
Transaction lifecycle
Transaction headers move through the following lifecycle:
| Status | Meaning |
|---|---|
DRAFT | The transaction has been entered but not yet validated |
VALIDATED | The transaction has been validated; payment schedules are generated at this point |
CANCELLED | The transaction has been cancelled |
Update controls
Once a transaction moves past DRAFT, most fields are restricted to protect data integrity. Header fields such as supplier, transaction number, transaction type, date, and currency can no longer be changed once the status is VALIDATED or CANCELLED. Only status transitions, approval status changes, and metadata updates are permitted on non-draft transactions.
Approval status
The approval status is tracked separately from the transaction status:
| Approval status | Meaning |
|---|---|
REQUIRED | Approval is required before the transaction can be paid |
APPROVED | The transaction has been approved |
REJECTED | The transaction has been rejected |
A transaction is payable only when it is VALIDATED, APPROVED, and has no open holds.
Transaction lines
Transaction Lines hold the individual items on a financial document. Each line records:
| Field | Purpose |
|---|---|
| Line number | Unique sequence within the transaction |
| Line status | Tracks the line's lifecycle independently of the header |
| Bill-from supplier | The supplier the line is billed from |
| Item | Optional reference to an inventory item in GPM |
| Item description | Free-text description of the goods or services |
| 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 |
| 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, EXEMPT, and REDUCED. 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 VALIDATED. The result is a set of tax lines — one per transaction line — that record the taxable amount, calculated tax, and the recoverable/non-recoverable split.
For AP transactions, the recoverable split determines how tax flows through to accounting:
- Recoverable tax posts to
TAX_RECOVERABLE(a debit that can be claimed back) - Non-recoverable tax posts to
EXPENSE(a cost absorbed by the business)
Tax lines are visible as a child grid on the transaction. See Tax Calculation for details.
Accounting events
When a transaction reaches VALIDATED status, the subledger automatically raises an AP_INVOICE accounting event. This creates a balanced journal entry that debits expense (and tax recoverable) and credits the payable.
See Accounting Events for the full lifecycle.
Authorisation
Reading supplier transactions and their lines requires at least the Accounts payable viewer role; creating and updating them requires Accounts payable user. This mirrors the pattern used by FAR for customer transactions.
Further reading
- Suppliers — the supplier records that transactions are raised against
- Supplier Sites and Site Uses — how bill-from site and payment terms are determined
- Transaction Holds — placing and releasing holds on transactions
- Payment Schedules — how payment obligations are generated from validated transactions
- Tax Calculation — how tax is calculated on transaction lines
- Accounting Events — how transaction status changes raise subledger events