If you sell wholesale or B2B through Shopify, you have probably discovered the quiet failure mode of net terms: the order ships, the invoice says Net 30, and then nothing reminds anyone about it until you notice cash is tight and start digging through old orders. Shopify marks the order as payment pending and moves on. Most late B2B payment is not refusal - it is your invoice falling off a busy buyer’s radar.
The minimum viable system (works with zero apps):
- Create net-terms orders with ‘payment due later’ so Shopify actually tracks the due date, instead of marking things paid that aren’t.
- Keep ONE list of unpaid orders sorted oldest-first. In admin: Orders > filter by Payment status: Payment pending. Check it on a fixed day every week - the fixed day is the system.
- Remind BEFORE the due date (3 days out, friendly), on the due date, then every 7 days after - same template, only the firmness escalates. Shopify’s ‘Send invoice’ resends the same payment link.
- When payment arrives, collect payment on the order as usual so your list stays clean.
Two things that actually move payment speed: put late-fee terms in writing because they give your reminders teeth (you will almost never collect one - the deterrent is the product), and offer a small early-payment discount, which works far better than penalties ever do.
When to bother with software: roughly when you pass 10-15 open net-terms invoices at a time, or when ‘did anyone remind them?’ becomes a real question between you and whoever else touches orders. Below that, the weekly-list ritual above is genuinely enough.
Disclosure: I built Upright Net Terms, a small app that automates exactly this (overdue-first receivables list plus scheduled reminders through Shopify’s own invoice email). The manual system above is the same logic and costs nothing - start there.
Good post, and I agree with the “before you buy any software” framing. Two native things worth adding for anyone running this system on Shopify’s companies and payment terms, then a disclosure.
Shopify already has payment reminders built in for net-terms orders: up to five, sent on the due date or a chosen number of days after it, using your own notification template. That covers steps three and four of your system without an app or a Flow. The gap is that nothing fires before the due date, so the “heads up, this is due Friday” email is still manual.
And for the “stop supplying an account that is overdue” step, the only native lever is per company: Customers > Companies > the company > Checkout > Edit > Submit all orders as drafts for review. It parks new orders for your approval rather than refusing them, and someone has to switch it on and off by hand as the account goes overdue and comes current. For a handful of accounts that is fine. Past that, it is the step people skip.
Disclosure: I build Credit Guard, a Shopify app that automates those two gaps. It sets a credit limit per company, places a credit hold at checkout when a company is over its limit or has an overdue invoice (with a per-company bypass), and sends reminders through Shopify’s own template 72 hours before, on, and 72 hours after the due date. It reads Shopify’s payment status, so the “mark the order paid when the transfer lands” habit in your post is still the thing that makes everything else work. If anyone reading wants a 20-minute screen-share to set it up on their store, reply here or message me.
Thanks, both of those are worth having on the record here. Agreed that the native reminders cover the after-due steps, and the before-due nudge staying manual is the piece I still see merchants doing from a calendar. On the drafts-for-review toggle, the failure mode you name, someone forgetting to switch it back off once the account is current, is the reason I framed this as a weekly habit before any software: the habit is what makes the toggle safe to use.