---
title: "Create Polar Checkout"
method: POST
path: "/v2/billing/polar/checkout"
tags: ["billing", "polar"]
---

# Create Polar Checkout

`POST /v2/billing/polar/checkout`

## Request

- Base URL: `https://api.etymolt.com`
- URL: `https://api.etymolt.com/v2/billing/polar/checkout`
- Auth: none declared

Mint a Polar-hosted checkout session for the requested SKU.

Returns the Polar `url` for redirect + the `session_id` so the frontend
can poll the session-state endpoint while waiting for the webhook.

Auth: see module docstring. The credit-target identity is resolved
SERVER-SIDE from auth headers or a signed checkout_token; the request
body cannot stamp `api_key_hash` or `email` into Polar's metadata.

Errors:
  400 — unknown SKU, body carries deprecated identity fields, no
        Polar product configured, or the checkout_token is bound to
        a different SKU
  401 — no auth context
  404 — tenant in X-Tenant-Id (or token) not found
  503 — Polar credentials missing / API unreachable

## Headers

- `X-Tenant-Id` string, nullable
- `X-User-Id` string, nullable
- `Authorization` string, nullable
- `X-API-Key` string, nullable

## Request body

- PolarCheckoutRequest
  - `sku` string: Etymolt SKU; only topup_10 is wired today.
  - `email` string, nullable: DEPRECATED — rejected since 2026-05-17. Mint a checkout_token via POST /v2/billing/checkout_token.
  - `api_key_hash` string, nullable: DEPRECATED — rejected since 2026-05-17. Mint a checkout_token via POST /v2/billing/checkout_token.
  - `checkout_token` string, nullable: One-time signed token binding (subject, sku, exp).
  - `client_reference_id` string, nullable: Opaque buyer-side correlation id; threaded into metadata.
  - `success_url` string, nullable

## Response `200`

Successful Response

- PolarCheckoutResponse
  - `url` string, required
  - `session_id` string, required
  - `sku` string, required
  - `provider` string
  - `status` string, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/etymolt/apis/etymolt-verify-ai-generated-brand-names.md) · [All operations](https://skmtc.dev/etymolt/apis/etymolt-verify-ai-generated-brand-names/llms.txt) · [OpenAPI document](https://skmtc.dev/etymolt/apis/etymolt-verify-ai-generated-brand-names/revisions/7228ffa1efa7?raw)
