Raghav Mittal
Menu
Approach →
Services
Shopify CRO Find and fix the friction between a visit and a completed checkout: product pages, collections, cart, checkout, speed, trust and tracking. Subscriptions Launch, fix or migrate Shopify subscriptions: offer design, app choice, customer portal, cancellation flows, failed-payment recovery and retention reporting. Shopify & Web Build or clean up websites that are fast, trackable, SEO-ready, and designed around how buyers actually decide. Shopify Automation Connect Shopify orders, customers, inventory, fulfilment, support, subscriptions, and reporting so your team spends less time moving the same information. SEO & UX Find the crawl, speed, mobile, UX, and conversion issues that stop good pages from ranking or turning traffic into leads. AI Workflows Use AI practically inside business workflows: Excel analysis, PPT reporting, SOPs, dashboards, content, and team documentation. Automation Replace manual follow-ups, spreadsheet relays, and status chasing with trigger-based systems that move work automatically. CRM Systems Turn your CRM from a contact database into an operating system for pipeline, ownership, follow-up, and reporting. Lead Systems Capture, qualify, assign, and follow up with leads across forms, CRM, WhatsApp, email, and sales teams. GST + Tally Connect the work between sales, invoices, GST review, Tally, reconciliation, and management reporting so finance operations have fewer blind spots. TallyPrime Integration Connect approved orders, invoices, inventory and customer records to TallyPrime with maintained mappings, confirmed results and reconciliation. Tally TDL Development Adapt the work inside TallyPrime with scoped TDL fields, validations, reports and document layouts, tested against your installed release. Shopify + Tally Connect Shopify orders, payments and refunds to Tally with clear stock ownership, approved accounting mappings and daily reconciliation. Distribution Software Connect buyer catalogues, tier pricing, purchase orders, warehouse tasks and stock movements in one distribution application. How we workScope, review and first-milestone payment View all servicesBrowse the complete delivery bench →
Blueprints → Work → Blog → Free Audit → Book a strategy call
Shopify Consulting· Nov 10, 2026· 7 min read

Shopify Subscription App Migration: A No-Double-Charge Checklist

Move subscribers between Shopify subscription apps safely: what data moves, what happens to saved cards, and a staged cutover that avoids double charges.

Shopify Subscription App Migration: A No-Double-Charge Checklist

Article overview

  • A Shopify subscription app migration is safe when three things are true on cutover day: every active subscriber exists in the new app with the right product, price and next billing date; every subscriber has a payment method the new app can...
  • This checklist covers moves between any two subscription apps on Shopify, such as Recharge, Loop, Skio or the Shopify Subscriptions app. The steps are the same in each case. What differs is who runs the import and which data each app can ex...
  • Migrate when the current app cannot do something the programme needs, or when its cost no longer fits your subscriber count. Do not migrate to fix a weak offer, a confusing portal or poor failed-payment recovery. Those problems usually move...
  • A quick test: write down the one thing the new app will let you do that the current one cannot. If you cannot name it, fix the current setup first. The subscription dunning guide shows how much can change without switching apps.

Putting this workflow into practice? Explore Shopify Subscription Growth for implementation scope, controls, and next steps.

A Shopify subscription app migration is safe when three things are true on cutover day: every active subscriber exists in the new app with the right product, price and next billing date; every subscriber has a payment method the new app can charge; and the old app can no longer bill anyone. Most migration problems, including double charges, come from skipping one of those three checks.

This checklist covers moves between any two subscription apps on Shopify, such as Recharge, Loop, Skio or the Shopify Subscriptions app. The steps are the same in each case. What differs is who runs the import and which data each app can export, so confirm those two points in writing before you set a date.

When is it worth migrating at all?

Migrate when the current app cannot do something the programme needs, or when its cost no longer fits your subscriber count. Do not migrate to fix a weak offer, a confusing portal or poor failed-payment recovery. Those problems usually move with you.

A quick test: write down the one thing the new app will let you do that the current one cannot. If you cannot name it, fix the current setup first. The subscription dunning guide shows how much can change without switching apps.

What data has to move?

Four sets of records, in this order. Shopify's developer guide for migrating contracts follows the same sequence: customer records first, then subscription contracts, then billing.

Record What to check before cutover What goes wrong if it is missed
Customers Every subscriber has one customer record in Shopify, with a current email Contracts fail to import or attach to a duplicate customer
Payment methods Each subscriber has a payment method the new app is allowed to charge The first renewal fails and looks like churn
Subscription contracts Product, variant, quantity, price, discount, frequency and status match the old app Customers are charged the wrong amount or sent the wrong product
Next billing date The date in the new app matches the date the customer expects Early charges, late charges or two charges in one cycle

Selling plans are a fifth item, but they are for new customers. Create the plans in the new app before you import, so that new subscribers can sign up on the day you switch the product page over.

What does Shopify's own import require?

If you are moving to the Shopify Subscriptions app, the contract import documentation sets the rules. The ones that affect planning:

  • The old app must be integrated with Shopify Checkout. Contracts from an app that is not cannot be imported.
  • There is no direct connection to the old app. You export its data and reformat it into Shopify's CSV template, with every column present.
  • Each row needs an existing customer ID and a customer payment method ID.
  • A contract's status must be Active or Paused.
  • The upcoming billing date must be at least 24 hours after the import.
  • An import cannot edit or overwrite a contract that already exists, and a row that was imported successfully before is skipped.

The last point matters for testing. You cannot import a batch, spot a pricing mistake and fix it by importing again. Check the file before it goes in.

If you are moving to a third-party app, ask its team for the equivalent list: which fields they import, what they do with paused and cancelled subscribers, and whether discount codes and one-time add-ons carry over.

What happens to saved cards?

This is the question to settle first, because it can change the whole plan. If the cards are already stored with Shopify, a move between apps that both use Shopify Checkout usually leaves them in place. If they sit with another gateway or another platform, Shopify's payment method migration guide describes the routes, including a slower one where customers move across as they update their billing details. That guide says the slow route can take months or even years, and that some payment types, such as wallets and PayPal billing agreements, cannot be migrated for you.

So ask both app teams where your subscribers' payment methods are stored today, and get the answer per payment type. A subscriber who pays by card and one who pays by PayPal may need different handling.

How do you avoid double charges?

Double charges happen when both apps believe they own the same subscriber on the same day. Three rules prevent that:

  1. Pick a quiet window. Choose cutover days with the fewest renewals due. Export the renewal calendar from the old app and look at it before choosing.
  2. Stop billing in the old app before the new app can bill. Pause or cancel the contracts in the old app as each batch is confirmed in the new one. Do not leave both active "for safety".
  3. Reconcile by subscriber, not by total. Matching totals can hide one customer charged twice and another not charged at all.

Keep the old app installed, with billing stopped, until one full billing cycle has passed. You will need its records to answer customer questions.

Worked example: a staged cutover

Illustrative scenario: a store has 600 active subscribers on monthly plans, with renewals spread through the month. The team moves them in three batches rather than all at once.

Day Action Check before moving on
Day 1 Import 20 staff and friendly customers Product, price and next date match for all 20
Day 3 First real renewals run in the new app Orders, emails and tax look right; no charge in the old app
Day 5 Import the next 200, chosen because they renew latest Subscriber-level reconciliation passes
Day 9 Import the rest and switch the product page to the new app Old app shows no active billing
Day 40 One full cycle has passed Renewal count and failed-payment rate compared with the month before

The numbers are made up to show the sequence. The principle is that a mistake found on day 3 affects 20 people who know they are testers.

What should you tell subscribers?

Tell them before the move, in one short email: nothing changes in what they receive or pay, the link to manage their subscription will change, and who to contact if a charge looks wrong. Update the links in your renewal emails, account pages and support macros on the same day. A portal link that leads to the old app is the most common support ticket after a migration.

What should you measure afterwards?

Compare the first full cycle in the new app with the last full cycle in the old one:

  • renewals attempted and renewals paid
  • failed payments, and how many recovered
  • cancellations, with reasons
  • support contacts that mention billing or the portal

A rise in failed payments in the first cycle usually points to payment methods that did not carry over, not to customers leaving.

Planning a move? See how I work on Shopify subscription growth, or send me your current app, subscriber count and reason for moving and I will tell you whether a migration or a fix is the better first step.

Frequently asked questions

How long does a Shopify subscription app migration take?

Plan it around your billing cycle, not around the import itself. The import can take a day. A safe migration includes a test batch, at least one observed renewal run and one full cycle of monitoring, which is why monthly programmes usually need five to six weeks from the first test to sign-off.

Will subscribers have to enter their card details again?

Not if their payment methods are stored where the new app can use them. That depends on where the cards are held today and on the payment type, so confirm it with both app teams before you announce anything to customers.

Can I run the old and new subscription apps at the same time?

Yes, during a staged cutover, as long as each subscriber is active in only one of them. Keep a list of who has moved, stop billing in the old app for each batch, and reconcile by subscriber after every renewal run.

Shopify Subscription Growth

I help Shopify brands build subscription programmes that customers keep. That covers choosing between Shopify Subscriptions, Recharge, Loop, Skio and similar apps, designing the subscribe-and-save offer, fixing the customer portal and cancellation flow, recovering failed payments, and migrating subscribers between apps without losing them. The Night Marketer team handles implementation.

Explore the service →
Turn the idea into a working system

One subscription problem, with a measurable baseline

Tell me which subscription app you use and whether the issue is cancellation, payment recovery, the portal or migration.

Prefer a conversation? Book a call →
Keep reading
View the full archive →