Polar

App · Payments & Billing · 15 actions

Run your Polar store from your workflows: create and find customers, send checkout links, start, change and cancel subscriptions, create discounts, record usage, and report on sales.

Actions

ActionWhat it does
Cancel subscriptionCancel a subscription at the end of its billing period or right away.
Create checkout linkGet a link to a checkout page to send someone, with their details filled in.
Create customerAdd a customer to Polar, before they buy anything.
Create discountMake a discount: a code customers type at checkout, or one you apply with Create checkout link or Update subscription.
Create productAdd something to sell: a one-time purchase or a subscription plan, paid or free.
Delete customerDelete a customer: their subscriptions end right away and their benefits are revoked.
Find customerLook up a customer by email or your ID for them, with their active subscriptions and benefits.
Find ordersList purchases and subscription payments by customer, product, status or date.
Find subscriptionsList subscriptions by customer, plan or status, such as everyone set to cancel at the end of their billing period.
Get sales metricsRevenue, orders, subscriptions and checkouts over a date range, in total and per day, week or month.
Record usageRecord something a customer used, for usage-based billing.
Start free subscriptionPut a customer on a free plan.
Update customerChange a customer's email, name or details.
Update productRename a product, change its price, or stop selling it.
Update subscriptionSwitch a subscription to another plan, apply or remove a discount, or undo a scheduled cancellation.

Cancel subscription

Cancel a subscription at the end of its billing period or right away. Canceling one that's already canceled succeeds.

Inputs

SubscriptionsubscriptiontextRequired
Pick one, or use a subscription ID from an earlier step, such as Find customer's active subscriptions.
Whenwhentext
Default: at the end of the billing period, so they keep what they paid for.One of: end_of_period (At the end of the billing period), immediately (Right away).
Reasonreasontext
Why they're leaving, for Polar's churn reports.One of: too_expensive (Too expensive), missing_features (Missing features), switched_service (Switched to another service), unused (Not using it), customer_service (Customer service), low_quality (Quality), too_complex (Too complicated), other.
Customer's commentcommenttext
What the customer said. They can see it in their Polar account.

Outputs

amountnumber
What each billing period costs, in cents.
cancel_at_period_endtrue/false
Whether it ends when this period does.
canceled_attext
When it was canceled.
currencytext
Currency code, e.g. usd.
current_period_endtext
When it renews (or ends).
current_period_starttext
When the current billing period started.
customerobject
customer_cancellation_reasontext
Why it was canceled.
customer_idtext
The customer's Polar ID.
discount_idtext
The discount on it, if any.
ends_attext
When it will end.
idtext
The subscription's Polar ID.
metadataobject
Extra details.
productobject
product_idtext
The plan's Polar ID.
recurring_intervaltext
day, week, month or year.
started_attext
When it started.
statustext
active, trialing, past_due, paused, canceled, ...
trial_endtext
When the free trial ends.
Example output
{
  "amount": 0,
  "cancel_at_period_end": true,
  "canceled_at": null,
  "checkout_id": null,
  "created_at": "2026-09-27T16:42:49.000000Z",
  "currency": "usd",
  "current_period_end": "2026-10-27T16:42:49.000000Z",
  "current_period_start": "2026-09-27T16:42:49.000000Z",
  "customer": {
    "avatar_url": null,
    "billing_address": null,
    "billing_name": "Ada Lovelace",
    "created_at": "2026-09-27T16:42:49.000000Z",
    "default_payment_method_id": null,
    "deleted_at": null,
    "email": "ada@example.com",
    "email_verified": false,
    "external_id": "usr_1337",
    "first_user_event_at": null,
    "id": "992fae2a-2a17-4b7a-8d9e-e287cf90131b",
    "locale": null,
    "metadata": {
      "plan_source": "website"
    },
    "modified_at": "2026-09-27T16:42:49.000000Z",
    "name": "Ada Lovelace",
    "organization_id": "1dbfc517-0bbf-4301-9ba8-555ca42b9737",
    "tax_id": null,
    "type": "individual"
  },
  "customer_cancellation_comment": null,
  "customer_cancellation_reason": null,
  "customer_id": "992fae2a-2a17-4b7a-8d9e-e287cf90131b",
  "discount": null,
  "discount_id": null,
  "ended_at": null,
  "ends_at": null,
  "id": "e5149aae-e521-42b9-b24c-abb3d71eea2e",
  "metadata": {},
  "modified_at": "2026-09-27T16:42:49.000000Z",
  "product": {
    "id": "d8dd2de1-21b7-4a41-8bc3-ce909c0cfe23",
    "name": "Free"
  },
  "product_id": "d8dd2de1-21b7-4a41-8bc3-ce909c0cfe23",
  "recurring_interval": "month",
  "recurring_interval_count": 1,
  "started_at": "2026-09-27T16:42:49.000000Z",
  "status": "active",
  "trial_end": null,
  "trial_start": null
}

Get a link to a checkout page to send someone, with their details filled in. It works for 24 hours.

Inputs

ProductsproductslistRequired
What they can buy. With several, they choose one.
Customercustomertext
Who's buying: pick a customer, or enter an email or the ID your system uses for them. New people are fine.
Discountdiscounttext
Pick a discount, or use a discount ID from an earlier step.
After payment, go tosuccess_urltext
A page on your site to send them to once they've paid. Default: Polar's confirmation page.
Extra detailsmetadataobject
Kept on the order or subscription it creates.

Outputs

amountnumber
Price before discounts and tax, in cents.
currencytext
Currency code, e.g. usd.
customer_emailtext
The customer's email, if known.
customer_idtext
The customer's Polar ID, if known.
discount_idtext
The discount applied.
expires_attext
When the link stops working.
idtext
The checkout's Polar ID.
metadataobject
Extra details.
net_amountnumber
Price after discounts, before tax, in cents.
product_idtext
The product selected.
statustext
open, confirmed, succeeded, failed or expired.
urltext
The checkout page to send the customer to.
Example output
{
  "amount": 1900,
  "created_at": "2026-09-27T16:42:49.000000Z",
  "currency": "usd",
  "customer_email": "ada@example.com",
  "customer_id": "992fae2a-2a17-4b7a-8d9e-e287cf90131b",
  "customer_name": "Ada Lovelace",
  "discount_amount": 380,
  "discount_id": "7c1d5a2e-3b4f-4c6d-8e9f-0a1b2c3d4e5f",
  "expires_at": "2026-09-28T16:42:49.000000Z",
  "id": "5f6c0f1d-8f7a-4b1e-9a4d-3d9d2f0b7c21",
  "metadata": {},
  "modified_at": "2026-09-27T16:42:49.000000Z",
  "net_amount": 1520,
  "product_id": "d8dd2de1-21b7-4a41-8bc3-ce909c0cfe23",
  "status": "open",
  "success_url": "https://example.com/thanks",
  "tax_amount": null,
  "total_amount": 1520,
  "url": "https://buy.polar.sh/polar_c_5f6c0f1d8f7a4b1e"
}

Create customer

Add a customer to Polar, before they buy anything.

Inputs

EmailemailtextRequired
Their email address. Each customer's is unique.
Namenametext
Their name.
Your ID for themexternal_idtext
The ID your own system uses for this person, so later steps can find them by it. Polar doesn't allow changing it once set.
Extra detailsmetadataobject
Anything else to keep on the customer, as names and values.

Outputs

created_attext
When they became a customer.
deleted_attext
When they were deleted, if they were.
emailtext
Email address.
email_verifiedtrue/false
Whether they've confirmed their email.
external_idtext
The ID your system uses for them.
idtext
The customer's Polar ID.
metadataobject
Extra details.
nametext
Name.
Example output
{
  "avatar_url": null,
  "billing_address": null,
  "billing_name": "Ada Lovelace",
  "created_at": "2026-09-27T16:42:49.000000Z",
  "default_payment_method_id": null,
  "deleted_at": null,
  "email": "ada@example.com",
  "email_verified": false,
  "external_id": "usr_1337",
  "first_user_event_at": null,
  "id": "992fae2a-2a17-4b7a-8d9e-e287cf90131b",
  "locale": null,
  "metadata": {
    "plan_source": "website"
  },
  "modified_at": "2026-09-27T16:42:49.000000Z",
  "name": "Ada Lovelace",
  "organization_id": "1dbfc517-0bbf-4301-9ba8-555ca42b9737",
  "tax_id": null,
  "type": "individual"
}

Create discount

Make a discount: a code customers type at checkout, or one you apply with Create checkout link or Update subscription.

Inputs

NamenametextRequired
Shown to the customer when it's applied.
Percent offpercent_offnumber
For example 20. Fill in this or Amount off.From 0.01 to 100.
Amount offamount_offnumber
For example 5.00. Fill in this or Percent off.At least 0.01.
Currencycurrencytext
The amount off's currency. Default: your Polar account's.One of: aed (AED · UAE dirham), all (ALL · Albanian lek), amd (AMD · Armenian dram), aoa (AOA · Angolan kwanza), ars (ARS · Argentine peso), aud (AUD · Australian dollar), awg (AWG · Aruban florin), azn (AZN · Azerbaijani manat), bam (BAM · Bosnia-Herzegovina convertible mark), bbd (BBD · Barbadian dollar), and 116 more.
Codecodetext
What customers type at checkout, letters and numbers. Leave empty for a discount only your workflows apply.
Applies todurationtext
For subscriptions. Default: the first payment only.One of: once (First payment only), forever (Every payment), repeating (For a number of months).
Monthsmonthsnumber
How many months, for 'For a number of months'.From 1 to 999.
Productsproductslist
Only for these products. Leave empty for all.
Startsstarts_atdate and time
When it can first be used. Default: now.
Endsends_atdate and time
When it stops working. Default: never.
Usesmax_redemptionsnumber
How many times it can be used in all. Default: no limit.At least 1.

Outputs

amountsobject
Amount off per currency, in cents.
basis_pointsnumber
Percent off × 100 (2000 is 20%).
codetext
The code customers type at checkout.
durationtext
once, forever or repeating.
duration_in_monthsnumber
How many months it lasts.
ends_attext
When it stops working.
idtext
The discount's Polar ID.
max_redemptionsnumber
How many times it can be used.
nametext
Name shown to customers.
redemptions_countnumber
How many times it has been used.
starts_attext
When it can first be used.
typetext
percentage or fixed.
Example output
{
  "basis_points": 2000,
  "code": "LAUNCH20",
  "created_at": "2026-09-27T16:42:49.000000Z",
  "duration": "repeating",
  "duration_in_months": 3,
  "ends_at": "2026-10-04T23:59:59.000000Z",
  "id": "7c1d5a2e-3b4f-4c6d-8e9f-0a1b2c3d4e5f",
  "max_redemptions": 100,
  "max_redemptions_per_customer": null,
  "metadata": {},
  "modified_at": null,
  "name": "Launch week",
  "organization_id": "1dbfc517-0bbf-4301-9ba8-555ca42b9737",
  "products": [],
  "redemptions_count": 0,
  "starts_at": null,
  "type": "percentage"
}

Create product

Add something to sell: a one-time purchase or a subscription plan, paid or free.

Inputs

NamenametextRequired
What it's called, 3 to 64 characters.
BillingbillingtextRequired
How customers pay for it.One of: one_time (One-time purchase), month (Monthly subscription), year (Yearly subscription), week (Weekly subscription).
Pricepricenumber
For example 19.99. Leave empty to make it free.At least 0.
Currencycurrencytext
Default: your Polar account's currency.One of: aed (AED · UAE dirham), all (ALL · Albanian lek), amd (AMD · Armenian dram), aoa (AOA · Angolan kwanza), ars (ARS · Argentine peso), aud (AUD · Australian dollar), awg (AWG · Aruban florin), azn (AZN · Azerbaijani manat), bam (BAM · Bosnia-Herzegovina convertible mark), bbd (BBD · Barbadian dollar), and 116 more.
Descriptiondescriptiontext
What customers see at checkout.
Free trial (days)free_trial_daysnumber
For subscriptions: how many days they try it free.From 1 to 1000.

Outputs

created_attext
When it was created.
descriptiontext
Description.
idtext
The product's Polar ID.
is_archivedtrue/false
Whether it's no longer for sale.
is_recurringtrue/false
Whether it's a subscription.
metadataobject
Extra details.
nametext
Name.
priceslist
Its prices.
recurring_intervaltext
day, week, month or year; empty if one-time.
trial_interval_countnumber
Length of the free trial.
visibilitytext
public, private or draft.
Example output
{
  "attached_custom_fields": [],
  "benefits": [],
  "created_at": "2026-09-27T16:42:49.000000Z",
  "description": "Everything in Free, plus priority support.",
  "id": "d8dd2de1-21b7-4a41-8bc3-ce909c0cfe23",
  "is_archived": false,
  "is_deletable": true,
  "is_recurring": true,
  "medias": [],
  "metadata": {},
  "modified_at": "2026-09-27T16:42:49.000000Z",
  "name": "Pro",
  "organization_id": "1dbfc517-0bbf-4301-9ba8-555ca42b9737",
  "prices": [
    {
      "amount_type": "fixed",
      "created_at": "2026-09-27T16:42:49.000000Z",
      "id": "a4f3f5b8-2b36-4f0e-9d3e-1c1b1b8b6a11",
      "is_archived": false,
      "modified_at": "2026-09-27T16:42:49.000000Z",
      "price_amount": 1900,
      "price_currency": "usd",
      "product_id": "d8dd2de1-21b7-4a41-8bc3-ce909c0cfe23",
      "source": "catalog",
      "tax_behavior": null
    }
  ],
  "recurring_interval": "month",
  "recurring_interval_count": 1,
  "trial_interval": null,
  "trial_interval_count": null,
  "visibility": "public"
}

Delete customer

Delete a customer: their subscriptions end right away and their benefits are revoked. Their past orders stay.

Inputs

CustomercustomertextRequired
Pick a customer, or enter their email, the ID your system uses for them, or their Polar customer ID.
Erase personal dataerase_personal_datatrue/false
Also scrub their name, email and address, for a GDPR request.

Outputs

customer_idtext
The deleted customer's Polar ID.
deletedtrue/false
Always true.
emailtext
Their email.
personal_data_erasedtrue/false
Whether their personal data was erased.
Example output
{
  "customer_id": "992fae2a-2a17-4b7a-8d9e-e287cf90131b",
  "deleted": true,
  "email": "ada@example.com",
  "personal_data_erased": false
}

Find customer

Look up a customer by email or your ID for them, with their active subscriptions and benefits. Says so when there's no match, so a workflow can create them.

Inputs

CustomercustomertextRequired
Pick a customer, or enter their email, the ID your system uses for them, or their Polar customer ID.

Outputs

customerobject
foundtrue/false
Whether a customer matched.
Example output
{
  "customer": {
    "active_meters": [],
    "active_subscriptions": [
      {
        "amount": 0,
        "cancel_at_period_end": false,
        "canceled_at": null,
        "checkout_id": null,
        "created_at": "2026-09-27T16:42:49.000000Z",
        "currency": "usd",
        "current_period_end": "2026-10-27T16:42:49.000000Z",
        "current_period_start": "2026-09-27T16:42:49.000000Z",
        "customer_cancellation_comment": null,
        "customer_cancellation_reason": null,
        "discount_id": null,
        "ended_at": null,
        "ends_at": null,
        "id": "e5149aae-e521-42b9-b24c-abb3d71eea2e",
        "metadata": {},
        "modified_at": "2026-09-27T16:42:49.000000Z",
        "product_id": "d8dd2de1-21b7-4a41-8bc3-ce909c0cfe23",
        "recurring_interval": "month",
        "recurring_interval_count": 1,
        "started_at": "2026-09-27T16:42:49.000000Z",
        "status": "active",
        "trial_end": null,
        "trial_start": null
      }
    ],
    "avatar_url": null,
    "billing_address": null,
    "billing_name": "Ada Lovelace",
    "created_at": "2026-09-27T16:42:49.000000Z",
    "default_payment_method_id": null,
    "deleted_at": null,
    "email": "ada@example.com",
    "email_verified": false,
    "external_id": "usr_1337",
    "first_user_event_at": null,
    "granted_benefits": [],
    "id": "992fae2a-2a17-4b7a-8d9e-e287cf90131b",
    "locale": null,
    "metadata": {
      "plan_source": "website"
    },
    "modified_at": "2026-09-27T16:42:49.000000Z",
    "name": "Ada Lovelace",
    "organization_id": "1dbfc517-0bbf-4301-9ba8-555ca42b9737",
    "tax_id": null,
    "type": "individual"
  },
  "found": true
}

Find orders

List purchases and subscription payments by customer, product, status or date.

Inputs

Customercustomertext
Only this customer's. Pick one, or enter their email or the ID your system uses for them. Leave empty for everyone.
Productproducttext
Only this product's. Leave empty for all.
Statusstatusestext
Leave empty for any status.One or more of: paid, refunded, partially_refunded (Partly refunded), pending (Payment pending), draft, void.
Placed aftercreated_afterdate and time
Only orders placed after this.
Placed beforecreated_beforedate and time
Only orders placed before this.
Limitlimitnumber
How many to return, newest first, up to 100. Default 25.From 1 to 100.

Outputs

countnumber
How many orders are in this answer.
orderslist
The orders, newest first.
totalnumber
How many orders match in all.
Example output
{
  "count": 1,
  "orders": [
    {
      "billing_reason": "subscription_create",
      "created_at": "2026-09-27T16:42:49.000000Z",
      "currency": "usd",
      "customer": {
        "avatar_url": null,
        "billing_address": null,
        "billing_name": "Ada Lovelace",
        "created_at": "2026-09-27T16:42:49.000000Z",
        "default_payment_method_id": null,
        "deleted_at": null,
        "email": "ada@example.com",
        "email_verified": false,
        "external_id": "usr_1337",
        "first_user_event_at": null,
        "id": "992fae2a-2a17-4b7a-8d9e-e287cf90131b",
        "locale": null,
        "metadata": {
          "plan_source": "website"
        },
        "modified_at": "2026-09-27T16:42:49.000000Z",
        "name": "Ada Lovelace",
        "organization_id": "1dbfc517-0bbf-4301-9ba8-555ca42b9737",
        "tax_id": null,
        "type": "individual"
      },
      "customer_id": "992fae2a-2a17-4b7a-8d9e-e287cf90131b",
      "discount_amount": 0,
      "discount_id": null,
      "id": "b0f1c2d3-4e5f-4a6b-8c7d-9e0f1a2b3c4d",
      "invoice_number": "POLAR-0001",
      "metadata": {},
      "modified_at": "2026-09-27T16:42:49.000000Z",
      "net_amount": 1900,
      "paid": true,
      "product": {
        "id": "d8dd2de1-21b7-4a41-8bc3-ce909c0cfe23",
        "name": "Pro"
      },
      "product_id": "d8dd2de1-21b7-4a41-8bc3-ce909c0cfe23",
      "refunded_amount": 0,
      "status": "paid",
      "subscription_id": "e5149aae-e521-42b9-b24c-abb3d71eea2e",
      "subtotal_amount": 1900,
      "tax_amount": 0,
      "total_amount": 1900
    }
  ],
  "total": 1
}

Find subscriptions

List subscriptions by customer, plan or status, such as everyone set to cancel at the end of their billing period.

Inputs

Customercustomertext
Only this customer's. Pick one, or enter their email or the ID your system uses for them. Leave empty for everyone.
Planproducttext
Only this plan's. Leave empty for all.
Statusstatusestext
Leave empty for any status.One or more of: active, trialing (On a free trial), past_due (Payment overdue), paused, canceled, unpaid, incomplete (Awaiting first payment), incomplete_expired (First payment never made).
Only ones set to cancelcanceling_onlytrue/false
Only subscriptions ending with their current billing period.
Started afterstarted_afterdate and time
Only subscriptions that started after this.
Started beforestarted_beforedate and time
Only subscriptions that started before this.
Limitlimitnumber
How many to return, newest first, up to 100. Default 25.From 1 to 100.

Outputs

countnumber
How many subscriptions are in this answer.
subscriptionslist
The subscriptions, newest first.
totalnumber
How many subscriptions match in all.
Example output
{
  "count": 1,
  "subscriptions": [
    {
      "amount": 0,
      "cancel_at_period_end": false,
      "canceled_at": null,
      "checkout_id": null,
      "created_at": "2026-09-27T16:42:49.000000Z",
      "currency": "usd",
      "current_period_end": "2026-10-27T16:42:49.000000Z",
      "current_period_start": "2026-09-27T16:42:49.000000Z",
      "customer": {
        "avatar_url": null,
        "billing_address": null,
        "billing_name": "Ada Lovelace",
        "created_at": "2026-09-27T16:42:49.000000Z",
        "default_payment_method_id": null,
        "deleted_at": null,
        "email": "ada@example.com",
        "email_verified": false,
        "external_id": "usr_1337",
        "first_user_event_at": null,
        "id": "992fae2a-2a17-4b7a-8d9e-e287cf90131b",
        "locale": null,
        "metadata": {
          "plan_source": "website"
        },
        "modified_at": "2026-09-27T16:42:49.000000Z",
        "name": "Ada Lovelace",
        "organization_id": "1dbfc517-0bbf-4301-9ba8-555ca42b9737",
        "tax_id": null,
        "type": "individual"
      },
      "customer_cancellation_comment": null,
      "customer_cancellation_reason": null,
      "customer_id": "992fae2a-2a17-4b7a-8d9e-e287cf90131b",
      "discount": null,
      "discount_id": null,
      "ended_at": null,
      "ends_at": null,
      "id": "e5149aae-e521-42b9-b24c-abb3d71eea2e",
      "metadata": {},
      "modified_at": "2026-09-27T16:42:49.000000Z",
      "product": {
        "id": "d8dd2de1-21b7-4a41-8bc3-ce909c0cfe23",
        "name": "Free"
      },
      "product_id": "d8dd2de1-21b7-4a41-8bc3-ce909c0cfe23",
      "recurring_interval": "month",
      "recurring_interval_count": 1,
      "started_at": "2026-09-27T16:42:49.000000Z",
      "status": "active",
      "trial_end": null,
      "trial_start": null
    }
  ],
  "total": 1
}

Get sales metrics

Revenue, orders, subscriptions and checkouts over a date range, in total and per day, week or month. Money is in cents.

Inputs

Fromstart_datedate
Default: 30 days ago.
Toend_datedate
Default: today.
Group byintervaltext
Default: day.One of: day, week, month, year, hour.
Metricsmetricstext
Leave empty for all of them.One or more of: revenue, net_revenue (Net revenue (after fees)), orders, average_order_value (Average order value), monthly_recurring_revenue (Monthly recurring revenue (MRR)), active_subscriptions (Active subscriptions), new_subscriptions (New subscriptions), canceled_subscriptions (Canceled subscriptions), churn_rate (Churn rate), checkouts (Checkouts started), checkouts_conversion (Checkout conversion), cumulative_revenue (All-time revenue).
Productproducttext
Only this product's. Leave empty for all.

Outputs

end_datetext
Last day covered.
intervaltext
How the periods are grouped.
periodslist
The same metrics for each day, week, month or year.
start_datetext
First day covered.
totalsobject
Each metric over the whole range. Money is in cents.
Example output
{
  "end_date": "2026-09-27",
  "interval": "day",
  "periods": [
    {
      "active_subscriptions": 30,
      "average_order_value": 1900,
      "canceled_subscriptions": 0,
      "checkouts": 3,
      "checkouts_conversion": 0.6667,
      "churn_rate": 0,
      "cumulative_revenue": 342000,
      "monthly_recurring_revenue": 57000,
      "net_revenue": 3534,
      "new_subscriptions": 1,
      "orders": 2,
      "revenue": 3800,
      "timestamp": "2026-09-27T00:00:00Z"
    }
  ],
  "start_date": "2026-08-29",
  "totals": {
    "active_subscriptions": 30,
    "average_order_value": 1900,
    "canceled_subscriptions": 1,
    "checkouts": 48,
    "checkouts_conversion": 0.125,
    "churn_rate": 0.03,
    "cumulative_revenue": 342000,
    "monthly_recurring_revenue": 57000,
    "net_revenue": 53010,
    "new_subscriptions": 6,
    "orders": 30,
    "revenue": 57000
  }
}

Record usage

Record something a customer used, for usage-based billing. Your Polar meters count these events.

Inputs

CustomercustomertextRequired
Pick a customer, or enter their email, their Polar ID, or the ID your system uses for them (which works even before they're a Polar customer).
Eventevent_nametextRequired
The name your Polar meters count, e.g. api_call.
Detailsdetailsobject
Values your meters add up, e.g. tokens: 1200.
Whenoccurred_atdate and time
When it happened. Default: now.
Event IDevent_idtext
Your own unique ID for this event. If a step runs twice, Polar records it once.

Outputs

customertext
Who it was recorded for.
duplicatetrue/false
True when this event ID was already recorded.
event_nametext
The event's name.
occurred_attext
When it happened, if given.
recordedtrue/false
Whether Polar recorded it.
Example output
{
  "customer": "usr_1337",
  "duplicate": false,
  "event_name": "api_call",
  "occurred_at": null,
  "recorded": true
}

Start free subscription

Put a customer on a free plan. For a paid plan, send them a link from Create checkout link instead.

Inputs

CustomercustomertextRequired
Pick a customer, or enter their email, the ID your system uses for them, or their Polar customer ID.
Free planproducttextRequired
Pick a free plan, or use a product ID from an earlier step.

Outputs

amountnumber
What each billing period costs, in cents.
cancel_at_period_endtrue/false
Whether it ends when this period does.
canceled_attext
When it was canceled.
currencytext
Currency code, e.g. usd.
current_period_endtext
When it renews (or ends).
current_period_starttext
When the current billing period started.
customerobject
customer_cancellation_reasontext
Why it was canceled.
customer_idtext
The customer's Polar ID.
discount_idtext
The discount on it, if any.
ends_attext
When it will end.
idtext
The subscription's Polar ID.
metadataobject
Extra details.
productobject
product_idtext
The plan's Polar ID.
recurring_intervaltext
day, week, month or year.
started_attext
When it started.
statustext
active, trialing, past_due, paused, canceled, ...
trial_endtext
When the free trial ends.
Example output
{
  "amount": 0,
  "cancel_at_period_end": false,
  "canceled_at": null,
  "checkout_id": null,
  "created_at": "2026-09-27T16:42:49.000000Z",
  "currency": "usd",
  "current_period_end": "2026-10-27T16:42:49.000000Z",
  "current_period_start": "2026-09-27T16:42:49.000000Z",
  "customer": {
    "avatar_url": null,
    "billing_address": null,
    "billing_name": "Ada Lovelace",
    "created_at": "2026-09-27T16:42:49.000000Z",
    "default_payment_method_id": null,
    "deleted_at": null,
    "email": "ada@example.com",
    "email_verified": false,
    "external_id": "usr_1337",
    "first_user_event_at": null,
    "id": "992fae2a-2a17-4b7a-8d9e-e287cf90131b",
    "locale": null,
    "metadata": {
      "plan_source": "website"
    },
    "modified_at": "2026-09-27T16:42:49.000000Z",
    "name": "Ada Lovelace",
    "organization_id": "1dbfc517-0bbf-4301-9ba8-555ca42b9737",
    "tax_id": null,
    "type": "individual"
  },
  "customer_cancellation_comment": null,
  "customer_cancellation_reason": null,
  "customer_id": "992fae2a-2a17-4b7a-8d9e-e287cf90131b",
  "discount": null,
  "discount_id": null,
  "ended_at": null,
  "ends_at": null,
  "id": "e5149aae-e521-42b9-b24c-abb3d71eea2e",
  "metadata": {},
  "modified_at": "2026-09-27T16:42:49.000000Z",
  "product": {
    "id": "d8dd2de1-21b7-4a41-8bc3-ce909c0cfe23",
    "name": "Free"
  },
  "product_id": "d8dd2de1-21b7-4a41-8bc3-ce909c0cfe23",
  "recurring_interval": "month",
  "recurring_interval_count": 1,
  "started_at": "2026-09-27T16:42:49.000000Z",
  "status": "active",
  "trial_end": null,
  "trial_start": null
}

Update customer

Change a customer's email, name or details. Only what you fill in changes.

Inputs

CustomercustomertextRequired
Pick a customer, or enter their email, the ID your system uses for them, or their Polar customer ID.
New emailemailtext
Their new email address.
Namenametext
Their name.
Your ID for themexternal_idtext
The ID your own system uses for this person, so later steps can find them by it. Polar doesn't allow changing it once set.
Extra detailsmetadataobject
Details to add or change. Ones you leave out are kept.

Outputs

created_attext
When they became a customer.
deleted_attext
When they were deleted, if they were.
emailtext
Email address.
email_verifiedtrue/false
Whether they've confirmed their email.
external_idtext
The ID your system uses for them.
idtext
The customer's Polar ID.
metadataobject
Extra details.
nametext
Name.
Example output
{
  "avatar_url": null,
  "billing_address": null,
  "billing_name": "Ada Lovelace",
  "created_at": "2026-09-27T16:42:49.000000Z",
  "default_payment_method_id": null,
  "deleted_at": null,
  "email": "ada@example.com",
  "email_verified": false,
  "external_id": "usr_1337",
  "first_user_event_at": null,
  "id": "992fae2a-2a17-4b7a-8d9e-e287cf90131b",
  "locale": null,
  "metadata": {
    "plan_source": "website"
  },
  "modified_at": "2026-09-27T16:42:49.000000Z",
  "name": "Ada Lovelace",
  "organization_id": "1dbfc517-0bbf-4301-9ba8-555ca42b9737",
  "tax_id": null,
  "type": "individual"
}

Update product

Rename a product, change its price, or stop selling it. Only what you fill in changes.

Inputs

ProductproducttextRequired
Pick a product, or use a product ID from an earlier step.
New namenametext
3 to 64 characters.
New descriptiondescriptiontext
What customers see at checkout.
New pricepricenumber
For example 24.99, or 0 for free. New purchases pay it; prices in other currencies are kept.At least 0.
Currencycurrencytext
The new price's currency. Default: its current one.One of: aed (AED · UAE dirham), all (ALL · Albanian lek), amd (AMD · Armenian dram), aoa (AOA · Angolan kwanza), ars (ARS · Argentine peso), aud (AUD · Australian dollar), awg (AWG · Aruban florin), azn (AZN · Azerbaijani manat), bam (BAM · Bosnia-Herzegovina convertible mark), bbd (BBD · Barbadian dollar), and 116 more.
Availabilityavailabilitytext
Archive it to stop selling it. Existing subscriptions carry on.One of: available (For sale), archived (Archived (no longer for sale)).

Outputs

created_attext
When it was created.
descriptiontext
Description.
idtext
The product's Polar ID.
is_archivedtrue/false
Whether it's no longer for sale.
is_recurringtrue/false
Whether it's a subscription.
metadataobject
Extra details.
nametext
Name.
priceslist
Its prices.
recurring_intervaltext
day, week, month or year; empty if one-time.
trial_interval_countnumber
Length of the free trial.
visibilitytext
public, private or draft.
Example output
{
  "attached_custom_fields": [],
  "benefits": [],
  "created_at": "2026-09-27T16:42:49.000000Z",
  "description": "Everything in Free, plus priority support.",
  "id": "d8dd2de1-21b7-4a41-8bc3-ce909c0cfe23",
  "is_archived": false,
  "is_deletable": true,
  "is_recurring": true,
  "medias": [],
  "metadata": {},
  "modified_at": "2026-09-27T16:42:49.000000Z",
  "name": "Pro",
  "organization_id": "1dbfc517-0bbf-4301-9ba8-555ca42b9737",
  "prices": [
    {
      "amount_type": "fixed",
      "created_at": "2026-09-27T16:42:49.000000Z",
      "id": "a4f3f5b8-2b36-4f0e-9d3e-1c1b1b8b6a11",
      "is_archived": false,
      "modified_at": "2026-09-27T16:42:49.000000Z",
      "price_amount": 1900,
      "price_currency": "usd",
      "product_id": "d8dd2de1-21b7-4a41-8bc3-ce909c0cfe23",
      "source": "catalog",
      "tax_behavior": null
    }
  ],
  "recurring_interval": "month",
  "recurring_interval_count": 1,
  "trial_interval": null,
  "trial_interval_count": null,
  "visibility": "public"
}

Update subscription

Switch a subscription to another plan, apply or remove a discount, or undo a scheduled cancellation.

Inputs

SubscriptionsubscriptiontextRequired
Pick one, or use a subscription ID from an earlier step, such as Find customer's active subscriptions.
Switch to planproducttext
The plan to move them to.
Billing for the switchprorationtext
Default: your Polar setting.One of: invoice (Charge or credit the difference now), prorate (Add the difference to the next bill), next_period (Switch at the next renewal).
Apply discountdiscounttext
Applies from their next payment.
Remove discountremove_discounttrue/false
Take off the discount it has, from the next payment.
Undo scheduled cancellationresumetrue/false
Keep it renewing if it was set to cancel at the end of its billing period.

Outputs

amountnumber
What each billing period costs, in cents.
cancel_at_period_endtrue/false
Whether it ends when this period does.
canceled_attext
When it was canceled.
currencytext
Currency code, e.g. usd.
current_period_endtext
When it renews (or ends).
current_period_starttext
When the current billing period started.
customerobject
customer_cancellation_reasontext
Why it was canceled.
customer_idtext
The customer's Polar ID.
discount_idtext
The discount on it, if any.
ends_attext
When it will end.
idtext
The subscription's Polar ID.
metadataobject
Extra details.
productobject
product_idtext
The plan's Polar ID.
recurring_intervaltext
day, week, month or year.
started_attext
When it started.
statustext
active, trialing, past_due, paused, canceled, ...
trial_endtext
When the free trial ends.
Example output
{
  "amount": 0,
  "cancel_at_period_end": false,
  "canceled_at": null,
  "checkout_id": null,
  "created_at": "2026-09-27T16:42:49.000000Z",
  "currency": "usd",
  "current_period_end": "2026-10-27T16:42:49.000000Z",
  "current_period_start": "2026-09-27T16:42:49.000000Z",
  "customer": {
    "avatar_url": null,
    "billing_address": null,
    "billing_name": "Ada Lovelace",
    "created_at": "2026-09-27T16:42:49.000000Z",
    "default_payment_method_id": null,
    "deleted_at": null,
    "email": "ada@example.com",
    "email_verified": false,
    "external_id": "usr_1337",
    "first_user_event_at": null,
    "id": "992fae2a-2a17-4b7a-8d9e-e287cf90131b",
    "locale": null,
    "metadata": {
      "plan_source": "website"
    },
    "modified_at": "2026-09-27T16:42:49.000000Z",
    "name": "Ada Lovelace",
    "organization_id": "1dbfc517-0bbf-4301-9ba8-555ca42b9737",
    "tax_id": null,
    "type": "individual"
  },
  "customer_cancellation_comment": null,
  "customer_cancellation_reason": null,
  "customer_id": "992fae2a-2a17-4b7a-8d9e-e287cf90131b",
  "discount": null,
  "discount_id": null,
  "ended_at": null,
  "ends_at": null,
  "id": "e5149aae-e521-42b9-b24c-abb3d71eea2e",
  "metadata": {},
  "modified_at": "2026-09-27T16:42:49.000000Z",
  "product": {
    "id": "d8dd2de1-21b7-4a41-8bc3-ce909c0cfe23",
    "name": "Free"
  },
  "product_id": "d8dd2de1-21b7-4a41-8bc3-ce909c0cfe23",
  "recurring_interval": "month",
  "recurring_interval_count": 1,
  "started_at": "2026-09-27T16:42:49.000000Z",
  "status": "active",
  "trial_end": null,
  "trial_start": null
}

On this page