POST
https://api.nue.io/cpq/quotes:finalize
Converts one or more accepted quotes into orders — the quote-to-revenue step.
Two modes. With activateOrders false or omitted the quote becomes a Draft order and nothing is provisioned; a Draft order can still be corrected. With activateOrders true the order is also activated, which generates subscriptions, assets and entitlements by product category.
Key behaviors:
- At most 50 quote ids per call. The batch is atomic: one unknown id finalizes nothing
- A repeated id is finalized once
- Activation is synchronous but provisioning is not — subscriptions appear shortly afterwards, so read them back rather than assuming they exist when the response returns
- Not idempotent. Finalizing a quote that already has an order is not blocked: on a normal tenant it creates a SECOND order, and on a quote-split tenant it activates the existing draft instead. Check for an existing order first
- On a quote-split tenant one quote can produce several orders
- A tenant may additionally require the quote be primary, or its status be exactly
Approved
Salesforce-integrated tenants only.
Apex equivalent: Ruby.GlobalQuoteService.generateOrders(List<Id> quoteIds, Boolean activateOrders).
acceptstringGenerated from available response content types
200The quotes were finalized into orders.
400<p>Invalid request — more than 50 ids, an empty list, an unresolved change-order line, or a tax-calculation error on the quote. Nothing was finalized.</p>
404One or more quotes were not found. Nothing was finalized.
500<p>Internal server error. The outcome is unknown — read the quote before retrying, or it may be finalized twice.</p>
curl --request POST \
--url https://api.nue.io/cpq/quotes:finalize \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--data '{
"quoteIds": []
}'