---
title: "Update Stripe price"
method: PUT
path: "/api/apps/{app_id}/payments/stripe/prices/{price_id}"
---

# Update Stripe price

`PUT /api/apps/{app_id}/payments/stripe/prices/{price_id}`

<Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>

Updates the price identified by `price_id`. Changes only the fields you send. Anything you leave out keeps its current value. Sending `null` has the same effect. The amount, currency, and recurring schedule cannot be changed here.

The response does not include the nickname even when it was updated.

Uses the Stripe account selected by the app's stored credentials. Live keys select the live catalog and test keys select the test catalog. Products and prices belong to that Stripe account, so multiple apps configured with the same account share the same catalog.

Requires write access to the app. Workspace viewers cannot call this operation.

## Path parameters

- `price_id` string, required — Stripe price ID in the configured account.
- `app_id` string, required — ID of the Base44 app.

## Request body

- UpdatePriceRequest — Request to update a Stripe price.
  - `active` boolean, nullable — Whether the price is active. Leave it out to keep the current value. Sending `null` has the same effect. Defaults to `null`.
  - `metadata` object, nullable — Metadata to store, as string key-value pairs. [Stripe's metadata rules](https://docs.stripe.com/api/metadata) limit it to 50 keys, 40 characters per key, and 500 characters per value. Defaults to `null`. Leave it out to keep the current value. Sending `null` has the same effect.
  - `nickname` string, nullable — New internal price label. Leave it out to keep the current value. Sending `null` has the same effect. Defaults to `null`.

## Response `200`

The operation result.

- StripeCatalogPrice — A price in the Stripe account configured for the app.
  - `id` string, required — Stripe price ID.
  - `product` string, required — Stripe product ID this price belongs to.
  - `unit_amount` integer, nullable, required — Amount in the currency's smallest unit, or `null` for pricing without a fixed integer unit amount.
  - `currency` string, required — Currency as a lowercase three-letter ISO 4217 code.
  - `active` boolean, required — Whether the price is active.
  - `metadata` object, required — Metadata stored on the price.
  - `recurring` StripeCatalogRecurring, required — The recurring billing schedule of a Stripe price.
    - `interval` string, required — Billing interval. Either `day`, `week`, `month`, or `year`.
    - `interval_count` integer, required — Number of intervals between bills.
    - `usage_type` string, required — Usage model. Either `licensed` or `metered`.

## Other responses

- `400` — Stripe keys are missing, or the app's test sandbox has expired.
- `401` — Missing or invalid credentials.
- `403` — The credential is not permitted or you don't have the required app access. A missing app also fails the app access check.
- `404` — The app is outside the credential's granted workspace.
- `409` — The workspace requires an unlocked SSO session.
- `422` — A value doesn't match its field's type.

## Changes

- **2026-09-15** `ca10c5ce328c` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/base44/apis/base44-app-management-api/changes/api/apps/:app_id/payments/stripe/prices/:price_id/put.md)

---

[API](https://skmtc.dev/base44/apis/base44-app-management-api.md) · [All operations](https://skmtc.dev/base44/apis/base44-app-management-api/llms.txt) · [OpenAPI document](https://skmtc.dev/base44/apis/base44-app-management-api/revisions/5e69adeb8667?raw)
