Skip to main content
Already running on Stripe or Creem? The @waffo/pancake-migrate CLI copies your products, prices, webhooks, and branding into a Waffo Pancake store — no manual re-entry.
Migration moves your catalog and settings, not live billing. Active subscriptions, customers, and payment methods stay where they are — see What does not migrate for why and what to do.
On a different platform? We currently support migrating from Stripe and Creem, with more on the way. Contact us and let us know what you’re moving from — we’ll prioritize it.

How concepts map

Before you run anything, here’s how your existing setup lines up with Waffo Pancake. The CLI handles this mapping for you — this table is just so you know what to expect.
Stripe / CreemWaffo PancakeNotes
Product + PriceOne product (with prices)Pancake folds price into the product. Stripe multi-currency prices are preserved; Creem is single-currency.
Recurring intervalbillingPeriodweekweekly, monthmonthly, every 3 months→quarterly, yearyearly.
Webhook endpointStore webhookStripe endpoints migrate with URL + event-type mapping. (Creem webhooks are not read by the CLI.)
Account brandingStore brandingStripe support email + website migrate.
Tax behaviortaxCategoryCreem categories map automatically; for Stripe you pass one default via --tax-category.
Test / live keystest / productionAuto-detected from your key prefix (sk_test_→test, sk_live_→production).

Before you start

You need three things:
  1. Node.js 18+
  2. A Waffo Pancake API key — your Merchant ID (MER_...) and RSA private key. Create one in Dashboard → API & Development. See the SDK guide for key handling.
  3. Your source platform key — a Stripe Secret Key (sk_test_... / sk_live_...) or a Creem API Key (creem_test_... / creem_...).
The migration creates products in the target environment that your key implies (test vs. live). Always do a --dry-run first to preview exactly what will be created.

Quickest path: interactive mode

npx @waffo/pancake-migrate
It walks you through it step by step:
1

Choose source

Stripe or Creem.
2

Choose target store

Pick an existing store, or create a new one on the spot.
3

Preview

See exactly what will be migrated before anything is created.
4

Migrate

Products, prices, images, webhooks, and branding are created in your store.

Scripted migration

If you’d rather pass everything as flags (for CI, or to repeat the run), use the per-source subcommands.

From Stripe

# Full migration (products + webhooks + branding)
npx @waffo/pancake-migrate stripe \
  --stripe-key sk_test_xxx \
  --merchant-id MER_xxx \
  --private-key ./private.pem \
  --store-id STO_xxx \
  --tax-category saas
Preview first with --dry-run:
npx @waffo/pancake-migrate stripe \
  --stripe-key sk_test_xxx \
  --merchant-id MER_xxx \
  --private-key ./private.pem \
  --store-id STO_xxx \
  --tax-category saas \
  --dry-run
Don’t have a store yet? Pass --store-id new to create one during migration:
npx @waffo/pancake-migrate stripe \
  --stripe-key sk_test_xxx \
  --merchant-id MER_xxx \
  --private-key ./private.pem \
  --store-id new \
  --tax-category saas
Skip steps you don’t want with --skip-products, --skip-webhooks, or --skip-branding:
npx @waffo/pancake-migrate stripe ... --skip-webhooks --skip-branding
Stripe flags
FlagDescription
--stripe-key <key>Stripe Secret Key (sk_test_... or sk_live_...)
--merchant-id <id>Pancake Merchant ID (MER_...)
--private-key <path>Path to your Pancake API private key file, or the raw key content
--store-id <id>Target Store ID (STO_...), or new to create one
--tax-category <cat>Default tax category: saas, digital_goods, software, ebook, online_course, consulting, professional_service
--dry-runPreview without creating anything
--yesSkip the confirmation prompt
--skip-productsSkip product migration
--skip-webhooksSkip webhook migration
--skip-brandingSkip branding migration

From Creem

npx @waffo/pancake-migrate creem \
  --api-key creem_test_xxx \
  --merchant-id MER_xxx \
  --private-key ./private.pem \
  --store-id STO_xxx
Preview first:
npx @waffo/pancake-migrate creem \
  --api-key creem_test_xxx \
  --merchant-id MER_xxx \
  --private-key ./private.pem \
  --store-id STO_xxx \
  --dry-run
Creem flags
FlagDescription
--api-key <key>Creem API Key (creem_test_... or creem_...)
--merchant-id <id>Pancake Merchant ID (MER_...)
--private-key <path>Path to your Pancake API private key file, or the raw key content
--store-id <id>Target Store ID (STO_...), or new to create one
--dry-runPreview without creating anything
--yesSkip the confirmation prompt

What gets migrated

From Stripe

DataMigrated
Products + PricesYes — multi-currency, images, descriptions
Billing periodsYes — weekweekly, monthmonthly, every 3 months→quarterly, yearyearly
Webhook endpointsYes — URL + event-type mapping
Store brandingYes — support email + website
EnvironmentAuto-detected — sk_test_→test, sk_live_→production

From Creem

DataMigrated
Products + PricesYes — single-currency, images, descriptions
Billing periodsYes — every-month→monthly, every-three-months→quarterly, every-year→yearly
Tax categoriesYes — saassaas, digital-goods-servicedigital_goods, ebooksebook

What does not migrate

These are intentional — here’s what to do about each:
Not migratedWhyWhat to do
Active subscriptionsA subscription is a live billing authorization with the customer’s bank; it can’t be copied between processorsExisting subscribers re-subscribe through Waffo Pancake checkout. Run the old and new processor in parallel during the transition.
Customer dataCreated automatically on first purchaseNothing — customers are created on their first Pancake payment
Payment methodsPCI compliance — card data never leaves the original processorCustomers re-enter payment details at checkout
Coupons / discountsNot supported by Pancake
Checkout theme colorsStripe doesn’t expose these via APISet them in Dashboard → Settings → Checkout

After migrating

1

Verify your catalog

Open Dashboard → Products and confirm prices, billing periods, and images came across correctly.
2

Publish to production

Products land in the environment your key implied. If you migrated into test, publish each product to go live.
3

Wire up checkout

Point your app at Waffo Pancake checkout sessions and webhooks.
4

Run in parallel, then cut over

Keep your old processor active while existing subscribers migrate at their own renewal. Stop new sign-ups on the old processor once Pancake checkout is live.
Building the integration after migrating? The Waffo Pancake Skill gives AI coding agents the exact @waffo/pancake-ts workflow for checkout, webhooks, and subscriptions.