AI voice agent for pre-due invoice reminders in NetSuite

NetSuiteAIVoice AgentsRetelln8nAccounts Receivable

The first AR demo I built was an outbound collections agent. It calls customers after invoices go overdue. It works, but it's a late move. By the time you're calling on a past-due invoice, the relationship is already a little awkward.

This one runs earlier.

What it does

A few days before an invoice is due, the agent calls. It mentions the invoice number, the amount, the due date, and asks if there's anything that might get in the way of payment. Clean, short. If the customer says they're all set, it thanks them and ends the call. Questions or concerns, it acknowledges them and says billing will follow up.

After the call, a Phone Call activity writes itself to the NetSuite customer record and links to the invoice. Same pattern as the collections agent, but the tone and timing are different.

How the flow works

n8n runs a scheduled query against NetSuite every morning. The SuiteQL looks for open invoices due within the next five days where the customer has a phone number on file. For each result, it builds an outbound call through Retell AI with the customer's name and a natural-language invoice summary as dynamic variables.

Retell places the call. When it ends, it fires a webhook back to n8n. n8n parses the call analysis, signs a Token-Based Auth header for NetSuite, and posts a Phone Call activity linked to both the customer and the invoice.

One thing that came up during the build

NetSuite's SuiteQL doesn't use the same status format as the search UI. The REST saved search shows invoice statuses like CustInvc:A, but in SuiteQL the column just returns A. Filtering with the full prefixed value returns nothing. Worth knowing if you're querying transactions by status in SuiteQL.

The other thing: grouping by customer before placing calls matters. If a customer has three invoices coming due, you want one call covering all three, not three calls in a row. The n8n code node handles that grouping and builds a single summary sentence before handing off to Retell.

The stack

  • NetSuite: source of upcoming invoices, destination for call logs
  • Retell AI: outbound voice agent with dynamic variables, post-call webhook
  • n8n: scheduler, NetSuite query, call trigger, webhook receiver, activity write-back

The previous posts in this series covered post-due collections, order status lookup, and inbound lead capture. This one just runs earlier in the same cycle.

Demo's on LinkedIn.