B2B payment terms in PrestaShop: net 30, credit limits, reminders

How to apply payment terms per customer, check exposure before each order, record payments on native invoices and remind customers of overdue invoices in PrestaShop.

Paiement à terme B2B : net 30, plafond et relances sur PrestaShop

Your business customers order on account with net 30 payment terms. PrestaShop keeps the order and the invoice, but not the due date, the credit limit or the remaining balance in one place: the follow-up ends up in a spreadsheet, and a late payment surfaces when the customer calls. B2B Net Terms brings that follow-up back into the back office.

The module applies payment terms per customer, per group or by default, computes each order’s due date, checks exposure before granting another one, records payments on PrestaShop’s native invoices and sends reminders on overdue invoices. Every amount stays PrestaShop’s own: the module reads your orders, invoices, payments and credit notes.

Who needs net terms, and who can skip them?

The module is for shops that invoice businesses and follow several orders on terms a month; a shop that collects payment at checkout does not need it.

It fits wholesalers, distributors, small manufacturers and mixed B2B/B2C shops that want to grant a delay without losing track of due dates. Customers you do not authorise never see the option: access is set per group or per customer record, and guest accounts never get it.

It replaces neither your accountant nor your invoicing software. It is a follow-up and collection tool inside PrestaShop, not a parallel ledger.

How do you set up net 30 terms?

Net 30 terms are set in six steps, from installing the module to allowing its payment method in PrestaShop.

  1. Install the module from Modules > Module Manager. Installation creates the “Awaiting payment on terms” and “Awaiting approval (payment on terms)” order states; your orders, invoices, payments and credit notes are not changed.
  2. Settings > General: enable “Pay on terms at checkout” and tick the groups under “Groups that pay on terms”. The diagnostic flags what still needs fixing, such as invoicing turned off or a scheduled task that never ran.
  3. Settings > Terms and credit: set “Default terms, discount and limit” (net 30, for example), the base date — Order date or Invoice date —, the “Default credit limit” and what happens “Over the credit limit”. Also set “Make the invoice when the order is placed” to match how you work.
  4. Groups: give a group its own terms and settlement discount, or leave “Default”.
  5. Customers: open a record to set own terms, a limit, a note or a suspension. Every value shows where it comes from: Own, Group or Default.
  6. Payment > Preferences (a native PrestaShop setting): allow the module for the currencies, countries and groups you use, otherwise the option never appears.

Finally set the scheduled task under Settings > Scheduled task: copy the address with its token, or the command line, into your scheduler. Without a run, automatic reminders do not leave.

The customer list shows each customer’s effective terms, credit limit, exposure and available credit, with where every value comes from.
The customer list shows each customer’s effective terms, credit limit, exposure and available credit, with where every value comes from.

How do you set a credit limit per customer and check it before an order?

The limit is set on the customer record, in the shop’s default currency; exposure adds unpaid invoices, orders on terms not yet invoiced and orders awaiting approval.

Each amount is converted at the rate stored on its order, and an overpayment does not reduce the exposure of another order. At checkout the module compares exposure plus cart total with the limit, then applies your setting: hide the option with a message you write, or send the order as an approval request.

Approval also covers first orders on terms when you enable “First order on terms”. The Approvals page shows exposure, the limit and the credit available after approval; you approve or refuse with a note, and you can raise the limit in the same move. A refusal moves the order to the state you chose, Canceled by default, which puts the stock back.

The module never hides or changes the other payment methods. A customer over the limit can still order and pay upfront, and a suspended customer reads a message that invites them to pay another way.

If your prices are negotiated before the order, the B2B quote request module prepares the quote and turns it into an order; the order can then be paid on terms. For EU customers, OSS EU VAT adapts tax-inclusive prices to the visitor’s country, while the invoice amount stays the one PrestaShop records.

How do you follow exposure and late payments day by day?

The dashboard brings together exposure, overdue amounts, the next seven days and the top debtors; the Receivables page gives the detail, tab by tab.

The tiles give exposure and overdue amounts; the debtors table lists each one’s exposure, overdue amount, limit and oldest days overdue.
The tiles give exposure and overdue amounts; the debtors table lists each one’s exposure, overdue amount, limit and oldest days overdue.

The Open, Overdue, Upcoming, Awaiting approval, In dispute, Paid, Cancelled and All tabs filter orders by customer, due date, invoicing and source. The aging report sorts amounts by days past due — not due, 0-30, 31-60, 61-90 and over 90 days — with a total per currency.

The aging report groups receivables by days past due and totals each currency, so collections start with the oldest invoices.
The aging report groups receivables by days past due and totals each currency, so collections start with the oldest invoices.

When a transfer arrives, open Record a payment: the module offers to settle the oldest due date first, or an amount per invoice or order. A preview shows the split before you confirm; confirmation records native payments, linked to the invoices where they exist, and the remaining balance is recomputed per invoice and per order. A receipt can be undone as long as no credit note is attached to it.

A settlement discount is set per customer, per group or by default. When a payment arrives within the delay and leaves exactly the discount on the order, the module offers to create the matching native credit note, split over the order lines, with no quantity refunded and no stock movement.

A concrete case: the partial transfer on Tuesday

A customer pays part of two invoices by bank transfer. You enter the amount and the date, split the payment across the two invoices, and check the preview. Both invoices keep a remaining balance, the older one comes first in the next reminders, and the statement PDF you send lists the payments with a running balance.

On the customer side, the “My invoices” page shows the due date, amount, remaining balance and status of each invoice, with the native PDF and your payment details. The customer also downloads a statement for the period they choose.

Customers see their orders on terms not yet invoiced, their terms, your payment details and can download their statement.
Customers see their orders on terms not yet invoiced, their terms, your payment details and can download their statement.

The module documentation describes every screen and setting, with the labels of your language.

How do you chase an unpaid invoice without annoying the customer?

On each run, the module keeps one reminder per order: the latest level reached, not one e-mail per level passed.

The default schedule places levels three days before the due date, then one, seven, fifteen and thirty days after it. The last one escalates. You edit the levels, write a text per level and language in Reminder texts, and insert variables such as the customer, order, invoices, due date, remaining balance and the link to My invoices.

Reminders stop as soon as the order is settled, cancelled, refused or marked in dispute. Orders without an invoice are never reminded: they appear separately as due but not invoiced. An escalation warns the addresses you chose and, when you enable it, suspends the customer’s pay on terms; the suspension lifts by itself when no escalated receivable is left open.

You can also send a reminder by hand, choose the level, read the rendered text and add copy addresses. The Reminders page lists the day’s sends, failures and their reason, and the log keeps every send.

What the module does not do

It takes no online payment, charges no card and keeps no accounts: it records and follows the payments you receive.

It handles no SEPA direct debit, no bank reconciliation and no VAT return, and it does not rate a customer’s creditworthiness. Legal collection stays outside. Late-payment interest is informational, off by default, computed at the rate you enter and never added to an order.

PrestaShop invoicing must be enabled for reminders and invoice PDFs; an order without an invoice stays visible but is not reminded. After a credit note, PrestaShop’s order page still shows the invoice as unpaid, because the core never deducts credit notes; the module’s remaining balance does.

Without an active license, pay on terms, payment recording, credit notes, panels and the customer portal keep working; reminders, settings, terms and imports wait for the renewal. On uninstall, the module’s data is kept unless you tick its deletion.

The module gives no legal advice. Have your accountant check the mentions on your invoices and the interest rate that applies to your business. It runs on PrestaShop 1.7.8, 8.0+ and 9.0+, with PHP 7.4 or later, on the Classic and Hummingbird themes.

For card payments or payment in instalments, the Stripe deposits and partial payments module covers that need.

Frequently asked questions

Can you offer net 30 and net 60 in a PrestaShop shop?
Yes. The presets run from “Due on receipt” to net 90, with “End of month” and “30, 45 or 60 days end of month”; any mode from 0 to 365 days can be typed. You set the terms per customer, per group or by default, and the due date is computed on each order from the order date or the invoice date.
When should you follow up on an unpaid invoice?
The default schedule sends a reminder three days before the due date, then one, seven, fifteen and thirty days after it. On each run, one reminder leaves per order: the latest level reached, not one per level passed. You can edit the levels and the texts, and stop the sends by marking the order in dispute.
How do you set a credit limit per customer?
Enter the limit on the customer record, in the shop’s default currency, or in the default terms. Exposure adds unpaid invoices, term orders not yet invoiced and orders awaiting approval. Over the limit, the module either hides the option or asks for your approval, depending on the setting.
Should payment terms differ by customer type?
That is how the module works: terms are set per customer, per group or by default, and each screen shows where the value comes from. You can give a long-standing account a longer delay and a new customer a lower limit, without changing the orders already placed.
Is there a thirty-day invoice payment method in PrestaShop?
Yes, the module adds a “Pay on terms (Net 30 days)” payment method for allowed customers. The order enters the “Awaiting payment on terms” state, the invoice follows your settings, and the payment is then recorded on the native invoices. The other payment methods stay available.

Products in this article

Find the module your store needs

Browse the modules