POST
https://api.nue.io/cpq/quotes:createFromTemplate
Creates a new quote on an opportunity from a template quote, copying the template's line items, applied line price tags and price tiers in a single call.
A template carries the SHAPE of a deal, never a locked price. The copied result is ALWAYS repriced against the new quote's OWN account, so a discount whose tier depends on the customer (headcount, volume, segment) re-resolves to the new customer's band rather than the template's. Expect the money to differ from the template whenever the two accounts resolve differently.
Key behaviors:
- The source must be flagged as a template quote. A non-template source is refused with 400 and nothing is created
- The new quote is Draft and never primary, and inherits the template's price book, subscription term and start date. There is no
priceBookId parameter: the copy rejects any quote whose price book differs from the template's
- The endpoint accepts no name, date or term overrides — follow with
POST /cpq/quotes/{quoteId}:update
- Header custom fields are NOT inherited from the template; a template supplies line items, not header values. Set them yourself on the follow-up update. Line-level custom fields DO copy
- Tax is recalculated for the new quote's own account and shipping jurisdiction. This is best effort and is not reported back: a tenant with taxation off, or a tax engine that rejects the address, still returns 200. Read the quote back if the tax figure matters
- Not idempotent — each call creates another quote
Use POST /cpq/quotes/{targetQuoteId}:copyFromTemplate when the target quote already exists, and POST /cpq/quotes/{quoteId}:clone to duplicate an ordinary, non-template quote.
Salesforce-integrated tenants only.
Apex equivalent: Ruby.GlobalQuoteService.createQuoteFromTemplate(String templateQuoteId, String opportunityId).
acceptstringGenerated from available response content types
200The quote was created from the template.
400<p>Invalid request, the source is not a template quote, or the template has no price book. Nothing was created.</p>
404The template quote was not found.
500<p>Internal server error. The outcome is unknown — check the opportunity for a new Draft quote before retrying.</p>
curl --request POST \
--url https://api.nue.io/cpq/quotes:createFromTemplate \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--data '{
"templateQuoteId": "",
"opportunityId": ""
}'