Skip to main content
POST
/
api
/
billing
/
coworkerextraservices
{
  "Status": 123,
  "Message": "<string>",
  "Value": "<any>",
  "WasSuccessful": true,
  "Errors": [
    {
      "AttemptedValue": "<any>",
      "Message": "<string>",
      "PropertyName": "<string>"
    }
  ]
}
A CoworkerExtraService records a charge or credit assigned to a customer. It covers three use cases:
  • Booking charges — charges associated with bookings (e.g., meeting room usage fees). These are linked to a specific booking via BookingId and track the resource, time range, and price.
  • Time credit — booking time allowances for specific resource types. Customers can spend these credits when booking resources of the matching type. The unit of credit depends on the ChargePeriod of the linked extra service (minutes, days, uses, etc.). TotalUses and RemainingUses track the allowance.
  • Printing credit — credits for printing integrations such as PaperCut or Ezeep. The linked extra service has IsPrintingCredit = true. TotalUses and RemainingUses track the number of print jobs or pages available.
Records can be created manually or added automatically from a plan (tariff). When IsFromTariff is true, the record was provisioned by a customer’s contract (CoworkerContract) and is linked via CoworkerContractUniqueId.

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

Request Body

Required Fields

CoworkerId
integer
required
Coworker Id.
BusinessId
integer
required
Business Id.
ExtraServiceId
integer
required
Extra Service Id.
TotalUses
integer
required
Total credit originally allocated (time or printing). Unit depends on the ChargePeriod of the linked extra service.

Optional Fields

Notes
string
Internal notes.
Free
boolean
Whether this charge or credit is free (no cost to the customer).
Price
number
Price charged for this extra service.
ValidFrom
string
Date from which this credit becomes usable.
ExpireDate
string
Date when this credit expires and can no longer be used.
DueDate
string
Payment due date for the charge.
PurchaseOrder
string
Purchase order.
ChargePeriod
integer
Unit of measurement for time credit (Minutes, Days, Weeks, Months, Uses, FourWeekMonths). Defaults to eChargePeriod.Minutes. See eChargePeriod enum above.
InvoiceThisCoworker
boolean
Invoice the customer directly instead of the team or company paying member.
BookingId
integer
ID of the booking that generated this charge.
BookingFromTime
string
Start time of the booking that generated this charge.
BookingToTime
string
End time of the booking that generated this charge.
BookingResourceName
string
Name of the resource booked (e.g., meeting room name).
CoworkerContractUniqueId
string
Links this credit back to the customer contract that provisioned it.

Code Examples

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