Extending credit to wholesale accounts is standard in B2B manufacturing, but it introduces risk that needs to be managed actively. A customer with Net 30 terms who hasn't paid in 60 days shouldn't be able to place new orders freely. A new account with no credit history shouldn't automatically receive the same terms as a long-standing one.
Shopify Plus B2B handles the mechanical side of credit: payment terms at checkout, credit limits that block orders when exceeded, and outstanding balance visibility in the customer portal. The judgment side, deciding who gets credit, how much, and what happens when someone goes past due, requires a process that wraps around those features.
This post covers what Shopify does natively for credit management, where the gaps are, and how to build the surrounding workflows.
In Shopify Plus B2B, you can set a credit limit at the company location level. When a buyer's outstanding balance reaches that limit, Shopify blocks them from placing additional orders until their balance is reduced.
To set a credit limit:
The credit limit applies to the sum of unpaid invoices for that company location. Once the outstanding balance hits the limit, the buyer can't check out until a payment is applied.
This is a hard stop, which is useful but blunt. There's no graduated warning at 80% of the limit, no differentiated handling for customers approaching vs. exceeding the limit. If that nuance matters to your operation, you'll need to build it with Shopify Flow or a third-party tool.
Payment terms (Net 30, Net 60, Net 90, due on receipt, and deposit-based structures) are configured per company location and apply automatically when a B2B buyer checks out. Buyers on terms don't pay at checkout; they receive an invoice with a payment due date.
For a full breakdown of payment term configuration options, see Best Payment Options for B2B Customers on Shopify.
B2B buyers using Shopify's new customer accounts can see their outstanding invoices and balance in their portal. This reduces inbound calls asking "what do I owe?" and gives buyers a self-service way to understand their account status before placing an order.
Understanding the gaps matters before you build your process.
No automated credit scoring or approval: Shopify doesn't evaluate creditworthiness. You decide who gets terms and how much credit to extend, and you configure that in the admin manually. There's no workflow that takes a new account application, checks payment history or credit references, and outputs a recommended limit.
No AR aging reports: Shopify's built-in reports show unpaid orders and payment status, but they don't generate a structured AR aging report (current, 30 days, 60 days, 90+ days). That level of AR visibility lives in your accounting system or ERP, not in Shopify.
No past-due notifications to customers: Shopify sends invoice emails when a draft order is converted and an invoice link is generated, but it doesn't automatically send payment reminders when an invoice goes past due. If you want automated dunning, that's a workflow you build externally.
No collections workflow: Following up on overdue accounts, escalating to collections, applying late fees, these are processes that happen outside Shopify.
The practical implication: Shopify manages the credit limit enforcement at the point of order. Everything upstream (credit approval, terms setting) and downstream (AR tracking, collections, past-due follow-up) happens in your accounting system, ERP, or manual workflow.
Before a new wholesale account can order on terms, they should go through a credit review. Shopify doesn't have a native credit application workflow, but you can build one.
A workable approach:
Until you complete this setup and assign terms, the account can't check out on credit. If you want to let approved accounts self-serve from day one, have the company and catalog configured before you send them the portal link.
For gating new account access until approval is complete, see Gated B2B Login and Wholesale Application on Shopify.
Once accounts are active, you need visibility into who owes what and how overdue they are. Shopify gives you piece of this; your accounting system or ERP gives you the rest.
In Shopify:
In your accounting system or ERP:
The integration between Shopify and your ERP is where this comes together. When a Shopify B2B order is synced to your ERP as a sales order and the invoice is generated, your AR team manages collections in the ERP. Shopify's credit limit enforcement acts as a front-line gate; your ERP's AR module handles the follow-through.
When an account goes past due, you have a few options for how to handle new order attempts in Shopify.
Option 1: Reduce the credit limit to zero
Setting a company location's credit limit to $0 effectively blocks all new orders immediately. This is the simplest approach and doesn't require automation. The buyer will hit the credit block at checkout.
The downside: it's manual. Someone on your team needs to update the limit when an account goes past due and restore it when the balance is cleared.
Option 2: Use Shopify Flow to automate the hold
If your AR process generates an output you can act on (a tag applied via your ERP integration, or a threshold calculated from Shopify's order data), Shopify Flow can automate the hold:
Flow can also notify your sales team when an account is tagged for credit hold so they can reach out to the customer before the buyer discovers the block themselves.
Option 3: Route new orders to draft for review
Rather than blocking outright, set the company's order submission to require draft review. New orders from that account become draft orders that your team can evaluate before confirming. This is gentler and preserves the customer relationship while you resolve the payment issue.
For order review workflow configuration, see How to Set Up B2B Order Review Workflows in Shopify.
Getting invoices paid requires follow-up. Shopify doesn't send reminder emails automatically, so you need to build that process.
Manual approach: Your AR team exports unpaid Shopify invoices weekly, cross-references with your accounting system's aging report, and sends reminder emails or calls accounts. Simple and doesn't require any integration, but it scales poorly.
Shopify Flow approach: Flow can send internal notifications to your team when invoices reach a certain age (if you're using tags or order date logic), but it can't send customer-facing payment reminder emails directly in most setups. For that, you'd pair Flow with an email platform via a webhook.
n8n approach: For a more automated dunning workflow, n8n can:
This keeps the communications automated and consistent without requiring manual AR review of every account.
Credit limits shouldn't be static. A customer who consistently pays on time is a candidate for a higher limit. One who has had collections issues warrants a lower one or stricter terms.
Build a review cadence into your AR process:
Adjustments happen in Customers > Companies > [company location] > Payment terms in your Shopify admin. They take effect immediately: a limit increase allows the buyer to place orders they couldn't before, and a limit decrease blocks orders that would have gone through.
Customer tags in Shopify give you a way to segment your B2B accounts by credit status and use those segments to drive automation and reporting.
A useful tag structure:
These tags make it possible to filter your customer list by status, build Shopify Flow automations that respond to tag changes, and sync credit status back to your CRM or ERP for a unified view.
For broader segmentation strategy, see How to Use Customer Segmentation in Shopify for B2B Success.
A common mistake is expecting Shopify to be the system of record for accounts receivable. It isn't, and building that expectation into your process creates gaps.
Shopify manages:
Your accounting system or ERP manages:
The integration between Shopify and your ERP should sync order and payment status bidirectionally so both systems reflect the same reality. When a payment comes in and is applied in your ERP, that update should flow back to Shopify so the outstanding balance in the customer portal is accurate.