@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 / Creem | Waffo Pancake | Notes |
|---|---|---|
| Product + Price | One product (with prices) | Pancake folds price into the product. Stripe multi-currency prices are preserved; Creem is single-currency. |
| Recurring interval | billingPeriod | week→weekly, month→monthly, every 3 months→quarterly, year→yearly. |
| Webhook endpoint | Store webhook | Stripe endpoints migrate with URL + event-type mapping. (Creem webhooks are not read by the CLI.) |
| Account branding | Store branding | Stripe support email + website migrate. |
| Tax behavior | taxCategory | Creem categories map automatically; for Stripe you pass one default via --tax-category. |
| Test / live keys | test / production | Auto-detected from your key prefix (sk_test_→test, sk_live_→production). |
Before you start
You need three things:- Node.js 18+
- 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. - Your source platform key — a Stripe Secret Key (
sk_test_.../sk_live_...) or a Creem API Key (creem_test_.../creem_...).
Quickest path: interactive mode
Scripted migration
If you’d rather pass everything as flags (for CI, or to repeat the run), use the per-source subcommands.From Stripe
--dry-run:
--store-id new to create one during migration:
--skip-products, --skip-webhooks, or --skip-branding:
| Flag | Description |
|---|---|
--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-run | Preview without creating anything |
--yes | Skip the confirmation prompt |
--skip-products | Skip product migration |
--skip-webhooks | Skip webhook migration |
--skip-branding | Skip branding migration |
From Creem
| Flag | Description |
|---|---|
--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-run | Preview without creating anything |
--yes | Skip the confirmation prompt |
What gets migrated
From Stripe
| Data | Migrated |
|---|---|
| Products + Prices | Yes — multi-currency, images, descriptions |
| Billing periods | Yes — week→weekly, month→monthly, every 3 months→quarterly, year→yearly |
| Webhook endpoints | Yes — URL + event-type mapping |
| Store branding | Yes — support email + website |
| Environment | Auto-detected — sk_test_→test, sk_live_→production |
From Creem
| Data | Migrated |
|---|---|
| Products + Prices | Yes — single-currency, images, descriptions |
| Billing periods | Yes — every-month→monthly, every-three-months→quarterly, every-year→yearly |
| Tax categories | Yes — saas→saas, digital-goods-service→digital_goods, ebooks→ebook |
What does not migrate
These are intentional — here’s what to do about each:| Not migrated | Why | What to do |
|---|---|---|
| Active subscriptions | A subscription is a live billing authorization with the customer’s bank; it can’t be copied between processors | Existing subscribers re-subscribe through Waffo Pancake checkout. Run the old and new processor in parallel during the transition. |
| Customer data | Created automatically on first purchase | Nothing — customers are created on their first Pancake payment |
| Payment methods | PCI compliance — card data never leaves the original processor | Customers re-enter payment details at checkout |
| Coupons / discounts | Not supported by Pancake | — |
| Checkout theme colors | Stripe doesn’t expose these via API | Set them in Dashboard → Settings → Checkout |
After migrating
Verify your catalog
Open Dashboard → Products and confirm prices, billing periods, and images came across correctly.
Publish to production
Products land in the environment your key implied. If you migrated into test, publish each product to go live.
Wire up checkout
Point your app at Waffo Pancake checkout sessions and webhooks.