Subscriptions: Migration Guide
This guide helps you securely migrate your subscription contracts from your current platform (e.g., Recharge or Appstle) to the SHOPLINE Subscriptions app. It will enable you to:
Minimize Customer Churn: Keep contracts active on your original platform during migration to prevent payment issues and retain customers.
Simplify Migration: Use a smooth, reliable process to move your business to SHOPLINE and benefit from enhanced subscription management.
The guide covers preparation, contract import and sync, results checking, contract management, and customer activation for a smooth start.
Migration Overview
| Stage | Step | Description |
| Preparation | 1. Set up SHOPLINE Subscriptions | Install the app, create subscription plans, and set up basic settings like contract migration notices. |
| 2. Migrate basic store data | Migrate product and customer data first, so contracts can correctly link to products, customers, and addresses. | |
| Contract Migration | 3. Migrate subscription contracts | Use API sync or a CSV file to import contract details, products, customers, shipping addresses, and shipping info into SHOPLINE. |
| 4. Check import results | Check the task status. If some records fail, download the results file, fix the errors, and re-import. | |
| Payment Migration | 5. Upload payment tokens | After contracts are imported, upload the matching payment token info for each payment channel. |
| Contract Handover | 6. Ask customers to update payment method | For contracts that haven't been taken over yet, tell customers to go to the Customer Center and update their payment method. |
| 7. SHOPLINE takes over the contract | Once the customer updates their payment method, the contract status changes to "Migration Successful." | |
| Wrap-up | 8. Handle contracts on the old platform | Once SHOPLINE takes over a contract, handle the old version on the original platform to avoid charging the customer twice. |
Before You Start Migrating
1. Set Up SHOPLINE Subscriptions
Before migrating, install and set up SHOPLINE Subscriptions.
Make sure you've done the following:
- Installed the SHOPLINE Subscriptions app.
- Created the subscription plans you need. Migrated contracts will link to these plans.
- Set up the contract migration notice under Store Display Settings.
- Turned on the info customers are allowed to update, under Settings, including:
- Shipping info
- Subscription frequency
- Payment method
For details on subscription plans and store display settings, see the article "Subscriptions: Setting Up Recurring Purchases."
2. Migrate Your Basic Store Data First
Before migrating contracts, make sure your basic store data has already been migrated to SHOPLINE. This is required for contract data to map and display correctly. You can use the Multi-platform Store Migration app to help migrate this structured data, including:
- Product data: Make sure all product data has been migrated from your original platform to SHOPLINE.
- Customer data: Make sure all customer data has been migrated from your original platform to SHOPLINE.
| Note: If products or customers haven't been migrated yet, contracts may fail to link to the correct product or customer during import. |
Stage 1: Contract Migration
The goal here is to import the subscription contracts themselves into SHOPLINE, including contract status, billing cycle, products, customer, shipping address, and shipping info.
There are two ways to migrate contracts:
- API Sync: For merchants whose original store is on Shopify and whose subscription service is Recharge, Appstle, Loop, or Seal. Note: API sync requires your original store and subscription app to stay active during the migration, which may involve extra costs; please plan accordingly.
- CSV Import: For merchants who don't meet the API sync requirements, or who prefer to prepare a file and import everything in one batch.
Migrating Contracts via API Sync
When this applies:
API sync currently works when:
- Your original store platform is Shopify.
- Your original subscription provider is Recharge, Appstle, Loop, or Seal.
- You can get both your Shopify credentials and the API credentials for your subscription platform.
| Important: API sync requires your original store and subscription app to stay running during migration, which may involve extra costs; please plan accordingly. |
Step 1: Get Your Shopify Store Credentials
- In Shopify Admin, go to Settings > Domains to see your store domain (e.g., handle.myshopify.com).
- Note the "handle" part of your domain.
Obtain Shopify API Key (2026 New Workflow)
From January 2026, some Shopify stores will be managed via the Dev Dashboard. Stores using the Dev Dashboard can no longer get API Keys through Legacy Custom Apps. This update does not affect existing API Keys, which will continue to work as usual in SHOPLINE.
If your store uses the Dev Dashboard, follow these steps to get your Client ID and Secret for dual-system migration:
| Important: Merchants must create an app in the Dev Dashboard to get the Client ID and Secret; collaborator permissions do not provide access. |
-
Create and Develop an App
-
Go to Settings > Apps and click Build apps in Dev Dashboard.
-
In the Dev Dashboard, click Create app.
-
In the Start from Dev Dashboard section, enter a name and click Create.
-
Click Select Scope, choose permissions (including App, Order, Customer, Product), then click Release. Please make sure all of the following permissions are checked:
read_all_orders
read_app_proxy
write_app_proxy
read_customers
read_customer_merge
read_orders
read_product_feeds
read_product_listings
read_products
-
In the pop-up window, click Release again to confirm.
-
-
Save the Client ID and Secret
-
After creating the app, go to Settings, copy and securely save the Client ID and Secret for SHOPLINE migration.
-
-
Install the App
-
Go to the app Home page and click Install app.
-
On the Install app page in your Shopify admin, click Install again to complete the custom app installation in your Shopify store
-
Obtain Shopify API Key (Legacy Workflow Before 2025)
- Develop and Create an App
-
Go to Settings > Apps and sales channels > Develop apps.
-
Click Create a custom app, name your app (e.g., "SHOPLINE Migration App"), and click Create app.
-
- Configure Admin API Scopes
-
Select all API permissions and click Save.
-
-
Install App and Copy API Key
- Go to API credentials, click Install app, and copy the API token from the API credentials section.
Important: The token is shown only once. Save it securely.
Step 2: Get API Credentials from Your Current Subscription Platform
You only need to do this for the one platform you're currently using, no need to set up all of them.
Obtain Recharge API Key
- Create Admin Token
-
Go to Tools & apps > API tokens, then click Create now in the Admin tokens card.
-
- Configure Admin API Scopes
- After creating the token, enter the Create an API Token page and name your token.
-
Select all API permissions and click Save.
- Copy API Key
-
Go to the API Token section and copy your API key.
-
Obtain Appstle API Key
-
Go to Appstle Subscription > More > API Access.
-
Locate the API Keys section and click Generate key.
-
In the pop-up window, enter a name for the API key, select Read & Write — Full access to all API endpoints, then click Create key.
-
Copy the generated API Key for later use.
| Note: API access is a paid add-on. Contact Appstle support to enable it. The cost is $100 per month. |
Obtain Seal API Key
Obtain Loop API Key
To obtain the Loop Subscriptions API key, please refer to the article Generate Loop API Tokens in the Loop Help Center.
Step 3: Start Syncing Contracts in SHOPLINE
- Log in to the SHOPLINE Subscriptions app admin.
- Go to Migration Center and click Start Migration.
- Choose your original subscription platform.
- Enter your Shopify handle, Client ID, Secret, and the API credentials for your current subscription platform.
- If there's an Auto-match subscription plans option, choose it if it fits your needs.
- Click Import Now.
The system will first check that your credentials are valid. Once verified, it will pull and sync your subscription contract data from the original platform.
Migrating Contracts via CSV File
Step 1: Download the Contract Migration Template
- Log in to the SHOPLINE Subscriptions app admin.
- Go to Migration Center and click Start Migration.
- Choose CSV Import.
- Download the latest contract import template.
Always use the most recently downloaded template from the admin panel.
Step 2: Export Contract Data from Your Original Platform
Log in to your original subscription platform and export the contract data you want to migrate.
Before organizing your data, make sure:
- The products and variants already exist in SHOPLINE.
- The customers already exist in SHOPLINE.
- Each contract has a unique, stable ID from the original platform.
- Contracts that need to keep billing already include their next billing date.
Step 3: Fill In the Contract Import Template
The contract template is for migrating contract data; you'll need to organize your data into this structure yourself before uploading.
Basic Contract Info
| Field | Description | Required | Example |
| Store Handle | Your SHOPLINE store handle. | Yes | example-store |
| *Original Subscription ID | The contract ID from your original platform. Used to identify and update the same contract. Max 32 characters. | Yes | EXT-CONTRACT-1111111 |
| *Status | Contract status. | Yes | ACTIVE |
| *Customer ID | SHOPLINE Customer ID. The customer must already exist in SHOPLINE. | Yes | 4603168091 |
| Customer's email. | No | example@shopline.com |
Allowed Status values: ACTIVE, PAUSED, CANCELLED, FAILED, EXPIRED
Billing Cycle Info
| Field | Description | Required | Example |
| *Interval | Billing cycle unit. | Yes | MONTH |
| *Interval count | How often it repeats. E.g., every 2 weeks = 2. | Yes | 2 |
| *Min cycles | Minimum number of billing cycles (at least 1). | Yes | 1 |
| Max cycles | Maximum number of billing cycles. Leave blank for no limit. | No | 12 |
| Orders fulfilled | Number of orders already fulfilled. Blank = treated as 0. | No | 4 |
Allowed Interval values: DAY, WEEK, MONTH, YEAR
Date and Currency Info
| Field | Description | Required | Example |
| Created at (original platform) | When the contract was created on the original platform. Use ISO 8601 format with time zone offset. | No | 2024-12-02T12:00:00-05:00 |
| *Next billing date | The first scheduled billing date after migration. Use ISO 8601 format with time zone offset. | Yes | 2025-01-28T12:00:00-05:00 |
| *Currency code (ISO 4217) | The contract's currency, using the 3-letter ISO 4217 code. Must match your store's currency. | Yes | USD |
Subscription Plan and Product Info
| Field | Description | Required | Example |
| *Selling plan ID | SHOPLINE subscription plan ID. | Yes | 14066622198340539053032795 |
| *Line items amount | Line item amount. | Yes | 100 |
| *Line items variant ID | SHOPLINE product variant ID. The variant must already exist. | Yes | 18066984575317893633362795 |
| *Line items quantity | Quantity. | Yes | 2 |
| Line items product source | Product source info. | No | Fill in as needed |
| Line items adjustment type | Discount type. | No | FIXED_AMOUNT |
| Line items adjustment value | Discount value. | No | 20 |
Allowed Line items adjustment type values: PERCENTAGE, FIXED_AMOUNT
Shipping Address Info
| Field | Description | Required | Example |
| Delivery first name | Recipient's first name. | No | Bing |
| Delivery last name | Recipient's last name. | No | Tang |
| Delivery phone | Recipient's phone number. | No | 12165550123 |
| Delivery country | Country/region name. | No | United States |
| *Delivery country code (ISO 3166-1) | 2-letter country code. | Yes | US |
| Delivery state/province | State/province name. | No | Ohio |
| *Delivery state/province code (ISO 3166-2) | State/province code. | Yes | OH |
| Delivery city | City name. | No | Cleveland |
| Delivery city code (non-US markets) | City code, for non-US markets. | No | As applicable |
| Delivery company | Company name. | No | FireXuan-USD |
| Delivery district (non-US markets) | District name, for non-US markets. | No | As applicable |
| Delivery district code (non-US markets) | District code, for non-US markets. | No | As applicable |
| Delivery address | Street address. | No | University Hospital Drive |
| Delivery address2 | Additional address info. | No | RR 2 Box 260 |
| Delivery zip/postal code | Postal code. | No | 44106 |
Shipping Info
| Field | Description | Required | Example |
| Shipping plan name | SHOPLINE shipping plan name. | No | Multi Delivery Test Plan |
| Shipping amount | Shipping cost. Leave blank to calculate at time of billing. | No | 50 |
Step 4: Upload Your Contract CSV File
- Go back to the CSV Batch Import page.
- Click Next.
- Upload your completed contract CSV file.
- Select the payment channel for each contract, as prompted.
- Click Import and wait for it to finish.
Stage 2: Payment Migration
Once contracts are migrated, if you want to keep using the original payment method in SHOPLINE, you'll need to upload the payment token separately.
Payment migration doesn't replace contract migration; make sure contracts are successfully imported first, then upload the matching payment tokens.
Before you start, prepare:
- The Original Subscription ID of the successfully imported contract.
- The customer's email.
- The current payment channel and token info actually used by the contract.
Only upload payment tokens for contracts that still need to use the original payment method; you don't need to fill in a token file for contracts that don't need payment migration.
Payment Token File Fields
Each contract row only needs the fields for its actual payment channel; leave the other channels' fields blank.
| Field | Description | Required When | Example |
| *Original Subscription ID | Must match the Original Subscription ID from the contract file. Max 32 characters. | Always | EXT-CONTRACT-1111111 |
| Customer email, helps identify the customer. | Recommended | example@shopline.com | |
| Channel customer id (Stripe) | Stripe customer ID. | If using Stripe | Stripe Customer ID |
| Payment method ID (Stripe) | Stripe payment method ID. | If using Stripe | Stripe Payment Method ID |
| Account name (Paypal) | PayPal account name. | If using PayPal | PayPal Account Name |
| Billing agreement id (Paypal) | PayPal billing agreement ID. | If using PayPal | PayPal Billing Agreement ID |
| Channel customer id (SLP) | SLP payment channel customer ID. | If using SLP | Channel Customer ID |
| Payment method ID (SLP) | SLP payment channel payment method ID. | If using SLP | Channel Payment Method ID |
| Important: Don't fill in token info for more than one payment channel on the same contract row. |
How to Upload Payment Tokens
- Confirm the contract has already been migrated.
- Download and fill in the payment token import template.
- Double-check the contract ID matches the imported contract exactly.
- Go to the payment token upload page in SHOPLINE Subscriptions.
- Upload the file and wait for results.
- If a results file is provided, download it and fix any failed records.
If a payment token can't be migrated, the contract can stay in "Migrating" status; the customer can still update their payment method later in the Customer Center.
Managing Migrated Contracts
Once migration is complete, you can view and manage all migrated contracts from the Migration Center.
Migrated Contracts List
Go to Migration Center > Migrated Contracts to see all imported or synced contracts. The list usually includes:
| Field | Description |
| Migration method | Where the contract came from: CSV import, Recharge API, Appstle API, Loop API, or Seal API. |
| Migration completed date | When the contract status changed to "Migration Successful." |
| Migration status | Whether the contract has completed the payment method update and been taken over by SHOPLINE. |
| Original platform contract status | A snapshot of the contract's status on the original platform, e.g., active, paused, cancelled, or expired. |
Migration Status Meanings
| Status | Meaning |
| Migrating | The contract has been migrated to SHOPLINE, but the customer hasn't updated their payment method yet. The original platform may still be running it. |
| Migration Successful | The customer has updated their payment method, and SHOPLINE has taken over the contract. |
| No Migration Needed | The original contract has been cancelled, failed, or completed; no handover needed. |
Available Actions
For contracts marked "Awaiting Payment Update" or "No Migration Needed," you can (depending on what your admin supports):
- Add discount codes.
- Filter and export contract and customer lists.
- Send win-back emails to eligible customers.
Getting Customers to Complete the Migration
For contracts that haven't finished payment migration or a payment method update, the customer needs to update their payment method in the Customer Center before the contract becomes "Migration Successful."
Set Up the Contract Migration Notice
In Subscriptions > Migration Center > Contract Migration Notice, turn on the update reminder banner.
Before the customer updates their payment method, it's best not to direct them to edit the contract directly, first explain that they need to update their payment method to avoid confusion during migration.
What the Customer Does
- Logs in to the store's Customer Center.
- Goes to My Subscriptions.
- When they try to edit a contract that's "Awaiting Payment Update" (e.g., changing the billing schedule or shipping address), the system prompts them to update their payment method.
- They click Update Now to enter the contract update wizard.
- They confirm or update info like the next billing date and shipping address.
- They add a new payment method.
- Once the payment method is updated, SHOPLINE completes the handover, and the contract status changes to "Migration Successful."
Once a customer completes the handover, the merchant gets notified. To avoid double-charging, make sure to promptly handle the matching old contract on the original platform.
Keeping Data Up to Date
Automatic Updates via API
If you've enabled API auto-sync, changes to contract data from Recharge, Appstle, Loop, or Seal (like renewals or status changes) will sync to SHOPLINE's migration contract list in near real-time via webhooks. You don't need to manually update the snapshot info for these "Awaiting Payment Update" contracts.
Manual Updates via CSV
If you used CSV import, and a contract's data changes on the original platform while it's still "Awaiting Payment Update," you can manually update the snapshot info in SHOPLINE.
If you're still running the original contract on the old platform, make sure to sync the update there too.
Frequently Asked Questions (FAQs)
Find answers to common questions about using the dual-system migration solution.
Q1: Why are my imported contracts marked as "Pending Payment Method Update"?
This usually happens when the original payment method (e.g., Shopify Payment) is not supported by SHOPLINE, or payment method migration isn't finished.
Q2: How do I change a contract to "Migration Successful"?
Customers need to update their payment methods in your store for contracts in "Pending Payment Method Update" status.
Q3: Do I need to cancel contracts on the original platform manually?
For CSV imports, once a contract is marked "Migration Successful" in SHOPLINE, you must manually cancel the old contract on your original platform to avoid double-billing. For supported subscription platforms' API imports, SHOPLINE will automatically cancel the old contract via the API.
Q4: Is the Shopify or Legacy E-Commerce Solution order data synced to SHOPLINE after API synchronization?
API sync mainly updates contract data. You must manually sync order data using the Multi-platform Store Migration app.