Skip to main content
POST
/
api
/
billing
/
contractproducts
{
  "Status": 123,
  "Message": "<string>",
  "Value": "<any>",
  "WasSuccessful": true,
  "Errors": [
    {
      "AttemptedValue": "<any>",
      "Message": "<string>",
      "PropertyName": "<string>"
    }
  ]
}
A ContractProduct is a product added to a contract that is billed every time the contract is invoiced. Use ContractProduct to append product charges to a specific member’s billing cycle alongside the base plan. Price — If Price is not set, the price of the underlying product (ProductPrice) is used instead. Set Price to override the product’s default price for this specific contract line. Billing windowRepeatFrom and RepeatUntil control the date range during which the product is included on invoices. Outside that range the product is silently skipped. Leave both null to bill the product on every invoice. Pro-ratingApplyProRating distributes the charge proportionally across the billing period, but only takes effect when the linked location plan has prorating enabled (Tariff.ProrateDaysBefore > 0). If the plan does not have prorating configured, ApplyProRating is ignored.

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 ContractProduct-Create role.

Request Body

Required Fields

CoworkerContractId
integer
required
Contract to add this product to.
ProductId
integer
required
Product to bill on each contract invoice.
Quantity
integer
required
Quantity.

Optional Fields

Notes
string
Notes.
Price
number
Price override.
RepeatFrom
string
Repeat from date.
RepeatUntil
string
Repeat until date.
ApplyProRating
boolean
Apply pro-rating to this product charge. Only takes effect when the location plan has prorating enabled (Tariff.ProrateDaysBefore > 0)..

Code Examples

curl -X POST \
  "https://spaces.nexudus.com/api/billing/contractproducts" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "CoworkerContractId": 0,
    "ProductId": 0,
    "Quantity": 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 contractproduct was created successfully.
Errors
array
null on success.
Example Response
{
  "Status": 200,
  "Message": "ContractProduct 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": "Name: is a required field",
  "Value": null,
  "Errors": [
    {
      "AttemptedValue": null,
      "Message": "is a required field",
      "PropertyName": "Name"
    }
  ],
  "WasSuccessful": false
}