How to track unpaid net 30 invoices in Shopify

Updated September 21, 2026

A stockist owes you for two orders. One is three weeks past due. On Tuesday they place a third, and it goes into the same queue as everybody else’s. Nothing in Shopify connected the money they owe to the order that just arrived.

That is the whole problem with net terms in Shopify, and it is not that Shopify cannot hold the information. It is where the information lives. Payment terms sit on each order, not on the customer. So the fourth order from an account that is sixty days behind looks exactly like the first order from a new one, on every screen you pick and pack from.

Most of what fixes that is already in your admin. Here is the order to do it in.

1. Make one saved view of what is owed

  1. Go to Orders, add the filter Payment status, and tick Due and Pending. Due is the net-terms order whose date has passed - the list shows it with a red Due badge. Pending is owed but not yet late.
  2. Sort by customer, and save the view (for example Owed - net terms).
  3. Look at it before you fulfil, not at the end of the week. The point is to see an overdue account while its new order is still on the bench.

2. Mark bank transfers and cheques paid the same day

This is the one that quietly breaks everything else. When a stockist pays by bank transfer, Shopify never sees the money. Unless someone marks the order paid in the admin, Shopify keeps showing it as owed, every total built on it is wrong, and any reminder that goes out is correct according to Shopify and wrong in the real world. It is usually why a spreadsheet and Shopify disagree by thousands.

3. Decide the rule before the order arrives

The hard moment is deciding whether to ship to someone who is behind while you are looking at their new order. Decide it in advance instead. A common rule:

For B2B companies Shopify has a lever for the last case: Customers › Companies › the company › Checkout › Submit all orders as drafts for review. Their next checkout lands in Drafts for you to approve instead of becoming an order. It is manual in both directions - turn it on when they go overdue, off when they pay - and it does not stop them submitting the cart, but it does stop the order reaching the packing bench unseen.

4. Decide who gets terms at all

“They seem nice” is how most small wholesalers decide, and it is fine until it is not. A few rules that cost nothing:

5. Keep the payment terms on the order honest

An order with no payment terms on it cannot be late - there is no due date to be late against. If you sometimes invoice outside Shopify and leave the order without terms, that money is owed but nothing can say how overdue it is. Put the terms on the order (for example Fixed date or Net 30) when you create it, so the due date exists.

What the steps above do not give you is a single screen, grouped by account, that tells you at a glance who is late and by how much while you are deciding whether to ship.

That is the one gap we built Chalkline for. It is a free Shopify app that lists every account that owes you, worst first by how late the money is rather than how much, with the ageing split (1-30, 31-60, 61-90, over 90 days) and an optional credit limit per account. It keeps each currency separate and says so plainly when an order has no terms to judge it by.

It does not block orders or email your customers. It ends each late account on the question you are actually facing - send the next order, or hold it until this is paid? - and leaves the call to you, because only you know whether the transfer is already on its way.

See Chalkline on the Shopify App Store

The short version

  1. One saved view of unpaid net-terms orders, checked before you fulfil.
  2. Bank transfers marked paid the day they land.
  3. A written rule for when late means hold.
  4. Prepaid first orders, then terms with a modest limit.
  5. Payment terms on every wholesale order, so a due date exists.