{"_id":"@crabnebula/better-auth-chargebee","_rev":"6-d91c1d5eea24baee0c73a612ddf130de","name":"@crabnebula/better-auth-chargebee","dist-tags":{"latest":"0.0.7"},"versions":{"0.0.2":{"name":"@crabnebula/better-auth-chargebee","version":"0.0.2","keywords":["better-auth","license","plugin","authentication","typescript","desktop","validation","esm"],"author":{"name":"CrabNebula","email":"hello@crabnebula.dev"},"license":"Apache-2.0 OR MIT","_id":"@crabnebula/better-auth-chargebee@0.0.2","maintainers":[{"name":"crabnebula-npm","email":"npm-admin@crabnebula.dev"},{"name":"lucasfernog-crabnebula","email":"lucas@crabnebula.dev"}],"homepage":"https://github.com/crabnebula-dev/better-auth-chargebee#readme","bugs":{"url":"https://github.com/crabnebula-dev/better-auth-chargebee/issues"},"dist":{"shasum":"0b2c09e8df54465b33f47abf4baa04dbf837e8e6","tarball":"https://registry.npmjs.org/@crabnebula/better-auth-chargebee/-/better-auth-chargebee-0.0.2.tgz","fileCount":7,"integrity":"sha512-hS7qpyB+jROFnxKefnvDn9lAOyH5nDHt2QzAx7VHrwlmPSMd7tNuB7J48nj4BH+v9d7mEtvfc4nfTDqlGprAOA==","signatures":[{"sig":"MEYCIQDwwr2hnsJHo+idAAQ9+rfGlzDY+gVB4oPwpI1Pi5ZMrQIhANIOmMNTAkQaeVqEt71JbiiXMHX3F1UJFZxLh2+9YGUu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":69485},"main":"./dist/index.mjs","_from":"file:crabnebula-better-auth-chargebee-0.0.2.tgz","types":"./dist/index.d.mts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"}},"scripts":{"test":"vitest","build":"tsup src/index.ts","clean":"rm -rf dist","format":"biome check .","version":"changeset version","prebuild":"pnpm clean","changeset":"changeset","format:fix":"biome check . --write"},"_npmUser":{"name":"crabnebula-npm","email":"npm-admin@crabnebula.dev"},"_resolved":"/tmp/7cbd648ee819a762c75125e2e967de05/crabnebula-better-auth-chargebee-0.0.2.tgz","_integrity":"sha512-hS7qpyB+jROFnxKefnvDn9lAOyH5nDHt2QzAx7VHrwlmPSMd7tNuB7J48nj4BH+v9d7mEtvfc4nfTDqlGprAOA==","repository":{"url":"git+https://github.com/crabnebula-dev/better-auth-chargebee.git","type":"git"},"_npmVersion":"11.6.1","description":"Better Auth plugin for Chargebee subscription.","directories":{},"_nodeVersion":"24.11.0","dependencies":{"zod":"^4.1.12"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^4.0.8","chargebee":"^3.14.0","typescript":"^5.9.3","@biomejs/biome":"^2.3.4","@changesets/cli":"^2.29.7","vite-tsconfig-paths":"^5.1.4","@better-auth-kit/tests":"^0.2.0","@changesets/changelog-github":"^0.5.1"},"peerDependencies":{"chargebee":"^3","better-auth":"^1","@better-auth/utils":"^0.3"},"_npmOperationalInternal":{"tmp":"tmp/better-auth-chargebee_0.0.2_1762901005532_0.9246870320055489","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@crabnebula/better-auth-chargebee","version":"0.0.3","keywords":["better-auth","license","plugin","authentication","typescript","desktop","validation","esm"],"author":{"name":"CrabNebula","email":"hello@crabnebula.dev"},"license":"Apache-2.0 OR MIT","_id":"@crabnebula/better-auth-chargebee@0.0.3","maintainers":[{"name":"crabnebula-npm","email":"npm-admin@crabnebula.dev"},{"name":"lucasfernog-crabnebula","email":"lucas@crabnebula.dev"}],"homepage":"https://github.com/crabnebula-dev/better-auth-chargebee#readme","bugs":{"url":"https://github.com/crabnebula-dev/better-auth-chargebee/issues"},"dist":{"shasum":"675642490f00090f544c191c6646ba21271e80cd","tarball":"https://registry.npmjs.org/@crabnebula/better-auth-chargebee/-/better-auth-chargebee-0.0.3.tgz","fileCount":7,"integrity":"sha512-BB+gdxh7WUxKWL1v/QmTVkIxM5h40SKTU1m2JR3odFrHpTmgVktta6llvVCw6Zo0B9Ye/07N4mLwxpq9FUbafw==","signatures":[{"sig":"MEYCIQCG4HwWw/fx8X3z0i0/EGBJ8j0ytTrFPfwygZuy0ipeSAIhAMFVlA2cefSJVLHUuH2vWPdCSmfktmazp5kepfcXRrBP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":70802},"main":"./dist/index.mjs","_from":"file:crabnebula-better-auth-chargebee-0.0.3.tgz","types":"./dist/index.d.mts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"}},"scripts":{"test":"vitest","build":"tsup src/index.ts","clean":"rm -rf dist","format":"biome check .","version":"changeset version","prebuild":"pnpm clean","changeset":"changeset","format:fix":"biome check . --write"},"_npmUser":{"name":"crabnebula-npm","email":"npm-admin@crabnebula.dev"},"_resolved":"/tmp/63b8ef081bb97a63001a1df46be94aff/crabnebula-better-auth-chargebee-0.0.3.tgz","_integrity":"sha512-BB+gdxh7WUxKWL1v/QmTVkIxM5h40SKTU1m2JR3odFrHpTmgVktta6llvVCw6Zo0B9Ye/07N4mLwxpq9FUbafw==","repository":{"url":"git+https://github.com/crabnebula-dev/better-auth-chargebee.git","type":"git"},"_npmVersion":"11.6.1","description":"Better Auth plugin for Chargebee subscription.","directories":{},"_nodeVersion":"24.11.0","dependencies":{"zod":"^4.1.12"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^4.0.8","chargebee":"^3.14.0","typescript":"^5.9.3","@biomejs/biome":"^2.3.4","@changesets/cli":"^2.29.7","vite-tsconfig-paths":"^5.1.4","@better-auth-kit/tests":"^0.2.0","@changesets/changelog-github":"^0.5.1"},"peerDependencies":{"chargebee":"^3","better-auth":"^1","@better-auth/utils":"^0.3"},"_npmOperationalInternal":{"tmp":"tmp/better-auth-chargebee_0.0.3_1763048087196_0.0760941363088814","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@crabnebula/better-auth-chargebee","version":"0.0.4","keywords":["better-auth","license","plugin","authentication","typescript","desktop","validation","esm"],"author":{"name":"CrabNebula","email":"hello@crabnebula.dev"},"license":"Apache-2.0 OR MIT","_id":"@crabnebula/better-auth-chargebee@0.0.4","maintainers":[{"name":"crabnebula-npm","email":"npm-admin@crabnebula.dev"},{"name":"lucasfernog-crabnebula","email":"lucas@crabnebula.dev"}],"homepage":"https://github.com/crabnebula-dev/better-auth-chargebee#readme","bugs":{"url":"https://github.com/crabnebula-dev/better-auth-chargebee/issues"},"dist":{"shasum":"b5e68b2ad9a0398a0e4a9999d8793e07e650a31e","tarball":"https://registry.npmjs.org/@crabnebula/better-auth-chargebee/-/better-auth-chargebee-0.0.4.tgz","fileCount":7,"integrity":"sha512-N2lR7ywMOcqS930+AKzaFRSUxZYrezgI7kbku+JK/+15nfRZbSiqLRkXBZd50FjijhPi/p+AJouORSr4G3MUaA==","signatures":[{"sig":"MEYCIQDKh13A97tKpqtj3h98950qnfDV1FAH0CQIyZXz3n3qhgIhALz4SbUO4zJNXTkmGkq0z8Bi6ILUxgjLBeQM7H3m8PK8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73816},"main":"./dist/index.js","type":"module","_from":"file:crabnebula-better-auth-chargebee-0.0.4.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest","build":"tsup src/index.ts","clean":"rm -rf dist","format":"biome check .","version":"changeset version","prebuild":"pnpm clean","changeset":"changeset","format:fix":"biome check . --write"},"_npmUser":{"name":"crabnebula-npm","email":"npm-admin@crabnebula.dev"},"_resolved":"/tmp/32b286e6cd8495b3aa13819506a5a1c1/crabnebula-better-auth-chargebee-0.0.4.tgz","_integrity":"sha512-N2lR7ywMOcqS930+AKzaFRSUxZYrezgI7kbku+JK/+15nfRZbSiqLRkXBZd50FjijhPi/p+AJouORSr4G3MUaA==","repository":{"url":"git+https://github.com/crabnebula-dev/better-auth-chargebee.git","type":"git"},"_npmVersion":"11.6.2","description":"Better Auth plugin for Chargebee subscription.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"zod":"^4.1.12"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^4.0.8","chargebee":"^3.14.0","typescript":"^5.9.3","@biomejs/biome":"^2.3.7","@changesets/cli":"^2.29.7","vite-tsconfig-paths":"^5.1.4","@better-auth-kit/tests":"^0.2.0","@changesets/changelog-github":"^0.5.1"},"peerDependencies":{"chargebee":"^3","better-auth":"^1","@better-auth/utils":"^0.3"},"_npmOperationalInternal":{"tmp":"tmp/better-auth-chargebee_0.0.4_1763746619837_0.9667917192335458","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@crabnebula/better-auth-chargebee","version":"0.0.5","keywords":["better-auth","license","plugin","authentication","typescript","desktop","validation","esm"],"author":{"name":"CrabNebula","email":"hello@crabnebula.dev"},"license":"Apache-2.0 OR MIT","_id":"@crabnebula/better-auth-chargebee@0.0.5","maintainers":[{"name":"crabnebula-npm","email":"npm-admin@crabnebula.dev"},{"name":"lucasfernog-crabnebula","email":"lucas@crabnebula.dev"}],"homepage":"https://github.com/crabnebula-dev/better-auth-chargebee#readme","bugs":{"url":"https://github.com/crabnebula-dev/better-auth-chargebee/issues"},"dist":{"shasum":"97f4a136bc761077425ca4b3633a8160abb4c00d","tarball":"https://registry.npmjs.org/@crabnebula/better-auth-chargebee/-/better-auth-chargebee-0.0.5.tgz","fileCount":7,"integrity":"sha512-o7eQOZS661XkcYTrLJzOF5e7DqmRhO+t5iFJ9L4mUkeGuWM6Tqv2FDrc7x1uI/VQ+xEeEcVv8BKv5SxrL9Ferg==","signatures":[{"sig":"MEQCIDKSWXyM7TrqV4/C4OD1+aDmx3UmNNLhX4UP0Fd179dXAiB1j61jC3RzcXSJToPWnipnry/ZcGEKle1V8MfQGFMQGg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74850},"main":"./dist/index.js","type":"module","_from":"file:crabnebula-better-auth-chargebee-0.0.5.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest","build":"tsup src/index.ts","clean":"rm -rf dist","format":"biome check .","version":"changeset version","prebuild":"pnpm clean","changeset":"changeset","format:fix":"biome check . --write"},"_npmUser":{"name":"crabnebula-npm","email":"npm-admin@crabnebula.dev"},"_resolved":"/tmp/33c5f307a4852d42689c9ae3987c7e26/crabnebula-better-auth-chargebee-0.0.5.tgz","_integrity":"sha512-o7eQOZS661XkcYTrLJzOF5e7DqmRhO+t5iFJ9L4mUkeGuWM6Tqv2FDrc7x1uI/VQ+xEeEcVv8BKv5SxrL9Ferg==","repository":{"url":"git+https://github.com/crabnebula-dev/better-auth-chargebee.git","type":"git"},"_npmVersion":"11.6.2","description":"Better Auth plugin for Chargebee subscription.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"zod":"^4.1.12"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^4.0.8","chargebee":"^3.14.0","typescript":"^5.9.3","@biomejs/biome":"^2.3.7","@changesets/cli":"^2.29.7","vite-tsconfig-paths":"^5.1.4","@better-auth-kit/tests":"^0.2.0","@changesets/changelog-github":"^0.5.1"},"peerDependencies":{"chargebee":"^3","better-auth":"^1","@better-auth/utils":"^0.3"},"_npmOperationalInternal":{"tmp":"tmp/better-auth-chargebee_0.0.5_1763748220427_0.5878346506504677","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@crabnebula/better-auth-chargebee","version":"0.0.6","keywords":["better-auth","license","plugin","authentication","typescript","desktop","validation","esm"],"author":{"name":"CrabNebula","email":"hello@crabnebula.dev"},"license":"Apache-2.0 OR MIT","_id":"@crabnebula/better-auth-chargebee@0.0.6","maintainers":[{"name":"crabnebula-npm","email":"npm-admin@crabnebula.dev"},{"name":"lucasfernog-crabnebula","email":"lucas@crabnebula.dev"}],"homepage":"https://github.com/crabnebula-dev/better-auth-chargebee#readme","bugs":{"url":"https://github.com/crabnebula-dev/better-auth-chargebee/issues"},"dist":{"shasum":"6f324305cf45fb0a445852f5161a8eb40f1c08c7","tarball":"https://registry.npmjs.org/@crabnebula/better-auth-chargebee/-/better-auth-chargebee-0.0.6.tgz","fileCount":7,"integrity":"sha512-pe1hqsjO2KTPAe6sOWGhdxh/u8z9l31p9t6eGeLtHfRNkOOG+MwZ6qNhC07JDeRIJt2DiLH3hxyalAc0ucGP3g==","signatures":[{"sig":"MEUCICoWtyTrClIVqskmN4xsOedlNeCETj9f2t3s4MvrN2QcAiEA1LsgQkU0Rck2rNaeED9S9u3JnTQGh6d+6+njNu/wwCo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77494},"main":"./dist/index.js","type":"module","_from":"file:crabnebula-better-auth-chargebee-0.0.6.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest","build":"tsup src/index.ts","clean":"rm -rf dist","format":"biome check .","version":"changeset version","prebuild":"pnpm clean","changeset":"changeset","format:fix":"biome check . --write"},"_npmUser":{"name":"crabnebula-npm","email":"npm-admin@crabnebula.dev"},"_resolved":"/tmp/5f6eadace2eeed963ff122f897e14877/crabnebula-better-auth-chargebee-0.0.6.tgz","_integrity":"sha512-pe1hqsjO2KTPAe6sOWGhdxh/u8z9l31p9t6eGeLtHfRNkOOG+MwZ6qNhC07JDeRIJt2DiLH3hxyalAc0ucGP3g==","repository":{"url":"git+https://github.com/crabnebula-dev/better-auth-chargebee.git","type":"git"},"_npmVersion":"11.6.2","description":"Better Auth plugin for Chargebee subscription.","directories":{},"_nodeVersion":"24.11.1","dependencies":{"zod":"^4.1.12"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^4.0.8","chargebee":"^3.14.0","typescript":"^5.9.3","@biomejs/biome":"^2.3.7","@changesets/cli":"^2.29.7","vite-tsconfig-paths":"^5.1.4","@better-auth-kit/tests":"^0.2.0","@changesets/changelog-github":"^0.5.1"},"peerDependencies":{"chargebee":"^3","better-auth":"^1","@better-auth/utils":"^0.3"},"_npmOperationalInternal":{"tmp":"tmp/better-auth-chargebee_0.0.6_1764185661125_0.5819418608617368","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"@crabnebula/better-auth-chargebee","version":"0.0.7","type":"module","description":"Better Auth plugin for Chargebee subscription.","author":{"name":"CrabNebula","email":"hello@crabnebula.dev"},"license":"Apache-2.0 OR MIT","homepage":"https://github.com/crabnebula-dev/better-auth-chargebee#readme","repository":{"type":"git","url":"git+https://github.com/crabnebula-dev/better-auth-chargebee.git"},"bugs":{"url":"https://github.com/crabnebula-dev/better-auth-chargebee/issues"},"keywords":["better-auth","license","plugin","authentication","typescript","desktop","validation","esm"],"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"engines":{"node":">=18.0.0"},"peerDependencies":{"@better-auth/utils":"^0.3","better-auth":"^1","chargebee":"^3"},"dependencies":{"zod":"^4.1.12"},"devDependencies":{"@better-auth-kit/tests":"^0.2.0","@biomejs/biome":"^2.3.7","@changesets/changelog-github":"^0.5.1","@changesets/cli":"^2.29.7","chargebee":"^3.14.0","tsup":"^8.5.0","typescript":"^5.9.3","vite-tsconfig-paths":"^5.1.4","vitest":"^4.0.8"},"publishConfig":{"access":"public"},"scripts":{"clean":"rm -rf dist","format:fix":"biome check . --write","format":"biome check .","build":"tsup src/index.ts","test":"vitest","prebuild":"pnpm clean","changeset":"changeset","version":"changeset version"},"_id":"@crabnebula/better-auth-chargebee@0.0.7","_integrity":"sha512-ZGteOj+NM9vxt4tnu9DS+uBO4pf63wNH7b+GEhaiA7A1UQ4PlzMk7xFxii/TTFkLdnygDvqcs9xDUoPR6GTOgg==","_resolved":"/tmp/76feeb4adcf6fbbfdd043900c5a0be5e/crabnebula-better-auth-chargebee-0.0.7.tgz","_from":"file:crabnebula-better-auth-chargebee-0.0.7.tgz","_nodeVersion":"24.12.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-ZGteOj+NM9vxt4tnu9DS+uBO4pf63wNH7b+GEhaiA7A1UQ4PlzMk7xFxii/TTFkLdnygDvqcs9xDUoPR6GTOgg==","shasum":"65cd8fc8279e742f30c3197d23bb440561b59cf8","tarball":"https://registry.npmjs.org/@crabnebula/better-auth-chargebee/-/better-auth-chargebee-0.0.7.tgz","fileCount":7,"unpackedSize":78016,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCX3eJS4bEd2O0Ppu+rQGuR9T6SmQ+NbK46Ynf1cXANdwIhAO2ZQ2/xWo7l62Y82KHmigxQnbxJGT/qqCT5w6/PSZEm"}]},"_npmUser":{"name":"crabnebula-npm","email":"npm-admin@crabnebula.dev"},"directories":{},"maintainers":[{"name":"crabnebula-npm","email":"npm-admin@crabnebula.dev"},{"name":"lucasfernog-crabnebula","email":"lucas@crabnebula.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/better-auth-chargebee_0.0.7_1766061756774_0.5823223486367073"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-11T22:43:25.431Z","modified":"2025-12-18T12:42:37.108Z","0.0.2":"2025-11-11T22:43:25.736Z","0.0.3":"2025-11-13T15:34:47.396Z","0.0.4":"2025-11-21T17:37:00.088Z","0.0.5":"2025-11-21T18:03:40.610Z","0.0.6":"2025-11-26T19:34:21.334Z","0.0.7":"2025-12-18T12:42:36.904Z"},"bugs":{"url":"https://github.com/crabnebula-dev/better-auth-chargebee/issues"},"author":{"name":"CrabNebula","email":"hello@crabnebula.dev"},"license":"Apache-2.0 OR MIT","homepage":"https://github.com/crabnebula-dev/better-auth-chargebee#readme","keywords":["better-auth","license","plugin","authentication","typescript","desktop","validation","esm"],"repository":{"type":"git","url":"git+https://github.com/crabnebula-dev/better-auth-chargebee.git"},"description":"Better Auth plugin for Chargebee subscription.","maintainers":[{"name":"crabnebula-npm","email":"npm-admin@crabnebula.dev"},{"name":"lucasfernog-crabnebula","email":"lucas@crabnebula.dev"}],"readme":"# Better Auth Chargebee Plugin\n\nThis plugin integrates Chargebee￼ with Better Auth￼ to handle subscription and billing flows in authentication-driven products.\n\nIt supports subscription lifecycle management, webhook synchronization, secure checkout creation, and optional authorization for organization-based references.\n\n---\n\n## Installation\n\n```bash\n# Using npm\nnpm install better-auth @crabnebula/better-auth-chargebee\n\n# Using yarn\nyarn add better-auth @crabnebula/better-auth-chargebee\n\n# Using pnpm\npnpm add better-auth @crabnebula/better-auth-chargebee\n\n# Using bun\nbun add better-auth @crabnebula/better-auth-chargebee\n```\n\n---\n\n## Overview\n\nThis plugin replaces manual subscription logic with a fully managed integration between Better \nAuth sessions and Chargebee subscriptions.\n\nIt handles:\n- Secure subscription creation, upgrades, and cancellations\n- Customer association with user sessions\n- Webhook-driven synchronization with Chargebee\n- Authorization of multi-tenant (organization) references\n- Automatic plan limit injection\n- Basic Auth–protected webhooks\n\n---\n\n## Basic Usage\n\n### Add the Plugin to Better Auth\n\n```typescript\n// auth.ts\nimport { betterAuth } from \"better-auth\";\nimport { chargebee } from \"@crabnebula/better-auth-chargebee\";\nimport Chargebee from \"chargebee\";\n\nconst chargebeeClient = new Chargebee({\n  site: process.env.CHARGEBEE_SITE!,\n  api_key: process.env.CHARGEBEE_API_KEY!,\n});\n\nexport const auth = betterAuth({\n  baseURL: \"https://auth.yourapp.com\",\n  plugins: [\n    chargebee({\n      chargebeeClient,\n      chargebeeWebhookAuth: process.env.CHARGEBEE_WEBHOOK_AUTH,\n      subscription: {\n        requireEmailVerification: true,\n        onSuccessfulCheckout: async ({ user, subscription }) => {\n          console.log(`User ${user.id} subscribed to ${subscription.plan}`);\n        },\n        onWehbookEvent: async ({ event, subscription }) => {\n          console.log(\"Webhook received:\", event.event_type, subscription.status);\n        },\n      },\n    }),\n  ],\n});\n```\n\n---\n\n### Endpoints\n\n| Endpoint | Method | Description |\n|-----------|---------|-------------|\n| `/subscription/checkout` | `POST` | Creates or upgrades a subscription |\n| `/subscription/cancel` | `POST` | Cancels an active subscription |\n| `/subscription/list` | `GET` | Lists all active subscriptions for a reference |\n| `/subscription/success` | `GET` | Callback endpoint after Chargebee hosted page checkout |\n| `/chargebee/webhook` | `POST` | Webhook endpoint to synchronize subscription updates |\n\n\n#### Example: Create or Upgrade Subscription\n\n```bash\nPOST /subscription/checkout\n{\n  \"plan\": \"pro\",\n  \"annual\": true,\n  \"seats\": 1,\n  \"returnUrl\": \"https://app.yourapp.com/checkout/success\"\n}\n```\n\nResponse:\n```json\n{\n  \"url\": \"https://yourapp.chargebee.com/pages/v3/checkout...\",\n  \"redirect\": true\n}\n```\n\n## License\n\nMIT or MIT/Apache 2.0 where applicable.","readmeFilename":"README.md"}