Skip to main content

Prepaid (Separate Orders)

Why use Prepaid (Separate Orders)?

Shopify natively supports prepaid subscriptions as a single paid order followed by additional scheduled orders. That scheduled-order status is what causes problems with some third-party apps (3PLs, inventory, fulfillment, reporting) — they don't always know how to handle a scheduled order or one Shopify auto-fulfills.

Prepaid (Separate Orders) is an Appstle workaround. The customer is charged the full bucket amount upfront on cycle 1, and every subsequent fulfillment in the bucket is sent to Shopify as a brand-new recurring order priced at $0. From Shopify's perspective each fulfillment is a real, separate order — no scheduled state, no fulfillment quirks.

If you don't have third-party or fulfillment problems with standard prepaid, please use our standard Prepaid or Prepaid (Auto-renew) plan types instead. Reserve Prepaid (Separate Orders) for the cases where the workaround is genuinely needed.

How it works

The cycle schedule is what makes Prepaid (Separate Orders) work. For a 3-fulfillment bucket of a $9.95 product, the plan needs to bill $29.85 on cycle 1 and $0 on cycles 2 and 3, then restart the next bucket at $29.85 on cycle 4. Appstle drives this with Shopify's per-cycle pricing policy.

There are two equivalent ways to configure this. Pick whichever fits your catalog better.

How to Set Up Prepaid (Separate Orders)

Option A — Offer Incentives, Fixed Pricing (recommended)

Keep your original product at its normal $9.95 price and let the plan handle the bucket pricing.

  1. Go to Subscription Plans → Create Subscription Plan and add your original product.

  2. Edit the Subscription Frequency. In General, set Billing type = Prepaid (Separate Orders), set Billing Frequency to the bucket length (e.g., every 3 months), and set Order fulfillment frequency to 1 month.

  3. Open Offer Incentives → Fixed Pricing on the plan.

  4. Set the cycle 1 fixed price to the full bucket amount — for the worked example, $29.85 (= 3 × $9.95).

  5. Set cycle 2 and cycle 3 fixed price to $0 (or apply a 100% discount). The bucket then restarts on cycle 4 and Appstle re-applies the schedule automatically.

Customer sees one upfront charge of $29.85 on cycle 1; the next two fulfillments cost them nothing. No need to duplicate the product or raise its price.

Option B — Dedicated product (advanced setup)

If you'd rather model the bucket as a single higher-priced product, create a dedicated product whose price equals the full bucket:

(Billing Frequency ÷ Order fulfillment frequency) × original product base price

For the worked example — 3 fulfillments of a $9.95 product — the dedicated product price should be $29.85.

Use Shopify's Duplicate on the original product to save time.

Then create the plan the same way as Option A, but skip the Offer Incentives → Fixed

Pricing step — the higher dedicated-product price already covers the bucket.

Shipping

Because each fulfillment is sent to Shopify as a separate recurring order, standard Shopify / Appstle shipping rules fire on every cycle. If you want the customer to pay all shipping upfront (just like the product), create a dedicated Shipping Profile in Shopify Shipping and Delivery Settings for this product and set the shipping cost to:

(Billing Frequency ÷ Order fulfillment frequency) × original shipping cost

Otherwise, the standard shipping fees in your Shopify Admin or Appstle Shipping Profile apply on each new order.

What's restricted mid-bucket

Because the bucket is held together by the per-cycle pricing policy, some changes mid-bucket would corrupt the $0 cycles or the upfront charge. To prevent silent over- or under-charging, Appstle blocks those changes on Prepaid (Separate Orders) contracts:

  • Quantity change — blocked. Increasing or decreasing qty mid-bucket would mismatch the prepaid total.

  • Swap product — blocked. Swapping changes the base price and would invalidate the cycle-1 charge.

  • Add product — blocked for the same reason.

  • Billing / Order Frequency change — blocked. The bucket cadence is baked into the pricing policy.

  • Skip / Pause / Resume / Cancel — supported. Skip delays the next cycle in the bucket; cancel ends the contract immediately. No money moves retroactively.

  • Order now — supported, but it triggers the next cycle in the bucket; it does not start a new bucket.

If a customer needs a change that's blocked, the recommended flow is to cancel the contract and re-subscribe on the new configuration.

Did this answer your question?