Claude-skill-inception polar-sdk-cancel-subscription

install
source · Clone the upstream repo
git clone https://github.com/strataga/claude-skill-inception
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/strataga/claude-skill-inception "$T" && mkdir -p ~/.claude/skills && cp -r "$T/polar-sdk-cancel-subscription" ~/.claude/skills/strataga-claude-skill-inception-polar-sdk-cancel-subscription && rm -rf "$T"
manifest: polar-sdk-cancel-subscription/SKILL.md
source content

Polar SDK Subscription Cancellation

Problem

When trying to cancel a subscription using the Polar SDK, you might try:

await polar.subscriptions.cancel({ id: subscriptionId });

This causes a TypeScript/build error:

Type error: Property 'cancel' does not exist on type 'Subscriptions'.

Context / Trigger Conditions

  • TypeScript error about
    cancel
    not existing on
    Subscriptions
  • Build failure in code that cancels Polar subscriptions
  • Following outdated examples or documentation

Solution

The correct method is

revoke()
, not
cancel()
:

// WRONG
await polar.subscriptions.cancel({ id: subscriptionId });

// CORRECT
await polar.subscriptions.revoke({ id: subscriptionId });

Full Example

import { Polar } from "@polar-sh/sdk";

const polar = new Polar({
  accessToken: process.env.POLAR_ACCESS_TOKEN,
});

export async function cancelSubscription(subscriptionId: string) {
  const result = await polar.subscriptions.revoke({
    id: subscriptionId,
  });
  return result;
}

Verification

  • TypeScript compiles without errors
  • Subscription is canceled immediately in Polar
  • Returns the revoked subscription object

Notes

  • revoke()
    cancels the subscription immediately
  • For canceling at period end, use a different approach (update subscription)
  • The Polar SDK also has
    polar.customerPortal.subscriptions.cancel()
    for customer-initiated cancellation (different use case)

References