---
title: "Create checkout session"
method: POST
path: "/checkouts"
tags: ["Checkouts"]
---

# Create checkout session

`POST /checkouts`

## Request

- Base URL: `https://api.crevio.co/v1`
- URL: `https://api.crevio.co/v1/checkouts`
- Auth: API key in header `Authorization`

Creates a new checkout session for purchasing products

## Headers

- `Idempotency-Key` string

## Request body

- CheckoutCreateRequest
  - `email` string, nullable
  - `customer` string, nullable: Customer ID
  - `discount_code` string, nullable
  - `line_items` object[]
    - `price_variant` string, required
    - `quantity` integer

## Response `201`

Checkout session created

- Checkout
  - `id` string, required
  - `object` string, required
  - `status` 'open' | 'complete' | 'abandoned' | 'expired', required
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required
  - `metadata` object, required
  - `mode` string, required
  - `currency` string, nullable, required
  - `total` number, required
  - `purchase_url` string, required
  - `customer` union: ID by default, full object when expanded
    - string
    - Customer
      - `id` string, required
      - `object` string, required
      - `email` string, required
      - `name` string, nullable, required
      - `first_name` string, nullable, required
      - `last_name` string, nullable, required
      - `phone_number` string, nullable, required
      - `customer_type` 'paid' | 'free' | 'lead', required
      - `notes` string, nullable, required
      - `confirmed_at` string, date-time, nullable, required
      - `created_at` string, date-time, required
      - `updated_at` string, date-time, required
      - `deleted_at` string, date-time, nullable, required
      - `purge_at` string, nullable, required
      - `anonymized` boolean, required
      - `metadata` object, required
      - `orders_count` integer, required
      - `total_spend` number, required
      - `tags` unknown[], required
        - unknown
  - `checkout_items` CheckoutItem[], required
    - `object` string, required
    - `quantity` integer, required
    - `price_variant` string, required
    - `product` string, nullable, required

## Other responses

- `400`: Bad request
- `401`: Authentication required
- `403`: Forbidden
- `422`: Validation error
- `429`: Rate limit exceeded — 600 requests per minute per credential. Retry after the number of seconds in `Retry-After`.
- `500`: Internal server error

---

[API](https://skmtc.dev/crevio/apis/crevio-api-v1.md) · [All operations](https://skmtc.dev/crevio/apis/crevio-api-v1/llms.txt) · [OpenAPI document](https://skmtc.dev/crevio/apis/crevio-api-v1/revisions/2219f18ad651?raw)
