---
title: "Create subscription"
method: POST
path: "/openmeter/subscriptions"
tags: ["OpenMeter Subscriptions"]
---

# Create subscription

`POST /openmeter/subscriptions`

## Request body

- BillingSubscriptionCreate — Subscription create request.
  - `labels` Labels — Labels store metadata of an entity that can be used for filtering an entity list or for searching across entity types. Keys must be of length 1-63 characters, and cannot start with "kong", "konnect", "mesh", "kic", or "_".
  - `settlement_mode` 'credit_then_invoice' | 'credit_only' — Settlement mode for billing. Values: - `credit_then_invoice`: Credits are applied first, then any remainder is invoiced. - `credit_only`: Usage is settled exclusively against credits.
  - `customer` object, required — The customer to create the subscription for.
    - `id` string — ULID (Universally Unique Lexicographically Sortable Identifier).
    - `key` string — ExternalResourceKey is a unique string that is used to identify a resource in an external system.
  - `plan` object, required — The plan reference of the subscription.
    - `id` string — ULID (Universally Unique Lexicographically Sortable Identifier).
    - `key` string — A key is a unique string that is used to identify a resource.
    - `version` integer — The plan version of the subscription, if any. If not provided, the latest version of the plan will be used.
  - `billing_anchor` string, date-time — [RFC3339](https://tools.ietf.org/html/rfc3339) formatted date-time string in UTC.
  - `cost_basis_mode` 'dynamic' | 'pinned' — Controls how custom-currency cost bases are selected for the subscription.

## Response `201`

Subscription created response.

- BillingSubscription — Subscription.
  - `id` string, required — ULID (Universally Unique Lexicographically Sortable Identifier).
  - `labels` Labels — Labels store metadata of an entity that can be used for filtering an entity list or for searching across entity types. Keys must be of length 1-63 characters, and cannot start with "kong", "konnect", "mesh", "kic", or "_".
  - `created_at` string, date-time, required — [RFC3339](https://tools.ietf.org/html/rfc3339) formatted date-time string in UTC.
  - `updated_at` string, date-time, required — [RFC3339](https://tools.ietf.org/html/rfc3339) formatted date-time string in UTC.
  - `deleted_at` string, date-time — [RFC3339](https://tools.ietf.org/html/rfc3339) formatted date-time string in UTC.
  - `customer_id` string, required — ULID (Universally Unique Lexicographically Sortable Identifier).
  - `plan_id` string — ULID (Universally Unique Lexicographically Sortable Identifier).
  - `invoice_currency` string, required — Three-letter [ISO4217](https://www.iso.org/iso-4217-currency-codes.html) currency code. Custom three-letter currency codes are also supported for convenience.
  - `cost_basis_mode` 'dynamic' | 'pinned', required — Controls how custom-currency cost bases are selected for the subscription.
  - `cost_basis_pins` BillingSubscriptionCostBasisPin[], required — Cost bases pinned to custom-currency pairs for this subscription.
    - `custom_currency_id` string, required — ULID (Universally Unique Lexicographically Sortable Identifier).
    - `invoice_currency` string, required — Three-letter [ISO4217](https://www.iso.org/iso-4217-currency-codes.html) currency code. Custom three-letter currency codes are also supported for convenience.
    - `cost_basis_id` string, required — ULID (Universally Unique Lexicographically Sortable Identifier).
  - `billing_anchor` string, date-time, required — [RFC3339](https://tools.ietf.org/html/rfc3339) formatted date-time string in UTC.
  - `status` 'active' | 'inactive' | 'canceled' | 'scheduled', required — Subscription status.
  - `settlement_mode` 'credit_then_invoice' | 'credit_only' — Settlement mode for billing. Values: - `credit_then_invoice`: Credits are applied first, then any remainder is invoiced. - `credit_only`: Usage is settled exclusively against credits.

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found
- `409` — Conflict

---

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