---
title: "Create Order"
method: POST
path: "/v1/orders/"
tags: ["orders", "public"]
---

# Create Order

`POST /v1/orders/`

Create a draft order for an off-session charge against a saved payment
method. The order is created with `status=draft` and no invoice number;
call `POST /v1/orders/{id}/finalize` to attempt the charge.

The organization must have the `off_session_charges_enabled` feature flag.

**Scopes**: `orders:write`

## Request body

- OrderCreate — Schema to create a draft order for an off-session charge.
  - `custom_field_data` object — Key-value object storing custom field values.
  - `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**.
  - `organization_id` string, uuid4, nullable — The organization ID.
  - `customer_id` string, uuid4, required — The ID of the customer the order is for. Must belong to the order's organization.
  - `product_id` string, uuid4, required — The ID of the one-time product to charge for. Must belong to the order's organization. Only fixed-price and free products are supported.
  - `currency` string, nullable — The currency to charge in (ISO 4217, lowercase, e.g. `usd`). Defaults to the organization's default currency; specify it to force a different one, or when the product isn't priced in the organization's default currency.
  - `amount` integer, nullable — A custom amount to charge, in the smallest currency unit. Overrides the product's price; defaults to the product's configured price (0 for free products). A positive amount must be at least the currency's minimum.
  - `description` string, nullable — A custom description for the order's line item, shown on the invoice and receipt (e.g. `5,000 tokens`). Defaults to the product name.

## Response `201`

Successful Response

- Order — unresolved $ref

## Other responses

- `422` — Validation Error

## Changes

- **2026-08-14** `77e4ef94fcc3` — 1 warning
  - added the new `subscription_meter_cycle` enum value to the `billing_reason` response property for the response status `201`
- **2026-08-10** `f9688fd328d6` — 1 info
  - added the required property `customer/first_user_event_at` to the response with the `201` status
- **2026-07-31** `8ae937367e87` — 4 info
  - added the required property `discount/anyOf[subschema #1: OrderDiscount]/oneOf[subschema #1: DiscountFixedOnceForeverDurationBase]/max_redemptions_per_customer` to the response with the `201` status
  - added the required property `discount/anyOf[subschema #1: OrderDiscount]/oneOf[subschema #2: DiscountFixedRepeatDurationBase]/max_redemptions_per_customer` to the response with the `201` status
  - added the required property `discount/anyOf[subschema #1: OrderDiscount]/oneOf[subschema #3: DiscountPercentageOnceForeverDurationBase]/max_redemptions_per_customer` to the response with the `201` status
  - added the required property `discount/anyOf[subschema #1: OrderDiscount]/oneOf[subschema #4: DiscountPercentageRepeatDurationBase]/max_redemptions_per_customer` to the response with the `201` status

[Change history](https://skmtc.dev/polar/apis/polar-api/changes/v1/orders/post.md)

---

[API](https://skmtc.dev/polar/apis/polar-api.md) · [All operations](https://skmtc.dev/polar/apis/polar-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/polar/polar-api/revisions/77e4ef94fcc3/schema)
