Elastic Path Price Book Modifiers API

You can use price modifiers to change the price property of child products. By default, child products inherit the same price as their base products. Using price modifiers, you can enable child products to inherit a different price. This enables you to configure the price of child products, for example, to be lower than its base product, without having to individually update the price of your child products. There are three types of price modifier. | Modifier | Data Type | Effect | |:------------------|:----------|:---------------------------------------------| | `price_increment` | `string` | Increases the price of a product. | | `price_decrement` | `string` | Decreases the price of a product. | | `price_equals` | `string` | Sets the price of a product to the amount you specify. | The following is an overview of the steps you need to follow to use price modifiers. 1. Create a price modifier. You must give the price modifier a unique name. For more information, see [Create a Price Modifier](/docs/api/pxm/pricebooks/create-price-modifier). 1. Build your child products with the new product modifier.

OpenAPI Specification

elastic-path-price-book-modifiers-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  version: 25.1126.6886238
  x-version-timestamp: 2025-11-26 19:10:23+00:00
  title: Addresses Introduction Account Addresses Price Book Modifiers API
  description: 'The Addresses API allows you to organize account addresses. Addresses are a sub-resource of `account` resources, an account can have multiple addresses, such as home, work, and neighbour.


    You can use an account address with either [client_credentials access token](/docs/api/authentication/create-an-access-token) or a combination of [implicit access token](/docs/api/authentication/create-an-access-token) and [Account Management authentication](/docs/api/accounts/post-v-2-account-members-tokens) token.

    '
  contact:
    name: Elastic Path
    url: https://www.elasticpath.com
    email: support@elasticpath.com
  license:
    url: https://elasticpath.dev
    name: MIT
servers:
- url: https://useast.api.elasticpath.com
  description: US East
- url: https://euwest.api.elasticpath.com
  description: EU West
security:
- BearerToken: []
tags:
- name: Price Book Modifiers
  description: 'You can use price modifiers to change the price property of child products. By default, child products inherit the same price as their base products. Using price modifiers, you can enable child products to inherit a different price. This enables you to configure the price of child products, for example, to be lower than its base product, without having to individually update the price of your child products. There are three types of price modifier.


    | Modifier          | Data Type | Effect                                       |

    |:------------------|:----------|:---------------------------------------------|

    | `price_increment` | `string`  | Increases the price of a product.            |

    | `price_decrement` | `string`  | Decreases the price of a product.            |

    | `price_equals`    | `string`  | Sets the price of a product to the amount you specify. |


    The following is an overview of the steps you need to follow to use price modifiers.


    1. Create a price modifier. You must give the price modifier a unique name. For more information, see [Create a Price Modifier](/docs/api/pxm/pricebooks/create-price-modifier).

    1. Build your child products with the new product modifier.

    '
paths:
  /pcm/pricebooks/{pricebookID}/modifiers:
    parameters:
    - name: pricebookID
      in: path
      description: Unique identifier of a Price Book
      required: true
      schema:
        type: string
    post:
      tags:
      - Price Book Modifiers
      description: You can use price modifiers to change the price property of child products. By default, child products inherit the same price as their base products. Using price modifiers, you can enable child products to inherit a different price. This enables you to configure the price of child products, for example, to be lower than its base product, without having to individually update the price of your child products. There are three types of price modifier.
      summary: Create a Modifier
      operationId: createPriceModifier
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/price-modifier-create-data'
        description: The price modifier to create within a price book.
        required: true
      responses:
        '201':
          description: The created price modifier
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/price-modifier-data'
        default:
          description: Unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response-modifiers'
    get:
      tags:
      - Price Book Modifiers
      summary: Gets a list of all modifiers
      description: 'Retrieves a list of price modifiers for the specified price book.


        ### Filtering


        Filtering is supported on this endpoint. For the general syntax, see [Filtering](/guides/Getting-Started/filtering).


        You can filter on the following attributes and operators.


        | Operator | Attribute | Description | Example |

        | --- | --- | --- | --- |

        | `eq` | `external_ref`, `name` | Checks if the values you provide matches a price modifier. | `filter=eq(name,largesupplement)` |

        '
      operationId: getPriceModifiers
      parameters:
      - $ref: '#/components/parameters/filter-modifier'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/offset'
      responses:
        '200':
          description: The price modifier list.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/price-modifier-list-data'
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response-modifiers'
  /pcm/pricebooks/{pricebookID}/modifiers/{modifierID}:
    parameters:
    - name: pricebookID
      in: path
      description: Unique identifier of a Price Book
      required: true
      schema:
        type: string
    - name: modifierID
      in: path
      description: Unique identifier of a Price Book Modifier
      required: true
      schema:
        type: string
    get:
      summary: Get a Modifier
      description: Retrieves the specified price book modifier from the specified price book.
      tags:
      - Price Book Modifiers
      operationId: getPriceModifierByID
      responses:
        '200':
          description: The price modifier.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/price-modifier-data'
        default:
          description: Unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response-modifiers'
    put:
      summary: Update a Modifier
      description: Specify whichever attributes you want to change. The values of the other attributes remain the same. If the attributes section is empty, the price modifier is not updated.
      tags:
      - Price Book Modifiers
      operationId: updatePriceModifier
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/price-modifier-update-data'
        description: The updated price modifier
        required: true
      responses:
        '200':
          description: Updated price modifier.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/price-modifier-data'
        default:
          description: Unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response-modifiers'
    delete:
      tags:
      - Price Book Modifiers
      description: Deletes the specified price book modifier.
      summary: Delete a Modifier
      operationId: deletePriceModifier
      responses:
        '204':
          description: A 204 response indicates that the price modifiers have been deleted
        default:
          description: Unexpected error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-response-modifiers'
components:
  schemas:
    currencies:
      type: object
      description: A collection of one or more currencies objects that consists of the [**three-letter ISO code**](https://www.iso.org/iso-3166-country-codes.html) of the currencies associated with this price and the amount. This is the product's price.
      example:
        USD:
          amount: 100
          includes_tax: false
          tiers:
            min_5:
              minimum_quantity: 5
              amount: 50
        CAD:
          amount: 127
          includes_tax: false
          tiers:
            min_10:
              minimum_quantity: 10
              amount: 100
        GBP:
          amount: 73
          includes_tax: true
          tiers:
            min_20:
              minimum_quantity: 20
              amount: 60
      additionalProperties:
        $ref: '#/components/schemas/amount'
    price-modifier-update-data:
      type: object
      title: PriceModifierUpdateData
      description: Json-api style data object containing a price modifier to be updated.
      properties:
        data:
          $ref: '#/components/schemas/price-modifier-update'
      required:
      - data
      additionalProperties: false
      x-go-name: PriceModifierUpdateData
    price-modifier-update:
      type: object
      title: PriceModifier
      description: Price modifier update request.
      properties:
        id:
          description: A unique identifier for the price modifier.
          type: string
          example: 37f2eed6-0bea-4d0b-a3c6-24cc76143bfd
          x-go-name: ID
        type:
          type: string
          x-go-name: Type
          default: price-modifier
          example: price-modifier
          enum:
          - price-modifier
        attributes:
          type: object
          properties:
            currencies:
              $ref: '#/components/schemas/currencies'
            name:
              description: A name for the modifier. You must give the price modifier a unique name. Price modifier names are case-sensitive
              type: string
              example: large-supplement
              minLength: 1
              x-go-name: Name
              nullable: true
            modifier_type:
              description: 'There are three modifier types.


                * `price_increment` - Increases the price of a product.

                * `price_decrement` - Decreases the price of a product.

                * `price_equals` - Sets the price of a product to the amount you specify.

                '
              type: string
              example: price_equals
              enum:
              - price_equals
              - price_increment
              - price_decrement
              x-go-name: ModifierType
              nullable: true
            external_ref:
              description: A unique attribute that you could use to contain information from another company system, for example. The maximum length is 2048 characters.
              type: string
              example: external-ref
              x-go-name: External Ref
              nullable: true
          additionalProperties: false
      required:
      - id
      - type
      - attributes
      additionalProperties: false
      x-go-name: PriceModifierUpdate
    price-modifier-create:
      type: object
      title: PriceModifier
      properties:
        type:
          type: string
          x-go-name: Type
          default: price-modifier
          example: price-modifier
          enum:
          - price-modifier
        attributes:
          type: object
          properties:
            currencies:
              $ref: '#/components/schemas/currencies'
            name:
              description: A name for the modifier. You must give the price modifier a unique name. Price modifier names are case-sensitive.
              type: string
              example: large-supplement
              minLength: 1
              x-go-name: Name
            modifier_type:
              description: "There are three modifier types.\n   * `price_increment` - Increases the price of a product.\n   * `price_decrement` - Decreases the price of a product.\n   * `price_equals` - Sets the price of a product to the amount you specify.\n"
              type: string
              example: price_equals
              enum:
              - price_equals
              - price_increment
              - price_decrement
              x-go-name: ModifierType
            external_ref:
              description: A unique attribute that you could use to contain information from another company system, for example. The maximum length is 2048 characters.
              type: string
              example: external-ref
              x-go-name: External Ref
              nullable: true
          required:
          - name
          - modifier_type
          - currencies
          additionalProperties: false
      required:
      - type
      - attributes
      additionalProperties: false
      x-go-name: PriceModifierCreate
    page-meta:
      type: object
      description: Contains the results for the entire collection.
      title: PageMeta
      properties:
        results:
          type: object
          properties:
            total:
              description: Total number of results for the entire collection.
              type: integer
              example: 1
              nullable: true
        page:
          type: object
          properties:
            limit:
              description: The maximum number of records for all pages.
              type: integer
              example: 10
              x-omitempty: false
            offset:
              description: The current offset by number of pages.
              type: integer
              example: 0
              x-omitempty: false
            current:
              description: The current number of pages.
              type: integer
              example: 0
              x-omitempty: false
            total:
              description: The total number of records for the entire collection.
              type: integer
              example: 1
              x-omitempty: false
    price-modifier:
      type: object
      title: PriceModifier
      description: A price modifier with the following attributes.
      properties:
        type:
          type: string
          example: price-modifier
          default: price-modifier
          enum:
          - price-modifier
        pricebook_external_ref:
          description: The unique attribute associated with the price book. This can be an external reference from a separate company system, for example. The maximum length is 2048 characters.
          type: string
          example: a-pricebook-external-ref
          x-go-name: Pricebook External Ref
          nullable: true
        attributes:
          type: object
          properties:
            external_ref:
              description: A unique identifier associated with the price modifier. This can be an external reference from a separate company system, for example. The maximum length is 2048 characters.
              type: string
              example: external-ref
              x-go-name: External Ref
              nullable: true
            currencies:
              $ref: '#/components/schemas/currencies'
            name:
              description: A name for the modifier. You must give the price modifier a unique name. Price modifier names are case-sensitive.
              type: string
              example: large-supplement
            modifier_type:
              description: "There are three modifier types.\n   * `price_increment` - Increases the price of a product.\n   * `price_decrement` - Decreases the price of a product.\n   * `price_equals` - Sets the price of a product to the amount you specify.\n"
              type: string
              example: price_equals
              enum:
              - price_equals
              - price_increment
              - price_decrement
            created_at:
              description: The date and time when the price book was created.
              type: string
              format: date-time
              example: '2020-09-22T09:00:00Z'
              x-go-name: CreatedAt
            updated_at:
              description: The date and time when the price book was last updated.
              type: string
              example: '2020-09-22T09:00:00Z'
              format: date-time
              x-go-name: UpdatedAt
          required:
          - name
          - modifier_type
          - currencies
        id:
          description: A unique identifier for the price modifier.
          type: string
          example: 37f2eed6-0bea-4d0b-a3c6-24cc76143bfd
          x-go-name: ID
        meta:
          type: object
          properties:
            owner:
              description: The product owner, either `organization` or `store`.
              type: string
              example: store
              nullable: true
      required:
      - type
      - attributes
      - id
      additionalProperties: false
      x-go-name: PriceModifier
    price-modifier-data:
      type: object
      title: PriceModifierData
      description: Json-api style data object containing a single price modifier.
      properties:
        data:
          $ref: '#/components/schemas/price-modifier'
        links:
          $ref: '#/components/schemas/links-modifier'
      required:
      - data
      additionalProperties: false
      x-go-name: PriceModifierData
    error-modifiers:
      type: object
      title: ApiError
      description: This is a json-api style part of an error response
      properties:
        detail:
          type: string
          example: The modifier already exists
          x-go-name: Detail
        status:
          type: string
          example: '409'
          x-go-name: Status
        title:
          type: string
          example: conflict
          x-go-name: Title
      additionalProperties: false
      x-go-name: ApiError
    links-modifiers:
      description: Links are used to allow you to move between requests.
      type: object
      properties:
        self:
          description: Single entities use a self parameter with a link to that specific resource.
          type: string
          format: uri
          example: /pcm/pricebooks/4c45e4ec-26e0-4043-86e4-c15b9cf985a7/modifiers
          nullable: true
        first:
          description: Always the first page.
          type: string
          format: uri
          example: /pcm/pricebooks/4c45e4ec-26e0-4043-86e4-c15b9cf985a7/modifiers?page[offset]=0&page[limit]=25
          nullable: true
        last:
          description: This is `null` if there is only one page.
          type: string
          format: uri
          example: /pcm/pricebooks/4c45e4ec-26e0-4043-86e4-c15b9cf985a7/modifiers?page[offset]=0&page[limit]=25
          nullable: true
        prev:
          description: This is `null` if there is only one page.
          type: string
          format: uri
          example: /pcm/pricebooks/4c45e4ec-26e0-4043-86e4-c15b9cf985a7/modifiers?page[offset]=0&page[limit]=25
          nullable: true
        next:
          description: This is `null` if there is only one page.
          type: string
          format: uri
          example: /pcm/pricebooks/4c45e4ec-26e0-4043-86e4-c15b9cf985a7/modifiers?page[offset]=25&page[limit]=25
          nullable: true
    links-modifier:
      description: Links are used to allow you to move between requests.
      type: object
      properties:
        self:
          description: Single entities use a self parameter with a link to that specific resource.
          type: string
          format: uri
          example: /pcm/pricebooks/4c45e4ec-26e0-4043-86e4-c15b9cf985a7/modifiers/f5bd1fc7-48a2-40ac-88dd-2bd9985050cd
          nullable: true
    error-response-modifiers:
      type: object
      title: ErrorResponse
      description: This is a json-api style error response
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/error-modifiers'
          x-go-name: Errors
      additionalProperties: false
      x-go-name: ErrorResponse
    amount:
      type: object
      description: The three-letter ISO code for the currency associated with this price.
      properties:
        amount:
          description: The price in the lowest denomination for the specified currency. This is a product's list price.
          type: integer
          format: int64
          example: 100
          x-go-name: Amount
          nullable: true
        includes_tax:
          description: Whether this price includes tax.
          type: boolean
          example: false
          default: false
          x-go-name: IncludesTax
        tiers:
          type: object
          description: The price tier that an item is eligible for based on the quantity purchased. You cannot have conflicting tiers within the same currencies block.
          additionalProperties:
            $ref: '#/components/schemas/tier-price'
    tier-price:
      type: object
      description: The name of the tier, for example, `Pencils`.
      properties:
        minimum_quantity:
          description: The minimum quantity of 1 or more defined for the specified price. If a minimum quantity is not specified, an error is returned.
          type: integer
          format: int64
          example: '10'
          x-go-name: MinQuantity
          nullable: true
        amount:
          description: The price for each quantity.
          type: integer
          format: int64
          example: '50'
          x-go-name: Amount
          nullable: true
      x-go-name: TierPrice
    price-modifier-list-data:
      type: object
      title: PriceModifierListData
      description: Json-api style array containing a list of price modifiers.
      properties:
        meta:
          $ref: '#/components/schemas/page-meta'
        data:
          type: array
          items:
            $ref: '#/components/schemas/price-modifier'
        links:
          $ref: '#/components/schemas/links-modifiers'
      required:
      - data
      additionalProperties: false
      x-go-name: PriceModifierListData
    price-modifier-create-data:
      type: object
      title: PriceModifierCreateData
      description: Json-api style data object containing a price modifier to be created.
      properties:
        data:
          $ref: '#/components/schemas/price-modifier-create'
      required:
      - data
      additionalProperties: false
      x-go-name: PriceModifierCreateData
  parameters:
    filter-modifier:
      in: query
      description: 'This endpoint supports filtering. See [Filtering]().

        '
      name: filter
      required: false
      schema:
        type: string
    offset:
      name: page[offset]
      in: query
      description: The current offset by number of records, not pages. Offset is zero-based. The maximum records you can offset is 10,000. If no page offset is set, the [**page length**](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.
      required: false
      schema:
        type: integer
        format: int64
        minimum: 0
        maximum: 10000
    limit:
      name: page[limit]
      in: query
      description: The maximum number of records per page for this response. You can set this value up to 100. If no page size is set, the the [**page length**](/docs/commerce-cloud/global-project-settings/settings-overview#page-length) store setting is used.
      required: false
      schema:
        type: integer
        format: int64
        minimum: 1
  securitySchemes:
    BearerToken:
      type: http
      scheme: bearer