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

# Update Price Point

> Updates a price point.

When a price point is updated, Appcharge recalculates all localized prices. If both `updatedPriceInUsdCents` and `priceOverrides` are provided in the same request, Appcharge first recalculates localized prices from the updated base price and then applies the override values.


<RequestExample>
  ```bash Update Price Point theme={"system"}
    curl -X PUT \
    'https://api.appcharge.com/v1/price-points/999' \
    -H 'Content-Type: application/json' \
    -H 'Accept: application/json' \
    -H 'x-publisher-token: <x-publisher-token>' \
    -d '{
      "priceOverrides": [
        {
          "countryCode2": "BR",
          "price": 34.99
        },
        {
          "countryCode2": "IN",
          "price": 499
        }
      ]
    }'
  ```
</RequestExample>

<ResponseExample>
  ```json Update Price Point theme={"system"}
  {
    "priceInUsdCents": 999,
    "lastUpdate": "2026-03-01T12:00:00.000Z",
    "priceByCountry": [
      {
        "price": 9.99,
        "currencyCode": "USD",
        "isOverridden": false,
        "taxModel": "Excluded",
        "taxRate": 0,
        "country": "United States",
        "countryCode2": "US",
        "usdExchangeRateOnCalc": 1,
        "exchangeRateDrift": "0%"
      },
      {
        "price": 7.99,
        "currencyCode": "GBP",
        "isOverridden": false,
        "taxModel": "Included",
        "taxRate": 20,
        "country": "United Kingdom",
        "countryCode2": "GB",
        "usdExchangeRateOnCalc": 0.79,
        "exchangeRateDrift": "-1.2%"
      },
      {
        "price": 34.99,
        "currencyCode": "BRL",
        "isOverridden": true,
        "taxModel": "Excluded",
        "taxRate": 0,
        "country": "Brazil",
        "countryCode2": "BR",
        "usdExchangeRateOnCalc": 5.05,
        "exchangeRateDrift": "2.3%"
      },
      {
        "price": 8.99,
        "currencyCode": "EUR",
        "isOverridden": false,
        "taxModel": "Included",
        "taxRate": 19,
        "country": "Germany",
        "countryCode2": "DE",
        "usdExchangeRateOnCalc": 0.92,
        "exchangeRateDrift": "-0.5%"
      },
      {
        "price": 499,
        "currencyCode": "INR",
        "isOverridden": true,
        "taxModel": "Included",
        "taxRate": 18,
        "country": "India",
        "countryCode2": "IN",
        "usdExchangeRateOnCalc": 83.12,
        "exchangeRateDrift": "0.8%"
      }
    ]
  }
  ```

  ```json 400 Schema Validation Error theme={"system"}
  {
    "message": "Invalid request body."
  }
  ```

  ```json 400 Invalid Country Code theme={"system"}
  {
    "message": "Country code ZZ not found in existing custom pricing."
  }
  ```

  ```json 404 theme={"system"}
  {
    "message": "Price point 999 not found."
  }
  ```

  ```json 409 theme={"system"}
  {
    "message": "Cannot create new pricing. The price point already exists."
  }
  ```
</ResponseExample>


## OpenAPI

````yaml openapi-price-points.json put /v1/price-points/{priceInUsdCents}
openapi: 3.1.0
info:
  title: Price Localization API
  description: API for managing price points and price localization
  version: 1.0.0
servers:
  - url: https://api.example.com
security: []
paths:
  /v1/price-points/{priceInUsdCents}:
    put:
      summary: Update a Price Point
      description: >-
        Updates a price point.


        When a price point is updated, Appcharge recalculates all localized
        prices. If both `priceInUsdCents` and `priceOverrides` are provided in
        the same request, Appcharge first recalculates localized prices from the
        updated base price and then applies the override values.
      operationId: updatePricePoint
      parameters:
        - name: priceInUsdCents
          in: path
          required: true
          schema:
            type: number
            example: 999
          description: Base price in USD cents.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                updatedPriceInUsdCents:
                  type: number
                  description: New base price in USD cents.
                  example: 999
                priceOverrides:
                  type: array
                  items:
                    $ref: '#/components/schemas/PriceOverride'
                  description: >-
                    List of country-specific prices that replace the
                    auto-calculated price. 


                    Exchange rates and rounding rules aren't applied. If a
                    country's tax model includes taxes in the price, make sure
                    the custom price include tax. If a country's tax model
                    excludes tax from the price, Appcharge adds the applicable
                    tax during checkout.

                     Overrides apply only to the countries you specify.
              additionalProperties: false
      responses:
        '200':
          description: Price point updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PricePoint'
        '400':
          description: >-
            Bad request. This can occur due to a schema validation error or an
            invalid country code.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponse'
              examples:
                schemaError:
                  summary: Schema validation error
                  value:
                    message: Invalid request body
                badCountryCode:
                  summary: Invalid country code
                  value:
                    message: Country code ZZ not found in existing custom pricing.
        '404':
          description: Price point not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                message: Price point 999 not found.
        '409':
          description: Conflict. The price point already exists.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConflictErrorResponse'
              example:
                message: Cannot create new pricing. The price point already exists.
components:
  schemas:
    PriceOverride:
      type: object
      properties:
        countryCode2:
          type: string
          description: Country code in ISO 3166-1 alpha-2 format.
          example: BR
        price:
          type: number
          description: >-
            Override price amount. If the country's currency isn't enabled, the
            value is treated as USD and displayed in USD.
          example: 29.99
    PricePoint:
      type: object
      properties:
        priceInUsdCents:
          type: number
          description: Base price in USD cents.
          example: 999
        lastUpdate:
          type: string
          format: date-time
          description: >-
            Timestamp indicating when the price point was last updated, in UTC
            ISO 8601 format.
          example: '2026-01-01T14:30:00Z'
        priceByCountry:
          type: array
          items:
            $ref: '#/components/schemas/PriceByCountry'
          description: List of localized prices by country, including overrides if present.
    BadRequestErrorResponse:
      type: object
      required:
        - message
      properties:
        message:
          type: string
          description: Error message describing what went wrong.
          example: >-
            Invalid priceInUsdCents value: must be a positive integer [invalid1,
            invalid2].
    ErrorResponse:
      type: object
      required:
        - message
      properties:
        message:
          type: string
          description: Error message describing what went wrong.
          example: Price point 999 not found.
    ConflictErrorResponse:
      type: object
      required:
        - message
      properties:
        message:
          type: string
          description: Error message describing what went wrong.
          example: Cannot create new pricing. The price point already exists.
    PriceByCountry:
      type: object
      properties:
        price:
          type: number
          description: Localized price for the country.
          example: 7.99
        currencyCode:
          type: string
          description: Currency code.
          example: GBP
        isOverridden:
          type: boolean
          description: Whether the price was overridden.
          example: false
        taxModel:
          type: string
          enum:
            - Included
            - Excluded
          description: Tax model applied to the price.
          example: Included
        taxRate:
          type: number
          description: Tax rate applied to the price.
          example: 20
        country:
          type: string
          description: Country name.
          example: United Kingdom
        countryCode2:
          type: string
          description: >-
            Country code in [ISO 3166-1
            alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
          example: GB
        usdExchangeRateOnCalc:
          type: number
          description: USD exchange rate used at the time of calculation.
          example: 0.79
        exchangeRateDrift:
          type: string
          description: Exchange rate drift since the last calculation.
          example: '-1.2%'

````