Home / Accounting & Bookkeeping / Overdue invoice reminders from QuickBooks Online at 3, 10 and 20 days, then one partner alert

Accounting & Bookkeeping problem 4: Clients pay the firm late

Overdue invoice reminders from QuickBooks Online at 3, 10 and 20 days, then one partner alert

Verified with mocksLast tested 2026-10-28 · pricing checked October 2026

Every morning the workflow asks your firm's own QuickBooks Online company for unpaid invoices past their due date. It emails a polite reminder 3, 10 and 20 days after the due date, with QuickBooks' own pay link when online payment is on (and a 'reply to arrange payment' line when it isn't), showing what's already been paid on partial payments. At 30 days the partner gets one alert instead of the client getting a fourth email. Invoices you list in a pause sheet (a dispute, a payment plan) are skipped.

The problem

Late fees are cash flow the firm already earned. The advice below is from practitioners quoted in a vendor report; QuickBooks also has a built-in option.

Background reading: A WISP for small tax and bookkeeping firms that use automations: what the Safeguards Rule asks of your tools

Who it's for

US CPA, tax and bookkeeping firms that invoice from their own QuickBooks Online and chase late fees by hand.

Tools and monthly cost

ToolOfficial price
QuickBooks Online (your client's subscription; you connect through accountant access)Simple Start $38 / month, Essentials $85, Plus $140, Advanced $340 (list prices; intro discounts vary) pricing page
Intuit developer app (QuickBooks API)Builder tier: no fee; writes are unmetered and reads ('CorePlus' calls) are capped at 500,000 a month, then blocked until next month. These recipes make a few hundred reads a month pricing page
Resend (sends the emails)Free: 3,000 emails / month, 100 / day. Pro: $20 / month for 50,000 pricing page
n8nCommunity Edition: free if you self-host (you pay for the server). n8n Cloud: from EUR 20 / month (Starter) or EUR 50 (Pro) pricing page

Example month: Illustrative arithmetic. Assume 40 overdue invoices a month: up to 120 reminders and a few partner alerts, inside Resend's free tier; one daily QuickBooks query plus one invoice read per reminder is a few hundred read calls (Builder tier allows 500,000). About $0 a month plus your n8n server and the QuickBooks subscription you already have.

Setup

  1. Check QuickBooks' built-in automatic invoice reminders first (see Intuit's help article linked below). Don't run both on the same invoices.
  2. QuickBooks: create an app at developer.intuit.com (Builder tier, no fee), add n8n's OAuth2 redirect URL, and create one n8n 'OAuth2 API' credential with Intuit's token URL and the com.intuit.quickbooks.accounting scope. Connect it once through your accountant user; n8n refreshes the 1-hour access token and stores the rotating refresh token itself. Set QBO_REALM_ID to your firm's own company ID and MSS_QBO_API to https://quickbooks.api.intuit.com/v3/company. Reads only; the workflow never writes to QuickBooks.
  3. Turn on online payments on your QuickBooks invoices if you want the pay link (the workflow reads QuickBooks' invoice link; it doesn't create one). Make sure each customer has a billing email.
  4. Optional: a Google Sheet ac-invoice-pause with invoice numbers to skip and a reason. A4_STEPS (default 3,10,20) and A4_PARTNER_DAYS (default 30) set the timing.
  5. Set CPA_FIRM_NAME, CPA_FIRM_SHORT, CPA_PHONE, CPA_ADDRESS, CPA_FROM_EMAIL, CPA_REPLY_TO, CPA_TZ and PARTNER_EMAIL from .env.example. Every client email is signed with your firm name, phone and address. Run n8n behind HTTPS with multi-factor authentication on the n8n login and on every connected account, keep execution logs short (Settings > n8n data pruning), and add n8n and its host to your WISP's list of service providers.
  6. Run it once with PARTNER_EMAIL and the from-address pointing at yourself. The workflow also has a manual 'run now' webhook used by our tests. Delete it, or put it behind n8n's header authentication, before you go live.

Download

Download accounting-invoice-reminders.zip

Contains the n8n workflow, the mock data, the test runner with its last results, and the mock server we tested against. All keys in .env.example are fake.

Test result

Every workflow was imported into n8n 2.45.4 and run end to end on our test machine. Karbon (API v3), TaxDome (public API v4, read-only), QuickBooks Online (Accounting API with OAuth 2.0), Google Sheets and the email sender (Resend) were replaced by a local mock server built from their official API docs: it checks the same request shapes, authentication headers and query syntax, pages results (Karbon @odata.nextLink, TaxDome cursors, QuickBooks STARTPOSITION), returns HTTP 429 with Retry-After, and expires the QuickBooks access token so n8n's real OAuth2 refresh runs. These recipes use no AI model; every decision is a written rule. Clients, firms and transactions are invented. Verified with mocks; no real client data was used, and nothing was sent to a real person or account.

6/6 scenarios passed (run 2026-10-28)

PASSI1Nov 3: expired token refreshed, one 429 retried, paged query; 3-day reminder with QuickBooks pay link (Ava), 10-day reminder showing partial payment (Fernway), reply-to-pay wording when online pay is off (Delta Dental Lab); paid and not-yet-due invoices untouched
PASSI2Same day again: nothing
PASSI3Nov 10: invoice paused in the sheet (dispute) skipped; Ava 10-day; Fernway day 21 -> final reminder (one email, not bunched)
PASSI4Nov 12: overdue invoice with no billing email -> partner told once, no customer email
PASSI5Nov 20: Fernway 31 days -> partner alert once, no more customer email; Ava day 20 final reminder; next day nothing
PASSI6Invoice paid in QuickBooks (balance 0): drops out of the query, nothing sent

Actual output from the test run

Scenario I1: the 3-day reminder (invented client; the pay link is a mock). Names and numbers are invented.

Subject: Friendly reminder: invoice 2026-101 was due Oct 31

Hello Ava Brooks,

Just a friendly reminder that invoice 2026-101 for $1,800.00 was due on October 31.

You can pay online here:
https://connect.intuit.com/portal/app/CommerceNetwork/view/scs-v1-mock1001

If you've already paid, thank you - please ignore this note. If there's a question about the bill, just reply and we'll sort it out.

Cedar Ledger CPAs
(555) 555-0140
40 Example St, Suite 3, Hartford, CT 06103

Verified with mocks

  • Day 1: the expired QuickBooks token was refreshed and one 429 retried; the overdue-invoice query was paged; a 3-day reminder with the QuickBooks pay link, a 10-day reminder that shows a partial payment, and reply-to-pay wording where online payment is off. Paid and not-yet-due invoices were left alone.
  • Same day again: nothing. An invoice in the pause sheet (a dispute) is skipped. Missed days don't bunch: a client on day 21 gets one final reminder, not two.
  • An overdue invoice whose customer has no billing email: the partner is told once and no customer email is attempted.
  • At 31 days: one partner alert and no more customer email; the next day, nothing. An invoice paid in QuickBooks (balance 0) drops out of the query.
  • Verified with mocks; no real client data used.

Documented from official API docs only

Built to the vendor's documentation but not run against a live account. Check these on yours.

  • QuickBooks Online Accounting API: Invoice query (Balance and DueDate filters, paging) and read with include=invoiceLink (from Intuit's developer docs; not run against a live QuickBooks company).
  • Resend email API (from Resend's docs). Google Sheets pause list: tested against a mock sheet endpoint.

Limitations

  • Reads QuickBooks only. If you bill from Karbon, TaxDome or another tool, its own reminders are the place to start.
  • It doesn't add late fees, pause work or send anything your engagement letter doesn't already allow. What you do at 30 days is the partner's call.
  • Email only. Texting clients would need TCPA consent, which this recipe doesn't collect.
  • Not legal or professional-standards advice, and not a compliance guarantee. Tax preparers are covered by the FTC Safeguards Rule (16 CFR 314), which asks for encryption in transit and at rest (314.4(c)(3)), multi-factor authentication for anyone accessing an information system (314.4(c)(5)) and oversight of service providers (314.4(f)); n8n, its server, Resend, Google and Karbon/TaxDome are service providers to list in your written information security plan (IRS Pub 4557 and 5708). Section 7216 limits how you use and disclose tax return information. Check with counsel and your state board before you turn this on.