---
title: "Billing Interval Switch"
method: POST
path: "/v1/billing/interval"
---

# Billing Interval Switch

`POST /v1/billing/interval`

## Request

- Base URL: `https://api.graphify.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.graphify.com/v1/billing/interval`
- Auth: HTTP bearer

Switch the current subscription's billing interval (owner/admin). month->year is
immediate + prorated (unconfirmed returns a `{preview}`, `confirm=true` commits a
`{switched}` swap); year->month returns `{scheduledAt}` (period-end). 503 until the
target-interval price is configured.

## Headers

- `X-Graphify-Tenant-ID` string, required

## Request body

- BillingIntervalSwitchRequest: POST /v1/billing/interval -- switch the billing interval, same plan tier + seats. ``month`` -> ``year`` is immediate + prorated (two-phase: an unconfirmed request returns a proration preview; ``confirm=true`` commits). ``year`` -> ``month`` is scheduled at the period boundary (no refund).
  - `interval` 'month' | 'year', required
  - `confirm` boolean

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/graphify/apis/graphify-control-plane.md) · [All operations](https://skmtc.dev/graphify/apis/graphify-control-plane/llms.txt) · [OpenAPI document](https://skmtc.dev/graphify/apis/graphify-control-plane/revisions/0e75c82b5ea8?raw)
