Moving to Anytime Capital Payments takes minutes. The importer reads your Stripe account with a read-only key and brings your customers, catalog, discount codes, payment links and open invoices across. Your subscribers then move themselves from a link we email them, free until the period they already paid for in Stripe ends, so nobody is charged twice. Nothing in Stripe is changed, and nothing is emailed to your customers until you choose to.
What comes across
| In Stripe | Becomes | Notes |
|---|---|---|
| Customer | Customer | Matched by email, so nobody is added twice. Address, phone, tax ID and metadata come with it; metadata lands in the customer's notes. |
| Product with a one-time price | Product | One product per price. A product with several prices becomes one product per price, named by the price's nickname or amount. |
| Recurring price | Subscription plan | Weekly, monthly, every 3 months or yearly, from $1.00 to $10,000.00 a period. Its free trial comes too, up to 90 days. |
| Promotion code | Discount code | Percent or amount off, expiry date and the uses left. |
| Coupon with no promotion code | Discount code | Named after the coupon's id, and flagged so you can archive it if customers shouldn't type it. |
| Payment link | Payment link | When every item maps to an imported product. A link that sells one plan points you to that plan's own link. |
| Open invoice you send yourself | Invoice, unsent | Line items, discount, tax and due date. Nothing is emailed: review and send each one. |
| Active subscription | Subscriber to move | Listed with the plan it maps to and the date its current period ends. See below. |
Run the importer again at any time. Everything already imported is skipped, a customer who already exists here is matched rather than copied, and anything that failed is tried again.
What doesn't come across
- Saved cards. Card numbers can't move through any API. See Saved cards for how to move them in bulk.
- Payment history. Past payments, refunds, disputes and payouts stay in Stripe for your records.
- Prices we can't charge the same way: metered (usage-based), tiered and package prices, customer-chosen amounts, and prices in currencies other than US dollars. Each is listed in the summary with the reason.
- Codes with conditions: codes for one customer, for first-time customers only, with a minimum order, or for certain products only. Codes here take money off the whole order for anyone who has them.
- Subscriptions that don't fit one plan: several prices or a quantity above one, a discount, or paused payments. They're listed so you can set them up by hand.
- Invoices Stripe is still charging automatically, or that are partly paid. Let those finish in Stripe.
Run the importer
- In your dashboard, open Switching from Stripe? on your home page, or Import from Stripe under Integrations. Owners and admins of a verified business can run it.
- In Stripe, open Developers → API keys in live mode and create a restricted key with the permissions below set to Read and everything else set to None.
- Paste the key (it starts with
rk_live_). We check it with Stripe and show how many of each thing your account holds, with a few examples. Secret keys and test-mode keys are refused. - Choose what to import and start. It runs in the background, so you can leave the page; progress shows as it goes, and your team is notified when it's done.
- Review the summary: everything imported, matched or skipped, and each item that needs a look, with the reason.
| Permission | Access | Used for |
|---|---|---|
| Customers | Read | Names, emails, addresses and phone numbers |
| Products | Read | Your catalog |
| Prices | Read | One-time and recurring prices |
| Coupons | Read | Percent or amount off, expiry and limits |
| Promotion codes | Read | The codes customers type |
| Payment Links | Read | Links and their line items |
| Invoices | Read | Open invoices |
| Subscriptions | Read | Who subscribes to what, and when their period ends |
The key is used only to read. It's kept encrypted while the import runs and deleted the moment it finishes, fails or is cancelled. You can delete it in Stripe as soon as you're done.
Move your subscribers
Each active Stripe subscription becomes a row in Move your subscribers, with the imported plan it maps to and the day its current period ends. You choose who to invite. Each subscriber gets one email from us, in your branding, with a link that restarts the same plan at the same price with nothing to pay until that day. If they haven't moved after a few days, they get one reminder.
- Not invited: on the list, waiting for you.
- Invited: the email went out. The link works only for the address it was sent to, and only until they've moved.
- Moved: they've restarted here. Their first payment here is on the day their Stripe period ends.
- Declined: they chose not to continue, or you marked them as not moving.
A subscriber whose Stripe period ends more than 90 days out can be invited once it's within 90 days. If a period renews in Stripe after your import, run the import again for subscriptions to refresh the dates.
Saved cards
Under the card industry's security rules (PCI DSS), card numbers only ever move directly between payment processors, never through you or through an API. That's why subscribers re-enter their card when they move. If you'd rather move saved cards in bulk, choose Request a card data migration on the importer page: our business team checks what's possible for your account and walks you through it, and nothing changes until it's confirmed with you by email.
API differences
| Stripe | Anytime Capital | |
|---|---|---|
| Base URL | https://api.stripe.com/v1 | https://anytime-capital.com/api/v1 |
| Authentication | Secret key as a Bearer token | API key from Settings → Developers, starting ak_live_, as a Bearer token. See Authentication. |
| Request bodies | Form-encoded | JSON |
| Amounts | Integer cents (amount) | Integer cents, named for what they are (amountCents) |
| Pagination | limit with starting_after | limit with cursor from the previous page. See Pagination. |
| Idempotency | Idempotency-Key header | Idempotency-Key header on every POST. See Idempotency. |
| Errors | error.type, error.code, error.message | error.code and error.message. See Errors. |
| Checkout | Checkout Sessions and Payment Links | Payment links (/api/v1/payment-links) and invoices; the hosted checkout is the link's page. See Payment links. |
For every object, call and webhook event side by side, with Node and curl examples, see Stripe API to Anytime Capital. Selling on Shopify, WooCommerce or Square too? Their catalogues import the same way: see Import from Shopify, WooCommerce, Square or a CSV file.
Webhook mapping
| Stripe event | Anytime Capital event |
|---|---|
payment_intent.succeeded, checkout.session.completed | payment.succeeded |
payment_intent.payment_failed | payment.failed |
charge.refunded | payment.refunded |
charge.dispute.created | dispute.opened |
charge.dispute.closed | dispute.closed |
invoice.paid | invoice.paid |
customer.subscription.created | subscription.created |
customer.subscription.deleted | subscription.canceled |
Verify each delivery with the Anytime-Signature header instead of Stripe's signature, and skip event ids you've already handled. See Webhooks.