Skip to content

Set Product Prices

PUT https://api.secure.quotivity.com/v1/pricebooks/{priceBookId}/prices

Sets prices for multiple products in a price book. Accepts either a single all-products price object or an array of specific-product price objects. Combine product changes into larger requests and keep parallel requests in the low single digits. Specific-product writes persist before HubSpot price-book membership is synchronized asynchronously, so membership is eventually consistent. Requests with more than 500 resolved entries are fully processed asynchronously and return 204. If a HubSpot-dependent request returns 429, wait at least retryAfterSeconds before retrying.

Send your API key in the x-api-key header. See Generating API keys.

Name Type Required Description
priceBookId string Yes —

Required, application/json: AllProductsPriceRequest | SpecificProductPriceRequest[]

Status Body Description
200 PriceBookEntry[] Prices set successfully
204 — Bulk update of more than 500 resolved entries accepted for asynchronous processing; no response body
401 — Unauthorized
404 — Price book not found
429 HubSpotRateLimitResponse HubSpot account cooldown is active. Wait at least retryAfterSeconds before retrying.
500 — Internal Server Error

Extends SpecificProductPriceRequest.

Field Type Required Description
productId all Yes —
adjustments map of string to PercentAdjustment | CostPlusAdjustment Yes Price adjustments keyed by ISO 4217 currency code (for example USD, EUR); keys are uppercased by the API. The key is the currency; the value carries the adjustment only. When productId is all only percent and costplus adjustments are accepted (a costplus adjustment is copied to every product, which then prices from its own cost). Send null for a currency to clear it.
calculationIdOverride string | null No Optional calculated pricing override for this entry; null clears.
allowUnitPriceEditing boolean | null No Entry-level unit-price editing flag for Quote Builder; null clears. Do not send inside adjustment objects.

Derives the list price from the product’s hs_cost_of_goods_sold: basis amount adds value to cost; basis percent applies value as a fraction of cost (0.3 = 30%) as a markup (cost × (1 + value)) or a margin (cost ÷ (1 − value)). Non-primary currencies convert the cost with the account’s cached HubSpot exchange rate. value must not be negative and a margin must be below 1. Requires the Cost Plus feature (Enterprise).

Extends PriceAdjustmentBase.

Field Type Required Description
type costplus Yes —
basis amount | percent Yes —
mode markup | margin No Read only when basis is percent; defaults to markup.
value number Yes Currency amount above cost for amount; fraction of cost for percent.
round boolean No Round the derived price to 2 decimals (default true); false keeps 5 decimals.

Returned when a request that depends on HubSpot is blocked by an account cooldown. Wait at least retryAfterSeconds before retrying, use low single-digit concurrency, and combine product changes into larger requests.

Field Type Required Description
message string Yes —
code HUBSPOT_RATE_LIMIT Yes —
retryAfterSeconds integer No —

Example message:

"HubSpot API rate limit reached. Please wait a few seconds and try again."

Example retryAfterSeconds:

10

Extends PriceAdjustmentBase.

Field Type Required Description
type null Yes Explicitly clear an adjustment (represents null).
amount null Yes Always null for a NullAdjustment.

Extends PriceAdjustmentBase.

Field Type Required Description
type override Yes —
amount number Yes —

Extends PriceAdjustmentBase.

Field Type Required Description
type percent Yes —
amount number Yes —
Field Type Required Description
type string Yes —
Field Type Required Description
accountId string Yes —
priceBookId string Yes —
productId string Yes —
adjustments map of string to PriceBookEntryAdjustment Yes Price adjustments keyed by ISO 4217 currency code (for example USD, EUR). The key is the currency; the value carries the adjustment only.
calculationIdOverride string No When set, overrides default calculated pricing for this price book entry. Cleared when null.
allowUnitPriceEditing boolean No When true, sales reps may edit unit price in Quote Builder for this product on this price book (entry-level, not per currency).

Type: OverrideAdjustment | PercentAdjustment | CostPlusAdjustment | VolumeAdjustment | TableEnumAdjustment | TableRangeAdjustment | VariantAdjustment

Field Type Required Description
productId string Yes —
adjustments map of string to NullAdjustment | OverrideAdjustment | PercentAdjustment | CostPlusAdjustment | TableEnumAdjustment | TableRangeAdjustment | VariantAdjustment | VolumeAdjustment No Price adjustments keyed by ISO 4217 currency code (for example USD, EUR); keys are uppercased by the API. The key is the currency: an adjustment value carries no currency field of its own, and there is no currency field beside productId. Each value is a single adjustment object, or null to clear that currency.
calculationIdOverride string | null No Optional calculated pricing override for this entry; null clears.
allowUnitPriceEditing boolean | null No Entry-level unit-price editing flag for Quote Builder; null clears. Do not send inside adjustment objects.

Example adjustments:

{
"USD": {
"type": "override",
"amount": 100
},
"EUR": {
"type": "percent",
"amount": 0.9
}
}

Extends PriceAdjustmentBase.

Field Type Required Description
type enum Yes —
property string Yes —
values object[] Yes —

Extends PriceAdjustmentBase.

Field Type Required Description
type range Yes —
property string Yes —
values object[] Yes —

Extends PriceAdjustmentBase.

Field Type Required Description
type variant Yes —
values object[] Yes —

Extends PriceAdjustmentBase.

Field Type Required Description
type volume Yes —
tiers object[] Yes —