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 amount of time one has to pay an invoice (for example, 30 days from the invoice issue date). The terms can optionally include discounts for early payments to motivate the customers to pay sooner than the due date.
Payment terms structure
The payment terms are represented as follows:
{
// User-defined display name
"name": "2/10, 1/20, net 30",
// Optional description
"description": "To be paid within 30 days. 2% discount if paid within 10 days, 1% discount if paid within 20 days.",
// Payment target dates and discounts.
// term_1 and term_2 are optional early discount terms. The final term does not have a discount.
// Condition: term_1 days < term_2 days < term_final days
"term_1": {
"number_of_days": 10, // Days after the invoice issue date
"discount": 200 // Discount percentage in minor units. Here, 200 means 2%. 1050 means 10.5%.
},
"term_2": {
"number_of_days": 20,
"discount": 100,
},
"term_final": {
"number_of_days": 30,
}
}
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:
{
"name": "Net 30",
"description": "Payment is due within 30 days after the invoice issue date",
"term_final": {
"number_of_days": 30
}
}
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:
{
"name": "1/15, Net 30",
"description": "The invoice must be paid within 30 days. 1% discount if paid within the first 15 days.",
"term_1": {
"number_of_days": 15,
"discount": 100
},
"term_final": {
"number_of_days": 30
}
}
The following example includes two discount tiers:
{
"name": "2/10, 1/20, Net 30",
"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.",
"term_1": {
"number_of_days": 10,
"discount": 200
},
"term_2": {
"number_of_days": 20,
"discount": 100
},
"term_final": {
"number_of_days": 30
}
}
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):
curl -X POST 'https://api.sandbox.monite.com/v1/payment_terms' \
-H 'X-Monite-Version: 2023-03-14' \
-H 'X-Monite-Entity-Id: ENTITY_ID' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"name": "Net 30",
"term_final": {
"number_of_days": 30
}
}'
The successful 201
response contains the id
assigned to the created payment term. You will need this id
later when creating the outgoing invoices.
{
"id": "411d9079-02af-476d-8723-4789882e01c3"
...
}
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:
curl -X POST 'https://api.sandbox.monite.com/v1/receivables' \
-H 'X-Monite-Version: 2023-03-14' \
-H 'X-Monite-Entity-Id: ENTITY_ID' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"type": "invoice",
"line_items": [ ... ],
"payment_terms_id": "411d9079-02af-476d-8723-4789882e01c3",
...
}'
The invoice due date is calculated based on the invoice creation date and the term_final
period of the payment terms. The due date is returned in the payment_terms.term_final.end_date
property in the response. The payment_terms
object returned in the response also includes the calculated end_date
for each term period.
{
"type": "invoice",
"created_at": "2022-05-19T09:12:53.875094+00:00",
...
"payment_terms": {
"id": "411d9079-02af-476d-8723-4789882e01c3",
"name": "1/15, Net 30",
"description": "The invoice must be paid within 30 days. 1% discount if paid within the first 15 days.",
"term_1": {
"number_of_days": 15,
"discount": 100,
"end_date": "2022-06-03" // Last date to qualify for an early payment discount
},
"term_final": {
"number_of_days": 30,
"end_date": "2022-06-18" // Invoice due date
}
}
}
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:
{
"type": "invoice",
...
"total_amount": 5000,
"amount_to_pay": 4950 // 1% discount if paid early
}
You can change the terms for an existing draft outgoing invoice by calling PATCH /receivables/{invoice_id}
:
curl -X PATCH 'https://api.sandbox.monite.com/v1/receivables/{invoice_id}' \
-H 'X-Monite-Version: 2023-03-14' \
-H 'X-Monite-Entity-Id: ENTITY_ID' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"invoice": {
"payment_terms_id": "<new ID>"
}
}'
List all payment terms for receivables
To get all configured payment terms for receivables, call GET /payment_terms
:
curl -X GET 'https://api.sandbox.monite.com/v1/payment_terms' \
-H 'X-Monite-Version: 2023-03-14' \
-H 'X-Monite-Entity-Id: ENTITY_ID' \
-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:
curl -X PATCH 'https://api.sandbox.monite.com/v1/payables/upload_with_data' \
-H 'X-Monite-Version: 2023-03-14' \
-H 'X-Monite-Entity-Id: ENTITY_ID' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"currency": "EUR",
"amount": 11900,
"due_date": "2022-06-30",
"counterpart_name": "SupplierName",
"payment_terms": {
"name": "2/10, 1/20, net 30",
"term_1": {
"number_of_days": 10,
"discount": 200
},
"term_2": {
"number_of_days": 20,
"discount": 100
},
"term_final": {
"number_of_days": 30
}
},
...
}'
Updated 17 days ago