Toolaby

Move subscriptions from another Stripe account

Move your subscribers from a Stripe account you used before Toolaby onto yours, with the same price, renewal day and card.

A move takes the subscriptions on a Stripe account you used before Toolaby, such as the one ExtensionPay charged on, and makes each one again on the Stripe account under Configure → Payments. Each buyer keeps their price, their renewal day and their card. Nobody is charged on the day of the move, and nobody is charged twice.

This page covers what a move does, the steps in order, what stays on the old account, and what happens after.

Before you begin

  • You are an owner of the workspace. A move is the owner's, signed in as themselves.
  • The tool has its subscription plans under Pricing, on Live: a monthly plan for monthly subscribers, a yearly plan for yearly ones, in the same currency.
  • Stripe is connected under Configure → Payments and takes payments.
  • You own the old Stripe account. Stripe lets only an account's owner copy its customers.
  • The extension's update is wired with Toolaby and ready to publish. For ExtensionPay, see Move from ExtensionPay.

What a move does

On the old accountOn your account
A subscription that renewsA subscription for the same customer, on the same card, at the same amount, first charged on the day the old one would have renewed. The old one is set to end with the period already paid for, and its collection paused: renewed by its buyer in the old account's portal, what it bills is voided, never charged.
A subscription its buyer cancelledA subscription that ends on the same day, and is never charged.
A subscription in a free trialA trial that ends on the same day, then charged as the old one would have been. A trial is one buyer's once per tool, as at your checkout; what is left of it longer than your plan's own free trial counts as a pass until it is paid (Plans).
A discountThe same discount, on the invoices it still had to come.

The buyer has access on your account from the moment their subscription moves. Each move is recorded by Toolaby, so it happens once, whichever run makes it, and a buyer is moved once to a tool: one subscription that renews, and one their buyer had ended. The old subscription carries a note of the move in its metadata (toolaby_move, then toolaby_moved_to).

1. Copy your customers

Stripe copies customers and their saved cards from one account to another. It keeps each customer's ID, and gives each card a new ID. It does not copy subscriptions: the move makes them.

  1. In the old account's Stripe Dashboard, go to Customers, select Copy customers, then Copy all customers.
  2. Enter your account's ID, shown in step 1 of Import → From another Stripe account, and select Continue, then Confirm.
  3. In your account's Stripe Dashboard, go to Customers and select Authorize and Accept on the request.

Stripe says most copies finish within 72 hours, and copies of fewer than 10,000 customers usually within a couple of hours. A second copy brings customers and cards added since; it duplicates nothing. See Stripe's Copy customer and payment method data across Stripe accounts.

Stripe notes that a card copied from an account outside the EEA or the UK into an account in the EEA or the UK may be declined when it is charged off-session, if it was not saved with strong customer authentication.

2. Create a restricted key

In the old account's Stripe Dashboard, go to Developers → API keys and select Create restricted key. Give it these permissions, and leave every other one at None:

ResourcePermissionUsed for
SubscriptionsWriteReading each subscription, and setting it to end with its period
CustomersReadThe email address the buyer signs in with
InvoicesReadWhether a card paid the period the subscription is in
PaymentMethodsReadThe card each subscription bills, found again on your account
CouponsReadA discount to carry over
ProductsReadProduct names in the review

The first four are required. Without Coupons, a subscription with a discount stays. Without Products, the review shows product IDs.

On Live, Toolaby takes a restricted live key (rk_live_…) and refuses a secret key. On Test, it takes a test key of either kind.

The key is sent with each request the page makes, and Toolaby keeps it nowhere: not in its database, not in its logs.

3. Read the old account

  1. Open the tool's Import page. Under From another Stripe account, paste the key and select Check the key. Toolaby asks Stripe what the key may do, without reading or changing anything. A key is used for nothing else until it is checked.
  2. Select Read the old account. Toolaby reads every subscription, a hundred at a time. Nothing changes by reading.

The review groups the subscriptions that can move by their price on the old account: product, amount and interval. It lists how many stay on the old account, and why. Toolaby then checks 20 of them on your account: that each customer was copied, with its card. If most are missing, Stripe's copy is not done: wait for it, then read again.

Also find customers by email looks for a customer by email address where Stripe's copy did not bring it. A customer found this way moves only when it is the one customer with that address on your account, and the card it billed before is there.

Toolaby bills only the copy of the card each subscription billed before, found by brand, last four digits and expiry, never another card of the customer's. A subscription whose card it cannot find on your account stays.

4. Choose a plan for each price

For each group, choose its Plan on Toolaby, or Don't move. Only plans of the same interval and currency, and not sold per seat, are offered.

They pay shows what the group's buyers are charged on your account: always their own amount, as before. A buyer who paid a different amount from the plan keeps paying their amount. Toolaby makes a price at that amount on the plan's product, so the buyer has the plan's features. Where the old account sold one product, Toolaby chooses the plan of the same amount for you.

5. Move

Select Move, and confirm. Toolaby moves ten subscriptions at a time and shows each result. For each one it:

  1. Reads it again on the old account, and checks everything that can refuse it: the customer, the card, the plan's price, the discount.
  2. Sets the old subscription to end with the period already paid for.
  3. Makes the new one on your account, first charged on the day the old one would have renewed.
  4. Records it under the buyer's account. A buyer without one gets one, which they use by signing in with that address.

A move that cannot go on after step 2 puts the old subscription back as it was. Keep the page open while it runs: thousands of subscriptions take a while. Stop after this batch stops the run; select Read again, then Move, to go on. A checked key lasts six hours: after that, select Check the key again. A subscription a stopped run left half moved is finished by the next run.

6. Publish the extension's update

Publish the update right after the move. A buyer's copy of the extension asks the old provider until Chrome updates it, and their old subscription runs until its period ends. A buyer whose period ends before the update reaches them has no access until it does.

7. Delete the key

In the old account's Stripe Dashboard, go to Developers → API keys and delete the key. An undo needs it: delete it once every move is as you want it. A new key can be made at any time.

What stays on the old account

A subscription that cannot move exactly as it is stays where it is, and goes on billing there. The review and the report say why:

ReasonWhat to do
Made by Toolaby, or moved already by another Toolaby workspaceNothing to do: it is not one to move.
Past due, unpaid or pausedMove it once it is paid up.
Its current period was not paid by a card: credit, a coupon of the whole amount, or marked paid by handMove it after it renews and a card pays.
Renews within the hourMove it after it renews.
Set to end on a date of its own, a subscription schedule, or a change waiting for paymentMove it by hand, or let it end.
More than one price, a quantity above one, billed by usage or in tiers, or a price with no fixed amountMove it by hand.
Charges taxMove it by hand, so the tax stays right.
Paid by invoice, not by cardMove it by hand.
Billed by the day or the week, or every few months or yearsToolaby bills monthly or yearly.
Its customer has no email addressA buyer signs in with an address.
A discount that cannot be copied exactly: several, one on an item, or one limited to some productsMove it by hand.
Costs nothingGive the buyer access from a file: Migrate existing customers.
Its customer is not on your accountCopy your customers again, then read again.
Its customer has another address on your accountGive the customer on your account the same address, then read again.
Its customer was found on your account by email onlySelect Also find customers by email, then read again.
The card it bills is not on your account, or it bills noneCopy your customers again: it was added after the copy.
Several copies of its card on your account, and none is the defaultSet the customer's default card on your account, then move it.
The buyer already has a subscription to this tool on Toolaby, or another of theirs was moved to itOne of the two charges them twice: cancel one.
Its buyer has had this tool's free trial on Toolaby alreadyMove it once its trial has ended and it pays.
The plan's price is archived on your Stripe account, or is not what the plan saysSave the plan again under Pricing, then move.
The workspace's additions for the day are spentMove again the next day.

A subscription whose first payment never went through, which Stripe calls incomplete, is not read and not counted: it never had a paying buyer, and Stripe ends it within a day.

After the move

  • Each moved buyer is under Customers, with their subscription.
  • The tool's Import page shows how many moved, how many are left to finish, and the day the last old subscription ends. Report downloads a CSV with one row per subscription moved or tried: the email, both subscriptions, the plan, the state, the first charge on your account and any reason.
  • Renewals are charged on your account. On Hobby, Toolaby's fee of 0.5% is on each renewal from the first. A moved subscription is not a pass for the period paid on the old account. See Plans.
  • A move sends no purchase.completed or subscription.started event to your webhook endpoints, and no new-sale notifications: the subscriptions were bought before. Renewals, cancellations and refunds after the move are sent as for any subscription. See Webhooks.
  • Buyers see your account's statement descriptor from the first renewal. Set it to the one they know, in your Stripe Dashboard under Settings → Public details.
  • Keep the old account until the last old subscription has ended. For ExtensionPay, keep it connected until every user has the update.
  • A move that stops half done leaves an old subscription set to end with no new one to follow it: Stripe not answering, a page closed. Toolaby emails the workspace's owners about it each day, with the day the first of them renews, until a run finishes it. Read and move again to finish it.

Undo a move

A move can be undone until the subscription is first charged on your account: a price moved onto the wrong plan or tool, say. An undo takes back a whole price at once: Moved already lists the moved subscriptions by their price on the old account, and Undo… on a row undoes every subscription in it that has not been charged on your account yet. The list holds the moves to every tool of the workspace; an undo acts only from the Import page of the tool they were moved to.

  1. Paste the key again and select Check the key: Toolaby never keeps it.
  2. Select Read the old account. Moved already appears below the review.
  3. Select Undo… on the price, and confirm.

What an undo does:

  1. The new subscription is set to end on the day the old one renews. It is never charged. The buyer keeps access until then, and that access counts as a pass, as the period paid on the old account is no longer the new one's (Plans).
  2. Then the old subscription renews again, where it was, its collection running. Where its buyer had cancelled the new one since, it ends with its period instead.
  3. Toolaby sends no events and no notifications for it.

An undo is refused in the ten minutes before the old subscription would renew: from then on, undo it by hand, as below.

A subscription already charged on your account is not undone: refund and cancel it in your Stripe Dashboard. Then, in the old account's Stripe Dashboard, turn the old subscription's cancellation off and resume its payment collection. An undone subscription can be moved again, to this tool or another.

Limits

  • Each subscription moved is one of the workspace's 20,000 additions a day, with grants, imports and customers added. See Limits.
  • A move's requests: 3,000 an hour per workspace. A key checked: 20 an hour per workspace, and a key is used only once checked. The report: 30 downloads a day.
  • On Test, Toolaby takes only a test key, so it reads the old account's test data. The Stripe account Toolaby made for Test cannot receive Stripe's copy of your customers, so the check of 20 customers shows them missing. Read the old account and check its subscriptions on Test, and move on Live.

See also

On this page