Skip to main content
POST
/
api
/
billing
/
contractdeposits
{
  "Status": 123,
  "Message": "<string>",
  "Value": "<any>",
  "WasSuccessful": true,
  "Errors": [
    {
      "AttemptedValue": "<any>",
      "Message": "<string>",
      "PropertyName": "<string>"
    }
  ]
}
A ContractDeposit represents a security deposit or retainer associated with a plan contract (CoworkerContract). Each deposit is based on a Product and is charged to the member either on the first invoice generated for the contract, or on the next invoice for any contract that has IncludeSignupFee = true. ContractDeposits are created automatically when a contract is signed for a plan (Tariff) that includes one or more TariffSignupProducts. Each TariffSignupProduct on the plan becomes a corresponding ContractDeposit on the new contract. When Refundable = true, cancelling the parent contract automatically generates a credit note for the deposit amount. That credit note can then be applied — fully or partially — against any outstanding fees or damage charges raised via a separate invoice.

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

Request Body

Required Fields

CoworkerContractId
integer
required
Coworker Contract Id.
ProductId
integer
required
Product Id.

Optional Fields

Notes
string
Optional notes or internal comments about this deposit.
Price
number
Deposit amount to charge. When set, overrides the default price of the linked product.
Refundable
boolean
When true, cancelling the parent contract automatically generates a credit note for the deposit amount, which can be applied against outstanding fees or damages.

Code Examples

curl -X POST \
  "https://spaces.nexudus.com/api/billing/contractdeposits" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "CoworkerContractId": 0,
    "ProductId": 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 contractdeposit was created successfully.
Errors
array
null on success.
Example Response
{
  "Status": 200,
  "Message": "ContractDeposit 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
}