---
title: "Create or update a purchase price break for an item. The price break is identified by
the combination of (item, vendor, currency, unit of measure): if a match exists it is
replaced, otherwise a new price break is created."
method: PUT
path: "/api/items/{itemId}/purchase-price-breaks"
tags: ["Item PriceBreaks"]
---

# Create or update a purchase price break for an item. The price break is identified by
the combination of (item, vendor, currency, unit of measure): if a match exists it is
replaced, otherwise a new price break is created.

`PUT /api/items/{itemId}/purchase-price-breaks`

## Path parameters

- `itemId` string, required

## Request body

- PriceBreakPurchasePriceBreakUpsertDto — Upsert payload for a purchase (vendor cost) price break. Identity key (item-id is the route parameter): FulcrumProduct.PublicApi.Dto.PriceBreak.PurchasePriceBreakUpsertDto.VendorId, FulcrumProduct.PublicApi.Dto.PriceBreak.PurchasePriceBreakUpsertDto.CurrencyCode, FulcrumProduct.PublicApi.Dto.PriceBreak.PurchasePriceBreakUpsertDto.UnitOfMeasureName. If a price break already exists for this key, it is updated; otherwise a new one is created.
  - `vendorId` string, required — Identifier of the vendor this price break applies to.
  - `currencyCode` string, nullable — ISO 4217 currency code. Null is treated as the vendor's currency (or, if the vendor has no currency, the company's primary currency) for identity matching. When matching an existing break, that break's stored CurrencyCode is preserved. On insert, the value stored is the supplied value or the vendor's currency if none was supplied.
  - `unitOfMeasureName` string, nullable — Purchasing unit of measure. Null indicates the item's default unit of measure. Same null/default-equivalence rules as FulcrumProduct.PublicApi.Dto.PriceBreak.PurchasePriceBreakUpsertDto.CurrencyCode.
  - `unitPrice` number, double, nullable — The unit price at quantity 1. Required.
  - `vendorItemNumber` string, nullable — The vendor's part number for this item, if different from the internal number.
  - `vendorItemName` string, nullable — The vendor's part description for this item.
  - `breakPoints` PriceBreakItemPriceBreakPointDto[], required — Quantity break points beyond quantity 1. The complete set of break points is replaced on each upsert; omit a quantity to remove it.
    - `id` string, nullable — Identifier for this break point. Server-generated; ignored on write.
    - `quantity` integer — The quantity at which this break point becomes active. Must be greater than 1 (the unit/base price covers quantity 1).
    - `price` number, double, nullable — The price per unit at this break point. Required for Price-type sales breaks and all purchase (Cost) breaks.
    - `margin` number, double, nullable — The margin percentage at this break point. Used when the price break is calculated by Margin.
    - `showOnPdf` boolean — Whether this break point should be displayed on customer-facing PDFs (quotes, sales orders). Has no effect for purchase price breaks.

## Response `200`

The upserted price break.

- PriceBreakPurchasePriceBreakDto — Purchase (vendor cost) price break for an item.
  - `id` string, required — Identifier of the price break.
  - `itemId` string, required — Identifier of the item this price break applies to.
  - `vendorId` string, required — Identifier of the vendor this price break applies to.
  - `currencyCode` string, nullable — ISO 4217 currency code. Null indicates the company's primary currency.
  - `unitOfMeasureName` string, nullable — Purchasing unit of measure for this price break. Null indicates the item's default unit of measure.
  - `unitPrice` number, double, nullable — The unit price at quantity 1.
  - `vendorItemNumber` string, nullable — The vendor's part number for this item, if different from the internal number.
  - `vendorItemName` string, nullable — The vendor's part description for this item.
  - `breakPoints` PriceBreakItemPriceBreakPointDto[], required — Quantity break points beyond quantity 1.
    - `id` string, nullable — Identifier for this break point. Server-generated; ignored on write.
    - `quantity` integer — The quantity at which this break point becomes active. Must be greater than 1 (the unit/base price covers quantity 1).
    - `price` number, double, nullable — The price per unit at this break point. Required for Price-type sales breaks and all purchase (Cost) breaks.
    - `margin` number, double, nullable — The margin percentage at this break point. Used when the price break is calculated by Margin.
    - `showOnPdf` boolean — Whether this break point should be displayed on customer-facing PDFs (quotes, sales orders). Has no effect for purchase price breaks.
  - `modifiedUtc` string, date-time — When this price break was last modified.

## Other responses

- `400` — Validation issues with input.
- `404` — Item or vendor did not exist.

---

[API](https://skmtc.net/fulcrumpro/apis/fulcrum-publicapi.md) · [All operations](https://skmtc.net/fulcrumpro/apis/fulcrum-publicapi/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/fulcrumpro/fulcrum-publicapi/revisions/016c1fd45a3f/schema)
