# What happens to active subscription contracts' billing cycles and payment tokens when migrating subscribers between any platform and Shopify's subscription data model?

Reviewed by Martin Dejnicki, Director of SEO & AI Search · facts verified October 9, 2026 · canonical: https://deploi.ca/shopify/faq/subscription-billing-cycles-payment-tokens-migration

## Short answer

An imported subscription contract starts again at billing cycle 1 ([Shopify's billing cycle guide](https://shopify.dev/docs/apps/build/purchase-options/subscriptions/billing-cycles), October 2026), bills on whatever nextBillingDate your app sets, and keeps its payment token at the issuing processor. Shopify calls nextBillingDate "independent of billing cycles" and "not managed by Shopify" ([Shopify's developer reference](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/SubscriptionContractAtomicCreateInput)), so nothing in Shopify catches a wrong date. Tokens bill only while that processor stays connected as a secondary gateway ([Shopify Help Center](https://help.shopify.com/en/manual/products/purchase-options/subscriptions/migrating-payment-methods)).

- **Next billing date on import:** nextBillingDate, set by your app. Required on every imported contract; Shopify calls it independent of billing cycles and not managed by Shopify (October 2026) ([Shopify developer docs, SubscriptionContractAtomicCreateInput](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/SubscriptionContractAtomicCreateInput))
- **Billing cycle count:** Restarts at cycle 1. Shopify indexes cycles from the contract's first version, so terms counted in cycles, such as a minimum number of cycles, count again from the import unless the import adjusts them (Deploi reading, October 2026) ([Shopify developer docs, About subscription billing cycles](https://shopify.dev/docs/apps/build/purchase-options/subscriptions/billing-cycles))
- **Processors Shopify bills tokens through:** Stripe, Braintree, PayPal Express, Authorize.net. As a secondary gateway for existing contracts; each card reaches the primary gateway only when its owner updates billing details, which can take months or even years (October 2026) ([Shopify Help Center, Migrating payment methods to your Shopify account](https://help.shopify.com/en/manual/products/purchase-options/subscriptions/migrating-payment-methods))
- **Card-number migration into Shopify:** Plus or Enterprise, credit cards only. Shopify Professional Services, a paid service; no PayPal billing agreements, wallets such as Venmo, Apple Pay or Google Pay, or bank account information (October 2026) ([Shopify Help Center, Migrating payment methods to your Shopify account](https://help.shopify.com/en/manual/products/purchase-options/subscriptions/migrating-payment-methods))

## Deploi's call

An imported subscription contract keeps its payment token at the processor that issued it and restarts its billing cycles at 1, by Shopify's own documentation. So decide the gateway question before the platform question. Whether you can keep the processor is upstream of which subscription app you choose, and reversing that order is how migrations acquire a surprise re-collection campaign halfway through.

**CUSTOMIZE: Keep the old processor as a secondary gateway when**

- It is Stripe, Braintree, PayPal Express or Authorize.net, the four processors Shopify migrates payment information from ([Shopify Help Center](https://help.shopify.com/en/manual/products/purchase-options/subscriptions/migrating-payment-methods), October 2026).
- Most subscribers pay by card, which Shopify's import takes from Stripe, Braintree and Authorize.net ([Shopify developer docs](https://shopify.dev/docs/apps/build/purchase-options/subscriptions/migrate-to-subscriptions-api/migrate-customer-information), October 2026).
- You can keep that processor account open for the months or years a slow drip takes.
- Your app vendor confirms in writing which payment methods transfer, the answer [our subscription migration record](https://deploi.ca/shopify/build-vs-buy/subscription-platform-migration) says decides half the risk (October 2026).

**BUY: Buy a card-data migration when**

- Your store is on Shopify Plus or Enterprise and you want the old gateway switched off, because Shopify Professional Services migrates card numbers as a paid service ([Shopify Help Center](https://help.shopify.com/en/manual/products/purchase-options/subscriptions/migrating-payment-methods), October 2026).
- Your processor isn't one of Shopify's four, so the cards move to Stripe or Authorize.net first, as Skio advises ([Skio Help Center](https://help.skio.com/docs/migrations-migrating-subscriptions-from-outside-of-shopify-woocommerce-bigcommerce-magento-custom-solutions), October 2026).
- The receiving processor meets Payment Card Industry (PCI) Data Security Standard Level 1, the only kind Stripe exports card data to ([Stripe](https://docs.stripe.com/get-started/data-migrations/pan-export), October 2026).

## Where does an imported contract's next billing date come from?

An imported contract's next billing date comes from `nextBillingDate`, a required field your subscription app sets on each contract. Shopify's reference calls the field "independent of billing cycles" and says it "stores metadata set by the apps, and thus not managed by Shopify" ([Shopify developer docs](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/SubscriptionContractAtomicCreateInput), October 2026). Shopify doesn't charge on that date by itself either: "You need to create billing attempts to trigger the billing schedule of a contract" ([Shopify developer docs](https://shopify.dev/docs/apps/build/purchase-options/subscriptions/migrate-to-subscriptions-api/migrate-subscription-contracts), October 2026). So a contract imported with the wrong date bills on the wrong date, confidently, with no cycle arithmetic in Shopify to catch it. The date is one detail in [the full order for moving an active subscription program](https://deploi.ca/shopify/faq/migrate-active-subscriptions-during-replatform), where each contract is recreated after its customer and payment method.

## What happens to the billing cycle count on an imported contract?

The billing cycle count starts again at 1 on an imported contract. Shopify says "Each billing cycle is indexed from when the first version of the contract is initialized", and an imported contract is a new one ([Shopify developer docs](https://shopify.dev/docs/apps/build/purchase-options/subscriptions/billing-cycles), October 2026). The billing policy carries the rhythm: `interval`, `intervalCount`, optional `minCycles` and `maxCycles`, and anchor dates for the interval calculation ([Shopify developer docs](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/SubscriptionBillingPolicyInput), October 2026). Import the billing policy and the nextBillingDate from two different exports and the subscriber is charged twice or not at all.

Anything counted in cycles restarts too, unless the import adjusts it. A three-cycle minimum on a subscriber who has already paid twice starts over, and a price step set to begin after cycle 2 applies again (Deploi reading of Shopify's cycle indexing). Shopify adds that a pricing policy "serves as a guide for apps" and that "the price of the line item does not update automatically" ([Shopify developer docs](https://shopify.dev/docs/apps/build/purchase-options/subscriptions/billing-cycles)). So [grandfathered prices belong on each contract line](https://deploi.ca/shopify/faq/grandfathered-subscription-pricing-migration).

## Do payment tokens move to Shopify?

Payment tokens don't move to Shopify: they stay with the processor that issued them, and Shopify bills them through that processor. A secondary gateway, "also known as the legacy subscription payment gateway", bills existing contracts. Shopify adds: "Your customers' payment methods are held by that processor, outside of Shopify" ([Shopify Help Center](https://help.shopify.com/en/manual/products/purchase-options/subscriptions/migrating-payment-methods), October 2026). Shopify connects four processors this way: Stripe, Braintree, PayPal Express and Authorize.net. New contracts, and contracts updated after migration, charge the primary gateway instead.

A payment method moves to the primary gateway only when its owner updates their billing details, so Shopify says this slow drip "can take months or even years" ([Shopify Help Center](https://help.shopify.com/en/manual/products/purchase-options/subscriptions/migrating-payment-methods)). The import is narrow too. Shopify takes only credit cards from Stripe, and only credit cards and Apple Pay through Braintree's import. PayPal methods held in Braintree move only when extracted and recreated as PayPal Express billing agreements, and Google Pay methods don't move ([Shopify developer docs](https://shopify.dev/docs/apps/build/purchase-options/subscriptions/migrate-to-subscriptions-api/migrate-customer-information), October 2026). Between two Shopify stores the rules change again: see [moving subscriptions from one Shopify store to another](https://deploi.ca/shopify/faq/store-consolidation-subscription-migration).

## Can card data move when the processor changes?

Card data can move when the processor changes, even though tokens can't, through a Payment Card Industry (PCI) compliant export from the old processor. Stripe says it will "work with your new processor's team to securely transfer your credit card data" ([Stripe](https://docs.stripe.com/get-started/data-migrations/pan-export), October 2026). Stripe sends card data only to a processor at PCI Data Security Standard Level 1, and it excludes payment details customers saved with Stripe's Link checkout. Braintree imports and exports card data with no fee, but says "we cannot migrate subscription or transaction information" ([Braintree](https://developer.paypal.com/braintree/articles/get-started/data-migration/overview), October 2026).

Into Shopify, Shopify Professional Services migrates card numbers as a paid service, on Shopify Plus or Enterprise only ([Shopify Help Center](https://help.shopify.com/en/manual/products/purchase-options/subscriptions/migrating-payment-methods), October 2026). If your processor isn't one of Shopify's four, Skio's advice is to move the payment data first to a compatible gateway "such as Stripe or Authorize.net" ([Skio Help Center](https://help.skio.com/docs/migrations-migrating-subscriptions-from-outside-of-shopify-woocommerce-bigcommerce-magento-custom-solutions), October 2026). So the processor question comes before the platform question, because it decides which of these routes is open to you.

## Which payment methods break when the account changes?

PayPal billing agreements, wallet tokens and bank-account debits break when the account or processor behind them changes, because each is tied to the account or processor that created it. Shopify: "PayPal billing agreements belong to the account that created them. If the new account can't use the previous account's agreements, then existing renewals can fail even when new PayPal checkouts work" ([Shopify Help Center](https://help.shopify.com/en/manual/products/purchase-options/subscriptions/migrating-payment-methods), October 2026). Shopify Professional Services can't migrate PayPal billing agreements, wallets such as Venmo, Apple Pay and Google Pay, or bank account information. Braintree excludes Apple Pay and Google Pay from its exports, because their network tokens are "not transferrable between providers" ([Braintree](https://developer.paypal.com/braintree/articles/get-started/data-migration/overview), October 2026). Braintree also says a stored bank debit is an agreement "to be charged only by that processor", which is why it asks merchants to accept extra legal terms before it migrates one.

Those subscribers re-enter a payment method, and timing matters. Shopify warns that repeated failed renewals can pause, skip or cancel a subscription, and "Updating a payment method can't restore a cancelled subscription contract" ([Shopify Help Center](https://help.shopify.com/en/manual/products/purchase-options/subscriptions/migrating-payment-methods)). So ask before the first renewal, with [subscriber messages that don't read as a cancellation](https://deploi.ca/shopify/faq/subscription-migration-messaging-active-subscribers), and hold your migration agency to [a card-retention rate written into scope](https://deploi.ca/shopify/faq/subscription-migration-churn-risk-benchmark).

## When should the payment side of the migration wait?

The payment side of the migration should wait whenever another payment change would share its window, because each change hides the other's failures.

> **When not to do this**
> - **When the old processor is Stripe, Braintree, PayPal Express or Authorize.net.** Those are the four processors Shopify migrates payment information from, so keep it as the secondary gateway, move platforms, and move the card data later if you must.
> - **When a large share pays by PayPal and the PayPal account would change.** Those renewals can fail outright, so that cohort needs its own plan and its own risk line.
> - **When re-collection would replace a working secondary gateway.** Every request to re-enter a card is a cancel decision you've invited.
> - **When both platforms would bill at once.** Shopify's guide says "We strongly recommend that you pause any billing in your current application while migrating customer payment methods and contracts" ([Shopify developer docs](https://shopify.dev/docs/apps/build/purchase-options/subscriptions/migrate-to-subscriptions-api/migrate-customer-information), October 2026). The idempotencyKey on a billing attempt only ensures it "executes only once, preventing duplicate charges if the request is retried" ([Shopify developer docs](https://shopify.dev/docs/api/admin-graphql/latest/mutations/subscriptionBillingAttemptCreate)), so it can't see the old platform's charges.

## Deploi's point of view

**What we've seen.** The anchor date is where the errors land. Cadence imports cleanly because it is a rule; nextBillingDate is a value, and values arrive from spreadsheets that were exported three days before anyone ran the import.

**Where we disagree.** The category talks about "migrating payment tokens" as though tokens are the thing that moves. The token stays exactly where it is. What moves is a reference to it, and only inside the same processor relationship, which is why the honest question is never "can we migrate tokens" but "can we keep this processor", and if not, "who will export the card data".

**What this page adds.** the two fields that carry the risk (nextBillingDate, which Shopify leaves to the app, and the payment method reference), the billing cycle count that restarts at 1 on every imported contract, the card-data exports processors offer when tokens can't move, and the PayPal billing-agreement exception.

## When this answer changes

- Shopify starts managing nextBillingDate itself, or lets an imported contract keep its old cycle count.
- Shopify adds a processor to the four it bills through a secondary gateway, or opens card-number migration below Plus.
- Shopify Professional Services starts migrating PayPal billing agreements or wallet payment methods.
- Stripe or Braintree changes which processors it will export card data to.
- PayPal lets billing agreements move between accounts.

## Sources

1. [Shopify developer docs, SubscriptionContractAtomicCreateInput](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/SubscriptionContractAtomicCreateInput), checked October 9, 2026
2. [Shopify developer docs, About subscription billing cycles](https://shopify.dev/docs/apps/build/purchase-options/subscriptions/billing-cycles), checked October 9, 2026
3. [Shopify developer docs, SubscriptionBillingPolicyInput](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/SubscriptionBillingPolicyInput), checked October 9, 2026
4. [Shopify Help Center, Migrating payment methods to your Shopify account](https://help.shopify.com/en/manual/products/purchase-options/subscriptions/migrating-payment-methods), checked October 9, 2026
5. [Shopify developer docs, Migrate customer information to Shopify](https://shopify.dev/docs/apps/build/purchase-options/subscriptions/migrate-to-subscriptions-api/migrate-customer-information), checked October 9, 2026
6. [Shopify developer docs, subscriptionBillingAttemptCreate](https://shopify.dev/docs/api/admin-graphql/latest/mutations/subscriptionBillingAttemptCreate), checked October 9, 2026
7. [Stripe, Request a payment data export](https://docs.stripe.com/get-started/data-migrations/pan-export), checked October 9, 2026
8. [Braintree, Data Migration overview](https://developer.paypal.com/braintree/articles/get-started/data-migration/overview), checked October 9, 2026
9. [Skio Help Center, Migrating subscriptions from outside of Shopify (Woocommerce, BigCommerce, Magento, Custom solutions)](https://help.skio.com/docs/migrations-migrating-subscriptions-from-outside-of-shopify-woocommerce-bigcommerce-magento-custom-solutions), checked October 9, 2026
10. [Shopify developer docs, Migrating existing subscription contracts to Shopify](https://shopify.dev/docs/apps/build/purchase-options/subscriptions/migrate-to-subscriptions-api/migrate-subscription-contracts), checked October 9, 2026
11. [Deploi Build vs. Buy, Recharge Alternatives: Build or Buy the Subscription Migration?](https://deploi.ca/shopify/build-vs-buy/subscription-platform-migration), checked October 9, 2026, Deploi research
