Skip to main content
POST
/
api
/
billing
/
proposalproducts
Create ProposalProduct
curl --request POST \
  --url https://spaces.nexudus.com/api/billing/proposalproducts \
  --header 'Authorization: Basic <encoded-value>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "ProposalId": 123,
  "ProductId": 123,
  "Quantity": 123,
  "RepeatCycle": 123
}
'
{
  "Status": 123,
  "Message": "<string>",
  "Value": "<any>",
  "WasSuccessful": true,
  "Errors": [
    {
      "AttemptedValue": "<any>",
      "Message": "<string>",
      "PropertyName": "<string>"
    }
  ]
}
A ProposalProduct links a product to a proposal, defining additional items or services included in the offer with their pricing and recurrence settings.

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

ValueName
1PricePlan
2Day
3Week
4Month
5Year
6LastDayOfMonth

Request Body

Required Fields

ProposalId
integer
required
ID of the proposal linked to this record.
ProductId
integer
required
ID of the product linked to this record.
Quantity
integer
required
Number of units.
RepeatCycle
integer
required
Repeat cycle pattern. Defaults to eRecurrentChargePattern.PricePlan.

Optional Fields

Price
number
Price override.
IsDeposit
boolean
Whether this is a deposit.
IsContractProduct
boolean
Whether this is a contract product.
RegularCharge
boolean
Whether this is a regular charge.
InvoiceOn
string
Invoice on date.
RepeatFrom
string
Repeat from date.
RepeatUntil
string
Repeat until date.
RepeatUnit
integer
Number of repeat units.
ApplyProRating
boolean
Apply pro-rating.
Notes
string
Optional notes or comments about this proposal product.

Code Examples

curl -X POST \
  "https://spaces.nexudus.com/api/billing/proposalproducts" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "ProposalId": 0,
    "ProductId": 0,
    "Quantity": 0,
    "RepeatCycle": 0
}'

Response

200

Status
integer
HTTP status code. 200 on success.
Message
string
A human-readable message confirming the creation.
Value
object
Contains the Id of the newly created record.
WasSuccessful
boolean
true if the proposalproduct was created successfully.
Errors
array
null on success.
Example Response
{
  "Status": 200,
  "Message": "ProposalProduct was successfully created.",
  "Value": {
    "Id": 87654321
  },
  "OpenInDialog": false,
  "OpenInWindow": false,
  "RedirectURL": null,
  "JavaScript": null,
  "UpdatedOn": "2025-01-15T10:30:00Z",
  "UpdatedBy": "admin@example.com",
  "Errors": null,
  "WasSuccessful": true
}

400

Message
string
A summary of the validation error(s), in the format PropertyName: error message.
Value
any
null on validation failure.
Errors
object[]
Array of validation errors.
WasSuccessful
boolean
false when the request fails validation.
Example Response
{
  "Message": "RepeatCycle: is a required field",
  "Value": null,
  "Errors": [
    {
      "AttemptedValue": null,
      "Message": "is a required field",
      "PropertyName": "RepeatCycle"
    }
  ],
  "WasSuccessful": false
}