> ## Documentation Index
> Fetch the complete documentation index at: https://docs.base44.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Update Stripe price

> <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. Check `livemode` on each returned product or price to see which catalog the call used.

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



## OpenAPI

````yaml /developers/references/app-management/app-management-openapi.json put /api/apps/{app_id}/payments/stripe/prices/{price_id}
openapi: 3.1.0
info:
  title: Base44 App Management API
  version: 1.0.0
servers:
  - url: https://app.base44.com
security:
  - PersonalAccessTokenAuth: []
paths:
  /api/apps/{app_id}/payments/stripe/prices/{price_id}:
    put:
      summary: Update Stripe price
      description: >-
        <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. Check
        `livemode` on each returned product or price to see which catalog the
        call used.


        Requires write access to the app. Workspace viewers cannot call this
        operation.
      operationId: update_price_api_apps__app_id__payments_stripe_prices__price_id__put
      parameters:
        - name: price_id
          in: path
          required: true
          schema:
            type: string
            description: Stripe price ID in the configured account.
            title: Price Id
          description: Stripe price ID in the configured account.
          example: price_1T7mK2Q4r6S8v9Ab
        - name: app_id
          in: path
          required: true
          schema:
            type: string
            description: ID of the Base44 app.
            title: App Id
          description: ID of the Base44 app.
          example: 6820f3a4e7b91d003c45a1f2
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdatePriceRequest'
      responses:
        '200':
          description: The operation result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StripeCatalogPrice'
        '400':
          description: Stripe keys are missing, or the app's test sandbox has expired.
        '401':
          description: Missing or invalid credentials.
        '403':
          description: >-
            The credential is not permitted or you don't have the required app
            access. A missing app also fails the app access check. Setup and
            catalog operations also return `app_payment_management_not_allowed`
            when the app's workspace restricts payment management.
        '404':
          description: The app is outside the credential's granted workspace.
        '409':
          description: The workspace requires an unlocked SSO session.
        '422':
          description: A value doesn't match its field's type.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - PersonalAccessTokenAuth:
            - full_access
components:
  schemas:
    UpdatePriceRequest:
      properties:
        active:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Active
          description: >-
            Whether the price is active. Leave it out to keep the current value.
            Sending `null` has the same effect. Defaults to `null`.
          example: false
        metadata:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Metadata
          description: >-
            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.
          example:
            tier: standard
        nickname:
          anyOf:
            - type: string
            - type: 'null'
          title: Nickname
          description: >-
            New internal price label. Leave it out to keep the current value.
            Sending `null` has the same effect. Defaults to `null`.
          example: Monthly membership
      type: object
      title: UpdatePriceRequest
      description: Request to update a Stripe price.
    StripeCatalogPrice:
      properties:
        id:
          type: string
          title: Id
          description: Stripe price ID.
          example: price_1T7mK2Q4r6S8v9Ab
        product:
          type: string
          title: Product
          description: Stripe product ID this price belongs to.
          example: prod_T7mK2p9Q4r6S8v
        unit_amount:
          anyOf:
            - type: integer
            - type: 'null'
          title: Unit Amount
          description: >-
            Amount in the currency's smallest unit, or `null` for pricing
            without a fixed integer unit amount.
          example: 2500
        currency:
          type: string
          title: Currency
          description: Currency as a lowercase three-letter ISO 4217 code.
          example: usd
        active:
          type: boolean
          title: Active
          description: Whether the price is active.
          example: true
        metadata:
          additionalProperties: true
          type: object
          title: Metadata
          description: Metadata stored on the price.
          example:
            tier: standard
        recurring:
          anyOf:
            - $ref: '#/components/schemas/StripeCatalogRecurring'
            - type: 'null'
          description: Billing schedule, or `null` for a one-time price.
          example:
            interval: month
            interval_count: 1
            usage_type: licensed
        livemode:
          type: boolean
          title: Livemode
          description: >-
            `true` when the price is in the live catalog, `false` when it's in
            the test catalog.
          example: false
      type: object
      required:
        - id
        - product
        - unit_amount
        - currency
        - active
        - metadata
        - recurring
        - livemode
      title: StripeCatalogPrice
      description: A price in the Stripe account configured for the app.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    StripeCatalogRecurring:
      properties:
        interval:
          type: string
          title: Interval
          description: Billing interval. Either `day`, `week`, `month`, or `year`.
          example: month
        interval_count:
          type: integer
          title: Interval Count
          description: Number of intervals between bills.
          example: 1
        usage_type:
          type: string
          title: Usage Type
          description: Usage model. Either `licensed` or `metered`.
          example: licensed
      type: object
      required:
        - interval
        - interval_count
        - usage_type
      title: StripeCatalogRecurring
      description: The recurring billing schedule of a Stripe price.
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    PersonalAccessTokenAuth:
      type: http
      scheme: bearer
      description: >-
        Personal access token, sent as `Authorization: Bearer <token>`. Each
        operation lists the permission it needs: `read_only` or `full_access`. A
        full-access token can call every operation. A read-only token can call
        only the operations that list `read_only`; anything else returns 403
        `read_only_credential_route_not_allowed`.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.