Plug-in for NetSuite · Dunning & receivables

Secure your cash flow, keep receivables under control.

The letter goes out — but in most NetSuite accounts the dunning fee and the late-payment interest stay a footnote in the text that never reaches the general ledger. The base rate lives in a spreadsheet, the escalation level in someone's head, and the customer who paid yesterday still gets a reminder today. The Dunning Suite moves the whole process into your account: escalation levels by your rules, fees and interest as real invoices, statutory rates as data — and a review step before anything is sent or posted.

Release 1.0 · NetSuite bundle Runs entirely inside your NetSuite account — no workflows, no third-party system, no data leaving the house. Setup and letter templates are done together with us.
Dunning letter · due-date notice · statement Fees and interest posted as invoices § 288 BGB · EU 2011/7/EU · US finance charges Legacy tax and SuiteTax Review before anything goes out Almost everything configurable — even with no charges at all
Fourangle Dunning
€200per
month
Subscribe
Manage subscription
Dunning run · profile DACH B2B · 13 Oct 2026 · Pending approval
CustomerLevelOpenFeeInterest
Meridian Logistics L2 · 54 days 5,447.60 40.00 63.14
Tailspin Aviation L1 · 33 days 800.00 40.00 0.00
Wide World Importers L3 · 71 days 12,980.00 60.00 269.41
Contoso Pharma L1 · 18 days 2,310.00 0.00 0.00
Northwind Traders paused 1,150.00 — —
PENDING APPROVAL 24 letters, 0 errors, 1 customer paused (payment plan). Nothing is posted, nothing is sent — until someone clicks “Approve & Execute”.
A look inside the console

Every run at a glance — entity, type, status, fees, interest.

250
letters in 14.8 min
in one run, including posted fee invoices, 0 errors¹
3+
compliance packs
DE, EU and US built in — extensible without code
No-code
maintenance
rules, rates and levels are records in NetSuite
786
automated tests
covering the interest and fee logic

The dunning console lives in NetSuite and shows every row as one run: entity (profile), type — dunning letter, statement or due-date notice —, status, as-of date, number of letters, errors, fees and interest. Runs in “Pending approval” wait for you; in “auto” approval mode they execute on schedule. Clicking the run number opens the run with every letter and the invoices behind it.

4A Dunning Console in NetSuite: table of the 19 most recent runs
          with run number, profile (Germany GmbH, France SARL), type (dunning letter, statement,
          due-date notice), status (pending approval, complete), as-of date, letters, errors,
          fees and interest
The console in our NetSuite demo account with two entities and a profile each: four runs waiting for approval, the rest complete — dunning letters with fees and interest, statements and due-date notices without. All customers are fictional. Tap the image for a larger view.

¹ Measured on a NetSuite test account: one run of 250 letters including fee invoices and log entries.

A look at the letter

Your letterhead, your language, every line traceable.

Every dunning letter lists the overdue invoices with due date, days overdue and level, and shows principal, late-payment interest and dunning fee separately — exactly as they appear on the fee invoice in the ledger. Invoices that have not yet reached a new level are listed for information, with nothing charged for them. Templates ship in German and English and carry your letterhead with logo and bank details per entity.

Level 1 payment reminder from the Dunning Suite with Fourangle
          letterhead: table of the overdue invoice with invoice date, due date, days overdue,
          level, amount due and interest; below it principal, late-payment interest, reminder
          fees and total due; note referring to Directive 2011/7/EU
A first-level payment reminder from a demo account: one overdue invoice, the €40 compensation under the EU directive, no interest yet. The statutory note at the bottom comes from the country's compliance pack. Tap the image for a larger view.
Where it goes wrong in practice

The letter is the easy part of dunning.

NetSuite knows every open invoice and every due date. What is missing is everything that comes after the letter: the fee that has to be posted somewhere, the interest rate that changes twice a year, the level that must never run backwards, and the proof of who received what, and when.

The fee is in the letter, not in the ledger

Standard dunning writes letters and counts levels. The fee and the interest printed in them are posted by nobody — or by somebody, by hand, weeks later, with different figures.

Interest from a spreadsheet

Base rate plus nine percentage points, to the day, per invoice, across a rate change: that is a spreadsheet one person maintains. When that person is away, the interest on the next letter is wrong.

The €40 — once, not three times

The flat compensation under § 288(5) BGB applies exactly once per invoice. Charge it again on the second and third reminder and you get the customer's phone call — with no record of when it was first charged.

The level lives in a field

Which customer is at which level sits in a field anyone can overwrite. A partial payment, a bulk run, a restart after an error — and the third reminder arrives as the first.

Nobody sees the run before it goes out

A bulk send goes out, and the customer who paid yesterday, the one with an open dispute and the one on a payment plan all get the same letter. Sales writes the apology.

Sent twice, posted twice

If a run breaks off halfway, nobody knows which letters are already out. Starting again means dunning some customers twice and posting some fees twice.

Our answer

Three kinds of letter, one console, one ledger.

Dunning letter

For overdue customers, in levels you define — consolidated per customer or one per invoice. A fee per level, plus late-payment interest per invoice.

Charges
fee + interest
Posts
a fee invoice
Goes to
overdue customers

Due-date notice

The friendly one, before or around the due date: “your invoice is due soon.” Only to customers who have explicitly asked for it.

Charges
nothing
Posts
nothing
Goes to
opted-in customers

Statement

All open items as of the run date, credits and payments as negative lines — optionally including recently settled items. Own schedule, minimum interval per customer, dedicated statement address.

Charges
nothing
Posts
nothing
Goes to
customers with open items

Fees and interest as a real invoice

When a dunning letter carries charges, one fee invoice per letter appears on the customer's account: a fee line and one interest line per overdue invoice, dated with the run's as-of date. Tax is handled properly — legacy tax via the profile's tax code, SuiteTax via NetSuite's own tax engine.

Statutory rates are data, not code

Base rate, B2B and B2C margins, the €40 compensation, the consumer fee cap: all of it lives in the account as a compliance pack per country with effective dates. The next base rate is a data update, not a release.

Levels only move forward

An invoice's level rises with every run that includes it and is never reset. An invoice that has not yet reached a new level is listed in the letter for information — with nothing charged for it.

Review before sending

Every run is proposed and waits. You preview each letter, exclude customers, pause them or cancel the run. Only “Approve & Execute” posts and sends.

Re-run without fear

A repeated run reuses the existing fee invoice, recognises from the communication log what is already out, and never resets a level. The worst case is that it finishes the leftovers.

Pause instead of forget

Payment plan, dispute, promise to pay: pause a customer or a single invoice for 1 to 365 days with a reason — right on the record or from the console. Future runs leave them alone.

Almost all of this is configuration, not code. How many levels, which fee per level, which interest rate, whether the first reminder is free, whether you dun per customer or per invoice, whether a run waits for approval or executes on its own — you set it per profile. Don't want to charge fees and interest at all? Switch both off, and the dunning letter stays a plain payment reminder with levels, preview and log.
Scope

What the plug-in brings.

Dunning profiles and levels

One profile per part of the business: a level ladder with grace days, a fee per level, first reminder free or not, a final level, consolidated letter per customer or one per invoice, delivery channel and approval mode.

Compliance pack per country

Interest basis (base rate plus margin, fixed annual or monthly rate, none), B2B and B2C margins, flat compensation, fee cap, interest only with consent (US) and the statutory texts for the letter — Germany, EU and US ship with the product.

Effective-dated rate series

The base rate as a series with effective dates. Interest spanning a rate change is split into dated segments and shown that way on the letter. A period already charged is never charged again.

Both tax engines

The posting logic treats legacy tax and SuiteTax as equal targets — one code base, no special edition. Which one you run, we check during setup.

Letter templates in your language

Dunning letter, due-date notice and statement as templates in German and English, with letterhead, logo and bank details per entity; the language comes from the customer record. Further languages and text blocks are template maintenance, not a project.

Email or print batch

One channel per customer: email to up to ten addresses per customer, from the configured sender, or a PDF in the print batch — merged into files of up to 200 letters. Printing and stuffing happens at your end; the plug-in is not a mailing service.

Communication log

One entry per letter: what, to whom, when, through which channel, with which status. Bounces become visible instead of silent. When a customer calls to say “I never got anything”, you point at the entry.

A console for accounting

Runs, letters, side-effect-free preview, exclude and include, pause, cancel run, approve, waive a fee (creates and applies a credit memo), resend, re-execute failed letters — all in one place, restricted to Dunning Managers and administrators.

Extensible — but only on request

Six hooks for house rules — say, who is exempt from dunning or which fee a customer pays. They live outside the product, are switched on by the administrator and survive every update.

No workflows, no side deals. The plug-in consists of SuiteScript, configuration records and eight fields on the invoice. It changes no standard process and needs no external server — the entire run happens inside your NetSuite account.
How it works

Four steps per run.

1

The run is proposed

On your profile's schedule the plug-in scans open items and drafts the letters: per customer the level, amount, days overdue, fee and interest. Nothing is sent, nothing is posted.

2

Review

Preview every letter, exclude customers from this run, pause customers or invoices with a reason, cancel the whole run if need be. The person looking decides — not the schedule.

3

Approve & Execute

One click, one confirmation. Then letter by letter: post the fee invoice, render the PDF, send the email or add it to the print batch, write the log. A single failure does not stop the others.

4

Follow up

Download the print batch and take it to the post, retry failed letters once the cause is fixed, waive a fee as a goodwill gesture — as a credit memo that is applied automatically.

Multiple subsidiaries

Many subsidiaries. One dunning process.

Each subsidiary gets its own profile — the setup assistant creates it. It holds everything that differs between entities, and you run them all from one console.

  • Compliance pack, interest rate, levels and fees
  • Language, channel, sender and run days
  • Statements and due-date reminders: on/off, cadence
  • Posting: items, location, department, class, tax code
  • Letterhead with logo and bank details
New subsidiary? Complete its profile and required values — no code, no deployment. The assistant runs a health check for everything an unattended run needs.
One console · every subsidiary, every run
Germany GmbH § 288 BGB · German · emailpending
France SARL EU 2011/7/EU · English · emailexecuted
US Inc. US pack · English · printscheduled
Requirements: NetSuite OneWorld with Multiple Currencies. Legacy tax or SuiteTax is detected automatically.
Money and the law

What is charged is written in law — and kept as data in your account.

Germany · § 288 BGB

Late-payment interest at the base rate plus five percentage points for consumers and nine for businesses, €40 flat compensation exactly once per invoice, consumer fees capped at actual cost, no interest on interest (§ 289 BGB), day count act/365. The first reminder stays free — it establishes default.

EU · Directive 2011/7/EU

ECB rate plus eight percentage points as the floor and €40 compensation for recovery costs in commercial transactions. If the proposed regulation with €50 ever lands, that is a new record in the pack.

US · finance charges

Interest and fees only where the customer has agreed to them — the pack checks the consent on the customer record and charges nothing otherwise. A fixed rate instead of a base rate.

No rate is in the code. Interest basis, margins, compensation, caps and statutory texts are effective-dated records your administrator maintains and your tax adviser signs off. The calculation rules behind them are pure functions covered by 786 automated tests — the test cases double as the artefact for legal review.
In comparison

Compared with standard NetSuite dunning.

TopicNetSuite Dunning Letters (standard)4A Dunning Suite 1.0
Letters per batchup to 100 per print or email queue250 letters measured in one run (14.8 min)
Dunning fees and interestnot part of the documented scopecalculated per compliance pack and posted as an invoice
Maintaining the rulesUI or CSV import; no SuiteScript or web servicesno-code in the NetSuite UI — plus CSV and SuiteScript

Source (standard): Oracle NetSuite Help, “Dunning Limitations and Best Practices”, retrieved 13 Oct 2026.

Safety in the run

Nothing happens twice — and nothing without you.

Reviewed mode by default

Every run stops at “Pending approval” and notifies the responsible person. Fully automatic mode can be switched on per profile — for the parts of the business you trust it with.

A run never posts or sends twice

Fee invoice, delivery and level are guarded against repetition. If a run is restarted after an interruption it only finishes what is missing — proven in the end-to-end test with 250 letters.

Every change leaves a trail

Fee invoice on the letter, credit memo on a waiver, log entry per delivery, system notes on pause and resume. The console is restricted to Dunning Managers and administrators; the background engines write only what they create themselves.

FAQ

Frequently asked

We use NetSuite's standard dunning — what is the difference?

Standard dunning writes letters and manages levels. Fees and late-payment interest appear in the text at most; nothing is posted, and you track statutory rates yourself. The Dunning Suite creates a fee invoice in the ledger for every dunning letter, computes interest to the day from effective-dated data, and holds every run for approval before anything goes out.

We don't want to charge fees and interest — is that possible?

Yes. Fee per level set to zero, interest basis set to “none”, done: the dunning letter then runs as a plain payment reminder with levels, preview, approval and log, and no fee invoice is created. Likewise you can apply only the flat compensation, only interest, or both only from a certain level — all per profile, no code.

Legacy tax or SuiteTax — which do we run?

Both. The plug-in detects which tax logic your account uses: with legacy tax the fee line gets the tax code from the profile, with SuiteTax NetSuite's own tax engine computes it. Signing off the fee posting in your tax configuration is part of setup — with a test run before the first real invoice is created.

Does the plug-in mail letters by post?

No. Email customers receive the letter as a PDF attachment from the configured sender. For print customers a print batch is produced as PDF (up to 200 letters per file) that you download, print and post. The last mile stays with you — and is still recorded in the log as “printed”.

A customer paid yesterday and is still in the run?

As long as the run is not approved, take them out with one click — no letter, no fee. If the letter is already out, waive the fee: the plug-in creates a credit memo and applies it automatically. Nothing is deleted, everything stays traceable.

What do the letters look like, and can we adapt them?

The templates are NetSuite templates with your letterhead, included in German and English. Wording, column order and statutory notes are adapted during setup; further languages are one more template, not a development project.

Several subsidiaries, several currencies?

One profile per part of the business with its own compliance pack, sender and schedule. Fees and interest are only charged when the pack's currency matches the invoice — a foreign-currency invoice gets the letter, but no wrongly converted interest.

Can we add our own rules?

Yes, through six defined hooks: exempt customers, change the fee per customer, add recipients or trigger something after the run. The code lives outside the product, is explicitly switched on by the administrator and keeps running through every update.

What does our NetSuite account need?

NetSuite OneWorld with the Multiple Currencies feature. Legacy tax or SuiteTax — both work, the plug-in detects which. No workflows, no external server; the bundle brings records, scripts and eight fields on the invoice.

What does it cost, and how does it get into our account?

As a NetSuite bundle in your account, licensed per production account at €200 per month — available directly via the card above. A setup assistant creates profiles, packs and templates; the setup with your levels, rates and letters we do together. Request a demo — we walk a run through with your data.

Get started

Let's walk one dunning run through together.

We set up a profile with your levels and rates, load your letter template and run it against real open items — up to the preview, without a single letter leaving the house.