Skip to main content
Dodo Migrate is a CLI tool that moves your data from Lemon Squeezy, Stripe, Polar.sh, or Paddle to Dodo Payments. It prompts you for each choice and can migrate into test mode first, so you can check the result before you move live data.

What You Can Migrate

Products & Pricing

Products and their prices.

Customers

Customer records, including contact details.

Discount Codes

Discount codes and coupons.

License Keys

License keys with customer and product mappings (Polar.sh and Lemon Squeezy only).
The tool doesn’t migrate subscriptions, payment history, or saved payment methods. Plan how your existing subscribers move to Dodo Payments before you switch. See Subscription Migration.

Install the Tool

You’ll need Node.js 18 or later.

Run a Migration

Choose the command for your current provider:
The tool prompts you for:
  • Your provider’s API key
  • Your Dodo Payments API key
  • Whether to test first or go live
  • Which Dodo Payments brand to migrate to
  • Which data to migrate (products, customers, discounts, license keys)

Non-Interactive Mode

To skip the prompts, pass values as flags. --mode takes test_mode or live_mode. Use a Dodo Payments API key created in the same mode. If you omit --dodo-brand-id, the tool lists your brands and asks you to pick one. The flag that selects what to migrate is --types for Lemon Squeezy and --migrate-types for the other providers. If you omit it, the tool asks you to choose. When no terminal is attached, Paddle migrates only products and Polar.sh migrates products and discounts.

License Key Migration

License keys can be migrated from Polar.sh and Lemon Squeezy. When you select license keys in the interactive prompt, or pass license_keys in --types (Lemon Squeezy) or --migrate-types (Polar.sh), the tool imports your existing keys with the correct customer and product associations.
License key migration requires products and customers to be migrated in the same session. The tool builds an in-memory mapping of provider IDs to Dodo IDs during the run. If products or customers are missing, license keys cannot be linked correctly.

What Migrates

  • License key strings
  • Activation limits
  • Expiration dates
  • Customer and product associations

What Doesn’t Migrate

  • License key activations — customers must re-activate on their devices after migration.
  • Revoked or disabled keys — only active keys are migrated.
  • Keys without a matching product or customer are skipped with a warning.
If you re-run the migration, already-imported keys are detected and skipped, so it’s safe to retry.

Get Help

  • Tool help: dodo-migrate --help
  • Provider-specific help: dodo-migrate lemonsqueezy --help (or stripe, polar, paddle)
  • Community: Discord
  • Report issues: GitHub

Update or Uninstall

Last modified on September 25, 2026