Are Selling Plans required for fully paid pre-orders that arent immediately fulfilled on release date?

Hi everyone,

We run an app that supports pre-orders where the customer pays the full product price at checkout. Only fulfillment is delayed. We don’t use deposits or collect a remaining balance later.

Feedback from a recent App Store review gave us the impression that any functionality presented as a pre-order must use a SellingPlanGroup and SellingPlan with the PRE_ORDER category.

We’ve implemented this with a 100% checkout charge and NO_REMAINING_BALANCE, but it has a significant downside: local payment methods such as iDEAL and Klarna, as well as accelerated checkouts such as Shop Pay, Apple Pay and Google Pay, become unavailable. This happens even though there is no deferred payment.

Furthermore, this places holds that are not app owned, which gives us issues with certain functionality as well. The preorder doesn’t ship immediately when the release date is reached, so selling plans are not a good fit for us.

Could someone from Shopify clarify:

  1. Are Selling Plans required for all pre-orders, including those paid fully upfront?
  2. Would a normal one-time purchase with clear pre-order disclosures, metadata and delayed fulfillment be compliant?
  3. If Selling Plans are required, is there any supported way to retain local and accelerated payment methods when there is no remaining balance?
  4. Is improving payment-method support for fully paid pre-orders on the roadmap?

We want to follow Shopify’s requirements correctly, but losing these payment methods has a major impact, particularly for Dutch and European merchants.

Thanks!

Hey @Jeroen_Boers! I looked into this for you and found you’re correct that Shopify treats pre-orders as a purchase option even when the customer pays the full price at checkout. The purchase options overview defines these as any experience beyond “buy now, pay now, and ship now,” and delayed fulfillment falls into that category.

The deferred-purchase modeling guide outlines that regardless of your app’s internal representation, you need to save the selling plans in Shopify using SellingPlanGroup and SellingPlan, with the category set to PRE_ORDER. A normal one-time purchase with pre-order disclosures and metadata isn’t a documented substitute for that model.

On payment methods, we publicly document a limitation: customers can’t use local payment methods for pre-orders, and the supported gateways are Shopify Payments, PayPal Express, Adyen on Shopify, and Stripe for eligible merchants. This restriction applies to pre-orders generally and isn’t conditioned on whether a remaining balance exists, so charging 100% at checkout with NO_REMAINING_BALANCE doesn’t create a documented exception. Your NO_REMAINING_BALANCE billing policy is the correct configuration for a full-pay plan.

What the public docs don’t explicitly cover is whether Shop Pay, Apple Pay, and Google Pay must also be unavailable for this specific configuration, and there’s no public documentation on the fulfillment holds you’re seeing. I’m checking on those two points and the roadmap question internally and will follow up here once I have something concrete - thanks for posting here!

Hi @Donal-Shopify ,

Thanks for the detailed explanation! In that case we’ll be implementing Selling Plans and making sure we are fully compliant

Hi @Donal-Shopify ,

Is it required to have the scopes ‘read_customer_payment_methods’, ‘read_payment_mandate’ and ‘write_payment_mandate’ even though we will be doing none of that?

Hi @Jeroen_Boers, thanks for waiting to hear back from me!

I’ve heard back from the Selling Plan team internally who confirmed that any cart containing a Selling Plan removes iDEAL, Klarna, and other local payment methods, as described in Shopify’s purchase option limitations. For a PRE_ORDER that charges 100% at checkout with NO_REMAINING_BALANCE, Shop Pay, Apple Pay, and Google Pay should remain available. They also confirmed that the fulfillment hold is a Shopify system hold with reason UNKNOWN_DELIVERY_DATE. It has no automatic release, but Admin or an app with the required fulfillment-order write access can release it with fulfillmentOrderReleaseHold using the hold IDs. The app does not need to own the hold.

Delayed fulfillment makes this a pre-order purchase option because it falls outside the “buy now, pay now, and ship now” model. Shopify’s deferred purchase modeling guide says pre-order apps must save SellingPlanGroup and SellingPlan in Shopify, with the category set to PRE_ORDER. A normal one-time purchase with pre-order disclosures and metadata is not documented as a substitute. There is no supported way to retain local payment methods with a Selling Plan, and no roadmap commitment to change that at this time.

On your scope question, technically you don’t need any of those scopes based on what you’ve described above. The deferred purchase option implementation guide lists read_customer_payment_methods, read_payment_mandate, and write_payment_mandate in its standard pre-order scope set though, so I’m checking this with the app store review team internally to be absolutely sure. I’ll follow up here again once I hear back from them!

Hey @Jeroen_Boers - thanks for waiting to hear back from me! I checked this with App Review, and they confirmed that a PRE_ORDER purchase option app must request read_customer_payment_methods, read_payment_mandate, and write_payment_mandate under requirement 5.4.3, even when it charges 100% at checkout and does not collect a later balance. NO_REMAINING_BALANCE does not create an exception to this requirement.

Let me know if you have any other questions on this and I’ll be happy to help!