SBQQ__ContractedPrice__c records represent special negotiated prices for a specific account and product, applied automatically when that account's quotes are calculated.
Create a contracted price: POST /services/data/{apiVersion}/sobjects/SBQQ__ContractedPrice__c with fields including SBQQ__Account__c (lookup to Account), SBQQ__Product__c (lookup to Product2), SBQQ__Price__c (the negotiated unit price), and optionally SBQQ__StartDate__c and SBQQ__EndDate__c.
Query existing contracted prices for an account: GET /services/data/{apiVersion}/query?q=SELECT+Id,SBQQ__Product__c,SBQQ__Price__c+FROM+SBQQ__ContractedPrice__c+WHERE+SBQQ__Account__c='{accountId}'.
Update a contracted price: PATCH /services/data/{apiVersion}/sobjects/SBQQ__ContractedPrice__c/{id} with the updated price fields.
To deactivate a contracted price, either delete the record or set an end date in the past; CPQ will stop applying it to new quotes for that account.
Test by running a new quote for the account and product combination and verifying the contracted price is applied during QuoteCalculator execution.
Known gotchas
Contracted prices are account-specific and product-specific; a contracted price will not apply if the account lookup or product lookup does not match exactly.
Currency-enabled orgs may require an additional currency field on the contracted price record; verify against your org configuration.
CPQ applies contracted prices during calculation, not at quote creation time; if a contracted price is added after a quote is created, the quote must be recalculated to pick it up.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp