---
title: "Finalize Order"
method: POST
path: "/v1/orders/{id}/finalize"
tags: ["orders", "public"]
---

# Finalize Order

`POST /v1/orders/{id}/finalize`

Finalize a draft order and synchronously attempt an off-session charge.

On success, the order transitions to `paid` and benefit grants fire
before the response returns. On failure (decline, missing payment method,
SCA challenge), the order stays in `draft` and a 4xx error is returned.

The request fails with 412 if the order is not in `draft` status.

**Scopes**: `orders:write`

## Path parameters

- `id` string, uuid4, required — The order ID.

## Request body

- OrderFinalize — Schema to finalize a draft order and trigger an off-session charge.
  - `payment_method_id` string, uuid4, nullable — ID of the payment method to charge. Must belong to the order's customer. Falls back to the customer's default payment method when unset.

## Response `200`

Successful Response

- Order — unresolved $ref

## Other responses

- `402` — The charge failed, or requires customer authentication (e.g. a 3DS challenge) that can't be completed off-session.
- `403` — Off-session charges are not enabled for this organization, or its account can't currently accept payments.
- `404` — Order not found.
- `412` — The order is not in `draft` status.
- `422` — Validation Error

---

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