---
title: "Create billing checkout"
method: POST
path: "/billing/checkout"
tags: ["Billing"]
---

# Create billing checkout

`POST /billing/checkout`

## Request

- Base URL: `https://app.openpo.st/api/v1`
- URL: `https://app.openpo.st/api/v1/billing/checkout`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `openpost_session`

## Request body

- CreateBillingCheckoutInputBody
  - `$schema` string, uri: A URL to the JSON Schema for this object.
  - `billing_period` 'monthly' | 'annual': Billing period: monthly or annual
  - `organization_id` string: Organization ID
  - `plan_id` string, required: Plan ID: founder (Solo), team, or agency
  - `return_path` string: Validated same-origin route to resume once this exact checkout succeeds
  - `workspace_id` string: Workspace ID

## Response `200`

OK

- BillingURLResponse
  - `$schema` string, uri: A URL to the JSON Schema for this object.
  - `billing_period` string: Selected billing period
  - `client_token` string: Browser-safe Paddle.js client token
  - `customer_email` string: Authenticated customer's checkout email
  - `environment` string: Explicit Paddle.js environment: sandbox or production
  - `id` string: OpenPost checkout attempt or Paddle portal session ID
  - `plan_id` string: OpenPost plan ID
  - `price_ids` object: Paddle price IDs for localized previews in the selected billing period
  - `provider_price_id` string: Paddle price ID for the selected plan and period
  - `purpose` string: Requested Paddle portal destination
  - `return_url` string: OpenPost URL used after Paddle checkout completes
  - `trial_ends_at` string: Expected end of the 14-day trial
  - `url` string: OpenPost checkout URL or short-lived Paddle customer portal URL
  - `used_generic_fallback` boolean: Whether Paddle omitted the purpose-specific link and OpenPost returned the generic portal
  - `workspace_id` string: Workspace bound to this checkout attempt

## Other responses

- `400`: Bad Request
- `403`: Forbidden
- `422`: Unprocessable Entity
- `500`: Internal Server Error
- `503`: Service Unavailable

---

[API](https://skmtc.dev/openpo/apis/openpost-api.md) · [All operations](https://skmtc.dev/openpo/apis/openpost-api/llms.txt) · [OpenAPI document](https://skmtc.dev/openpo/apis/openpost-api/revisions/67d3964458a7?raw)
