⏰ Payment due date
Updated
The payment due date tells the collector when an invoice or purchase order should be paid. It is calculated from a document date and a payment term; it does not post accounting movements.
User facet: payment due date. Developer detail: payment due internals.
How the process works#
IPaymentDueService returns Document date + Days. The days come from the
selected PaymentTerm record. Zero days means the due date is the document
date.
Documents that use it in this contour:
| Document | Field | Source of days |
|---|---|---|
SalesRealization |
Due date | invoice Payment term, then Sales default days |
PurchaseOrder |
Due date | purchase order Payment term, then Purchasing default term |
SalesOrder |
none | sales orders use Delivery date, not due date |
Settings#
Payment term#
Where: dictionary Payment terms (PaymentTerm).
| Field | Meaning |
|---|---|
| Name | The label users select on contracts and documents. |
| Days | Number of calendar days added to the document date. Empty or 0 means payment is due on the document date. |
Sales default payment term#
Where: Sales → Settings → Sales settings, field Default payment term. Empty means the invoice falls back to the hidden numeric default, which is normally 0 days.
The default is used only when the invoice has no payment term from the contract or customer. It changes Due date only; it does not change receivable amount, tax, or GL.
Example with numbers#
| Document date | Payment term | Days | Due date |
|---|---|---|---|
| 2026-09-01 | Net 14 | 14 | 2026-09-15 |
| 2026-09-01 | Cash | 0 | 2026-09-01 |
| 2026-09-01 | empty invoice term, Sales default Net 7 | 7 | 2026-09-08 |
Overdue debt block#
Where: Sales → Settings → Sales settings, fields Block orders with overdue debt and Overdue grace days.
| Setting | Values | Effect |
|---|---|---|
| Block orders with overdue debt | off (default) / on | On: approving a sales order is refused while the customer's overdue debt on the order date is above the order's Released overdue debt. |
| Overdue grace days | 0 (default) or more | Days added to every due date before a debt counts as overdue. |
A debt is an open ReceivableByBasis slice of the customer. Its due date:
| Basis | Due date |
|---|---|
| Sales realization | its Due date |
Sales order, pre-cut-over basis (LegacyBasis) |
its date + days of the contract's payment term, else the customer's |
| none (an advance or a debt without a basis) | never overdue |
Release overdue block on a draft or submitted order stores the overdue debt of that moment in Released overdue debt. The order then approves while the overdue debt is not larger. Who may press it is the command's Execute right in the role; until any role has that row, everyone can press it.
Example, grace 0:
| Invoice | Date | Term | Due | Unpaid on 2 Nov | Overdue on 2 Nov |
|---|---|---|---|---|---|
| R-101 | 5 Jan | 0 days | 5 Jan | 80 | 80 |
| R-140 | 25 Oct | 14 days | 8 Nov | 300 | 0 |
An order of 2 Nov is refused: overdue 80, released 0. After Release overdue block, released 80: the order approves. If another 50 becomes overdue before approval, it is refused again (130 > 80). With grace 30, R-101 is overdue from 5 Feb.
Boundaries and edge cases#
- The due date is recalculated while the document is editable. Once the sales invoice is Released, the card is read-only.
- It is not an expected receipt date. Available-to-promise uses purchase order Expected receipt, not payment due date.
- There is no exchange-rate or calendar exception logic.
What is posted#
Nothing. Due date is a document field used for collection and display;
receivable is posted by SalesRealization on Released.
What's not there yet#
- There is no ageing report by due date. Open debt is the receivable layout.
- The overdue block reads today's open debt, not the debt as it stood on an earlier order date.
- There is no holiday calendar. The due date is calendar days from the terms.
- There is no reminder or dunning document.
Same topic for other readers: User · Developer