Payment terms

Learn how to set the amount of time to pay an invoice and to include discounts for early payments.

Overview

Payment terms define the timeframe within which one has to pay an invoice (for example, 30 days from the invoice issue date). The terms can optionally include discounts for early payments—early payment discounts—to motivate the customers to pay sooner than the due date.

Payment terms structure

Monite’s payment terms structure has three tiers. The first two tiers—term_1 and term_2— represent early discount dates and can include discounts. The final tier—term_final—is required in all payment terms. This tier defines the invoice’s due date and does not support discounts.

The number_of_days field on the first two tiers represents the days after issuing the invoice that each early discount date no longer applies. The number_of_days field on the final tier shows the days after issuance that invoice becomes overdue.

The payment terms are represented as follows:

1{
2 // User-defined display name
3 "name": "2/10, 1/20, net 30",
4
5 // Optional description
6 "description": "To be paid within 30 days. 2% discount if paid within 10 days, 1% discount if paid within 20 days.",
7
8 // Payment target dates and discounts.
9 // term_1 and term_2 are optional early discount terms. The final term does not have a discount.
10 // Condition: term_1 days < term_2 days < term_final days
11 "term_1": {
12 "number_of_days": 10, // Days after the invoice issue date
13 "discount": 200 // Discount percentage in minor units. Here, 200 means 2%. 1050 means 10.5%.
14 },
15 "term_2": {
16 "number_of_days": 20,
17 "discount": 100,
18 },
19 "term_final": {
20 "number_of_days": 30
21 }
22}

The term_1 and term_2 fields are optional tiers when creating or updating payment terms. The term_final field is a required tier and does not support discounts.

term_1.number_of_days must be lower than term_2.number_of_days. These fields represent the final days to access any early payment discounts. Both fields must be lower than the term_final.number_of_days field.

Examples

Net X

A common payment term is “Net X” (such as Net 7 or Net 30) which means the invoice must be fully paid within X days. To create such a payment term, use the following payload:

1{
2 "name": "Net 30",
3 "description": "Payment is due within 30 days after the invoice issue date",
4 "term_final": {
5 "number_of_days": 30
6 }
7}

Early payment discounts

To incentivize quick payments, payment terms can include early payment discounts. You can define up to two discount tiers before the due date.

For example, payment terms can offer 1 percent off the invoice amount if the customer pays within 15 days as opposed to 30. This scenario, commonly abbreviated as “1/15, Net 30”, can be expressed as follows:

1{
2 "name": "1/15, Net 30",
3 "description": "The invoice must be paid within 30 days. 1% discount if paid within the first 15 days.",
4 "term_1": {
5 "number_of_days": 15,
6 "discount": 100
7 },
8 "term_final": {
9 "number_of_days": 30
10 }
11}

The following example includes two discount tiers:

1{
2 "name": "2/10, 1/20, Net 30",
3 "description": "The invoice must be paid within 30 days. 2% discount if paid within the first 10 days, 1% discount if paid within 20 days.",
4 "term_1": {
5 "number_of_days": 10,
6 "discount": 200
7 },
8 "term_2": {
9 "number_of_days": 20,
10 "discount": 100
11 },
12 "term_final": {
13 "number_of_days": 30
14 }
15}

Payment terms for receivables

You must have configured at least one payment term before you can create outgoing invoices.

Step 1. Create payment terms

To create a new payment term, call POST /payment_terms and provide the terms data in the request body (see the examples above):

1curl -X POST 'https://api.sandbox.monite.com/v1/payment_terms' \
2 -H 'X-Monite-Version: 2024-05-25' \
3 -H 'X-Monite-Entity-Id: ENTITY_ID' \
4 -H 'Authorization: Bearer ACCESS_TOKEN' \
5 -H 'Content-Type: application/json' \
6 -d '{
7 "name": "Net 30",
8 "term_final": {
9 "number_of_days": 30
10 }
11 }'

The successful 201 response contains the id assigned to the created payment term. You will need this id later when creating the outgoing invoices.

1{
2 "id": "411d9079-02af-476d-8723-4789882e01c3"
3 ...
4}

Step 2. Specify payment terms when creating an invoice

When creating an outgoing invoice, you must provide the ID of the payment term to use for this invoice:

1curl -X POST 'https://api.sandbox.monite.com/v1/receivables' \
2 -H 'X-Monite-Version: 2024-05-25' \
3 -H 'X-Monite-Entity-Id: ENTITY_ID' \
4 -H 'Authorization: Bearer ACCESS_TOKEN' \
5 -H 'Content-Type: application/json' \
6 -d '{
7 "type": "invoice",
8 "line_items": [ ... ],
9 "payment_terms_id": "411d9079-02af-476d-8723-4789882e01c3",
10 ...
11 }'

The invoice due date is calculated based on the invoice creation date and the term_final period of the payment terms. The invoice’s due date is returned in the due_date field on the invoice response object. The payment_terms object returned in the response also includes the calculated end_date for each term period.

1{
2 "type": "invoice",
3 "created_at": "2024-05-19T09:12:53.875094+00:00",
4 ...
5 "due_date": "2024-06-18"
6 "payment_terms": {
7 "id": "411d9079-02af-476d-8723-4789882e01c3",
8 "name": "1/15, Net 30",
9 "description": "The invoice must be paid within 30 days. 1% discount if paid within the first 15 days.",
10 "term_1": {
11 "number_of_days": 15,
12 "discount": 100,
13 "end_date": "2024-06-03" // Last date to qualify for an early payment discount
14 },
15 "term_final": {
16 "number_of_days": 30,
17 "end_date": "2024-06-18" // Invoice due date
18 }
19 }
20}

Additionally, the invoice response contains both the total invoice amount and the amount adjusted for the currently effective early payment discount, if any. For example, the following response shows an invoice with the amount_to_pay field reflecting a 1% early payment discount defined in the payment term :

1{
2 "type": "invoice",
3 ...
4 "total_amount": 5000,
5 "amount_to_pay": 4950
6}

You can change the terms for an existing draft outgoing invoice by calling PATCH /receivables/{invoice_id}:

1curl -X PATCH 'https://api.sandbox.monite.com/v1/receivables/{invoice_id}' \
2 -H 'X-Monite-Version: 2024-05-25' \
3 -H 'X-Monite-Entity-Id: ENTITY_ID' \
4 -H 'Authorization: Bearer ACCESS_TOKEN' \
5 -H 'Content-Type: application/json' \
6 -d '{
7 "invoice": {
8 "payment_terms_id": "<new ID>"
9 }
10 }'

List all payment terms for receivables

To get all configured payment terms for receivables, call GET /payment_terms:

1curl -X GET 'https://api.sandbox.monite.com/v1/payment_terms' \
2 -H 'X-Monite-Version: 2024-05-25' \
3 -H 'X-Monite-Entity-Id: ENTITY_ID' \
4 -H 'Authorization: Bearer ACCESS_TOKEN'

Payment terms for payables

In payables, the payment terms are determined by the entity’s counterparts, that is, vendors or suppliers.

When creating a payable from data, you can specify the payment_terms data in the request body as shown below:

1curl -X PATCH 'https://api.sandbox.monite.com/v1/payables' \
2 -H 'X-Monite-Version: 2024-05-25' \
3 -H 'X-Monite-Entity-Id: ENTITY_ID' \
4 -H 'Authorization: Bearer ACCESS_TOKEN' \
5 -H 'Content-Type: application/json' \
6 -d '{
7 "currency": "EUR",
8 "amount": 11900,
9 "due_date": "2022-06-30",
10 "counterpart_name": "SupplierName",
11 "payment_terms": {
12 "name": "2/10, 1/20, net 30",
13 "term_1": {
14 "number_of_days": 10,
15 "discount": 200
16 },
17 "term_2": {
18 "number_of_days": 20,
19 "discount": 100
20 },
21 "term_final": {
22 "number_of_days": 30
23 }
24 },
25 ...
26 }'