Migrate from Recharge, step by step.
Switching subscription apps fails when it is a leap of faith. This migration isn’t one: you see a row-by-row validation report and a dry run before anything is created, contracts are built paused, billing dates carry over exactly, and there is a one-click rollback until you activate. Recharge keeps billing your customers until the moment you cut over.
The sequence
Seven steps. You can stop at any of the first six.
Export your subscriptions CSV from Recharge
In the Recharge admin, export your active subscriptions to CSV. Include customer email, line items, quantities, prices, charge frequency, next charge date, and shipping address. Leave Recharge running — customers keep billing normally there until the final step.
Upload the CSV to RefillKit
Open the migration wizard and upload the file. The Recharge preset maps Recharge’s column names automatically; you can adjust any mapping by hand. Raw card data is never part of the file and never imported.
Read the validation report
Every row is checked before anything is created: malformed dates, unknown products or variants, missing customer emails, duplicate rows, currency mismatches. Fix the flagged rows in the CSV and re-upload, or exclude them and migrate the rest.
Run the dry run
The dry run shows exactly what would be created — each contract with its products, price, frequency, and next billing date — without touching your store. Read it the way you would read a bank statement before signing.
Approve and execute
Contracts are created in a paused state, paced to stay inside Shopify’s API limits. Billing dates are preserved: a customer Recharge would have billed on the 14th will be billed by RefillKit on the 14th.
Activate, then wind down Recharge
Nothing bills until you activate. When the dry run matched reality and you are ready, activate the contracts, then cancel the corresponding subscriptions in Recharge so no customer is billed twice. We can walk this cutover with you over email.
Rollback window
Until you activate, one click removes everything the migration created. No charges were made, so there is nothing to refund and nothing to explain to customers.
Payment methods, honestly
Which cards carry over, and which customers get an email.
Rows with a usable Stripe vault token can migrate payment methods silently only if the Stripe account behind those tokens is the same one connected to Shopify Payments on your store. Every other subscriber automatically receives a card-update email with a secure, Shopify-hosted link — sent and retried by the same system that runs RefillKit’s dunning. RefillKit never receives, stores, or logs raw card numbers at any point.
The validation report tells you before execution how many rows fall into each group, so the card-update email volume is never a surprise. Customers who ignore the first email are reminded on the dunning schedule when their next charge fails, and their contract follows the final action you configured.
Want the deeper reference — required columns, error messages, cutover checklist? Read the migration guide in the docs.
Check your export before you commit.
The free preflight check reads your Recharge CSV and reports what would validate, what would need fixing, and how many customers would get a card-update email.