POST
/
v1
/
checkout-links
/
Typescript (SDK)
import { Polar } from "@polar-sh/sdk";

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

async function run() {
  const result = await polar.checkoutLinks.create({
    paymentProcessor: "stripe",
    allowDiscountCodes: true,
    requireBillingAddress: false,
    productPriceId: "<value>",
  });

  console.log(result);
}

run();
{
  "created_at": "2023-11-07T05:31:56Z",
  "modified_at": "2023-11-07T05:31:56Z",
  "id": "<string>",
  "metadata": {},
  "payment_processor": "stripe",
  "client_secret": "<string>",
  "success_url": "<string>",
  "label": "<string>",
  "allow_discount_codes": true,
  "require_billing_address": true,
  "discount_id": "<string>",
  "organization_id": "1dbfc517-0bbf-4301-9ba8-555ca42b9737",
  "products": [
    {
      "metadata": {},
      "created_at": "2023-11-07T05:31:56Z",
      "modified_at": "2023-11-07T05:31:56Z",
      "id": "<string>",
      "name": "<string>",
      "description": "<string>",
      "recurring_interval": "day",
      "is_recurring": true,
      "is_archived": true,
      "organization_id": "<string>",
      "prices": [
        {
          "created_at": "2023-11-07T05:31:56Z",
          "modified_at": "2023-11-07T05:31:56Z",
          "id": "<string>",
          "amount_type": "<string>",
          "is_archived": true,
          "product_id": "<string>",
          "type": "<string>",
          "recurring_interval": "day",
          "price_currency": "<string>",
          "price_amount": 123,
          "legacy": true
        }
      ],
      "benefits": [
        {
          "id": "<string>",
          "created_at": "2023-11-07T05:31:56Z",
          "modified_at": "2023-11-07T05:31:56Z",
          "type": "custom",
          "description": "<string>",
          "selectable": true,
          "deletable": true,
          "organization_id": "<string>"
        }
      ],
      "medias": [
        {
          "id": "<string>",
          "organization_id": "<string>",
          "name": "<string>",
          "path": "<string>",
          "mime_type": "<string>",
          "size": 123,
          "storage_version": "<string>",
          "checksum_etag": "<string>",
          "checksum_sha256_base64": "<string>",
          "checksum_sha256_hex": "<string>",
          "last_modified_at": "2023-11-07T05:31:56Z",
          "version": "<string>",
          "service": "<string>",
          "is_uploaded": true,
          "created_at": "2023-11-07T05:31:56Z",
          "size_readable": "<string>",
          "public_url": "<string>"
        }
      ]
    }
  ],
  "discount": {
    "duration": "once",
    "type": "fixed",
    "amount": 123,
    "currency": "<string>",
    "created_at": "2023-11-07T05:31:56Z",
    "modified_at": "2023-11-07T05:31:56Z",
    "id": "<string>",
    "metadata": {},
    "name": "<string>",
    "code": "<string>",
    "starts_at": "2023-11-07T05:31:56Z",
    "ends_at": "2023-11-07T05:31:56Z",
    "max_redemptions": 123,
    "redemptions_count": 123,
    "organization_id": "1dbfc517-0bbf-4301-9ba8-555ca42b9737"
  },
  "url": "<string>"
}
Looking to create a single use checkout session? Checkout Links are probably not what you’re looking for.Checkout Links are shareable links that generate checkout sessions when opened. They are very handy to start a purchase from your website or social media.However, if you want to start a checkout for one of your user inside your product, you should use the Checkout Sessions API.

Authorizations

Authorization
string
header
required

You can generate an Organization Access Token from your organization's settings.

Body

application/json

Schema to create a new checkout link from a a single product price.

Deprecated: Use CheckoutLinkCreateProducts instead.

payment_processor
string
required

Payment processor to use. Currently only Stripe is supported.

Allowed value: "stripe"
product_price_id
string<uuid4>
required
metadata
object

Key-value object allowing you to store additional information.

The key must be a string with a maximum length of 40 characters. The value must be either:

  • A string with a maximum length of 500 characters
  • An integer
  • A floating-point number
  • A boolean

You can store up to 50 key-value pairs.

label
string | null

Optional label to distinguish links internally

allow_discount_codes
boolean
default:true

Whether to allow the customer to apply discount codes. If you apply a discount through discount_id, it'll still be applied, but the customer won't be able to change it.

require_billing_address
boolean
default:false

Whether to require the customer to fill their full billing address, instead of just the country. Customers in the US will always be required to fill their full address, regardless of this setting.

discount_id
string<uuid4> | null

ID of the discount to apply to the checkout. If the discount is not applicable anymore when opening the checkout link, it'll be ignored.

success_url
string<uri> | null

URL where the customer will be redirected after a successful payment.You can add the checkout_id={CHECKOUT_ID} query parameter to retrieve the checkout session id.

Required string length: 1 - 2083

Response

Checkout link created.

Checkout link data.

created_at
string<date-time>
required

Creation timestamp of the object.

modified_at
string<date-time> | null
required

Last modification timestamp of the object.

id
string<uuid4>
required

The ID of the object.

metadata
object
required
payment_processor
enum<string>
required

Payment processor used.

Available options:
stripe
client_secret
string
required

Client secret used to access the checkout link.

success_url
string | null
required

URL where the customer will be redirected after a successful payment.

label
string | null
required

Optional label to distinguish links internally

allow_discount_codes
boolean
required

Whether to allow the customer to apply discount codes. If you apply a discount through discount_id, it'll still be applied, but the customer won't be able to change it.

require_billing_address
boolean
required

Whether to require the customer to fill their full billing address, instead of just the country. Customers in the US will always be required to fill their full address, regardless of this setting.

discount_id
string<uuid4> | null
required

ID of the discount to apply to the checkout. If the discount is not applicable anymore when opening the checkout link, it'll be ignored.

organization_id
string<uuid4>
required

The organization ID.

Examples:

"1dbfc517-0bbf-4301-9ba8-555ca42b9737"

products
CheckoutLinkProduct · object[]
required
discount
object | null
required
url
string
required