Sell software globally. We handle taxes, compliance, payments, and payouts.
Website · Docs · API Reference · Discord · Twitter
Creem is a Merchant of Record (MoR) that lets software companies sell globally without worrying about sales tax, VAT, compliance, or payment infrastructure. We act as the legal seller of your software, so you can focus on building.
What we handle for you:
- 🌍 Global tax compliance across 140+ countries (US state taxes, EU VAT, UK VAT, and more)
- 💳 Payment processing with optimized checkout experiences
- 🔄 Subscription management with trials, upgrades, downgrades, and dunning
- 💸 Automated payouts to your bank account
- 📊 Revenue analytics and reporting
- 🛡️ Fraud protection and chargeback handling
- 🏪 Storefronts for no-code product pages
- 🤝 Affiliate programs with built-in tracking and payouts
This repository contains Creem's maintained public SDK, CLI, integrations, UI packages, webhook types, examples, and documentation.
| Package | Description |
|---|---|
creem |
Official generated TypeScript SDK with full API coverage and an MCP server. |
@creem_io/cli |
Command-line access to Creem products, customers, subscriptions, checkouts, transactions, and discounts. |
@creem_io/webhook-types |
Shared webhook entity/event types, type guards, and parsing utilities. |
| Package | Description |
|---|---|
@creem_io/better-auth |
Better Auth plugin for customers, subscriptions, and webhooks. |
@creem_io/convex |
Convex billing component with backend helpers and React/Svelte bindings. |
@creem_io/nextjs |
Next.js checkout, customer portal, and webhook helpers. |
@creem_io/strapi |
Strapi 5 plugin for products, subscriptions, checkout, and webhook forwarding. |
| Package | Description |
|---|---|
@creem_io/embed |
Framework-agnostic modal and inline checkout embedding. |
@creem_io/react |
React components and hooks for embedded checkout. |
@creem_io/svelte |
Svelte components and actions for embedded checkout. |
@creem_io/vue |
Vue 3 components and composables for embedded checkout. |
Package documentation and installation instructions live in each linked package directory. The complete product and API documentation is at docs.creem.io.
Install the recommended TypeScript SDK:
npm install creemCreate a checkout:
import { Creem } from "creem";
const creem = new Creem({
apiKey: process.env.CREEM_API_KEY,
});
const checkout = await creem.checkouts.create({
productId: "prod_123",
successUrl: "https://yourapp.com/success",
});
console.log(checkout.checkoutUrl);See the SDK README for resources, standalone functions, retries, error handling, and MCP setup. Framework users can start from the relevant integration or UI package above.
packages/
├── sdk/ # creem; generated SDK + MCP binary
├── cli/ # public CLI
├── core/ # future shared primitive
├── webhook-types/ # temporary until absorbed into core
├── integrations/
│ ├── better-auth/
│ ├── convex/
│ ├── nextjs/
│ ├── strapi/
│ └── framer/ # Framer plugin
├── ui/
│ ├── embed/
│ ├── react/
│ ├── svelte/
│ └── vue/
├── docs/ # documentation application
├── examples/ # standalone, workspace-excluded examples
├── templates/ # future cloneable templates
└── creem-io/ # frozen deprecated exception
Creem publishes and deploys artifacts from this repository to the following destinations:
| Source | Artifact destination |
|---|---|
packages/sdk, packages/cli, packages/webhook-types |
Public npm packages |
packages/integrations/{better-auth,convex,nextjs,strapi} |
Public npm packages |
packages/ui/* |
Public npm packages |
packages/integrations/framer |
Framer Marketplace plugin |
packages/docs |
docs.creem.io, deployed through the Mintlify GitHub App |
packages/examples/* |
Standalone examples deployed by their users, where applicable |
packages/templates/* |
Future cloneable source templates; no release target yet |
packages/creem-io |
Frozen deprecated npm package |
Each package README owns its exact build and delivery procedure. The root
package-policy.json classifies packages for repository
governance checks; it is not deployment configuration.
The README-only packages/creem-sdk, packages/better-auth, and
packages/nextjs directories temporarily guide old repository backlinks to
their new locations. Their review/removal is scheduled in
OSS-51.
Filesystem paths and npm identities are deliberately independent. Moving a package into a category does not rename its published npm package.
creem_io is frozen, excluded from normal CI and
Changesets, and unsupported, including for security fixes. Do not use it for new
projects. Migrate to the maintained creem package.
- Node.js 24 or newer
- pnpm 11 (use the exact version declared in
package.json)
git clone https://github.com/armitage-labs/creem.git
cd creem
pnpm install --frozen-lockfile
pnpm build
pnpm test
pnpm typecheck
pnpm lint
pnpm format:checkFilter to a package for local iteration:
pnpm --filter @creem_io/nextjs build
pnpm --filter @creem_io/nextjs typecheck
pnpm --filter @creem_io/nextjs testThe root CI workflow validates package policy, built tarball contents and entrypoints, build, typechecking, tests, lint, formatting, workflow paths, and plugin discovery. Changesets creates release pull requests and publishes eligible public packages with npm provenance after repository policy passes.
The creem SDK is generated from packages/sdk/openapi.json with Speakeasy.
Do not hand-edit generated SDK source; see the
contributing guide.
Read CONTRIBUTING.md before opening a pull request. By participating, you agree to the Code of Conduct.
- GitHub issue forms for reproducible package bugs and documentation problems
- Discord for community discussion
- Featurebase for product feature requests
- SECURITY.md for private vulnerability reporting
This repository and its actively maintained public packages are licensed under the MIT License. The frozen deprecated SDK retains its historical license file.