Guide · Statements

How to send monthly customer statements from Shopify

If you sell to other businesses on payment terms — Net 30, Net 60, due on receipt — each of your customers has an accounts-payable person whose month starts with a pile of statements. Yours is missing. Shopify's native B2B records the orders, the terms, the due dates and the payments, and it will remind a customer when an invoice is due; it will not tell them, once a month, what they owe you in total.

This guide covers what a customer statement actually needs to contain, the three ways Shopify merchants produce one today, and how to make it happen on the 1st of every month without anyone doing it.

What a statement of account is (and is not)

A statement of account is a periodic summary of one customer's account with you: what the balance was at the start of the period, what was invoiced, what was paid, what the balance is now, and which invoices are still open. It is a balance document, not a tax document — the invoices are the tax documents; the statement lists them.

The bookkeeper on the other side uses it for one thing: to reconcile it against their own ledger and pay what is open. That is why the two tables on a good statement are different. The activity table is the audit trail — every event of the period, in order, with a running balance. The open-items table is the payment list — every unpaid invoice as of the statement date, however old, with what is left to pay and how many days past due it is.

  • Header: your name and remit-to details, the statement number, the statement date and the period covered, the customer's name and reference, and their tax number where one number covers the whole account.
  • Summary: opening balance, corrections, invoiced, order changes, paid, refunds, closing balance, and of which overdue.
  • Activity: date, type, reference, the customer's purchase order number where they gave one, due date, amount, running balance.
  • Open items: reference, purchase order number, issued, due, amount, paid to date, outstanding, days overdue.
  • Aging: current, 1–30, 31–60, 61–90, 90+ days past due — buckets that add up to the closing balance.
  • Footer: how to pay, and a line saying this is a statement of account rather than a tax invoice.

Three ways merchants produce one today

By hand, from the orders list. Filter Orders to the company, export, add a spreadsheet, type the opening balance from last month's sheet, and send a PDF. It works for three stockists. At twelve it costs an afternoon a month and one missed payment breaks the running balance for every month after.

From accounting software. If your orders already flow into an accounting system, it can send statements. Many small wholesalers do not run one yet, or run one that does not know about Shopify's B2B orders — and paying a monthly subscription for the one feature you need is a poor trade.

From an app inside Shopify. The statement is computed from the same orders, payment terms and transactions Shopify already holds, rendered in your branding, and emailed to the company's billing contact on a schedule.

Getting the numbers right

A statement that is wrong once is worse than no statement: the bookkeeper stops trusting it and goes back to asking for invoices one by one. Three rules keep it consistent, and none of them can find a payment nobody recorded.

  • The balance identity must hold on every statement: opening + corrections + invoiced ± order changes − paid + refunds = closing, and the open items must sum to the same closing figure. If they do not, something was missed — do not send.
  • The opening balance is last month's closing balance. Never recompute it silently. When an old order is edited or refunded, show the change on the day it happened, on the statement for that period; when something arrives with a date last month's statement already covered, show the difference as a labelled correction line on this month's.
  • Aging counts days past the due date, not days since the order — a Net 60 order placed 45 days ago is current, not overdue.
Off-platform payments are the trap. A customer who pays by bank transfer shows as unpaid in Shopify until someone marks the order paid. Before a statement goes out, check the overdue items of anyone who pays by transfer — and mark them paid in Shopify first, so every document you send agrees with your own records.

Automating it

With StatementClerk installed, the schedule is set once — monthly on the 1st, the 15th or the last day, or weekly. On the run day the app builds one statement per company from your Shopify data, checks the balance identity, re-reads every order behind each statement from Shopify to make sure nothing changed there, and emails each company's billing contact a PDF in your branding. The first cycle waits in a review queue so you can look before anything is sent; after a clean cycle you can switch to automatic.

These are held and explained rather than sent: a possible off-platform payment, an order Shopify marks as paid that still shows money owed, figures that changed since the statement was built, an address that bounced. What goes out is what Shopify records, less any order you choose to leave out, so a transfer counts once it is marked as paid there. Free for up to 5 companies; Pro is $24 a month, billed through Shopify in US dollars.

Questions

Should a statement include orders paid at checkout?

Yes, in the activity table — a bookkeeper expects the full account, and a paid order appears as an invoice and a same-day payment. Open items and aging show only orders that still have a balance, with terms or without: an unpaid order placed without terms is due the day it was placed, and an overpaid one is a credit.

How far back should the first statement go?

The opening balance of a company's first statement should be computed from its whole history — every order still unpaid or partly paid before the period start — not assumed to be zero. That is the one number the bookkeeper will check first.

Monthly or weekly?

Monthly on the 1st is what most accounts-payable teams expect; weekly suits high-volume accounts on short terms. The period should always close the day before the run, so a statement never includes a day that is not over yet.

Statements on the 1st, without the spreadsheet.

StatementClerk builds, checks and sends them from your Shopify data. Free for up to 5 companies.

More guides