---
title: "Create Checkout"
method: POST
path: "/checkouts"
---

# Create Checkout

`POST /checkouts`

Creates a new custom checkout as a published clone of the account's default checkout: payment methods — including icon/name overrides and required-field condition sets — are copied from the default; general settings and styling inherit the account baseline until the checkout's first publish. The new checkout is born with status PUBLISHED and is never the account's default. The identifier is exposed as the top-level `id`.

## Headers

- `X-Idempotency-Key` string

## Request body

- object
  - `name` string, required — Checkout name. Required, non-blank, and unique per account (a duplicate name is rejected with 409).
  - `description` string — Optional free-text description.

## Response `201`

The created checkout. Born PUBLISHED as a clone of the account's default; `is_default` is always false on creation. Use `id` as the checkout_code in the other Checkout Builder endpoints.

- CheckoutMutationResponse
  - `id` string — Checkout identifier (UUID).
  - `name` string — Checkout name.
  - `description` string — Checkout description.
  - `is_default` boolean — Whether this checkout is the account's default.
  - `is_active` boolean — Whether the checkout is active (serving traffic).
  - `created_at` string, date-time — Creation timestamp (ISO-8601).

## Other responses

- `400` — Missing or blank `name`, or a malformed JSON body.
- `401` — Not authenticated, or the account is not in the beta allowlist.
- `404` — The account has no default checkout to clone from.
- `409` — A checkout with the same name already exists for the account.

---

[API](https://skmtc.net/y/apis/ai-caller.md) · [All operations](https://skmtc.net/y/apis/ai-caller/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/y/ai-caller/versions/05b629819b49/schema)
