> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dualentry.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Early Payment Discounts Reference

> Fields, calculations, payment states, journal entries, and limits for early payment discount terms on DualEntry invoices and customer payments.

An early payment discount term gives a customer a percentage off an invoice when they pay by a discount date, with the full amount due by a later net date. This page lists the term's fields, how DualEntry calculates the discount, what invoices and customer payments show, the journal entries, and the current limits. For the setup steps, see [How to Offer Early Payment Discounts](https://docs.dualentry.com/accountants/core-financials/accounts-receivable/early-payment-discounts.md).

## Term fields

An early payment discount term is a payment term whose **Type** is **Early payment discount**, created under **Accounting Setup → Terms**. The table below lists every field on the term drawer for that type.

| Field | Type | Required | Default | Description |
| - | - | - | - | - |
| **Type** | Tab | Yes | **Standard** | Choose **Early payment discount** to show the discount fields. |
| **Name** | Text, 2 to 128 characters | Yes | None | The name shown in term pickers and on invoices. DualEntry doesn't generate it. Must be unique in the organization. |
| **Discount %** | Number, 0.01 to 100 | Yes | None | The percentage taken off the invoice total when the customer pays by the discount date. |
| **Discount Days** | Whole number, 0 or more | Yes | None | Days after the invoice date that the discount stays available. Can't be greater than **Net Days**. |
| **Net Days** | Whole number, 0 to 99,999 | Yes | None | Days after the invoice date that the full amount is due. |
| **A/R Sales Discount Account** | Account | Yes, unless an organization default exists | The **Money in** default from General Preferences | The account debited for discounts customers take. Can't be a bank or credit card account. |
| **A/P Purchase Discount Account** | Account | Yes, unless an organization default exists | The **Money out** default from General Preferences | Stored on the term. DualEntry doesn't post to it, because bills and vendor payments don't take early payment discounts. Can't be a bank or credit card account. |
| **Active** | Toggle | No | On | Whether the term is active. Turn it off to mark the term inactive. |

The account defaults come from [General Preferences](https://docs.dualentry.com/accountants/platform-configuration/organization-settings/general-preferences.md). DualEntry copies them into a new term's fields when you open the drawer. When a payment posts, DualEntry uses the account stored on the invoice's term at that moment, never the organization default directly.

## Calculating the discount date and amount

DualEntry stores a discount date and a discount amount on each invoice whose term is an early payment discount term. Both are recalculated every time you save the invoice.

| Value | Calculation |
| - | - |
| Discount date | Invoice date plus **Discount Days**. When separate posting and transaction dates are turned on, the invoice's transaction date is the starting point. |
| Discount amount | **Discount %** times the invoice total, rounded to the cent, in the invoice's currency. The total includes tax and is after any line or order-level discounts. |
| Due date | Invoice date plus **Net Days**, the same as a standard term. |

For example, a $120,000 invoice dated 11/01/2026 on 2/10 Net 30 has a discount date of 11/11/2026, a discount amount of $2,400, and a due date of 12/01/2026.

These rules also apply:

* Discount dates aren't moved off weekends or holidays.
* Editing a term doesn't change invoices already saved with it. Saving such an invoice again recalculates its discount from the term's current values.
* Changing an invoice's date, total, or term recalculates the discount when you save.
* Editing an invoice's **Due Date** by hand clears its term, which removes the discount.

## Invoice Terms tab

A saved invoice with an early payment discount term shows a **Terms** tab before **Related Records**, and its **Overview** shows the banner **This invoice offers an early payment discount** with a **View terms** link. Invoices on other terms don't show either.

| Element | What it shows |
| - | - |
| **Term** | The term's name. |
| **Total** and **Amount Paid** | The invoice total and the amount applied so far. |
| **Discount Date** | The discount date, with the days left or the days late. |
| **Discount Amount** | The discount amount, with the percentage and the discount date. |
| **Amount Due** | The open balance. |
| Timeline | **Issued**, **Discount date**, and **Due date** markers. Once the invoice is fully paid, the latest payment is pinned on it. A late payment, or an unpaid invoice past due, extends the bar past the due date. |
| **If paid by** table | Two rows, **Discount date** and **Due date**, with columns **Discount**, **Amount due**, and **Status**. |

The **Status** column uses five values: **Available**, **Expired**, **Paid**, **Open**, and **Unavailable**.

## Discount column on customer payments

On a customer payment, the **Discount** column under **Open Transactions → Receivables** shows each invoice's offer, compared against the payment's **Posting Date**. The invoice cell also shows the term's name under the invoice, and the **Applied Amount** and **Discount** columns stay pinned on the right of a wide table.

| Line state | **Discount** cell shows |
| - | - |
| Selected, inside the window, discount taken | The discount amount, with **Until** and the discount date under it |
| Not selected, inside the window | A dash, with the offer amount, **Until**, and the discount date under it |
| Posting date after the discount date | A dash, with the offer amount, **ended**, and the discount date under it. No discount is taken. |

How the discount on a line is set:

* **Inside the window** means the payment's **Posting Date** is on or before the discount date.
* **Proration**: the discount equals the full discount amount times the applied amount divided by the invoice total, capped at the part of the offer that earlier posted payments haven't used.
* **Applied amount** on a line is the cash plus the discount. **Payment Amount** is the total applied minus the total discount.
* **Clear discount** removes the discount from a line, and **Apply discount** restores the calculated amount.
* **Warning**: whenever a selected line takes a discount, the payment shows **Discount does not adjust tax. Review for VAT/GST.**

## Journal entries

The invoice posts at its full amount, and the discount posts only on the customer payment's journal entry, as its own line. The tables below use the \$120,000 invoice on 2/10 Net 30 from the example above, paid within the window.

Invoice journal entry, unchanged by the term:

| Account | Debit | Credit |
| - | - | - |
| Accounts Receivable | 120,000.00 | |
| Revenue | | 120,000.00 |

Customer payment journal entry inside the window:

| Account | Debit | Credit |
| - | - | - |
| Bank | 117,600.00 | |
| Sales discount account from the term | 2,400.00 | |
| Accounts Receivable | | 120,000.00 |

The invoice is fully paid once the cash plus the discount cover its total.

| Situation | Behavior |
| - | - |
| Foreign currency | The discount is in the invoice's currency and posts at the payment's exchange rate. Realized FX gain or loss is calculated on the full applied amount, including the discount. |
| Closed periods | The discount posts on the payment's date, in the payment's period, even when the invoice is in a closed period. |
| Reversing a payment | Archiving or deleting the payment, or removing the invoice line from it, removes the discount line with the rest of the entry and makes the offer available again. |

## Rules and limits

Early payment discounts cover invoices and the customer payments that pay them. The table below lists what they don't cover today.

| Area | Current behavior |
| - | - |
| Bills, purchase orders, vendors | Early payment discount terms are hidden from their term pickers. A new bill never inherits one from a vendor or purchase order. Vendor payments don't take discounts. |
| Other term types | Only **Early payment discount** terms carry discount fields. **Standard**, **Date driven**, and **Installments** terms can't. |
| Due date | Net days after the invoice date only. |
| After the discount date | The discount can't be taken. |
| Customer prepayment applications and credits | No discount column. Discounts apply only to invoice lines on customer payments. |
| Tax | The discount doesn't reduce tax. |
| Invoice PDFs, emails, customer statements, payment links | Don't show the discount date or amount. |
| Reports | No dedicated report of discounts taken or missed. Discounts appear in the sales discount account in the general ledger. |
| Bulk import and migrations | Early payment discount terms can't be imported or mapped. |
| Archiving a term | Blocked while any customer, vendor, or record that isn't archived uses the term, or while it's the organization's default term. |

## API, MCP, and CLI

Early payment discount terms are readable through the public API and writable through the DualEntry MCP server.

| Surface | Support |
| - | - |
| Public API | `GET /public/v2/terms/` and `GET /public/v2/terms/{term_id}/` return `term_type` (`early_discount`), `discount_percent`, `discount_days`, `sales_discount_account_id`, and `purchase_discount_account_id`. Terms are read-only in the public API, and v1 has no terms endpoints. Invoices don't return the discount date or amount, and customer payments don't accept a discount amount. |
| [MCP server](https://docs.dualentry.com/accountants/ai-automation/mcp/mcp-integration.md) | `save_entity` with entity type `term` creates a term, including the discount fields. `save_record` creates customer payments, and their invoice lines accept a discount amount. |
| [CLI](https://docs.dualentry.com/developers/guides/cli/reference.md) | No terms commands. |

## Related

* [How to Offer Early Payment Discounts](https://docs.dualentry.com/accountants/core-financials/accounts-receivable/early-payment-discounts.md): set up the accounts and term, then record a discounted payment
* [How to Record Customer Payments](https://docs.dualentry.com/accountants/core-financials/accounts-receivable/customer-payments.md): applying payments to invoices
* [General Preferences](https://docs.dualentry.com/accountants/platform-configuration/organization-settings/general-preferences.md): the default discount accounts
* [MCP Server: Tools, Permissions, and Troubleshooting](https://docs.dualentry.com/accountants/ai-automation/mcp/mcp-integration.md): the tools that create terms and payments


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.