polar-migration
Installation
SKILL.md
Polar Migration Guide
Polar's migration guide is the source of truth; read it before recommending anything. This skill summarizes what the application has to do.
Pick the path
- From Stripe: use Polar's assisted migration under Settings → Migrations. Polar imports products, prices and customers, Stripe copies saved cards straight to Polar's payment processor, and Polar switches each subscription over with the same paid period. Most customers don't need to do anything. Migrations are rolling out gradually; if the tab is missing, contact Polar support.
- From Paddle, Lemon Squeezy or anything else: there's no automated migration. Contact Polar support first, then follow "Other providers" below. Customers move by checking out again on Polar.
Rules for every migration
- Never stop, cancel or pause the old provider's billing, or activate a migrated Polar subscription, outside Polar's switch. Don't write your own cutover scripts: they double-bill.
- Never handle raw card data, and never ask for Stripe or Polar secrets in chat.
- Use the application's immutable customer ID as the Polar customer
external_id(passed asexternal_customer_idat checkout). Not email, and not the old provider's ID unless that's already the app's canonical ID. Anexternal_idcan't be changed once set. - Each subscription must have exactly one system responsible for its next renewal. Record which one, rather than inferring it from which IDs are set.
- Past payments stay in the old provider. Don't create Polar orders for transactions Polar didn't process, and keep the old account for refunds, disputes and accounting.