Shopify Recurring Orders for B2B, Without Subscriptions
B2B checkouts reject selling plans, so no subscription app works. Vaulted cards plus two Flow workflows give you recurring orders that bill themselves, with no manual invoicing.
By AjayCodeWiz · July 28, 2026 · 10 min read
The problem
A merchant on the Shopify Community runs a purely B2B store, no consumer checkout at all. They wanted to sell maintenance bundles as a subscription.
They had done the research. Days of it. Asked AI, searched apps, contacted app developers, and kept arriving at the same two options:
- Auto-generated draft orders that a human processes by hand. No customer self-serve.
- Stack a B2B app and a subscription app together and hope they cooperate.
Their words on option two: "This option terrifies me."
The replies confirmed the wall was real, which it is. Then they went further and said something that is no longer true: that the customer has to complete each payment manually.
That part is solved, and it has been for a while. Here is what actually works.
Why subscription apps cannot work on B2B
Worth being precise, because this is what makes app shopping a waste of time.
Every subscription app on Shopify is built on selling plans. That is the platform primitive for "this line item recurs". A subscription app's whole job is creating selling plans and attaching them to products.
B2B checkouts do not support purchase options, and selling plans are a purchase option. Shopify's developer documentation states this directly. Draft orders cannot carry selling plans either, so there is no side door there.
This is why stacking a B2B app on top of a subscription app does not help. The B2B app adds features around the checkout; it does not change what the checkout accepts. You discover the problem later, at payment, instead of earlier, during setup. The wall moves, it does not disappear.
So: no subscription app, no matter how it is marketed, will do recurring billing on a B2B checkout. Stop evaluating apps for this.
What does work: split the order from the money
The insight is that "subscription" bundles together two things you can build separately.
Producing a recurring order. No native answer. Flow can send a draft order invoice but has no action that creates a draft order, so this piece needs the Admin API.
Collecting the payment automatically. This has a native answer, and it is the part the thread had wrong. Shopify supports credit card vaulting for B2B. The buyer saves a card once, at checkout or from their customer account, and Flow can charge it when payment terms fall due.
Build them as two workflows, once per customer.
The finished two step billing workflow
Workflow 1: create the order
Trigger: Scheduled time, set to monthly.
Then add the action Send Admin API request and pick draftOrderCreate.
draftOrderCreate and draftOrderComplete inside the Send Admin API request action
In the mutation you set:
- the company location as the purchasing entity, so the order is a real B2B order on that company's account
- your maintenance items as line items
- payment terms, whatever you use: Net 15, Net 30, and so on
Then add a second Send Admin API request with draftOrderComplete to turn the draft into a real order.
Two calls, not one, because draftOrderCreate gives you a draft and draftOrderComplete is what commits it. Splitting them is also useful if you ever want a human to review before committing: leave out the second call and the draft waits in the admin.
You do not need a bundle product
The merchant's original plan was to build the maintenance bundle as a single product, or fight with a bundling app to combine items.
Skip it. A draft order takes the individual items as separate line items, each priced from that company's catalog. So the "bundle" is just the line items in your workflow.
That is better than a bundle product in two ways. The company's negotiated pricing applies per item, automatically, because that is what B2B catalogs do. And changing what is in the bundle month to month means editing one workflow, not rebuilding a product and its variants.
Workflow 2: collect the money
Trigger: Payment schedule is due.
Selecting the Payment schedule is due trigger in Flow
This trigger fires when payment terms you set on an order come due. Because workflow 1 sets payment terms, workflow 1 is what eventually fires workflow 2.
Then add the action Charge vaulted payment for B2B order.
Selecting the Charge vaulted payment for B2B order action
That is the entire second workflow. Flow fills in the payment schedule field itself from the trigger, so there is nothing to configure.
Shopify charges the saved card. The customer does nothing.
Both halves of this are first party and documented. There is no app involved in the billing at all.
Prerequisites, and the honest limits
Four things to know before you build it, because they are the constraints that decide whether this fits your business.
Shopify Payments is required. Vaulted cards do not work with other gateways. If you are on a third-party gateway, the automatic charge half of this does not exist for you, and you are back to invoicing.
The buyer saves the card, and only the buyer can. You cannot save it on their behalf. So there is a one-time human step at the start of each customer relationship: they check out once, or add a card from their customer account. After that it is hands-off.
Debiting a bank account instead of a card is US only. If your buyers want ACH rather than card, check availability in your market first.
There is no buyer-facing portal. Nobody can pause, skip, or swap items themselves. They email you, and you edit the workflow. For a maintenance-bundle business with a handful of accounts, that is usually fine. For hundreds of self-serve accounts, it is not, and that is the point where a consumer checkout lane starts to look reasonable.
That last one is the real trade-off, and it is worth stating plainly rather than discovering it in month three.
Why not just use a consumer checkout for these buyers?
This is the alternative the thread raised, and it is legitimate. Sell the bundles through a normal D2C checkout, and use any subscription app you like.
What you give up is everything B2B gives you: company accounts, negotiated per-company catalogs and pricing, payment terms, tax exemption handling, purchase order numbers, and multiple buyers on one company location.
For a maintenance contract, those are usually the point. The customer is a company, the price is contract pricing, and finance expects Net 30. Pushing that through a consumer checkout to gain a subscription widget is trading the thing you need for the thing that is convenient.
So the decision is roughly: if the recurring items are genuinely commodity and the buyer behaves like a consumer, use a D2C lane. If they are contract items on company pricing with terms, use the two workflows.
The piece with no native answer
Being straight about this: Flow cannot create a draft order on its own.
There is no Create draft order action. The Send Admin API request action is how you get around that, and it means workflow 1 contains a GraphQL mutation you wrote rather than a UI you clicked together.
That is more fragile than a native action. If Shopify changes the mutation, your workflow breaks and you find out when an order does not appear. Worth adding a second, simpler workflow that alerts you if no order was created in a given month, rather than trusting it silently.
The alternative for this piece is a small scheduled script somewhere outside Shopify hitting the Admin API, or a tool like Mechanic. Both are more code, not less.
A worked shape
For a single customer on a monthly maintenance bundle:
- Workflow 1, scheduled monthly on the 1st.
draftOrderCreatewith company location, three line items, Net 30. ThendraftOrderComplete. - Order exists on the 1st, with terms due the 31st.
- Workflow 2 fires on the 31st from Payment schedule is due, charges the vaulted card.
- Repeat.
To onboard the second customer, duplicate workflow 1 and change the company location and line items. Workflow 2 is shared: it fires for any order whose terms come due, so you only build it once.
That last detail is worth noticing. The billing workflow scales to every customer with no extra work. Only the order-creation workflow is per customer, and only because the line items differ.
Common questions
Can one workflow handle all customers?
Workflow 2, yes. Workflow 1, only if every customer gets the same items on the same cadence, in which case you can loop over a customer segment instead of hardcoding one company location.
What happens if the card is declined?
The Flow action fails and the order stays unpaid with terms overdue. Add a branch that emails your team on failure, because otherwise you find out at month end.
Can I use payment terms without vaulting?
Yes, that is the standard B2B flow: order with Net 30, invoice sent, customer pays manually. Vaulting is what removes the manual payment. Without it you still get automatic recurring orders, just not automatic recurring payment.
Does this work with bundles built by a bundling app?
You do not need one, and mixing them in adds a dependency that may not respect B2B catalog pricing. Use plain line items.
Is there a B2B subscription feature coming?
Not announced. Treat the current limitation as the state of the platform, and build for it rather than around a maybe.
If it did not work
The draftOrderCreate call fails. Usually the company location ID is wrong or the buyer identity is not set, so Shopify treats it as a consumer draft order and rejects the B2B pricing. Check the mutation returns a draft order ID before adding the complete step.
Payment schedule is due never fires. The order has no payment terms. Terms have to be set in the draftOrderCreate call; they are not inherited automatically.
Charge vaulted payment fails with no card on file. The buyer has not saved one yet. This is the one step you cannot automate, so it belongs in your onboarding, not your workflow.
The order is created but at the wrong price. The purchasing entity is not set to the company location, so the company's catalog is not being applied.
Tested on
Built on a Shopify dev store: confirmed the Payment schedule is due trigger and the Charge vaulted payment for B2B order action both exist and pair without extra configuration, and confirmed draftOrderCreate and draftOrderComplete are reachable through the Send Admin API request action. The workflows were left as drafts. The vaulted-card charge itself was not run against a live card, since that needs a real buyer to save one first.
Building your own automation around a platform gap?
PinFlow handles one gap for you: getting your Shopify catalog onto Pinterest consistently, on a schedule, without a person doing it every week.
Get PinFlow on the Shopify App StoreMore Shopify fixes
More community-sourced Shopify guides, tested on a live store.
Shopify Admin
No Shopify Flow Trigger for Cancellation Requests
Shopify Flow has no trigger, no staff notification, and no Order field for self-serve cancellation requests. How to detect them with the Admin API events query, plus a zero-code saved-view stopgap. Verified against Shopify's trigger reference.
Shopify Admin
How to Bulk Edit Product Variants in Shopify
Shopify's bulk editor greys out variant fields, so most merchants edit variants one product at a time. There is a screen that does not, plus the CSV caveat that can quietly break your variant IDs.
Shopify Admin
How to Edit the Shopify Thank You Page (No Plus Needed)
The Thank You page is not in your theme, which is why searching theme code never finds the text on it. Here is where it actually lives and how to edit or delete blocks on it.