How to Migrate from Recharge Subscriptions to Shopify Subscriptions
We recently worked through migrating our customers’ recurring paper and ink subscriptions that were once managed under Recharge Subscriptions to Shopify’s native subscriptions app. We made the change when we noticed we were spending over ~$200 per month just to manage subscriptions. What began as a simple project quickly grew more complex when we discovered there was very little documentation available, so we decided to take the opportunity to outline the steps we took in hopes of helping others tackle the same task!
1. How to set up Shopify Subscriptions
First, you'll want to make sure you have Shopify Subscriptions downloaded as an app on your Shopify storefront. Then you’ll want to prepare your export from Recharge.
2. How to Export from Recharge Subscriptions
You will need to export three different files from Recharge as showcased below. The data from these three files will be used to populate the Shopify Subscriptions import file.
Navigate to Recharge > Tools & Apps > Exports
Subscriptions > Subscriptions - Active

Select Recommended Columns > Export data

Charges > Charges - Queued

Select a future end date to ensure all future subscription charges are considered

Select Recommended Columns:

+ include the below and any others relevant to your business:

Export Data
Payment Methods > Payment methods - all

Select Recommended Columns > Export data

3. Shopify Subscriptions Import Template
You’ll need to situate this template from Shopify in order to import your Recharge Subscriptions to Shopify Subscriptions: Download sample CSV.
Below is guidance on the information you need to populate into each column:
handle = this can be found in the subscription ID column of the “Subscriptions - Active” export from Recharge.
upcoming_billing_date = this can be found in the scheduled_at column of the “Charges - Queued” export from Recharge. *Be sure to follow this date format: 2026-02-02T17:00:00Z (modify the actual date accordingly)
customer_id = corresponds to the customer ID in Shopify. To obtain, search for the customer in Shopify, view their customer card, and copy the numeric code found at the end of the URL in your browser. Example: /customers/8570197246106?link_source=search
currency_code = The three-letter (or three-digit) identifier for your country's currency. Example: USD
status = Enter ACTIVE (this is considering you’re only importing active subscriptions)
cadence_interval = this can be found in the order_interval_unit column of the “Subscriptions - Active” export from Recharge. This is how frequently customers are receiving their subscription. Use MONTH or WEEK.
cadence_interval_count = this can be found in the order_interval_frequency column of the “Subscriptions - Active” export from Recharge. *Use a number here to indicate the cadence of MONTH or WEEK indicated in the previous cell.
customer_payment_method_id = this can be found in the processor_payment_method_token column of the “Payment methods - all” export from Recharge. Example: gid://shopify/CustomerPaymentMethod/4a0ff3e928a502a34dfaf3d3a456287d
*Only Shopify payment tokens can be migrated. We handled customers who had Stripe payments by manually creating their subscriptions and then by reaching out to collect their payment information. An easy way to identify a Stripe payment token is by referencing the processor_name column in the “Charges - queued” export from Recharge. Further, Stripe payment tokens start with pm_ and are followed by alphanumerics.
delivery_price = 0. Example: 14.99. *Of note, we offer free shipping. If you charge for shipping, you’ll want to indicate the shipping cost here.
delivery_method_type = SHIPPING
delivery_address_first_name = this can be found in the shipping_first_name column of the “Charges - queued” export from Recharge.
delivery_address_last_name = this can be found in the shipping_last_name column of the “Charges - queued” export from Recharge.
delivery_address_address1 = this can be found in the shipping_address 1 column of the “Charges - queued” export from Recharge.
delivery_address_address2 = this can be found in the shipping_address 2 column of the “Charges - queued” export from Recharge. *Can be left blank if not applicable
delivery_address_city = shipping_city > can be found on Charges - queued export
delivery_address_province_code = this can be found in the shipping_province column of the “Charges - queued” export from Recharge.
delivery_address_country_code = this can be found in the shipping_country column of the “Charges - queued” export from Recharge.
delivery_address_company = this can be found in the shipping_company column of the “Charges - queued” export from Recharge. *Can be left blank if not applicable
delivery_address_phone = this can be found in the shipping_phone column of the “Charges - queued” export from Recharge. *Can be left blank if not applicable
delivery_local_delivery_phone *Can be left blank if not applicable
delivery_local_delivery_instructions *Can be left blank if not applicable
delivery_pickup_method_location_id *Can be left blank if not applicable
line_variant_id = this can be found in the line_item_external_variant_id column of the “Charges - queued” export from Recharge.
line_quantity = this can be found in the line_item_quantity column of the “Charges - queued” export from Recharge.
line_current_price = this can be found in the price column of the “Subscriptions - Active” export from Recharge.
line_selling_plan_id *Can be left blank
line_selling_plan_name *Can be left blank
4. Now it’s time to upload your import template into Shopify Subscriptions
Navigate to Shopify Subscriptions > Contracts > Import > Upload the csv file.
If an error in your file is detected, Shopify will send an email with a csv file indicating the errors found and reasoning. You’ll want to remedy, and then retry the upload. Some common errors that we ran into were:
customer_id has an invalid Customer ID The resource included in customer_id is invalid. Fill in row with a resource that exists and matches a Customer ID in Shopify.
-
- We were using the customer ID found in Recharge Subscriptions, instead of the customer ID in Shopify.
customer_payment_method_id has an invalid Customer Payment Method ID The resource included in customer_payment_method_id is invalid. Fill in row with a resource that exists and matches a Customer Payment Method ID in Shopify
-
- This is how we found out we could not migrate Stripe payment tokens.
CSV file contains only duplicate contracts Duplicate contracts cannot be imported and are ignored. Handle has been previously used.
-
- Recharge separates subscriptions that have more than one item into separate subscriptions handles. We didn’t want two separate contracts to exist, so we tried importing a subscription with multiple line items using the same handle for each row, but Shopify wouldn’t accept. We ended up importing just one item, and then manually adding the rest.
line_selling_plan_id has an invalid Selling Plan ID The resource included in line_selling_plan_id is invalid. Fill in row with a resource that exists and matches a Selling Plan ID in Shopify
-
- We accidentally added data here that was supposed to go in the line_variant_id column
5. How to cancel subscriptions in Recharge
Once you’ve verified the upload is successful, you’ll want to cancel each subscription in Recharge. Navigate to Customers > Subscriptions > Filter by active. Select Actions next to the subscription product > Cancel Subscription > Other reason > *Be sure to leave “Send a cancellation email” unchecked to avoid any confusion with your customers.
Lastly, you’ll want to cancel your Recharge account by logging in to the merchant portal, navigating to Settings > Billing & Plan, and select Cancel my account
6. How to setup plans in Shopify Subscriptions
Next, you’ll want to create plans in Shopify to offer to your subscribers.
Navigate to Shopify Subscriptions > Plans > Create plan. Here you’ll be able to customize one or more subscription plan offerings to your customers.
Be sure to enable the Shopify Subscriptions widget so your customers can select product subscriptions. To do so: navigate to Shopify Subscriptions > Settings > Install widget
Now, you're all set! We hope this was helpful!
How to Create Direct Checkout Links
Shopify Subscriptions does not generate direct checkout links like Recharge Subscriptions does, but we were able to follow the workaround outlined below.
You’ll ultimately want to follow the structure of this URL: https://SHOP_URL/cart/clear?return_to=/cart/add?items[][id]=VARIANT_ID%26items[][quantity]={QUANTITY}%26items[][selling_plan]=SELLING_PLAN_ID%26return_to=/checkout
*Anything you see in bold above needs to be modified to match the unique ID’s of your store. Below, we’ll breakdown how to retrieve them:
- SHOP_URL = This is your website’s URL. In our case it’s: paperplanet.com
- You’ll need to navigate to the product page that you’re looking to create a direct checkout link for. In the example below, we’ve selected 20 Rolls of Clover Station Thermal Paper to be delivered every 2 months, and we’re adding it to our cart.

Once added to our cart, we view our cart, and then click on the link to the product.

We’re then directed to a new page, with the URL indicating the necessary ID’s as shown below:

- VARIANT_ID = In our example, the variant ID is 16213858627
- SELLING_PLAN_ID = In our example, the selling plan ID is 4072046746
- Finally, you’ll add these ID’s into your URL (as shown below) and add the Shopify direct checkout link where necessary!
https://paperplanet.com/cart/clear?return_to=/cart/add?items[][id]=16213858627%26items[][quantity]=1%26items[][selling_plan]=4072046746%26return_to=/checkout
Areas for improvement
While we’re happy to be using Shopify Subscriptions, we did encounter some instances in which the app was lacking that we feel would be prudent to highlight.
- The Shopify Subscriptions interface is less intuitive than Recharge. For instance, there isn’t an option to open a subscription contract in a separate tab. Also, you need to scroll right to grab a view of Delivery Frequency and Status.
- During our migration to Shopify Subscriptions, we initially kept the Recharge Subscriptions widget active to allow customers to continue enrolling in automatic deliveries. However, we discovered that disabling all existing Recharge Subscription Plans was a necessary step before we could test the installation of the Shopify Subscriptions widget.