---
title: "Update subscription tier"
method: PUT
path: "/billing/tier"
tags: ["Billing"]
---

# Update subscription tier

`PUT /billing/tier`

Changes the subscription tier (basic/scale/enterprise) for the authenticated user's organization

## Request body

- GithubComActiveloopaiDeeplakeApiInternalBillingTierUpdateRequest
  - `tier` 'basic' | 'scale' | 'enterprise'

## Response `200`

OK

- GithubComActiveloopaiDeeplakeApiInternalBillingBillingAccountResponse
  - `account` GithubComActiveloopaiDeeplakeApiInternalBillingBillingAccount
    - `balance_cents` integer
    - `created_at` string
    - `current_period_end` string
    - `default_region_id` string
    - `features` object
    - `grant_expires_at` string
    - `grant_remaining_cents` integer — GrantRemainingCents is the still-unspent portion of an expiring signup grant. Spending draws it down first; it is zero for accounts without an expiring grant. GrantExpiresAt is when the unspent remainder is clawed back (nil = no expiring grant).
    - `id` string
    - `org_id` string
    - `plan` string — Seat-based plan fields. Plan is "payg" (prepaid/usage, the default) or "seat" (recurring $99/seat/month). SeatQuantity mirrors the Stripe subscription quantity (= billable seat count). SubscriptionStatus and CurrentPeriodEnd are synced from Stripe webhooks. They are zero/empty for every PAYG account, so existing orgs are unaffected.
    - `seat_quantity` integer
    - `status` 'active' | 'past_due' | 'canceled' | 'paused'
    - `stripe_customer_id` string
    - `stripe_subscription_id` string
    - `subscription_status` string
    - `tier` 'basic' | 'scale' | 'enterprise'
    - `updated_at` string
  - `default_region` GithubComActiveloopaiDeeplakeApiInternalBillingBillingRegion
    - `compute_basic_price_cents_per_gpu_hour` integer
    - `compute_enterprise_price_cents_per_gpu_hour` integer
    - `compute_scale_price_cents_per_gpu_hour` integer
    - `created_at` string
    - `display_name` string
    - `egress_price_cents_per_gb` number
    - `id` string
    - `ingestion_price_cents_per_gb` number
    - `is_active` boolean
    - `name` string
    - `storage_price_cents_per_tb_month` integer
    - `updated_at` string
  - `features` GithubComActiveloopaiDeeplakeApiInternalBillingTierFeatures
    - `availability_zones` integer
    - `cmek` boolean — Customer-Managed Encryption Keys
    - `custom_cloud_credentials` boolean — CustomCloudCredentials gates registering customer-owned cloud storage (custom cloud / BYOC) and its credentials. Paid tiers only.
    - `custom_integrations` boolean
    - `named_engineer` boolean
    - `private_networking` boolean
    - `saml_sso` boolean
    - `storage_limit_gb` integer — -1 for unlimited
    - `support_response_time` string

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `404` — Not Found
- `500` — Internal Server Error

---

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