Shopify Customer Accounts and Net Terms for Wholesale Buyers
A contractor who's always paid on account won't type a card number into your new store. Here's how to set up the accounts, the terms, and the policy behind them.

A contractor calls to order forty filters and asks you to put it on his account. He's done it that way for years. Your new online store wants a credit card number before it will let the order through, and he isn't going to type one in.
That gap sits between a retail checkout and a real trade account, and it's the main reason wholesale buyers stop using a store that was built for walk-up customers. The usual fix is to pair Shopify customer accounts with net terms for your wholesale buyers: a login that unlocks their pricing, a tag that says how they pay, and an invoice instead of a card charge.
The build is the easy half. By the end of this you'll know what to write down before anyone builds anything.
The checkout built for one card doesn't fit a buyer who expects terms
A retail checkout has one job: collect money before the order ships. It's good at that job. Card, wallet, done, and the order drops into the queue already paid.
A wholesale buyer works the other way around. He orders what he needs this week, you ship it, and the two of you settle up at the end of the month against an invoice. Nobody's hunting for a card. The purchasing guy at a contractor's office may not even have one, and if he does, he isn't authorized to use it for a four-figure order without a PO.
So the store asks for payment and the buyer has nothing to give it. That's the whole problem. He either calls the office to place the order the old way, which defeats the point of building the store, or he doesn't order at all.
What has to change is the path, not the product. A logged-in buyer who's been approved for payment terms should reach a checkout that closes the order without charging anything, and sends an invoice instead. Everyone else sees the normal card checkout.
Two groups, two paths, one store. Shopify can do that, and it does it by knowing who's logged in and what you've tagged them as.
What a logged-in buyer sees once payment terms are set
The buyer signs in and lands in his account area. His past orders are there, his company's address is already filled in, and the prices he sees are his, not the retail ones. He adds what he needs and goes to checkout.
The difference shows up on the payment step. Instead of a card form, he gets an option to pay by invoice, with the terms he was approved for written next to it. He confirms the order. No charge hits anything. The order lands in your admin the same as any other, flagged as unpaid, and an invoice goes out with a due date on it.
That's the experience. Getting there depends on which version of Shopify you're on, and this is where a lot of store owners get a surprise.
Shopify's real B2B tooling lives under Customers > Companies in the admin. A company record holds locations, the people allowed to buy for it, a price list, and payment terms like net 30 assigned to that account. The checkout then behaves differently for anyone buying on behalf of that company. Those company and payment-terms features have historically been tied to **Shopify Plus**, and what's included on lower plans has moved around. Don't take anyone's word for it, including ours. Open your admin, look for Companies in the Customers menu, and check your plan's feature list in Settings.
If Companies isn't there, you aren't stuck. You can approximate the same thing with customer tags, a hidden wholesale catalog, and draft orders that go out as invoices, or with a wholesale app that adds the terms layer on top.
The buyer's experience should be the same either way: log in, see your prices, place the order, pay later.
How to set up wholesale accounts on Shopify
Three pieces do the work, and they're the same three whether you're on a B2B plan or building it yourself with customer tags.
First, the gate: wholesale prices and wholesale products only show to someone who's logged in and marked as a wholesale buyer. Second, the payment route: an order from a tagged account becomes an invoice instead of a card charge. Third, the limits: how much credit that account gets and when the invoice is due.
Build them in that order. Each one depends on the one before it, and the tag is what everything else keys off.
Gate the wholesale group behind a login and a tag
A wholesale price that anyone can see becomes your new retail price, and your retail customers will find it.
So the gate comes first. Create the account yourself, or let a buyer request one through a short form, and approve it by hand. When you approve, add a tag: wholesale, or net30, or whatever matches the terms you agreed to. Shopify's customer tags are plain text labels on the customer record, and almost everything downstream reads them — pricing rules, payment routing, email flows.
Then hide the wholesale catalog behind login. On a Shopify B2B plan, that's built in through company profiles and catalogs. On a standard plan, you do it with a locked collection or an app that checks the tag before showing prices.
Either way, no tag, no prices. The approval is the gate, and a person makes it.
Route tagged orders to an invoice instead of a card charge
A card charge at checkout is the wrong ending for a buyer on terms. Shopify's B2B plans handle this with payment terms attached to the company profile, so the order places and the invoice comes due later. On a standard plan you get there a different way: the tagged buyer's cart becomes a draft order instead of a completed sale.
Draft orders are built for exactly this. Your office creates or receives the order, sends the invoice from Shopify, and the buyer gets a payment link they can use whenever the terms say to. The order sits in your admin as unpaid until it's settled.
The piece owners miss is who touches the draft. Someone on your side has to review it, confirm the terms tag still applies, and send it. Decide this week whether that's you or your office manager, and write the name down.
Set a credit limit and a due date for each account
Terms belong to the buyer, not the store. One contractor might be good for a few thousand on Net 30. A new account might start at Net 15 with a ceiling low enough that a bad month doesn't hurt you.
Tag accounts the same way you gated them: net30, net15, prepay. The tag tells your office what due date goes on the invoice when the draft order gets sent. If you're on Shopify's B2B features, payment terms attach to the company profile and the due date calculates itself.
The credit limit is the part Shopify won't watch for you on a standard plan. Keep a short list — account name, ceiling, current open balance — and check it before anyone approves a new order. A spreadsheet works. What doesn't work is deciding the ceiling after the order already shipped.
A customer tag can't decide who gets terms
Software can hold a rule. It can't make one.
Shopify will happily tag an account net30 and send the order through as an unpaid draft. It has no idea whether that buyer pays on time, whether they've been slow twice already, or whether their current open balance is bigger than you're comfortable carrying. Those are calls a person makes, and if nobody's name is on them, they get made by whoever happens to be at the counter when the request comes in.
Three decisions need an owner:
- Who gets an account. Someone reviews the application, checks that it's a real business, and approves or declines. That person needs the authority to say no.
- What the credit limit is. A dollar ceiling per account, written down, revisited when a buyer's volume grows or their payment history turns.
- What payment terms they get. Net 15, Net 30, prepay. New accounts and long accounts don't have to be on the same clock.
In a small shop this is usually the owner, sometimes the office manager with a cap above which she brings it to the owner. Either works. What fails is "we'll figure it out when it comes up," because by the time it comes up the buyer is on the phone asking for a delivery date and the easy answer is yes.
Write the names next to the decisions. Who approves accounts. Who sets limits. Who's allowed to extend terms on a one-off order, and up to what amount.
Then the store does the mechanical part: it checks the tag, applies the due date, and sends the invoice. It carries out your policy. It has none of its own.
What happens when a wholesale invoice goes past due
Nothing. That's the problem. The order shipped, the invoice sat, the due date passed, and unless someone is looking, the store keeps taking orders from that buyer like nothing happened.
Three things have to exist before you open a single account on terms.
The first is an aging report — a list of open invoices sorted by how late they are. Most accounting tools already have one; QuickBooks and Xero both do. If your orders live in Shopify and your invoices live somewhere else, decide now which one is the record of truth, because two half-right lists is worse than one you actually read. Put it on the calendar. Monday morning, five minutes.
The second is a reminder that goes out before and after the due date, not just after. A buyer on Net 30 who gets a note at day 25 often pays on time. A buyer on Net 60 who hears nothing until day 70 has already slotted you behind whoever did ask.
The third is a rule about the next order. Decide whether a past-due balance blocks new orders, slows them to prepay, or does nothing until a certain point. Then make the store enforce it. In practice this is a tag swap — the account moves out of the terms group and into prepay until the balance clears, and the checkout stops offering terms on its own.
The mechanics are easy. The hard part is that someone has to be willing to say no to a buyer who's been ordering for two years.
Reminders can run off the Net 30 clock on their own
Chasing unpaid invoices is one of the automations we build for trade shops, and the shape of it is simple. The invoice goes out. A reminder follows on a schedule tied to the due date. If it's still open after a set point, the owner or office manager gets a note that this one needs a person.
That pattern moves over to a wholesale store almost unchanged. The order lands, the invoice is created, and the reminder sequence runs off the terms on the account. Nobody has to remember that the lumber yard's Net 30 lands on the 14th.
What the automation should never do is decide. It can send the day-25 note. It can flag the account at day 45. It cannot tell you whether this buyer, who is three weeks late for the first time in two years, gets a phone call or gets switched to prepay. That's a read on the relationship, and it belongs to whoever owns the account.
So split the work on purpose. Write down which reminders go out and when, and let the system handle every one of them without asking. Then write down the points where a human steps in: the first missed due date on a new account, a balance over your comfort line, any buyer who asks for an extension.
The office manager stops doing the remembering. They keep doing the deciding, which is the part that actually needs them.
Bigger orders, smaller orders, and deposits don't need the same terms
A buyer who reorders the same box of fittings every month is a different risk than the same buyer placing a special order that ties up your cash for six weeks. Same account, same tag, same login. Very different exposure.
So set the payment terms by order size, not just by customer. Shopify's payment customization rules let you show or hide payment methods based on what's in the cart and what tag the account carries. A tagged wholesale buyer under your threshold sees the invoice option and checks out on their own. Over that threshold, the invoice option disappears and the order comes to you first.
That second path is where draft orders earn their keep. The office builds a draft order, adds the deposit as a line or collects it with a payment request, and sends the balance on terms once the goods ship. The buyer still gets the account treatment. You're just not funding the whole thing yourself.
Pick your threshold before you build anything. The number should be the point where an unpaid order starts to hurt — whatever that is for your cash position this quarter. Write it down next to the terms policy.
A few combinations worth having ready:
- Routine reorder, under the line: straight net terms, no touch from the office
- Large or special order: deposit up front, balance on terms, built as a draft order
- New account, first few orders: prepay or card, terms unlocked after they've paid on time
The rules only work if someone checks them against reality every so often. A buyer's volume grows. Your comfort line moves. Review both when you review pricing.
Apps, native tools, and what's worth paying for
Every app you add is a monthly bill and one more thing that can break during a Shopify update. So the first question is whether the manual version is actually painful yet.
If you have six wholesale customer accounts set up on net terms in Shopify and they order twice a month, draft orders and a tag will carry you. Someone in the office builds the order, sends the invoice, marks it paid. That's maybe ten minutes a week. No subscription beats ten minutes a week.
The math changes when the volume does. Thirty accounts placing weekly orders is a different job, and hand-building draft orders becomes the bottleneck.
Before you pay for a third-party app, get answers to these:
- What exactly does it do that you can't do with tags, customer accounts and draft orders?
- Does it hold the credit limit and the terms, or does it just hide prices from people who aren't logged in?
- If you cancel it, do your accounts and terms data stay in Shopify, or does it leave with the app?
- Who fixes it when it conflicts with your theme or your other apps?
That last one matters more than the feature list. An app that handles gating but not invoicing means you're still doing half the work by hand, only now you're paying for it.
Check the native tools first. Pay for the gap that's left.
Write the terms policy before anyone touches the build
Every tag, every automation, every email template is just a policy written in code. If the policy doesn't exist yet, you're going to invent it halfway through the build, under pressure, and it will show.
Open a document. One page is enough. Answer these before anyone logs into Shopify:
- Who approves an account. Name a person. Not "the office." A person who decides yes or no and knows what they're looking at.
- What they look at. Trade license, business name, how long they've been buying from you, a reference, a prior order history. Write down what's required and what's optional.
- What credit limit a new account starts with, and what it takes to raise it. Decide whether a first-time buyer gets terms at all or pays by card for a stretch first.
- What your payment terms actually are. The number of days, when the clock starts, and whether it starts at order or at delivery.
- What counts as late, and what happens at each stage. A reminder, a call, a hold on new orders, a stop.
That last line is the one owners skip. Without it, the first past-due invoice turns into a debate instead of a step.
Then hand the page to whoever is doing the build. Tags get named after the terms in the document. Reminder timing matches the due dates you wrote. The store carries out a decision you already made.
Get the gate, the tags, and the chasing automation set up right
The build is the easy half. A locked storefront section, a tag on each approved account, an order route that creates an invoice instead of charging a card, and a reminder schedule that matches your due dates. Most of that is configuration and a few hours of careful work. It goes wrong when nobody wrote down who gets terms and what happens when they're late, so the tags end up meaning something different to every person who touches them.
Pick one afternoon this week. Write the approval rule, the terms, and the late steps on a single page. Then look at your store and see which of those four pieces already exists and which one is missing.
We build unpaid-invoice chasing as a standard automation for our trades clients, and the pattern carries over to a wholesale store: the reminders run on their own, the account holds and the hard calls stay with a person. If you want a second set of eyes on the gate, the tags, or the chasing before you commit to a build, you can New Project Consultation with us and we'll walk through what you have.
Keep Reading
More Practical Reading.
Real articles on business systems, websites and automation.
