---
title: "Get the plan an organization is on."
method: GET
path: "/organizations/{organizationId}/plan"
tags: ["billing"]
---

# Get the plan an organization is on.

`GET /organizations/{organizationId}/plan`

## Request

- Base URL: `https://api.shorebird.dev/api/v1`
- URL: `https://api.shorebird.dev/api/v1/organizations/{organizationId}/plan`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer

The plan belongs to the organization's billing account, so its
install credit and overage limit are the account's, whoever asks. An
organization with no billing account is on the free plan, with no
credit and overages off. Requires the
`plans.view` permission in the organization, which every role
except `auditor` holds, or, for a collaborator with role `none`, a
role on any of the organization's apps.

## Response `200`

The organization's plan.

- Plan: The subscription an account is on: what it costs, what it includes, and how installs past the allotment are handled. An account with no subscription is on the free Hobby plan, whose billing period is the calendar month. Several fields are strings rather than enums so that new values can be added without breaking clients; their current values are listed in each description.
  - `name` string, required: The plan's display name.
  - `currency` string, required: The ISO 4217 code of the plan's currency (e.g. `usd`).
  - `base_price` integer, required: The list price per billing period, in minor units of `currency` (e.g. cents), whatever the installs used. Does not reflect coupons or discounts.
  - `base_install_count` integer, required: The patch installs included in the base price each billing period.
  - `patch_install_credit` integer, required: Extra patch installs granted to the account's owner on top of `base_install_count`, such as promotional or support credit. `0` when there is none.
  - `patch_overage_limit` integer, nullable, required: The most installs past the allotment the owner has agreed to pay for each overage period: their spending limit, in installs. Null when the owner has set no limit.
  - `price_per_overage_install` string, nullable, required: The price of each install past the allotment, in minor units of `currency`, as a decimal number in a string because it can be fractional (e.g. `"0.1"`). Null when the plan has no overage billing.
  - `current_period_start` string, date-time, required: The start of the current billing period. The start of the current month on the Hobby plan.
  - `current_period_end` string, date-time, required: The end of the current billing period. The start of the next month on the Hobby plan.
  - `cancel_at_period_end` boolean, required: Whether the subscription is set to end at the end of the current billing period.
  - `is_tiered` boolean, required: Whether the plan is one of the standard tiers an account can switch between.
  - `is_trial` boolean, required: Whether the account is on a trial, which is not billed and ends on its own.
  - `base_standing` string, required: The payment standing of the subscription carrying the plan: `none` (no subscription), `trialing`, `active`, or `past_due`. `past_due` keeps the plan in force while Stripe retries the payment; prompt for a working payment method.
  - `overage_standing` string, required: The payment standing of the subscription carrying the overage price, in the same terms as `base_standing` plus `unpaid` (every retry failed and only paying the invoice resumes overage). Equal to `base_standing` when overage bills on the base subscription; independent when an annual plan bills overage on its own monthly subscription. `none` when the plan has no overage billing.
  - `overage_state` string, required: Whether installs past the allotment are served, and on what terms: `unavailable` (the plan has no overage billing), `off` (the limit is `0`), `blocked` (a payment is overdue; see `overage_blocked_by`), `capped` (up to `patch_overage_limit` each overage period), or `unlimited`.
  - `overage_blocked_by` string, nullable, required: Which overdue payment holds overage back while `overage_state` is `blocked`: `base_past_due`, `overage_past_due`, or `overage_unpaid`. Null otherwise.
  - `overage_period_start` string, date-time, nullable, required: The start of the period overage is capped and invoiced over: the billing period for a monthly plan, the overage subscription's own month for an annual one. Null when the plan has no overage billing.
  - `overage_period_end` string, date-time, nullable, required: The end of the period overage is capped and invoiced over. Null when the plan has no overage billing.
  - `features` string[], required: The features the plan enables. Current values: `collaboration`, `historicalInsights`, `audienceAnalytics`, `customTokenExpiration`, `auditLogs`, `sizeAnalysis`, `oidcFederation`.
  - `level` string, required: The plan's tier: `free`, `pro`, `business`, or `enterprise`.
  - `minimum_releases_kept` integer, nullable, required: How many of an app's releases are kept however long they sit unused. Null when releases are never retired.
  - `max_team_size` integer, nullable, required: The most members an account may have: `1` on plans without collaboration, null when there is no limit.
  - `available_roles` Role[], required: The roles that may be given to members on this plan.
  - `billing_interval` string, nullable, required: The unit the subscription bills on: `day`, `week`, `month`, or `year`. Null without a subscription.
  - `billing_interval_count` integer, nullable, required: How many `billing_interval`s make one billing period. Null without a subscription.
  - `subscriber_since` string, date-time, nullable, required: When the subscription started; unchanged by renewals and plan changes. Null without a subscription.

## Other responses

- `400`: The organization id is not an integer (`organization_id_malformed`).
- `403`: The caller lacks the `plans.view` permission.
- `404`: No such organization, or the caller is not a member of it (`organization_membership_guard_error`).
- `424`: The organization's billing account could not be looked up (`organization_lookup_error`). A failure to reach the billing provider is not an error: the plan falls back to the free plan.
- `default`: Standard error response. Emitted for any non-2xx status where a body can be decoded into an [ErrorResponse].

---

[API](https://skmtc.dev/shorebird/apis/shorebird-codepush-api.md) - [All operations](https://skmtc.dev/shorebird/apis/shorebird-codepush-api/llms.txt) - [OpenAPI document](https://skmtc.dev/shorebird/apis/shorebird-codepush-api/revisions/941da8871d10?raw)
