Skip to main content
POST
Create ProposalProduct
A ProposalProduct is one extra item quoted alongside the plan in a proposal: an add-on product, a plan component, or a refundable deposit. IsDeposit and IsContractProduct decide what happens on acceptance - a deposit attaches to the first contract and switches on its sign-up fee, a contract product attaches to every contract in the proposal, and anything else becomes a standalone product on the customer’s account.

Authentication

This endpoint requires OAuth2 authentication. Include a valid bearer token in the Authorization header. The authenticated user must be a full unrestricted administrator or have the ProposalProduct-Create role.

Enums

Request Body

Required Fields

integer
required
ID of the proposal this line belongs to; required, and the proposal’s issuing location owns this record..
integer
required
ID of the product quoted on this line; required, and it must belong to a location the user can access..
integer
required
Number of units of the product quoted, at least 1; it multiplies the unit price in every proposal total..
integer
required
Recurrence interval used when RegularCharge is true: PricePlan follows the contract’s own billing cycle, Day, Week, Month and Year repeat every RepeatUnit of that period, and LastDayOfMonth charges on the final day of each month.. Defaults to eRecurrentChargePattern.PricePlan.

Optional Fields

number
Optional per-unit price override in the location’s currency; when empty the product’s own price is used..
boolean
Whether this line is a refundable deposit. On acceptance a deposit is attached to the first contract only and switches on that contract’s sign-up fee, and it counts towards the one-off sign-up total rather than the recurring total..
boolean
Whether this line is attached to the contracts rather than sold on its own. On acceptance a contract product is added to every contract in the proposal; when this and IsDeposit are both false, the line becomes a standalone product on the customer’s account..
boolean
Whether the product recurs with the customer’s billing instead of being charged once; it also decides whether the line counts towards the proposal’s recurring total or its one-off sign-up total..
string
Optional UTC date from which this product starts being invoiced; a recurring line whose invoice date falls after a contract’s start date is left out of that contract’s totals..
string
Optional UTC date on which the recurrence begins; it is carried onto the customer product or contract product created on acceptance..
string
Optional UTC date after which the product stops recurring; a recurring line that has already ended is left out of the proposal totals..
integer
Number of RepeatCycle periods between charges; 3 with a Month cycle bills quarterly. Acceptance falls back to 1 when it is empty..
boolean
Whether the product’s first charge is prorated for a partial billing period..
string
Free-text note carried onto the product created for the customer when the proposal is accepted..

Code Examples

Response

200

integer
HTTP status code. 200 on success.
string
A human-readable message confirming the creation.
object
Contains the Id of the newly created record.
boolean
true if the proposalproduct was created successfully.
array
null on success.
Example Response

400

string
A summary of the validation error(s), in the format PropertyName: error message.
any
null on validation failure.
object[]
Array of validation errors.
boolean
false when the request fails validation.
Example Response