What this workflow does
Daily reminders
- Weekdays 8am starts the run, and Get open invoices pulls every QuickBooks Online invoice with a balance above zero.
- Read cadence and Read AR log load your playbook and recent activity from Google Sheets.
- Plan reminders groups invoices by customer, assigns a segment (key, standard or small balance), finds the matching cadence row by days past due, and skips customers with an unexpired promise to pay, a dispute in the last 30 days, or a reminder in the last 7 days. This is the pre-send check, run against balances pulled minutes earlier.
- Email or owner task sends key accounts and customers without a billing email to Slack as owner tasks. Everyone else continues.
- Claude: draft reminder writes a short email from the exact invoice numbers and amounts, in the tone your cadence row asks for.
- Check draft confirms every invoice number appears, the payment link token is present, the email is short and no banned phrases such as fee or legal threats slipped in. Failures, refusals and API errors fall back to a fixed template.
- Create Gmail draft puts each reminder in the AR mailbox’s drafts for a person to send. Append to AR log records every touch.
Replies
- AR mailbox reply watches for new customer replies, and Claude: classify reply labels each one as paid, promise to pay, dispute, request for a copy or W-9, wrong contact, out of office or other, with any promised date resolved to a calendar date.
- Read classification posts the reply and the next step to Slack and logs it. Promise and dispute rows pause the daily reminders automatically.
Before you import
- A current n8n version.
- QuickBooks Online with billing emails on your customers.
- A shared AR mailbox in Gmail or Google Workspace.
- A Google Sheet with “Cadence” and “AR log” tabs, using the headers in the sticky note.
- An Anthropic API key and a Slack bot that can post to your AR channel.
Setup
- Import the JSON file and connect the QuickBooks Online, Google Sheets, Gmail, Anthropic and Slack credentials.
- Replace
REPLACE_WITH_SHEET_IDin the three Google Sheets nodes. - In Plan reminders, set
REPLACE_WITH_COMPANY_NAME,REPLACE_WITH_PAYMENT_LINK, your key account customer IDs, the small-balance limit and the days between touches. - In Check draft, replace
REPLACE_WITH_AR_SIGNATURE. - Replace
REPLACE_WITH_AR_INBOX_ADDRESSin AR mailbox reply andREPLACE_WITH_AR_CHANNELin Post to AR channel. - Add cadence rows such as
standard, 1, 14, email_friendly, friendly,standard, 15, 45, email_firm, firm but politeandkey, 1, 999, owner_task.
Test it
Use a QuickBooks sandbox with three overdue invoices for two customers and run the daily flow manually. You should get one Gmail draft per customer listing both invoices, and log rows marked “AI draft”. Reply to one draft from the customer address with “We will pay next Friday” and confirm Slack shows promise_to_pay with the right date. Run the daily flow again and check that customer is skipped.
Make it production-ready
- Error workflow. Set one in the workflow settings so a failed QuickBooks pull is noticed the same morning.
- Sending. Switch Create Gmail draft to a send operation per segment only after a few weeks of clean drafts. Re-read balances right before sending if drafts sit for hours.
- Paid replies. Match remittance replies to payments in QuickBooks before thanking the customer.
- CRM visibility. Copy reply summaries to HubSpot or Salesforce notes so account owners see collection status.
- Retries and limits. Gmail and QuickBooks both rate limit. Keep the daily batch modest and add retries to those nodes.
- Model choice.
claude-haiku-5-5is a cheaper option for reply classification.
Read the full guide, how to automate accounts receivable collections, or talk to Lumeor about a production build.