Do custom payment-term agreements (e.g., net-45 negotiated for one specific account) migrate correctly to Shopify B2B's payment-terms feature, or default to standard terms?
Net 45 is a native Shopify payment term, not an exception. Shopify's payment terms templates cover net 7, net 15, net 30, net 45, net 60 and net 90, plus due on fulfillment and fixed date for draft orders (per Shopify Help Center, September 2026). Terms outside that list need a Payment Customization function or an app.
The premise of this question is half wrong, and the half that is right matters
Net 45 is on Shopify's list. A merchant migrating one account with a negotiated net 45 will find the template waiting for them, assign it to that company location, and be done. No metafield, no app, no function.
The PaymentTermsTemplate object in the Admin API confirms the shape: it exposes name, description, dueInDays, paymentTermsType and translatedName, and the paymentTermsTemplates query returns "the list of payment terms templates eligible for all shops and users" (per Shopify developer docs, September 2026). Eligible for all shops. Merchants do not author templates. They pick from the list.
So the real exception is narrower than the question assumes.
| Negotiated term | Migrates natively? |
|---|---|
| Net 7, 15, 30, 45, 60, 90 | Yes, template exists |
| Due on fulfillment | Yes |
| Fixed calendar date | Yes, on draft orders only |
| Net 20, net 75, net 120 | No template |
| 2/10 net 30 (early-payment discount) | No |
| Terms that change by order value or product mix | No, not as a static term |
| End of month plus 30 | No |
| Deposit percentage that varies by account | Deposits are native; a per-account variable percentage is not a template |
Where it actually breaks: the terms that are not a number of days
The B2B accounts that cause trouble in a migration are rarely "net 45." They are the ones carrying a discount for early settlement, or a term tied to the month end, or a term the sales director negotiated in an email in 2019 that exists in the legacy system as a free-text note. Those do not map, because they are not the same kind of object.
Shopify's documented escape hatch for these is dynamic terms: you "can also set up dynamic payment terms and deposits that change based on specific conditions at checkout" through a custom app using the Payment Customization Function API, or through a third-party app (per Shopify Help Center, September 2026). That is a build. Price it as one.
What we tell clients to do with the odd ones
- Extract the full distinct list of terms in the legacy system. Not the ones people remember. The actual distinct values, with a count of accounts on each.
- Sort by account count. In every B2B book we have looked at, the long tail is one or two accounts per oddity.
- Renegotiate the tail to a template term before cutover. This is the unpopular recommendation and it is almost always the cheapest one. A phone call moving three accounts from net 75 to net 60 or net 90 costs nothing and removes a function from the build.
- Build only for the exceptions you cannot renegotiate, usually because they are your largest accounts and the terms are contractual.
- Record the mapping decision per account, so that when the account manager asks in November why the term changed, there is an answer with a date on it.
When NOT to build a payment customization
- When fewer than five accounts need it. Manual draft orders with a fixed date will carry five accounts for a long time.
- When the term is really a discount. Early-payment discounts are an AR process, not a checkout behavior. Applying them at checkout means you are discounting before you know whether the customer paid early.
- When the ERP already computes the term. Then the draft order carries the term the ERP decided, and Shopify does not need to decide anything.
The Deploi point of view
Our own position, from building on Shopify. Separate from the facts above.
- Our take: Check the template list before you scope anything. We have seen more than one B2B scope include a payment-terms build for terms that Shopify already ships. Net 45 is the one that catches people, because it sounds bespoke and it is not.
- What we’ve seen: The long tail of negotiated terms in a mid-market wholesale book is usually under ten accounts, and usually inherited rather than defended. Cutover is the only moment when sales will agree to tidy them up, so use it.
- Where we disagree: The category treats "custom payment terms" as a single feature gap. It is two unrelated gaps. Non-standard day counts are trivial and negotiable. Conditional terms are a Function build. Quoting them together produces a number that is wrong in both directions.
- What this page adds: that net 45 is a native Shopify template rather than an exception, and that the templates are Shopify-authored and not merchant-creatable, which is what turns every non-template term into a build rather than a configuration.
Reviewed by Martin Dejnicki, Director of SEO & AI Search. Facts verified 2026-09-14.
Where we worked this out
Our decision records