---
title: "Update Spending Limits For Org"
method: PUT
path: "/v1/billing/limits"
tags: ["billing"]
---

# Update Spending Limits For Org

`PUT /v1/billing/limits`

Update current Organization's spending limits (hard / soft).

## Request body

- PaymentDetailsLimits
  - `spending_limit_soft` number — When the balance crosses this value, a warning email will be sent informing the customer
  - `spending_limit_hard` number — When the balance crosses this value, a high-warning email will be sent informing the customer that services will be disrupted if the balance reaches 0

## Response `200`

Successful Response

- BillingAndUsageInformation
  - `spending_limit_soft` number — When the balance crosses this value, a warning email will be sent informing the customer
  - `spending_limit_hard` number — When the balance crosses this value, a high-warning email will be sent informing the customer that services will be disrupted if the balance reaches 0
  - `currency` 'usd' — The currency of the organization
  - `balance` number — The balance in the account. Synced with Stripe periodically
  - `last_invoice_date` integer, required — The timestamp when the local balance (i.e. the value we keep track of) was synced with stripe (and the customer was billed)
  - `billing_zip` string, nullable, required — The Zipcode of the address of the Organization
  - `subscription` SubscriptionSettings, required — For any given subscription, this represents the set of available features
    - `max_tokens` integer, required — The maximum number of tokens that can be _generated_, for each billing period (month)
    - `max_apps` integer, required — Maximum number of apps that can be created
    - `llm_routing` boolean — Dynamic LLM routing using KG
    - `prompts` boolean, required — Allows the user to create and use Prompts
    - `prompt_models` boolean, required — Allows the user to create and use Prompt-based Models
    - `personalized_llm_routing` boolean, required — Custom scoring of LLMs using KG
    - `fine_tuning` boolean, required — Allows to fine-tune models
    - `support_level` 'community' | 'all', required — The level of support this user has access to
    - `customer_success` boolean, required — Support from Marketing team (? TBD)
    - `max_tokens_readable` string, required — A human-readable format of max_tokens. Example: '50bn' or '+100M'
    - `max_apps_readable` string, required — A human-readable format of max_apps. Example: 'Infinite' or '1000' or 'None'
    - `support_level_readable` string, required — A human-readable format for the level of support offered
    - `is_trial` boolean — Whether this subscription is a trial. Trials work differently because users can only consume the free credit, but can't go over it
    - `is_none` boolean — This is set to TRUE when the user's doesn't have a subscription nor is in a trial. Essentially it means: "No subscription active".
    - `tier` '_NONE_' | '_TRIAL_' | '_INTERNAL_' | 'STARTUP' | 'GROWTH' | 'SCALE' | 'ENTERPRISE', required — The _tier_ of this subscription
    - `name` string, required — The name for this subscription
    - `monthly_price_usd` number, nullable, required — Price per MONTH -- same as in Stripe, here for display purposes
    - `yearly_price_usd` number, nullable, required — Price per YEAR -- same as in Stripe, here for display purposes
    - `monthly_discounted_usd` number, nullable — Price per MONTH -- same as in Stripe, here for display purposes
    - `yearly_discounted_usd` number, nullable — Price per YEAR -- same as in Stripe, here for display purposes
    - `monthly_price_id` string, nullable, required — The Stripe PriceID for the monthly subscription
    - `yearly_price_id` string, nullable, required — The Stripe PriceID for the yearly subscription
    - `monthly_price_label` string, nullable — A label to display in lieu of price
    - `yearly_price_label` string, nullable — A label to display in lieu of price
    - `monthly_contact_sales` boolean — Contact sales to activate
    - `yearly_contact_sales` boolean — Contact sales to activate
    - `monthly_button_label` string, nullable — If set, it will override any other labels
    - `yearly_button_label` string, nullable — If set, it will override any other labels
  - `subscription_paused` SubscriptionPaused, required — If a subscription is paused (can't charge card, user cancels, ...) we store the reasons here.
    - `invoices` SubscriptionPausedInvoiceData[], required
      - `invoice_id` string, required — The ID of the invoice (in stripe: `in_xxxxx`)
      - `invoice_number` string, required — Customer-facing ID for the invoice
      - `amount` number, required — The amount due, in the Org's currency
      - `timestamp` integer, required — When the subscription was paused
      - `pause_reason` string, required — The reason the subscription was paused
      - `invoice_name` string, required — The name of the product attached to this invoice
      - `payment_link` string, nullable, required — A link to pay the invoice
      - `severity` 1 | 2, required — The severity: 1 (warning, banner shown, features available), 2 (subscription paused, banner shown, features paused)
  - `trial_end` string, date-time, nullable — The datetime when the trial ends (or None, if the user is not in a trial)
  - `trial_ending_soon` boolean — When the trial is coming to an end, we notify the Frontend (calculated on the server side)

## Other responses

- `422` — Validation Error

---

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