Quotes

Quotes are legally binding custom offers presented to a Buyer.

Representations

Quote

id
String

Unique identifier of the Quote.

version
Int

Current version of the Quote.

key
String

User-defined unique identifier of the Quote.

MinLength: 2MaxLength: 256Pattern: ^[A-Za-z0-9_-]+$
quoteRequest

Quote Request related to the Quote.

stagedQuote

Staged Quote related to the Quote.

customer

The Buyer who owns the Quote.

customerGroup

Set automatically when customer is set and the Customer is a member of a Customer Group. Not updated if Customer is changed after Quote creation. Used for Product Variant price selection.

validTo

Expiration date for the Quote.

sellerComment
String

Message from the Seller included in the offer.

buyerComment
String

Message from the Buyer included in the renegotiation request.

The Store to which the Buyer belongs.

lineItems
Array of LineItem

The Line Items for which the Quote is requested.

customLineItems
Array of CustomLineItem

The Custom Line Items for which the Quote is requested.

totalPrice

Sum of all totalPrice fields of the lineItems and customLineItems, as well as the price field of shippingInfo (if it exists). totalPrice may or may not include the taxes: it depends on the taxRate.includedInPrice property of each price.

taxedPrice

Not set until the shipping address is set. Will be set automatically in the Platform TaxMode. For the External tax mode it will be set as soon as the external tax rates for all line items, custom line items, and shipping in the cart are set.

shippingAddress

Used to determine the eligible ShippingMethods and rates as well as the tax rate of the Line Items.

billingAddress

Address used for invoicing.

inventoryMode

Inventory mode of the Cart referenced in the QuoteRequestDraft.

taxMode

Tax mode of the Cart referenced in the QuoteRequestDraft.

taxRoundingMode

When calculating taxes for taxedPrice, the selected mode is used for rounding.

taxCalculationMode

When calculating taxes for taxedPrice, the selected mode is used for calculating the price with LineItemLevel (horizontally) or UnitPriceLevel (vertically) calculation mode.

country

Used for Product Variant price selection.

Pattern: ^[A-Z]{2}$
shippingInfo

Set automatically once the ShippingMethod is set.

paymentInfo

Log of payment transactions related to the Quote.

shippingRateInput

Used to select a ShippingRatePriceTier.

itemShippingAddresses
Array of Address

Contains addresses for carts with multiple shipping addresses. Line items reference these addresses under their shippingDetails. The addresses captured here are not used to determine eligible shipping methods or the applicable tax rate. Only the cart's shippingAddress is used for this.

directDiscounts
Array of DirectDiscount

Discounts that are only valid for the Quote and cannot be associated to any other Cart or Order.

quoteState

Predefined states tracking the status of the Quote.

state

State of the Quote. This reference can point to a State in a custom workflow.

purchaseOrderNumber
String

The Purchase Order Number is typically set by the Buyer on a QuoteRequest to track the purchase order during the quote and order flow.

businessUnit

The BusinessUnit for the Quote.

custom

Custom Fields on the Quote.

createdAt

Date and time (UTC) the Quote was initially created.

createdByBETA

IDs and references that created the Quote.

lastModifiedAt

Date and time (UTC) the Quote was last updated.

lastModifiedByBETA

IDs and references that last modified the Quote.

QuoteDraft

key
String

User-defined unique identifier for the Quote.

MinLength: 2MaxLength: 256Pattern: ^[A-Za-z0-9_-]+$

StagedQuote from which the Quote is created.

stagedQuoteVersion
Int

Current version of the StagedQuote.

stagedQuoteStateToSent
Boolean

If true, the stagedQuoteState of the referenced StagedQuote will be set to Sent.

Default: false
state

State of the Quote. This reference can point to a State in a custom workflow.

custom

Custom Fields to be added to the Quote.

  • If specified, the Custom Fields are merged with the Custom Fields on the referenced StagedQuote and added to the Quote.
  • If empty, the Custom Fields on the referenced StagedQuote are added to the Quote automatically.

QuotePagedQueryResponse

PagedQueryResult with results containing an array of Quote.

limit
Int
offset
Int

Number of elements skipped.

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 withTotal=false. When the results are filtered with a Query Predicate, total is subject to a limit.

results
Array of Quote

Quotes matching the query.

QuoteReference

id
String

Unique ID of the referenced resource.

typeId
String
"quote"

References a Quote.

obj

Contains the representation of the expanded Quote. Only present in responses to requests with Reference Expansion for Quote.

QuoteRequestResourceIdentifier

id
String

Unique identifier of the referenced resource. Required if key is absent.

key
String

User-defined unique identifier of the referenced resource. Required if id is absent.

typeId
String
"quote"

References a Quote.

QuoteState

Predefined states tracking the status of the Quote.

Pending

A state indicating that the Seller submitted the Quote to the Buyer, but the Buyer has not replied yet.

This is the default state.

Declined

A state indicating that the Buyer has declined the Quote.

DeclinedForRenegotiation

A state indicating that the Buyer has declined and requested to renegotiate the Quote.

RenegotiationAddressed

A state indicating that the Seller has created a new Quote after a renegotiation has been requested.

Accepted

A state indicating that the Buyer has accepted the Quote.

Withdrawn

A state indicating that the Seller has withdrawn the Quote before the Buyer has accepted it.

Get Quote

Get Quote by ID

GET
https://api.{region}.commercetools.com/{projectKey}/quotes/{id}
OAuth 2.0 Scopes:
view_quotes:{projectKey}
Path parameters:
region
String

Region in which the Project is hosted.

projectKey
String

key of the Project.

id
String

id of the Quote.

Query parameters:
expand
The parameter can be passed multiple times.
Response:
200Quoteasapplication/json
Request Example:cURL
curl --get https://api.{region}.commercetools.com/{projectKey}/quotes/{id} -i \
--header 'Authorization: Bearer ${BEARER_TOKEN}'
200 Response Example: Quotejson
{
"id": "2a3baa00-44fa-4ab8-bec7-933c31e18dcc",
"version": 5,
"createdAt": "2015-09-22T15:36:17.510Z",
"lastModifiedAt": "2015-09-22T15:41:55.816Z",
"quoteState": "Accepted",
"quoteRequest": {
"typeId": "quote-request",
"id": "8a3faa00-33fa-4ab8-bee7-833f31e18dcc"
},
"stagedQuote": {
"typeId": "staged-quote",
"id": "8a3baa00-44fa-4ab8-bec7-933c31e18dcc"
},
"customer": {
"typeId": "customer",
"id": "92f5a867-bf19-47ab-982c-6720a03a3921"
},
"businessUnit": {
"key": "bu-345-france",
"typeId": "business-unit"
},
"lineItems": [
{
"id": "b925a817-d5ad-48bb-a407-29ad8e0649b5",
"productId": "9f10dcfb-5cc9-4a18-843a-c07f7e22d01f",
"name": {
"en": "SAPPHIRE"
},
"productType": {
"typeId": "product-type",
"id": "2543e1d8-4915-4f72-a3c9-1df9b1b0082d",
"version": 8
},
"productSlug": {
"en": "sapphire1421832124423"
},
"variant": {
"id": 1,
"sku": "sku_SAPPHIRE_variant1_1421832124423",
"prices": [
{
"value": {
"type": "centPrecision",
"fractionDigits": 2,
"currencyCode": "EUR",
"centAmount": 2800
},
"id": "8da659ef-9e54-447d-9c36-84912db1848f"
}
],
"images": [
{
"url": "https://www.commercetools.com/cli/data/252542005_1.jpg",
"dimensions": {
"w": 1400,
"h": 1400
}
}
],
"attributes": [],
"assets": []
},
"price": {
"value": {
"type": "centPrecision",
"fractionDigits": 2,
"currencyCode": "EUR",
"centAmount": 2800
},
"id": "8da659ef-9e54-447d-9c36-84912db1848f"
},
"quantity": 2,
"discountedPricePerQuantity": [],
"state": [
{
"quantity": 2,
"state": {
"typeId": "state",
"id": "7c2e2694-aefe-43d7-888e-6a99514caaca"
}
}
],
"priceMode": "Platform",
"lineItemMode": "Standard",
"totalPrice": {
"type": "centPrecision",
"fractionDigits": 2,
"currencyCode": "EUR",
"centAmount": 5600
},
"perMethodTaxRate": [],
"taxedPricePortions": []
}
],
"totalPrice": {
"type": "centPrecision",
"fractionDigits": 2,
"currencyCode": "EUR",
"centAmount": 5600
},
"customLineItems": [],
"directDiscounts": [],
"inventoryMode": "None",
"taxMode": "Platform",
"taxRoundingMode": "HalfEven",
"taxCalculationMode": "LineItemLevel"
}

Get Quote by Key

GET
https://api.{region}.commercetools.com/{projectKey}/quotes/key={key}
OAuth 2.0 Scopes:
view_quotes:{projectKey}
Path parameters:
region
String

Region in which the Project is hosted.

projectKey
String

key of the Project.

key
String

key of the Quote.

Query parameters:
expand
The parameter can be passed multiple times.
Response:
200Quoteasapplication/json
Request Example:cURL
curl --get https://api.{region}.commercetools.com/{projectKey}/quotes/key={key} -i \
--header 'Authorization: Bearer ${BEARER_TOKEN}'
200 Response Example: Quotejson
{
"id": "2a3baa00-44fa-4ab8-bec7-933c31e18dcc",
"version": 5,
"createdAt": "2015-09-22T15:36:17.510Z",
"lastModifiedAt": "2015-09-22T15:41:55.816Z",
"quoteState": "Accepted",
"quoteRequest": {
"typeId": "quote-request",
"id": "8a3faa00-33fa-4ab8-bee7-833f31e18dcc"
},
"stagedQuote": {
"typeId": "staged-quote",
"id": "8a3baa00-44fa-4ab8-bec7-933c31e18dcc"
},
"customer": {
"typeId": "customer",
"id": "92f5a867-bf19-47ab-982c-6720a03a3921"
},
"businessUnit": {
"key": "bu-345-france",
"typeId": "business-unit"
},
"lineItems": [
{
"id": "b925a817-d5ad-48bb-a407-29ad8e0649b5",
"productId": "9f10dcfb-5cc9-4a18-843a-c07f7e22d01f",
"name": {
"en": "SAPPHIRE"
},
"productType": {
"typeId": "product-type",
"id": "2543e1d8-4915-4f72-a3c9-1df9b1b0082d",
"version": 8
},
"productSlug": {
"en": "sapphire1421832124423"
},
"variant": {
"id": 1,
"sku": "sku_SAPPHIRE_variant1_1421832124423",
"prices": [
{
"value": {
"type": "centPrecision",
"fractionDigits": 2,
"currencyCode": "EUR",
"centAmount": 2800
},
"id": "8da659ef-9e54-447d-9c36-84912db1848f"
}
],
"images": [
{
"url": "https://www.commercetools.com/cli/data/252542005_1.jpg",
"dimensions": {
"w": 1400,
"h": 1400
}
}
],
"attributes": [],
"assets": []
},
"price": {
"value": {
"type": "centPrecision",
"fractionDigits": 2,
"currencyCode": "EUR",
"centAmount": 2800
},
"id": "8da659ef-9e54-447d-9c36-84912db1848f"
},
"quantity": 2,
"discountedPricePerQuantity": [],
"state": [
{
"quantity": 2,
"state": {
"typeId": "state",
"id": "7c2e2694-aefe-43d7-888e-6a99514caaca"
}
}
],
"priceMode": "Platform",
"lineItemMode": "Standard",
"totalPrice": {
"type": "centPrecision",
"fractionDigits": 2,
"currencyCode": "EUR",
"centAmount": 5600
},
"perMethodTaxRate": [],
"taxedPricePortions": []
}
],
"totalPrice": {
"type": "centPrecision",
"fractionDigits": 2,
"currencyCode": "EUR",
"centAmount": 5600
},
"customLineItems": [],
"directDiscounts": [],
"inventoryMode": "None",
"taxMode": "Platform",
"taxRoundingMode": "HalfEven",
"taxCalculationMode": "LineItemLevel"
}

Query Quotes

GET
https://api.{region}.commercetools.com/{projectKey}/quotes
OAuth 2.0 Scopes:
view_quotes:{projectKey}
Path parameters:
region
String

Region in which the Project is hosted.

projectKey
String

key of the Project.

Query parameters:
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
offset
Int

Number of elements skipped.

withTotal
Boolean

Controls the calculation of the total number of query results. Set to false to improve query performance when the total is not needed.

Response:
200QuotePagedQueryResponseasapplication/json
Request Example:cURL
curl --get https://api.{region}.commercetools.com/{projectKey}/quotes -i \
--header 'Authorization: Bearer ${BEARER_TOKEN}'
200 Response Example: QuotePagedQueryResponsejson
{
"limit": 20,
"offset": 0,
"count": 1,
"total": 1,
"results": [
{
"id": "2a3baa00-44fa-4ab8-bec7-933c31e18dcc",
"version": 5,
"createdAt": "2015-09-22T15:36:17.510Z",
"lastModifiedAt": "2015-09-22T15:41:55.816Z",
"quoteState": "Accepted",
"quoteRequest": {
"typeId": "quote-request",
"id": "8a3faa00-33fa-4ab8-bee7-833f31e18dcc"
},
"stagedQuote": {
"typeId": "staged-quote",
"id": "8a3baa00-44fa-4ab8-bec7-933c31e18dcc"
},
"customer": {
"typeId": "customer",
"id": "92f5a867-bf19-47ab-982c-6720a03a3921"
},
"businessUnit": {
"key": "bu-345-france",
"typeId": "business-unit"
},
"lineItems": [
{
"id": "b925a817-d5ad-48bb-a407-29ad8e0649b5",
"productId": "9f10dcfb-5cc9-4a18-843a-c07f7e22d01f",
"name": {
"en": "SAPPHIRE"
},
"productType": {
"typeId": "product-type",
"id": "2543e1d8-4915-4f72-a3c9-1df9b1b0082d",
"version": 8
},
"productSlug": {
"en": "sapphire1421832124423"
},
"variant": {
"id": 1,
"sku": "sku_SAPPHIRE_variant1_1421832124423",
"prices": [
{
"value": {
"type": "centPrecision",
"fractionDigits": 2,
"currencyCode": "EUR",
"centAmount": 2800
},
"id": "8da659ef-9e54-447d-9c36-84912db1848f"
}
],
"images": [
{
"url": "https://www.commercetools.com/cli/data/252542005_1.jpg",
"dimensions": {
"w": 1400,
"h": 1400
}
}
],
"attributes": [],
"assets": []
},
"price": {
"value": {
"type": "centPrecision",
"fractionDigits": 2,
"currencyCode": "EUR",
"centAmount": 2800
},
"id": "8da659ef-9e54-447d-9c36-84912db1848f"
},
"quantity": 2,
"discountedPricePerQuantity": [],
"state": [
{
"quantity": 2,
"state": {
"typeId": "state",
"id": "7c2e2694-aefe-43d7-888e-6a99514caaca"
}
}
],
"priceMode": "Platform",
"lineItemMode": "Standard",
"totalPrice": {
"type": "centPrecision",
"fractionDigits": 2,
"currencyCode": "EUR",
"centAmount": 5600
},
"perMethodTaxRate": [],
"taxedPricePortions": []
}
],
"totalPrice": {
"type": "centPrecision",
"fractionDigits": 2,
"currencyCode": "EUR",
"centAmount": 5600
},
"customLineItems": [],
"directDiscounts": [],
"inventoryMode": "None",
"taxMode": "Platform",
"taxRoundingMode": "HalfEven",
"taxCalculationMode": "LineItemLevel"
}
]
}

Check if Quote exists

Check if Quote exists by ID

HEAD
https://api.{region}.commercetools.com/{projectKey}/quotes/{id}

Checks if a Quote exists for a given id. Returns a 200 OK status if the Quote exists or a 404 Not Found otherwise.

OAuth 2.0 Scopes:
view_quotes:{projectKey}
Path parameters:
region
String

Region in which the Project is hosted.

projectKey
String

key of the Project.

id
String

id of the Quote.

Response:
200
Request Example:cURL
curl --head https://api.{region}.commercetools.com/{projectKey}/quotes/{id} -i \
--header 'Authorization: Bearer ${BEARER_TOKEN}'

Check if Quote exists by Key

HEAD
https://api.{region}.commercetools.com/{projectKey}/quotes/key={key}

Checks if a Quote exists for a given key. Returns a 200 OK status if the Quote exists or a 404 Not Found otherwise.

OAuth 2.0 Scopes:
view_quotes:{projectKey}
Path parameters:
region
String

Region in which the Project is hosted.

projectKey
String

key of the Project.

key
String

key of the Quote.

Response:
200
Request Example:cURL
curl --head https://api.{region}.commercetools.com/{projectKey}/quotes/key={key} -i \
--header 'Authorization: Bearer ${BEARER_TOKEN}'

Check if Quote exists by Query Predicate

HEAD
https://api.{region}.commercetools.com/{projectKey}/quotes

Checks if a Quote exists for a given Query Predicate. Returns a 200 OK status if any Quotes match the Query Predicate or a 404 Not Found otherwise.

OAuth 2.0 Scopes:
view_quotes:{projectKey}
Path parameters:
region
String

Region in which the Project is hosted.

projectKey
String

key of the Project.

Query parameters:
where
The parameter can be passed multiple times.
Response:
200
Request Example:cURL
curl --head https://api.{region}.commercetools.com/{projectKey}/quotes -i \
--header 'Authorization: Bearer ${BEARER_TOKEN}'

Create Quote

POST
https://api.{region}.commercetools.com/{projectKey}/quotes
OAuth 2.0 Scopes:
manage_quotes:{projectKey}
Path parameters:
region
String

Region in which the Project is hosted.

projectKey
String

key of the Project.

Query parameters:
expand
The parameter can be passed multiple times.
Request Body:QuoteDraftasapplication/json
Response:
201Quoteasapplication/json
Request Example:cURL
curl https://api.{region}.commercetools.com/{projectKey}/quotes -i \
--header 'Authorization: Bearer ${BEARER_TOKEN}' \
--header 'Content-Type: application/json' \
--data-binary @- << DATA
{
"stagedQuote" : {
"typeId" : "staged-quote",
"id" : "2a3baa00-44fa-4ab8-bec7-933c31e18dcc"
},
"stagedQuoteVersion" : 1
}
DATA
201 Response Example: Quotejson
{
"id": "2a3baa00-44fa-4ab8-bec7-933c31e18dcc",
"version": 5,
"createdAt": "2015-09-22T15:36:17.510Z",
"lastModifiedAt": "2015-09-22T15:41:55.816Z",
"quoteState": "Accepted",
"quoteRequest": {
"typeId": "quote-request",
"id": "8a3faa00-33fa-4ab8-bee7-833f31e18dcc"
},
"stagedQuote": {
"typeId": "staged-quote",
"id": "8a3baa00-44fa-4ab8-bec7-933c31e18dcc"
},
"customer": {
"typeId": "customer",
"id": "92f5a867-bf19-47ab-982c-6720a03a3921"
},
"businessUnit": {
"key": "bu-345-france",
"typeId": "business-unit"
},
"lineItems": [
{
"id": "b925a817-d5ad-48bb-a407-29ad8e0649b5",
"productId": "9f10dcfb-5cc9-4a18-843a-c07f7e22d01f",
"name": {
"en": "SAPPHIRE"
},
"productType": {
"typeId": "product-type",
"id": "2543e1d8-4915-4f72-a3c9-1df9b1b0082d",
"version": 8
},
"productSlug": {
"en": "sapphire1421832124423"
},
"variant": {
"id": 1,
"sku": "sku_SAPPHIRE_variant1_1421832124423",
"prices": [
{
"value": {
"type": "centPrecision",
"fractionDigits": 2,
"currencyCode": "EUR",
"centAmount": 2800
},
"id": "8da659ef-9e54-447d-9c36-84912db1848f"
}
],
"images": [
{
"url": "https://www.commercetools.com/cli/data/252542005_1.jpg",
"dimensions": {
"w": 1400,
"h": 1400
}
}
],
"attributes": [],
"assets": []
},
"price": {
"value": {
"type": "centPrecision",
"fractionDigits": 2,
"currencyCode": "EUR",
"centAmount": 2800
},
"id": "8da659ef-9e54-447d-9c36-84912db1848f"
},
"quantity": 2,
"discountedPricePerQuantity": [],
"state": [
{
"quantity": 2,
"state": {
"typeId": "state",
"id": "7c2e2694-aefe-43d7-888e-6a99514caaca"
}
}
],
"priceMode": "Platform",
"lineItemMode": "Standard",
"totalPrice": {
"type": "centPrecision",
"fractionDigits": 2,
"currencyCode": "EUR",
"centAmount": 5600
},
"perMethodTaxRate": [],
"taxedPricePortions": []
}
],
"totalPrice": {
"type": "centPrecision",
"fractionDigits": 2,
"currencyCode": "EUR",
"centAmount": 5600
},
"customLineItems": [],
"directDiscounts": [],
"inventoryMode": "None",
"taxMode": "Platform",
"taxRoundingMode": "HalfEven",
"taxCalculationMode": "LineItemLevel"
}

Update Quote

Update Quote by ID

POST
https://api.{region}.commercetools.com/{projectKey}/quotes/{id}
OAuth 2.0 Scopes:
manage_quotes:{projectKey}
Path parameters:
region
String

Region in which the Project is hosted.

projectKey
String

key of the Project.

id
String

id of the Quote.

Query parameters:
expand
The parameter can be passed multiple times.
Request Body:
application/json
version
Int

Expected version of the Quote to 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 QuoteUpdateAction

Update actions to be performed on the Quote.

Response:
200Quoteasapplication/json
Request Example:cURL
curl https://api.{region}.commercetools.com/{projectKey}/quotes/{id} -i \
--header 'Authorization: Bearer ${BEARER_TOKEN}' \
--header 'Content-Type: application/json' \
--data-binary @- << DATA
{
"version" : 1,
"actions" : [ {
"action" : "changeQuoteState",
"quoteState" : "Accepted"
} ]
}
DATA
200 Response Example: Quotejson
{
"id": "2a3baa00-44fa-4ab8-bec7-933c31e18dcc",
"version": 5,
"createdAt": "2015-09-22T15:36:17.510Z",
"lastModifiedAt": "2015-09-22T15:41:55.816Z",
"quoteState": "Accepted",
"quoteRequest": {
"typeId": "quote-request",
"id": "8a3faa00-33fa-4ab8-bee7-833f31e18dcc"
},
"stagedQuote": {
"typeId": "staged-quote",
"id": "8a3baa00-44fa-4ab8-bec7-933c31e18dcc"
},
"customer": {
"typeId": "customer",
"id": "92f5a867-bf19-47ab-982c-6720a03a3921"
},
"businessUnit": {
"key": "bu-345-france",
"typeId": "business-unit"
},
"lineItems": [
{
"id": "b925a817-d5ad-48bb-a407-29ad8e0649b5",
"productId": "9f10dcfb-5cc9-4a18-843a-c07f7e22d01f",
"name": {
"en": "SAPPHIRE"
},
"productType": {
"typeId": "product-type",
"id": "2543e1d8-4915-4f72-a3c9-1df9b1b0082d",
"version": 8
},
"productSlug": {
"en": "sapphire1421832124423"
},
"variant": {
"id": 1,
"sku": "sku_SAPPHIRE_variant1_1421832124423",
"prices": [
{
"value": {
"type": "centPrecision",
"fractionDigits": 2,
"currencyCode": "EUR",
"centAmount": 2800
},
"id": "8da659ef-9e54-447d-9c36-84912db1848f"
}
],
"images": [
{
"url": "https://www.commercetools.com/cli/data/252542005_1.jpg",
"dimensions": {
"w": 1400,
"h": 1400
}
}
],
"attributes": [],
"assets": []
},
"price": {
"value": {
"type": "centPrecision",
"fractionDigits": 2,
"currencyCode": "EUR",
"centAmount": 2800
},
"id": "8da659ef-9e54-447d-9c36-84912db1848f"
},
"quantity": 2,
"discountedPricePerQuantity": [],
"state": [
{
"quantity": 2,
"state": {
"typeId": "state",
"id": "7c2e2694-aefe-43d7-888e-6a99514caaca"
}
}
],
"priceMode": "Platform",
"lineItemMode": "Standard",
"totalPrice": {
"type": "centPrecision",
"fractionDigits": 2,
"currencyCode": "EUR",
"centAmount": 5600
},
"perMethodTaxRate": [],
"taxedPricePortions": []
}
],
"totalPrice": {
"type": "centPrecision",
"fractionDigits": 2,
"currencyCode": "EUR",
"centAmount": 5600
},
"customLineItems": [],
"directDiscounts": [],
"inventoryMode": "None",
"taxMode": "Platform",
"taxRoundingMode": "HalfEven",
"taxCalculationMode": "LineItemLevel"
}

Update Quote by Key

POST
https://api.{region}.commercetools.com/{projectKey}/quotes/key={key}
OAuth 2.0 Scopes:
manage_quotes:{projectKey}
Path parameters:
region
String

Region in which the Project is hosted.

projectKey
String

key of the Project.

key
String

key of the Quote.

Query parameters:
expand
The parameter can be passed multiple times.
Request Body:
application/json
version
Int

Expected version of the Quote to 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 QuoteUpdateAction

Update actions to be performed on the Quote.

Response:
200Quoteasapplication/json
Request Example:cURL
curl https://api.{region}.commercetools.com/{projectKey}/quotes/key={key} -i \
--header 'Authorization: Bearer ${BEARER_TOKEN}' \
--header 'Content-Type: application/json' \
--data-binary @- << DATA
{
"version" : 1,
"actions" : [ {
"action" : "changeQuoteState",
"quoteState" : "Accepted"
} ]
}
DATA
200 Response Example: Quotejson
{
"id": "2a3baa00-44fa-4ab8-bec7-933c31e18dcc",
"version": 5,
"createdAt": "2015-09-22T15:36:17.510Z",
"lastModifiedAt": "2015-09-22T15:41:55.816Z",
"quoteState": "Accepted",
"quoteRequest": {
"typeId": "quote-request",
"id": "8a3faa00-33fa-4ab8-bee7-833f31e18dcc"
},
"stagedQuote": {
"typeId": "staged-quote",
"id": "8a3baa00-44fa-4ab8-bec7-933c31e18dcc"
},
"customer": {
"typeId": "customer",
"id": "92f5a867-bf19-47ab-982c-6720a03a3921"
},
"businessUnit": {
"key": "bu-345-france",
"typeId": "business-unit"
},
"lineItems": [
{
"id": "b925a817-d5ad-48bb-a407-29ad8e0649b5",
"productId": "9f10dcfb-5cc9-4a18-843a-c07f7e22d01f",
"name": {
"en": "SAPPHIRE"
},
"productType": {
"typeId": "product-type",
"id": "2543e1d8-4915-4f72-a3c9-1df9b1b0082d",
"version": 8
},
"productSlug": {
"en": "sapphire1421832124423"
},
"variant": {
"id": 1,
"sku": "sku_SAPPHIRE_variant1_1421832124423",
"prices": [
{
"value": {
"type": "centPrecision",
"fractionDigits": 2,
"currencyCode": "EUR",
"centAmount": 2800
},
"id": "8da659ef-9e54-447d-9c36-84912db1848f"
}
],
"images": [
{
"url": "https://www.commercetools.com/cli/data/252542005_1.jpg",
"dimensions": {
"w": 1400,
"h": 1400
}
}
],
"attributes": [],
"assets": []
},
"price": {
"value": {
"type": "centPrecision",
"fractionDigits": 2,
"currencyCode": "EUR",
"centAmount": 2800
},
"id": "8da659ef-9e54-447d-9c36-84912db1848f"
},
"quantity": 2,
"discountedPricePerQuantity": [],
"state": [
{
"quantity": 2,
"state": {
"typeId": "state",
"id": "7c2e2694-aefe-43d7-888e-6a99514caaca"
}
}
],
"priceMode": "Platform",
"lineItemMode": "Standard",
"totalPrice": {
"type": "centPrecision",
"fractionDigits": 2,
"currencyCode": "EUR",
"centAmount": 5600
},
"perMethodTaxRate": [],
"taxedPricePortions": []
}
],
"totalPrice": {
"type": "centPrecision",
"fractionDigits": 2,
"currencyCode": "EUR",
"centAmount": 5600
},
"customLineItems": [],
"directDiscounts": [],
"inventoryMode": "None",
"taxMode": "Platform",
"taxRoundingMode": "HalfEven",
"taxCalculationMode": "LineItemLevel"
}

Update actions

Change Quote State

action
String
"changeQuoteState"
quoteState

New state to be set for the Quote.

Example: json
{
"action": "changeQuoteState",
"quoteState": "Accepted"
}

Request Quote Renegotiation

Represents the Buyer requesting renegotiation for a Quote. Valid for Quotes in a Pending state.

action
String
"requestQuoteRenegotiation"
buyerComment
String

Message from the Buyer regarding the Quote renegotiation request.

Example: json
{
"action": "requestQuoteRenegotiation",
"buyerComment": "Please also give me a 10% discount on the red T-shirts."
}

Set Custom Type

action
String
"setCustomType"

Defines the Type that extends the Quote with Custom Fields. If absent, any existing Type and Custom Fields are removed from the Quote.

fields

Sets the Custom Fields fields for the Quote.

Example: json
{
"action": "setCustomType",
"type": {
"id": "{{type-id}}",
"typeId": "type"
},
"fields": {
"exampleStringTypeField": "TextString"
}
}

Set CustomField

action
String
"setCustomField"
name
String

Name of the Custom Field.

value

If value is absent or null, this field will be removed if it exists. Removing a field that does not exist returns an InvalidOperation error. If value is provided, it is set for the field defined by name.

Example: json
{
"action": "setCustomField",
"name": "ExampleStringTypeField",
"value": "TextString"
}

Transition State

If the existing State has set transitions, there must be a direct transition to the new State. If transitions is not set, no validation is performed. This update action produces the Quote State Transition Message.

action
String
"transitionState"

Value to set. If there is no State yet, this must be an initial State.

force
Boolean

Switch validations on or off.

Default: false
Example: json
{
"action": "transitionState",
"state": {
"typeId": "state",
"id": "{{state-id}}"
}
}

Change Customer

Changes the owner of a Quote to a different Customer. Customer Group is not updated. This update action produces the Quote Customer Changed Message.

action
String
"changeCustomer"

New Customer to own the Quote.

Example: json
{
"action": "changeCustomer",
"customer": {
"typeId": "customer",
"id": "43ddac22-3daa-4689-8975-9f80750ea2e7"
}
}

Delete Quote

Delete Quote by ID

DELETE
https://api.{region}.commercetools.com/{projectKey}/quotes/{id}
OAuth 2.0 Scopes:
manage_quotes:{projectKey}
Path parameters:
region
String

Region in which the Project is hosted.

projectKey
String

key of the Project.

id
String

id of the Quote.

Query parameters:
version
Int

Last seen version of the resource.

expand
The parameter can be passed multiple times.
dataErasure
Boolean

Defaults to false. Set to true if you want to erase all related personal data in compliance with GDPR.

Response:
200Quoteasapplication/json
Request Example:cURL
curl -X DELETE https://api.{region}.commercetools.com/{projectKey}/quotes/{id}?version={version} -i \
--header 'Authorization: Bearer ${BEARER_TOKEN}'
200 Response Example: Quotejson
{
"id": "2a3baa00-44fa-4ab8-bec7-933c31e18dcc",
"version": 5,
"createdAt": "2015-09-22T15:36:17.510Z",
"lastModifiedAt": "2015-09-22T15:41:55.816Z",
"quoteState": "Accepted",
"quoteRequest": {
"typeId": "quote-request",
"id": "8a3faa00-33fa-4ab8-bee7-833f31e18dcc"
},
"stagedQuote": {
"typeId": "staged-quote",
"id": "8a3baa00-44fa-4ab8-bec7-933c31e18dcc"
},
"customer": {
"typeId": "customer",
"id": "92f5a867-bf19-47ab-982c-6720a03a3921"
},
"businessUnit": {
"key": "bu-345-france",
"typeId": "business-unit"
},
"lineItems": [
{
"id": "b925a817-d5ad-48bb-a407-29ad8e0649b5",
"productId": "9f10dcfb-5cc9-4a18-843a-c07f7e22d01f",
"name": {
"en": "SAPPHIRE"
},
"productType": {
"typeId": "product-type",
"id": "2543e1d8-4915-4f72-a3c9-1df9b1b0082d",
"version": 8
},
"productSlug": {
"en": "sapphire1421832124423"
},
"variant": {
"id": 1,
"sku": "sku_SAPPHIRE_variant1_1421832124423",
"prices": [
{
"value": {
"type": "centPrecision",
"fractionDigits": 2,
"currencyCode": "EUR",
"centAmount": 2800
},
"id": "8da659ef-9e54-447d-9c36-84912db1848f"
}
],
"images": [
{
"url": "https://www.commercetools.com/cli/data/252542005_1.jpg",
"dimensions": {
"w": 1400,
"h": 1400
}
}
],
"attributes": [],
"assets": []
},
"price": {
"value": {
"type": "centPrecision",
"fractionDigits": 2,
"currencyCode": "EUR",
"centAmount": 2800
},
"id": "8da659ef-9e54-447d-9c36-84912db1848f"
},
"quantity": 2,
"discountedPricePerQuantity": [],
"state": [
{
"quantity": 2,
"state": {
"typeId": "state",
"id": "7c2e2694-aefe-43d7-888e-6a99514caaca"
}
}
],
"priceMode": "Platform",
"lineItemMode": "Standard",
"totalPrice": {
"type": "centPrecision",
"fractionDigits": 2,
"currencyCode": "EUR",
"centAmount": 5600
},
"perMethodTaxRate": [],
"taxedPricePortions": []
}
],
"totalPrice": {
"type": "centPrecision",
"fractionDigits": 2,
"currencyCode": "EUR",
"centAmount": 5600
},
"customLineItems": [],
"directDiscounts": [],
"inventoryMode": "None",
"taxMode": "Platform",
"taxRoundingMode": "HalfEven",
"taxCalculationMode": "LineItemLevel"
}

Delete Quote by Key

DELETE
https://api.{region}.commercetools.com/{projectKey}/quotes/key={key}
OAuth 2.0 Scopes:
manage_quotes:{projectKey}
Path parameters:
region
String

Region in which the Project is hosted.

projectKey
String

key of the Project.

key
String

key of the Quote.

Query parameters:
version
Int

Last seen version of the resource.

expand
The parameter can be passed multiple times.
dataErasure
Boolean

Defaults to false. Set to true if you want to erase all related personal data in compliance with GDPR.

Response:
200Quoteasapplication/json
Request Example:cURL
curl -X DELETE https://api.{region}.commercetools.com/{projectKey}/quotes/key={key}?version={version} -i \
--header 'Authorization: Bearer ${BEARER_TOKEN}'
200 Response Example: Quotejson
{
"id": "2a3baa00-44fa-4ab8-bec7-933c31e18dcc",
"version": 5,
"createdAt": "2015-09-22T15:36:17.510Z",
"lastModifiedAt": "2015-09-22T15:41:55.816Z",
"quoteState": "Accepted",
"quoteRequest": {
"typeId": "quote-request",
"id": "8a3faa00-33fa-4ab8-bee7-833f31e18dcc"
},
"stagedQuote": {
"typeId": "staged-quote",
"id": "8a3baa00-44fa-4ab8-bec7-933c31e18dcc"
},
"customer": {
"typeId": "customer",
"id": "92f5a867-bf19-47ab-982c-6720a03a3921"
},
"businessUnit": {
"key": "bu-345-france",
"typeId": "business-unit"
},
"lineItems": [
{
"id": "b925a817-d5ad-48bb-a407-29ad8e0649b5",
"productId": "9f10dcfb-5cc9-4a18-843a-c07f7e22d01f",
"name": {
"en": "SAPPHIRE"
},
"productType": {
"typeId": "product-type",
"id": "2543e1d8-4915-4f72-a3c9-1df9b1b0082d",
"version": 8
},
"productSlug": {
"en": "sapphire1421832124423"
},
"variant": {
"id": 1,
"sku": "sku_SAPPHIRE_variant1_1421832124423",
"prices": [
{
"value": {
"type": "centPrecision",
"fractionDigits": 2,
"currencyCode": "EUR",
"centAmount": 2800
},
"id": "8da659ef-9e54-447d-9c36-84912db1848f"
}
],
"images": [
{
"url": "https://www.commercetools.com/cli/data/252542005_1.jpg",
"dimensions": {
"w": 1400,
"h": 1400
}
}
],
"attributes": [],
"assets": []
},
"price": {
"value": {
"type": "centPrecision",
"fractionDigits": 2,
"currencyCode": "EUR",
"centAmount": 2800
},
"id": "8da659ef-9e54-447d-9c36-84912db1848f"
},
"quantity": 2,
"discountedPricePerQuantity": [],
"state": [
{
"quantity": 2,
"state": {
"typeId": "state",
"id": "7c2e2694-aefe-43d7-888e-6a99514caaca"
}
}
],
"priceMode": "Platform",
"lineItemMode": "Standard",
"totalPrice": {
"type": "centPrecision",
"fractionDigits": 2,
"currencyCode": "EUR",
"centAmount": 5600
},
"perMethodTaxRate": [],
"taxedPricePortions": []
}
],
"totalPrice": {
"type": "centPrecision",
"fractionDigits": 2,
"currencyCode": "EUR",
"centAmount": 5600
},
"customLineItems": [],
"directDiscounts": [],
"inventoryMode": "None",
"taxMode": "Platform",
"taxRoundingMode": "HalfEven",
"taxCalculationMode": "LineItemLevel"
}