Polar is an open-source funding platform for developers. The KavachOS plugin wires Polar checkout sessions and subscription webhooks to your user records, no Polar SDK required.Documentation Index
Fetch the complete documentation index at: https://docs.kavachos.com/llms.txt
Use this file to discover all available pages before exploring further.
Setup
Get your credentials
From your Polar dashboard, go to Settings → API and create an access token. Under Webhooks, create an endpoint pointing to/api/kavach/auth/polar/webhook and copy the signing secret.Configure the plugin
Usage
Create a checkout session
Check subscription status
HTTP endpoints
The plugin registers three routes under your KavachOS base path.POST /auth/polar/checkout
Creates a checkout session. Requires an authenticated session.GET /auth/polar/subscription
Returns the current subscription for the authenticated user.{ "subscription": null } when the user has no active subscription.
POST /auth/polar/webhook
Receives webhook events from Polar. Signature is verified with HMAC-SHA256, no session auth needed. Handled events:| Event | Action |
|---|---|
subscription.created | Links customer, stores subscription |
subscription.updated | Updates status and period end |
subscription.revoked | Clears subscription, fires callback |
Sandbox mode
Setsandbox: true to point at sandbox.api.polar.sh during development. Polar’s sandbox environment mirrors the production API and lets you test webhooks without real payments.
Reference
PolarConfig
| Field | Type | Description |
|---|---|---|
accessToken | string | Polar API access token |
webhookSecret | string | Webhook signing secret for HMAC verification |
organizationId | string? | Scope checkouts to a specific organization |
sandbox | boolean? | Use sandbox environment (default: false) |
onSubscriptionChange | function? | Called whenever subscription status changes |
PolarSubscription
| Field | Type | Description |
|---|---|---|
id | string | Polar subscription ID |
status | string | active, canceled, trialing, past_due, etc. |
productId | string | Polar product ID |
currentPeriodEnd | Date | When the current billing period ends |
cancelAtPeriodEnd | boolean | Whether cancellation is scheduled |
KavachOS stores Polar subscription data in the
kavach_users table. You can query it directly with Drizzle or any SQL client.