Skip to content

Create Quote

Required scope: quote:create

Creates a concept quote. Each product may appear only once. pricingCountry selects the applicable catalog prices and derives the quote currency. currency remains accepted for compatibility as a three-letter assertion, but it cannot select or override currency; a value that conflicts with the country-derived currency is rejected with invalid_argument. Quantities must be positive, and unitPriceCents can override the selected product price when supplied.

When pricingCountry is omitted, pricing uses the customer’s main_location country, falling back to the workspace default pricing country. Legacy clients may therefore omit both pricingCountry and currency. The resolved country and currency are frozen on the quote and returned by quote and order methods.

Each item’s priceType accepts one of PUBLIC_PRICE_TYPE_ONCE, PUBLIC_PRICE_TYPE_MONTHLY, or PUBLIC_PRICE_TYPE_YEARLY, selecting the one-time, monthly, or yearly catalog price for that product.

Generated Reference
POST /public-api/publicapi.v1.Quote/CreateQuote

Creates a concept quote with product quantities and optional discounts. This operation is not idempotent and must not be blindly retried.

Request CreateQuoteRequest
Response CreateQuoteResponse

CreateQuoteRequest

Field Type
customer_id string
currency optional string
items repeated QuoteItemInput
discount_ids repeated string
proposition_version_id optional string
pricing_country optional string

CreateQuoteResponse

Field Type
quote Quote
{
"customerId": "<customer-id>",
"pricingCountry": "US",
"currency": "USD",
"items": [
{
"productId": "<product-id>",
"quantity": 8,
"priceType": "PUBLIC_PRICE_TYPE_ONCE"
}
],
"discountIds": ["<discount-id>"]
}

Legacy/default-resolution request:

{
"customerId": "<customer-id>",
"items": [
{
"productId": "<product-id>",
"quantity": 8,
"priceType": "PUBLIC_PRICE_TYPE_ONCE"
}
]
}

The response quote starts with PUBLIC_QUOTE_STATUS_CONCEPT and includes a version; pass the current version to ConfirmQuote.

This operation is not idempotent. Do not blindly retry after a timeout. First call ListQuotes for the customer to determine whether creation completed.