Standalone Prices
Standalone Prices offer a flexible way to store your product prices, especially with a large number of prices.
For an introduction to Standalone Prices and to understand how they work in Composable Commerce, see the Standalone Prices overview.
The Product priceMode
determines the type of Price used for a Product Variant. If the priceMode
is not set, as a default, Product Variants use Embedded Prices.
- For existing Products using Embedded Prices, use the Set PriceMode update action to change the price mode.
- For new Products, create a Product with
priceMode
asStandalone
.
Learn more about Standalone Prices in our self-paced Pricing setup module.
Representations
StandalonePrice
id String | Unique identifier of the StandalonePrice. |
version Int | Current version of the StandalonePrice. |
key String | User-defined unique identifier of the StandalonePrice. MinLength:2 MaxLength: 256 Pattern: ^[A-Za-z0-9_-]+$ |
sku String | SKU of the ProductVariant to which this Price is associated. |
value | Money value of this Price. |
country | Country for which this Price is valid. Pattern:^[A-Z]{2}$ |
customerGroup | CustomerGroup for which this Price is valid. |
channel | Product distribution Channel for which this Price is valid. |
validFrom | Date from which the Price is valid. |
validUntil | Date until the Price is valid. Standalone Prices that are no longer valid are not automatically deleted, but they can be deleted if necessary. |
tiers Array of PriceTier | Price tiers if any are defined. If |
discounted | Set if a matching ProductDiscount exists. If set, the API uses the |
staged | Staged changes of the StandalonePrice. Only present if the StandalonePrice has some changes staged. |
active Boolean | If set to true |
custom | Custom Fields for the StandalonePrice. |
createdAt | Date and time (UTC) the StandalonePrice was initially created. |
createdBy BETA | IDs and references that created the StandalonePrice. |
lastModifiedAt | Date and time (UTC) the StandalonePrice was last updated. |
lastModifiedBy BETA | IDs and references that last modified the StandalonePrice. |
StandalonePriceDraft
This type is equivalent to CreateStandalonePrice in the GraphQL API.
key String | User-defined unique identifier for the StandalonePrice. MinLength:2 MaxLength: 256 Pattern: ^[A-Za-z0-9_-]+$ |
sku String | Specifies to which ProductVariant the API associates this Price. It is not validated to exist in product variants. |
value | Sets the money value of this Price. To set the money value in high precision, use HighPrecisionMoneyDraft. |
country | Sets the country for which this Price is valid. Pattern:^[A-Z]{2}$ |
customerGroup | Sets the CustomerGroup for which this Price is valid. |
channel | Sets the product distribution Channel for which this Price is valid. |
validFrom | Sets the date from which the Price is valid. Must be at least 1 ms earlier than |
validUntil | Sets the date until the Price is valid. Must be at least 1 ms later than |
tiers Array of PriceTierDraft | Sets price tiers. If |
discounted | Sets a discounted price for this Price that is different from the base price with |
staged | Staged changes for the StandalonePrice. |
active Boolean | Set to true |
custom | Custom Fields for the StandalonePrice. |
StandalonePricePagedQueryResponse
PagedQueryResult with results
containing an array of StandalonePrice.
limit Int | Number of requested results. |
offset Int | Offset supplied by the client or server default. It is the number of elements skipped, not a page number. |
count Int | Actual number of results returned. |
total Int | Total number of results matching the query.
This number is an estimation that is not strongly consistent.
This field is returned by default.
For improved performance, calculating this field can be deactivated by using the query parameter |
results Array of StandalonePrice | StandalonePrices matching the query. |
StandalonePriceReference
Reference to a StandalonePrice.
id String | Unique ID of the referenced resource. |
typeId | "standalone-price" References a StandalonePrice. |
obj | Contains the representation of the expanded StandalonePrice. Only present in responses to requests with Reference Expansion for StandalonePrice. |
StandalonePriceResourceIdentifier
id String | Unique identifier of the referenced resource. Required if |
key String | User-defined unique identifier of the referenced resource. Required if |
typeId | "standalone-price" References a StandalonePrice. |
StagedStandalonePrice
Staged changes on a Standalone Price.
To update the value
property of a Staged Standalone Price, use the Change Value update action.
To apply all staged changes to the Standalone Price, use the Apply Staged Changes update action.
value | Money value of the StagedStandalonePrice. |
discounted | Discounted price for the StagedStandalonePrice. |
StagedPriceDraft
value | Money value for the StagedPriceDraft. |
Get StandalonePrice
Get StandalonePrice by ID
view_standalone_prices:{projectKey}
region String | Region in which the Project is hosted. |
projectKey String |
|
id String |
|
expand | The parameter can be passed multiple times. |
application/json
curl --get https://api.{region}.commercetools.com/{projectKey}/standalone-prices/{id} -i \--header "Authorization: Bearer ${BEARER_TOKEN}"
{"id": "3f8812c6-88e8-11ec-a8a3-0242ac120002","version": 1,"sku": "PT974SKT","value": {"type": "centPrecision","currencyCode": "EUR","centAmount": 10000,"fractionDigits": 2},"staged": {"value": {"type": "centPrecision","currencyCode": "EUR","centAmount": 20000,"fractionDigits": 2}},"active": true,"createdAt": "2022-05-09T08:29:13.253Z","lastModifiedAt": "2022-05-09T12:36:55.401Z"}
Get StandalonePrice by Key
view_standalone_prices:{projectKey}
region String | Region in which the Project is hosted. |
projectKey String |
|
key String |
|
expand | The parameter can be passed multiple times. |
application/json
curl --get https://api.{region}.commercetools.com/{projectKey}/standalone-prices/key={key} -i \--header "Authorization: Bearer ${BEARER_TOKEN}"
{"id": "3f8812c6-88e8-11ec-a8a3-0242ac120002","version": 1,"sku": "PT974SKT","value": {"type": "centPrecision","currencyCode": "EUR","centAmount": 10000,"fractionDigits": 2},"staged": {"value": {"type": "centPrecision","currencyCode": "EUR","centAmount": 20000,"fractionDigits": 2}},"active": true,"createdAt": "2022-05-09T08:29:13.253Z","lastModifiedAt": "2022-05-09T12:36:55.401Z"}
Query StandalonePrices
view_standalone_prices:{projectKey}
region String | Region in which the Project is hosted. |
projectKey String |
|
where | The parameter can be passed multiple times. |
/^var[.][a-zA-Z0-9]+$/ Any string parameter matching this regular expression | Predicate parameter values. The parameter can be passed multiple times. |
sort | The parameter can be passed multiple times. |
expand | The parameter can be passed multiple times. |
limit Int | Number of results requested. |
offset Int | Number of elements skipped. |
withTotal Boolean | Controls the calculation of the total number of query results. Set to Default: true |
application/json
curl --get https://api.{region}.commercetools.com/{projectKey}/standalone-prices -i \--header "Authorization: Bearer ${BEARER_TOKEN}"
{"limit": 20,"offset": 0,"count": 2,"total": 2,"results": [{"id": "3f8812c6-88e8-11ec-a8a3-0242ac120002","version": 1,"sku": "PT974SKT","value": {"type": "centPrecision","currencyCode": "EUR","centAmount": 10000,"fractionDigits": 2},"active": true,"createdAt": "2022-05-09T08:29:13.253Z","lastModifiedAt": "2022-05-09T12:36:55.401Z"},{"id": "9d73608c-88ea-11ec-a8a3-0242ac120002","version": 1,"key": "random-key-12345","sku": "PT562ZTB","value": {"type": "centPrecision","currencyCode": "USD","centAmount": 15000,"fractionDigits": 2},"country": "DE","channel": {"typeId": "channel","id": "2ae21284-88ea-11ec-a8a3-0242ac120002"},"customerGroup": {"typeId": "customer-group","id": "15a1678a-88ea-11ec-a8a3-0242ac120002"},"active": true,"createdAt": "2022-05-09T09:29:13.253Z","lastModifiedAt": "2022-05-09T10:36:55.401Z"}]}
Check if StandalonePrice exists
Check if StandalonePrice exists by ID
Checks if a StandalonePrice exists for a given id
. Returns a 200 OK
status if the StandalonePrice exists or a 404 Not Found
otherwise.
view_standalone_prices:{projectKey}
region String | Region in which the Project is hosted. |
projectKey String |
|
id String |
|
curl --head https://api.{region}.commercetools.com/{projectKey}/standalone-prices/{id} -i \--header "Authorization: Bearer ${BEARER_TOKEN}"
Check if StandalonePrice exists by Key
Checks if a StandalonePrice exists for a given key
. Returns a 200 OK
status if the StandalonePrice exists or a 404 Not Found
otherwise.
view_standalone_prices:{projectKey}
region String | Region in which the Project is hosted. |
projectKey String |
|
key String |
|
curl --head https://api.{region}.commercetools.com/{projectKey}/standalone-prices/key={key} -i \--header "Authorization: Bearer ${BEARER_TOKEN}"
Check if StandalonePrice exists by Query Predicate
Checks if a StandalonePrice exists for a given Query Predicate. Returns a 200 OK
status if any StandalonePrices match the Query Predicate, or a 404 Not Found
otherwise.
view_standalone_prices:{projectKey}
region String | Region in which the Project is hosted. |
projectKey String |
|
where | The parameter can be passed multiple times. |
curl --head https://api.{region}.commercetools.com/{projectKey}/standalone-prices -i \--header "Authorization: Bearer ${BEARER_TOKEN}"
Create StandalonePrice
Creating a Standalone Price produces the StandalonePriceCreated Message.
- If the Standalone Price has the same price scope as an existing Standalone Price, a DuplicateStandalonePriceScope error is returned.
- If the Standalone Price has overlapping validity periods within the same price scope, a OverlappingStandalonePriceValidity error is returned. A Price without validity period does not conflict with a Price defined for a time period.
manage_standalone_prices:{projectKey}
region String | Region in which the Project is hosted. |
projectKey String |
|
expand | The parameter can be passed multiple times. |
application/json
application/json
curl https://api.{region}.commercetools.com/{projectKey}/standalone-prices -i \--header "Authorization: Bearer ${BEARER_TOKEN}" \--header 'Content-Type: application/json' \--data-binary @- << DATA{"sku" : "PT974SKT","value" : {"currencyCode" : "EUR","centAmount" : 10000}}DATA
{"id": "3f8812c6-88e8-11ec-a8a3-0242ac120002","version": 1,"sku": "PT974SKT","value": {"type": "centPrecision","currencyCode": "EUR","centAmount": 10000,"fractionDigits": 2},"staged": {"value": {"type": "centPrecision","currencyCode": "EUR","centAmount": 20000,"fractionDigits": 2}},"active": true,"createdAt": "2022-05-09T08:29:13.253Z","lastModifiedAt": "2022-05-09T12:36:55.401Z"}
Update StandalonePrice
Update StandalonePrice by ID
manage_standalone_prices:{projectKey}
region String | Region in which the Project is hosted. |
projectKey String |
|
id String |
|
expand | The parameter can be passed multiple times. |
application/json
version Int | Expected version of the StandalonePrice on which the changes should be applied. If the expected version does not match the actual version, a ConcurrentModification error will be returned. |
actions Array of StandalonePriceUpdateAction | Update actions to be performed on the StandalonePrice. |
application/json
curl https://api.{region}.commercetools.com/{projectKey}/standalone-prices/{id} -i \--header "Authorization: Bearer ${BEARER_TOKEN}" \--header 'Content-Type: application/json' \--data-binary @- << DATA{"version" : 1,"actions" : [ {"action" : "changeValue","value" : {"currencyCode" : "EUR","centAmount" : 10000}} ]}DATA
{"id": "3f8812c6-88e8-11ec-a8a3-0242ac120002","version": 1,"sku": "PT974SKT","value": {"type": "centPrecision","currencyCode": "EUR","centAmount": 10000,"fractionDigits": 2},"staged": {"value": {"type": "centPrecision","currencyCode": "EUR","centAmount": 20000,"fractionDigits": 2}},"active": true,"createdAt": "2022-05-09T08:29:13.253Z","lastModifiedAt": "2022-05-09T12:36:55.401Z"}
Update StandalonePrice by Key
manage_standalone_prices:{projectKey}
region String | Region in which the Project is hosted. |
projectKey String |
|
key String |
|
expand | The parameter can be passed multiple times. |
application/json
version Int | Expected version of the StandalonePrice on which the changes should be applied. If the expected version does not match the actual version, a ConcurrentModification error will be returned. |
actions Array of StandalonePriceUpdateAction | Update actions to be performed on the StandalonePrice. |
application/json
curl https://api.{region}.commercetools.com/{projectKey}/standalone-prices/key={key} -i \--header "Authorization: Bearer ${BEARER_TOKEN}" \--header 'Content-Type: application/json' \--data-binary @- << DATA{"version" : 1,"actions" : [ {"action" : "changeValue","value" : {"currencyCode" : "EUR","centAmount" : 10000}} ]}DATA
{"id": "3f8812c6-88e8-11ec-a8a3-0242ac120002","version": 1,"sku": "PT974SKT","value": {"type": "centPrecision","currencyCode": "EUR","centAmount": 10000,"fractionDigits": 2},"staged": {"value": {"type": "centPrecision","currencyCode": "EUR","centAmount": 20000,"fractionDigits": 2}},"active": true,"createdAt": "2022-05-09T08:29:13.253Z","lastModifiedAt": "2022-05-09T12:36:55.401Z"}
Update actions
Change Value
Updating the value of a StandalonePrice produces the StandalonePriceValueChangedMessage.
action String | "changeValue" |
value | New value to set. Must not be empty. To set the money value in high precision, use HighPrecisionMoneyDraft. |
staged Boolean | If set to false |
{"action": "changeValue","staged": false,"value": {"currencyCode": "EUR","centAmount": 10000}}
Change Active
Updating the value of a StandalonePrice produces the StandalonePriceActiveChanged Message.
action String | "changeActive" |
active Boolean | New value to set for the |
{"action": "changeActive","active": false}
Set Key
Sets the key on a Standalone Price. Produces the StandalonePriceKeySet Message.
action String | "setKey" |
key String | Value to set. Must be unique. If empty, any existing value will be removed. MinLength:2 MaxLength: 256 Pattern: ^[A-Za-z0-9_-]+$ |
{"action": "setKey","key": "new-key"}
Set Custom Type
action String | "setCustomType" |
type | Defines the Type that extends the StandalonePrice with Custom Fields. If absent, any existing Type and Custom Fields are removed from the StandalonePrice. |
fields | Sets the Custom Fields fields for the StandalonePrice. |
{"action": "setCustomType","type": {"id": "{{type-id}}","typeId": "type"},"fields": {"exampleStringField": "TextString"}}
Set Custom Field
action String | "setCustomField" |
name String | Name of the Custom Field. |
value | If |
{"action": "setCustomField","name": "exampleStringField","value": "TextString"}
Set Discounted Price
Discounts a Standalone Price of a Product Variant on a published Product. If the Product Variant does not exist or if it exists only in the staged representation of a Product, an InvalidOperationError error is returned.
Produces the StandalonePriceExternalDiscountSet Message.
action String | "setDiscountedPrice" |
discounted | Value to set. If empty, any existing value will be removed. The referenced ProductDiscount must be of type external, active, and its predicate must match the referenced Price. |
{"action": "setDiscountedPrice","discounted": {"value": {"type": "centPrecision","currencyCode": "EUR","centAmount": 2990,"fractionDigits": 2},"discount": {"typeId": "product-discount","id": "{{product-discount-id}}"}}}
Add Price Tier
Adding a PriceTier to a StandalonePrice produces the Standalone Price Tier Added Message.
action String | "addPriceTier" |
tier | The PriceTier to be added to the
|
{"action": "addPriceTier","tier": {"minimumQuantity": 100,"value": {"centAmount": 4200,"currencyCode": "EUR","type": "centPrecision"}}}
Remove Price Tier
Removing a PriceTier from a StandalonePrice produces the Standalone Price Tier Removed Message.
action String | "removePriceTier" |
tierMinimumQuantity Int | The |
{"action": "removePriceTier","tierMinimumQuantity": 100}
Set Price Tiers
Sets all PriceTiers for a StandalonePrice in one action, produces the Standalone Price Tiers Set Message.
action String | "setPriceTiers" |
tiers Array of PriceTierDraft | Value to set. If empty, any existing value will be removed.
The |
{"action": "setPriceTiers","tiers": [{"minimumQuantity": 100,"value": {"centAmount": 4200,"currencyCode": "EUR","type": "centPrecision"}},{"minimumQuantity": 1000,"value": {"centAmount": 4000,"currencyCode": "EUR","type": "centPrecision"}}]}
Apply Staged Changes
Applies all staged changes to the StandalonePrice by overwriting all current values with the values in the StagedStandalonePrice. After successfully applied, the StagedStandalonePrice will be removed from the StandalonePrice. An applyStagedChanges
update action on a StandalonePrice that does not contain any staged changes will return a 400 Bad Request
error. Applying staged changes successfully will produce the StandalonePriceStagedChangesApplied Message.
action String | "applyStagedChanges" |
{"action": "applyStagedChanges"}
Remove Staged Changes
Removes all staged changes from the StandalonePrice. Removing staged changes successfully produces the StandalonePriceStagedChangesRemoved Message.
action String | "removeStagedChanges" |
{"action": "removeStagedChanges"}
Set Valid From
Updating the validFrom
value generates the StandalonePriceValidFromSet Message.
As the validity dates are part of the price scope and are not allowed to overlap, this update might return the DuplicateStandalonePriceScope and OverlappingStandalonePriceValidity errors, respectively. A Price without validity period does not conflict with a Price defined for a time period.
action String | "setValidFrom" |
validFrom | Value to set. If empty, any existing value is removed. |
{"action": "setValidFrom","validFrom": "2019-03-30T20:30:00.000Z"}
Set Valid Until
Updating the validUntil
value generates the StandalonePriceValidUntilSet Message.
As the validity dates are part of the price scope and are not allowed to overlap, this update might return the DuplicateStandalonePriceScope and OverlappingStandalonePriceValidity errors, respectively. A Price without validity period does not conflict with a Price defined for a time period.
action String | "setValidUntil" |
validUntil | Value to set. If empty, any existing value is removed. |
{"action": "setValidUntil","validUntil": "2019-04-21T20:30:00.000Z"}
Set Valid From and Until
Updating the validFrom
and validUntil
values generates the StandalonePriceValidFromAndUntilSet Message.
As the validity dates are part of the price scope and are not allowed to overlap, this update might return the DuplicateStandalonePriceScope and OverlappingStandalonePriceValidity errors, respectively. A Price without validity period does not conflict with a Price defined for a time period.
action String | "setValidFromAndUntil" |
validFrom | Value to set. If empty, any existing value is removed. |
validUntil | Value to set. If empty, any existing value is removed. |
{"action": "setValidFromAndUntil","validFrom": "2019-03-30T20:30:00.000Z","validUntil": "2019-04-21T20:30:00.000Z"}
Delete StandalonePrice
Delete StandalonePrice by ID
Produces the StandalonePriceDeleted Message.
manage_standalone_prices:{projectKey}
region String | Region in which the Project is hosted. |
projectKey String |
|
id String |
|
version Int | Last seen version of the resource. |
expand | The parameter can be passed multiple times. |
application/json
curl -X DELETE https://api.{region}.commercetools.com/{projectKey}/standalone-prices/{id}?version={version} -i \--header "Authorization: Bearer ${BEARER_TOKEN}"
{"id": "3f8812c6-88e8-11ec-a8a3-0242ac120002","version": 1,"sku": "PT974SKT","value": {"type": "centPrecision","currencyCode": "EUR","centAmount": 10000,"fractionDigits": 2},"staged": {"value": {"type": "centPrecision","currencyCode": "EUR","centAmount": 20000,"fractionDigits": 2}},"active": true,"createdAt": "2022-05-09T08:29:13.253Z","lastModifiedAt": "2022-05-09T12:36:55.401Z"}
Delete StandalonePrice by Key
Produces the StandalonePriceDeleted Message.
manage_standalone_prices:{projectKey}
region String | Region in which the Project is hosted. |
projectKey String |
|
key String |
|
version Int | Last seen version of the resource. |
expand | The parameter can be passed multiple times. |
application/json
curl -X DELETE https://api.{region}.commercetools.com/{projectKey}/standalone-prices/key={key}?version={version} -i \--header "Authorization: Bearer ${BEARER_TOKEN}"
{"id": "3f8812c6-88e8-11ec-a8a3-0242ac120002","version": 1,"sku": "PT974SKT","value": {"type": "centPrecision","currencyCode": "EUR","centAmount": 10000,"fractionDigits": 2},"staged": {"value": {"type": "centPrecision","currencyCode": "EUR","centAmount": 20000,"fractionDigits": 2}},"active": true,"createdAt": "2022-05-09T08:29:13.253Z","lastModifiedAt": "2022-05-09T12:36:55.401Z"}