@justonemonkey/n8n-nodes-polar-sh
v1.1.0
Published
n8n community node to manage Polar.sh (checkouts, orders, subscriptions, customers, benefits and more) directly from n8n workflows.
Downloads
251
Maintainers
Readme

n8n-nodes-polar-sh
This is an n8n community node package. It lets you manage Polar.sh — checkouts, checkout links, customers, orders, subscriptions, and refunds — directly from n8n workflows, and react to Polar webhook events with a dedicated trigger node.
n8n is a fair-code licensed workflow automation platform.
Installation Nodes Credentials Local development & testing Compatibility Resources
Installation
Follow the installation guide in the n8n community nodes documentation, and install @justonemonkey/n8n-nodes-polar-sh.
Nodes
Polar
Resource + Operation node covering:
- Benefit — Get Many, Get, Create, Update, Delete, Get Files, Get Grants
- Benefit Grant — Get Many
- Checkout — Get Many, Get, Create, Update
- Checkout Link — Get Many, Get, Create, Update, Delete
- Custom Field — Create, Delete, Get, Get Many, Update — org-defined extra data fields (text/number/date/checkbox/select) collected on checkout
- Customer — Get Many, Get, Get by External ID, Create, Update, Update by External ID, Delete, Delete by External ID, Get State, Get State by External ID, Get Payment Methods, Get Payment Methods by External ID, Export (CSV file)
- Customer Meter — Get Many, Get
- Customer Seat — Assign Seat, Claim Seat, Get Claim Info, Get Many, Resend Invitation, Revoke Seat — assign, revoke, and manage seat-based subscription/order member seats; Get Claim Info and Claim Seat require no Polar authentication (they're for the invited person's own client)
- Customer Session — Create — generate a one-time customer portal access token
- Discount — Get Many, Get, Create, Update, Delete
- Dispute — Accept, Get, Get Many — payment disputes/chargebacks; Accept concedes a dispute (irreversible)
- Event — Get Many, Get, Ingest, List Names
- Event Type — Get Many, Update
- File — Complete Upload, Create, Delete, Get Many, Update — declarative primitives for Polar's S3 multipart file upload flow (Create returns presigned upload URLs; actually PUTing file bytes to S3 is done in your own workflow, e.g. with an HTTP Request node, before calling Complete Upload)
- License Key — Activate, Deactivate, Get, Get Activation, Get Many, Rotate, Update, Validate — license-gated software activation and validation
- Member — Create, Create for External Customer, Delete, Delete by External ID, Get, Get by External ID, Get Many, Get Many for External Customer, Update, Update by External ID — manage individual people within a B2B customer (requires the organization's member-management feature). Every operation is scoped to a customer, by Polar ID or by your external ID.
- Meter — Create, Get, Get Many, Get Quantities, Update
- Metric — Get, Export (CSV file), Get Limits — revenue/order/subscription analytics over a date range and interval
- Metric Dashboard — Create, Delete, Get, Get Many, Update — custom metrics dashboards shown in the Polar app
- Order — Get Many, Get, Create, Update, Finalize, Generate Invoice, Get Invoice, Get Receipt, Export (CSV file)
- Organization — Get, Get Many, Update — your token's organization (Get Many is the easy way to find its ID); Update covers the public profile and defaults (name, avatar, support email, website, country, presentment currency, tax behavior)
- Payment — Get Many, Get — read-only view of payments (
payments:readonly; no create/update/delete exists in the API) - Product — Get Many, Get, Create, Update, Update Benefits, Delete (unused products only)
- Refund — Get Many, Create
- Subscription — Get Many, Get, Create, Update, Update Seats, Update Billing Period, Cancel, Revoke, Pause, Resume, Clear Pending Update, Export (CSV file)
- Webhook Delivery — Get Many, Redeliver — delivery history for webhook events, and scheduling redelivery of a specific event
- Webhook Endpoint — Create, Delete, Get, Get Many, Reset Secret, Update — manage webhook subscriptions (URL, payload format, subscribed event types). Reset Secret immediately invalidates the previous signing secret.
Upgrading to 1.1
- Organization Access Token resource removed — Polar no longer exposes these endpoints in its API; manage tokens from the Polar dashboard.
- Member operations now require the customer (by ID, or by external ID for the "External" variants). Re-open existing Member nodes and fill in the Customer ID; the old Get Many filters (Customer ID / External Customer ID) are gone.
- Legacy Get by External ID now requires the External Customer ID (customer and member are both identified by external IDs); its old Customer ID / External Customer ID filters were removed.
Polar Customer Portal
A separate node for Polar's Customer Portal API: it acts on behalf of one customer, the way your own customer-facing app would (self-service billing, support bots, "cancel my subscription" flows). It does not use the Polar API credential — these endpoints only accept a short-lived customer (or member) session token:
- In a Polar node, run Customer Session → Create for the customer.
- In the Polar Customer Portal node, pick the same Environment and put the returned
tokenin Customer Session Token (with an expression).
Resources:
- Benefit Grant — Get, Get Many, Update (connect the Discord / GitHub account or Slack email a benefit is delivered to)
- Customer — Get, Update (billing name/address, tax ID, default payment method), Request Email Change, Check Email Change Token, Verify Email Change
- Customer Meter — Get, Get Many — the customer's usage and balance per meter
- Downloadable — Get Many — files the customer can download, with download URLs
- License Key — Get, Get Many, Rotate, Activate, Deactivate, Validate
- Member — Add, Get Many, Update, Remove — the customer's team (B2B; needs a member session of an owner or billing manager)
- Order — Get, Get Many, Update (billing details), Generate Invoice, Get Invoice, Get Receipt, Get Payment Status, Confirm Retry Payment
- Organization — Get — public portal info and products by organization slug
- Payment Method — Add, Confirm, Delete, Get Many (Add/Confirm take Stripe confirmation token / setup intent IDs from your front end)
- Seat — Assign, Get Many, Get Claimed Subscriptions, Resend Invitation, Revoke
- Session — Get User, Introspect (who the token belongs to, when it expires)
- Subscription — Get, Get Many, Cancel, Update Cancellation (cancel at period end with a reason, or undo it), Change Product, Update Seats, Update Units, Pause, Resume, Clear Pending Update
- Wallet — Get, Get Many
License Key Activate/Deactivate/Validate, Organization Get and Customer Check/Verify Email Change are public — leave the token empty for those.
Polar Trigger
A webhook trigger node for all 42 of Polar's webhook event types (checkout.*, customer.*, customer_seat.*, member.*, subscription.*, order.*, refund.*, benefit_grant.*, benefit.*, product.*, discount.*, organization.updated). You create the webhook endpoint by hand in the Polar dashboard, pointing it at this node's webhook URL, and paste the generated signing secret into the node. Signatures are verified against the Standard Webhooks spec.
By default the node listens for a single event type. Turn on Allow Multiple Events (mirrors n8n's core Webhook node's "Allow Multiple HTTP Methods" setting) to select several event types at once — the node then exposes one output per selected event, in the order selected, and routes each incoming webhook to the output matching its type.
The webhook Path field is empty by default, in which case the node's URL ends in its own automatically-generated unique ID (the same behavior as n8n's core Webhook node) — no two Polar Trigger nodes ever collide on the same URL. Set your own value only if you need a specific, predictable path. If you activate a workflow, change the Path, and reactivate, update the corresponding endpoint URL in the Polar dashboard to match.
Credentials
This node uses a Polar API credential:
- In Polar, go to your organization's Settings → API Keys (or the Sandbox equivalent at sandbox.polar.sh for testing) and create an Organization Access Token.
- In n8n, create a new
Polar APIcredential, choose Environment (ProductionorSandbox), and paste the token into Access Token.
Local development & testing
Clone the repo and install dependencies:
npm installStart n8n with the node loaded and hot-reloading:
npm run devThis opens n8n at
http://localhost:5678.Create a Polar API credential using a Sandbox organization access token (sign up/create a sandbox org at sandbox.polar.sh — it's a fully separate environment from production, safe to test destructive operations against).
Exercise every
Polarnode operation against Sandbox data before pushing — each task in the implementation plan (docs/superpowers/plans/2026-08-18-polar-node-lot1a-foundation.md) lists the specific operations to click through for that resource.To test the Polar Trigger node,
npm run devonly serves n8n onlocalhost, which Polar's servers can't reach. Expose it publicly first, then register a Sandbox webhook endpoint against the tunnel URL:npm run dev -- --tunnel(or run
npm run devin one terminal andngrok http 5678in another, and use thengrokURL). Copy the webhook URL n8n shows on thePolar Triggernode, create a matching endpoint in the Sandbox dashboard's Webhooks settings, select the events you want to test, and paste the generated secret into the node'sWebhook Secretfield. Trigger a real Sandbox event (e.g. run thePolarnode's Checkout → Create) and confirm the workflow fires.Before pushing, both of these must pass:
npm run lint npm run build
Compatibility
Requires n8n with the community nodes API version 1 (n8nNodesApiVersion: 1). Built and tested against Node.js v22+.
Every field and endpoint in this package is grounded against Polar's live OpenAPI spec (https://polar.sh/docs/openapi.yaml), last verified 2026-08-20. Polar's API is versionless (everything lives under /v1/, evolving continuously) rather than pinned to discrete release numbers, so a verification date is the meaningful compatibility marker here, not a version string.
