Migration · Creem
Migrating from Creem to Keylight
Move off Creem's merchant-of-record model to Stripe plus Keylight — lower fees and customer ownership, with VAT handling becoming yours.
Start FreeUpdated April 2026
This page is for developers currently selling through Creem who are considering a move to Stripe plus Keylight. The typical reasons are lower processing fees and wanting to hold the customer relationship directly rather than through a platform intermediary. This guide walks through what the migration involves, what genuinely improves, and where it adds responsibility — specifically around tax handling, which is a real tradeoff and not a detail to gloss over.
Why developers move off Creem
Creem is a merchant-of-record platform for digital products. That model means Creem handles VAT and sales tax remittance on your behalf — and charges accordingly. For early-stage apps where tax complexity is a genuine burden, paying a platform margin to avoid it is a reasonable trade. As revenue grows, that margin becomes harder to justify compared to running payments directly through Stripe.
The second issue is the customer relationship. When Creem is the merchant of record, the customer’s payment data and purchase history live in Creem’s systems. Your access to that data is whatever the platform exports. If you want to remarket to existing customers, run targeted promotions, or migrate to a different infrastructure later, you are working from an export rather than your own records.
The combination — ongoing platform margin and arm’s-length customer data — is the common push factor for developers whose apps have found consistent revenue.
What changes when you switch
The most significant change, and the one that deserves honest attention, is tax handling.
Creem remits VAT and sales tax as merchant of record. That is a core part of what the platform does — it takes on the tax liability so you do not have to. When you move to your own Stripe account, that liability transfers to you. You are responsible for understanding where you have tax nexus, registering in the relevant jurisdictions, and either configuring Stripe Tax to calculate and collect correctly or engaging an accountant to handle remittance.
This is real added operational responsibility, not a footnote. For developers selling to EU customers, VAT obligations are non-trivial. Stripe Tax reduces the calculation burden significantly, but compliance remains yours. If the main appeal of Creem was not thinking about tax, weigh that seriously before switching.
The upsides are real too: lower fees, direct access to customer data inside Stripe, no platform terms that can shift under you, and the ability to control your own checkout and pricing without intermediary constraints.
Migrating your customers and licenses
Creem provides an export of your customer and order data — that export is the starting point for migration. Each customer who purchased your app needs a Keylight license key: a cryptographically signed key your app verifies offline, tied to the activation limit they originally purchased.
The migration flow for existing customers is one upload. Export the customer list from Creem, then use Licenses → Import in Keylight. Include each customer’s existing key to preserve it — they keep the key they have — or leave it blank and Keylight generates a signed key. Every imported license is tagged Migrated. Only customers whose key was generated need an email; no one is asked to repurchase. See the full migration guide.
New purchases after the switch go through Stripe checkout and Keylight automatically: a completed payment mints a signed key and delivers it to the customer without manual steps. Existing customers are a one-time import. Once each customer has activated with their new key, the migration is complete from their perspective.
The migration process, step by step
- Connect your Stripe account to Keylight via Stripe integration. Keylight uses your account to receive payments and trigger key issuance — this must be done before anything else.
- Recreate your products and prices in Stripe. Mirror the tiers you sold through Creem — personal license, team license, any variants. Set the activation limits in Keylight to match what each tier originally carried.
- Import existing customers into Keylight using the customer export from Creem. Map each order to the appropriate license tier and activation limit.
- Import your existing customers from Licenses → Import — include each customer’s current key to preserve it, or leave it blank to generate one. Customers who kept their key need no email.
- Switch your checkout and download links to point at your new Stripe-powered checkout. Update your website, any relevant app store pages, and purchase confirmation flows. See Stripe license keys for how the payment-to-key flow works end to end.
- Keep Creem live briefly for in-flight orders and any pending refund requests while you complete the transition, then close it once the queue is clear.
The steps are sequential — Stripe must be connected before you can issue keys or take new payments. The customer import can run in parallel with recreating products once Stripe is connected.
Doing it with Keylight
Keylight connects to your own Stripe account and listens for successful payments. When a payment completes, Keylight mints a signed key automatically and delivers it to the customer — nothing to trigger manually. For existing customers imported during migration, you issue keys through the Keylight dashboard and send them in bulk.
On the app side, the Swift SDK activates a customer-entered key with a single call:
import KeylightSDK
// Activate a customer-entered key on this device
await licensing.activate(key: enteredKey)
switch licensing.state {
case .licensed:
enablePaidFeatures()
case .invalid:
// activationError carries the reason — e.g. activation limit reached
showActivationError(licensing.activationError)
default:
break
}
After activation, the SDK returns a signed lease the app verifies locally on every subsequent launch — no server call needed for day-to-day validation. See offline license validation for how that works in practice. If a customer hits their activation limit, the server rejects the request and the SDK surfaces the reason through activationError, so the app can prompt them to deactivate an old device or upgrade.
Pricing starts at $19/month with a free tier that lets you test the complete flow — key issuance, activation, and offline verification — before going live.
Frequently asked
Can I migrate from Creem to Keylight?+
Yes. You connect your own Stripe account, recreate your products as Stripe prices, and let Keylight issue signed license keys on payment. Existing Creem customers come over in one import — the keys you already issued are preserved, and Keylight only generates a key for customers whose original you don't have.
Who handles tax and VAT after I leave Creem?+
Creem acts as a merchant of record and remits tax on its sales. Keylight uses your own Stripe account, so after migrating you handle tax registration and remittance yourself, typically via Stripe Tax or an accountant.
Do my existing customers need new keys?+
Usually not. Keylight's bulk import preserves the keys you already issued — import the customer list from Licenses → Import and their existing keys keep working. Keylight only generates a fresh key for customers whose original you no longer have. Imported licenses are tagged Migrated.
Start licensing your app today
Drop in the Swift SDK, point it at your dashboard, and sell paid apps in under a minute. Free forever tier included.
Start Free