VVamshi P
How-To SuiteFlow 6 min read · 2026-03-17

How to Automate Customer Statement Emails in NetSuite Using Scheduled Workflows

Most finance teams still send customer statements manually — downloading PDFs, attaching them to emails, sending one by one. NetSuite's scheduled workflows can eliminate that entirely. Here's the exact setup, step by step.

VP
Vamshi P
|
Record Type: Customer
|
Trigger: Scheduled Workflow
Record Type
Customer
Trigger
Scheduled
Frequency
Daily / Monthly
Scripting needed
None
"A small workflow can eliminate hours of manual statement work every single month — no scripting required."

Manual statement sending doesn't scale

In many organisations, sending customer statements is still a manual process. The finance team downloads PDFs, attaches them to individual emails, and sends them customer by customer. For a small customer base this is manageable — beyond that, it becomes time-consuming, inconsistent, and error-prone.

The consequences are predictable: statements go out late, some customers get missed, and the AR team spends time on a task that should have been automated long ago.

NetSuite's scheduled workflow engine handles this automatically — generating the statement PDF, addressing it to the correct customer, and sending it on a fixed schedule. No SuiteScript required.

Create a saved search to control who gets statements

Before building the workflow, create a Customer Saved Search that filters exactly which customers should receive a statement. Navigate to Reports → Saved Searches → All Saved Searches → New → Customer.

Name the search Customer Statement Email List and add the following criteria on the Criteria tab:

FilterConditionWhy
Inactiveis falseExclude inactive customers
Balanceis greater than 0.00Only customers with an outstanding balance
Emailis not emptyOnly customers with a valid email address

NetSuite saved search criteria — Customer Statement Email List showing Inactive is false, Balance greater than 0, Email is not empty

Do not skip the Email is not empty filter. Without it the workflow will attempt to send to customers with no email address and silently fail.

Create the workflow

Navigate to Customization → Workflow → Workflows → New and configure Basic Information as follows:

FieldValue
NameCustomer Statement Email List
Record TypeCustomer
Sub TypesCustomer only — not Lead or Prospect
Release StatusTesting (switch to Released when ready)
Keep Instance and HistoryAlways

NetSuite workflow basic information — Customer record type, Customer subtype selected, Testing release status, Keep Instance Always

Set Release Status to Testing while you build and verify. The workflow only executes against your test customers until you switch it to Released.

Configure the schedule

Set Initiation to Scheduled. The schedule section will appear — configure as follows:

FieldValue
Saved Search FilterCustomer Statement Email List
RepeatChecked
FrequencyMonthly
Monthly ScheduleDay 1 of every 1 month(s)
Execution Time12:00 am

NetSuite workflow schedule configuration — Scheduled initiation, Customer Statement Email List filter, Monthly frequency, Day 1, 12:00am execution time


Add the Send Email action

Inside the workflow canvas, create a state named Send Statement Email. Add a new action — from the list that appears, select Send Email.

NetSuite workflow New Action dropdown — Send Email highlighted in the action list

Configure the Sender and Recipient sections:

SectionFieldValue
SenderSender typeSpecific Sender
SenderSenderYour AR team employee
RecipientRecipient typeFrom Field
RecipientRecord (Join Field)Current Record
RecipientFieldE-mail

NetSuite Send Email action — Specific Sender set to Vamshi Precise, Recipient From Field set to Current Record E-mail

Using From Field → E-mail on the Current Record ensures each customer receives their own statement at their own email address — not a shared or hardcoded recipient.

Configure the email content

In the Content section, select Use Template for a reusable setup, or Custom for a quick start. For custom content:

FieldValue
SubjectYour Monthly Statement from Our Company
BodyDear ${'{entity.companyname}'}, please find your current account statement attached. Kindly review the outstanding balance and let us know if you have any questions. Thank you.

NetSuite Send Email content — Custom mode selected, subject Your Monthly Statement from Our Company, body with FreeMarker entity.companyname variable

Hardcoding the body directly in the workflow means every future change requires re-deploying the workflow. Use a reusable Email Template — edit the template, not the workflow.

Attach the customer statement PDF

In the Attachment section, check Include Statement and configure the options:

FieldValue
TypePDF
Statement Date / Start DateLeave blank — defaults to today
Show Only Open TransactionsChecked
Consolidated StatementChecked
Use Customer's LocaleOptional

NetSuite Send Email attachment section — Include Statement checked, PDF type, Show Only Open Transactions checked, Consolidated Statement checked

NetSuite generates the statement PDF dynamically at send time. No manual pre-generation needed. If a custom Advanced PDF/HTML template is configured on the customer form, NetSuite uses it automatically.

The Consolidated Statement checkbox is important for customers with multiple subsidiaries — it merges all balances into a single PDF rather than sending one per subsidiary.

Test before releasing

With Release Status set to Testing, use the Execute Now button to run against your saved search immediately — without waiting for the scheduled time.

Statement PDF attaches correctly and uses the right template
Recipient email resolves correctly from the customer record
Email subject and body render as expected
Saved search excludes customers with zero balance and no email
Workflow instance history confirms execution with no errors

Once satisfied, switch Release Status to Released. The workflow runs automatically on the next scheduled date.


Where to take this next

01
Add a Stripe Pay Now button
Switch to a reusable email template with a dynamic Stripe payment link — customers pay directly from the statement email.
02
Customise the PDF template
Build a custom Advanced PDF/HTML statement with your branding, aged balance breakdown, and contact details.
03
Separate workflows per subsidiary
Different schedules, different senders, different statement formats per subsidiary — each with its own saved search filter.
04
Add an overdue reminder
A second workflow triggered when balance is still outstanding 14 days after statement send — a targeted follow-up nudge.

No scripting needed — just workflow configuration

Scheduled workflows in NetSuite are underused for AR automation. Most teams reach for SuiteScript when the workflow engine handles this kind of task cleanly — without a single line of code.

A well-configured saved search, a scheduled workflow, and a Send Email action with Include Statement checked is all it takes to eliminate manual statement sending entirely.

"Automate the routine so your team can focus on the exceptions. Statement emails are routine."