> ## Documentation Index
> Fetch the complete documentation index at: https://learn.nexudus.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Update Tariff

> Update an existing Tariff record.

Updates an existing Tariff record. You must include the `Id` of the record to update along with all required fields.

## Authentication

<Note>
  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 **`Tariff-Edit`** role.
</Note>

## Enums

<Accordion title="eTariffType — SystemTariffType values">
  | Value | Name                  |
  | ----- | --------------------- |
  | 1     | FullTimePrivateOffice |
  | 2     | PartTimePrivateOffice |
  | 3     | FullTimeDedicatedDesk |
  | 4     | PartTimeDedicatedDesk |
  | 5     | FullTimeHotDesk       |
  | 6     | PartTimeHotDesk       |
  | 7     | FullTimeOther         |
  | 8     | PartTimeOther         |
  | 9     | Storage               |
  | 10    | VirtualOffice         |
  | 11    | Virtual               |
  | 99    | Other                 |
</Accordion>

<Accordion title="eTariffBookingDueDateStrategy — BookingDueDateStrategy values">
  | Value | Name                |
  | ----- | ------------------- |
  | 1     | RenewalDate         |
  | 2     | BookingEndDate      |
  | 3     | BookingCreationDate |
  | 4     | NextNthOfMonth      |
</Accordion>

<Accordion title="eIdentityCheckProvider — AddressIdentityCheckProvider values">
  | Value | Name           |
  | ----- | -------------- |
  | 1     | Manual         |
  | 2     | StripeIdentity |
</Accordion>

<Accordion title="eIdentityCheckRepeatPattern — AddressIdentityCheckRepeatPattern values">
  | Value | Name          |
  | ----- | ------------- |
  | 1     | Never         |
  | 2     | Every3Months  |
  | 3     | Every6Months  |
  | 4     | Every12Months |
  | 5     | Every24Months |
</Accordion>

<Accordion title="eDeliveryHandlingPreference">
  | Value | Name                       |
  | ----- | -------------------------- |
  | 1     | StoreForCollection         |
  | 2     | Forward                    |
  | 3     | OpenScanForward            |
  | 4     | OpenScanRecycle            |
  | 5     | OpenScanShred              |
  | 6     | OpenScanStoreForCollection |
  | 7     | Recycle                    |
  | 8     | ReturnToSender             |
  | 9     | Shred                      |
  | 10    | DepositCheck               |
  | 11    | Unknown                    |
</Accordion>

## Request Body

### Required Fields

<ParamField body="Id" type="integer" required>
  The Id of the Tariff record to update.
</ParamField>

<ParamField body="BusinessId" type="integer" required>
  ID of the business linked to this record.
</ParamField>

<ParamField body="Name" type="string" required>
  Plan name.
</ParamField>

<ParamField body="SystemTariffType" type="integer" required>
  Category of the plan: FullTimePrivateOffice, PartTimePrivateOffice, FullTimeDedicatedDesk, PartTimeDedicatedDesk, FullTimeHotDesk, PartTimeHotDesk, FullTimeOther, PartTimeOther, Storage, VirtualOffice, Virtual, or Other.
</ParamField>

<ParamField body="Price" type="number" required>
  Recurring price charged per billing cycle.
</ParamField>

<ParamField body="CurrencyId" type="integer" required>
  ID of the currency linked to this record.
</ParamField>

<ParamField body="CancellationPeriod" type="integer" required>
  Number of days' notice required before a contract can be cancelled.
</ParamField>

<ParamField body="DisplayOrder" type="integer" required>
  Display order on the members portal (lower numbers appear first).
</ParamField>

<ParamField body="InvoiceEvery" type="integer" required>
  Billing cycle length in months. Set to 0 if billing by weeks instead.
</ParamField>

<ParamField body="InvoiceEveryWeeks" type="integer" required>
  Billing cycle length in weeks. Set to 0 if billing by months instead.
</ParamField>

<ParamField body="BookingDueDateStrategy" type="integer" required>
  Strategy for determining when booking charges are due: RenewalDate, BookingEndDate, BookingCreationDate, or NextNthOfMonth.
</ParamField>

<ParamField body="AddressIdentityCheckProvider" type="integer" required>
  Provider used for address identity checks: Manual or StripeIdentity.
</ParamField>

<ParamField body="AddressIdentityCheckRepeatPattern" type="integer" required>
  How often to repeat the address identity check: Never, Every3Months, Every6Months, Every12Months, or Every24Months.
</ParamField>

<ParamField body="IdentityCheckProvider" type="integer" required>
  Provider used for identity checks: Manual or StripeIdentity.
</ParamField>

<ParamField body="IdentityCheckRepeatPattern" type="integer" required>
  How often to repeat the identity check: Never, Every3Months, Every6Months, Every12Months, or Every24Months.
</ParamField>

<ParamField body="DeliveryPreferencesMail" type="integer" required>
  Allowed handling preferences for mail deliveries (virtual office).
</ParamField>

<ParamField body="DeliveryPreferencesParcels" type="integer" required>
  Allowed handling preferences for parcel deliveries (virtual office).
</ParamField>

<ParamField body="DeliveryPreferencesChecks" type="integer" required>
  Allowed handling preferences for check deliveries (virtual office).
</ParamField>

<ParamField body="DeliveryPreferencesPublicity" type="integer" required>
  Allowed handling preferences for publicity deliveries (virtual office).
</ParamField>

<ParamField body="DeliveryPreferencesOther" type="integer" required>
  Allowed handling preferences for other deliveries (virtual office).
</ParamField>

### Optional Fields

<ParamField body="DefaultInvoicingDay" type="integer">
  Day of the month on which invoices are generated for members on this plan.
</ParamField>

<ParamField body="Visible" type="boolean">
  Whether the plan is visible to customers on the members portal and mobile app.
</ParamField>

<ParamField body="AvailableToAi" type="boolean">
  Whether this plan is available to any AI channels (Email, Chat or WhatsApp) for recommendations for private offices;.
</ParamField>

<ParamField body="NotesForAi" type="string">
  Custom notes provided to the AI assistant when describing this plan.
</ParamField>

<ParamField body="ShowPriceForAi" type="boolean">
  Whether to show the plan price to the AI assistant.
</ParamField>

<ParamField body="PriceForAi" type="number">
  Custom price shown to the AI assistant instead of the actual price.
</ParamField>

<ParamField body="UseTimePasses" type="boolean">
  Whether this plan uses time passes for check-in access.
</ParamField>

<ParamField body="Description" type="string">
  Plan description shown to customers.
</ParamField>

<ParamField body="InvoiceLineDisplayAs" type="string">
  Custom text shown on the invoice line instead of the plan name.
</ParamField>

<ParamField body="SignUpFee" type="number">
  One-off fee charged when a customer first signs up to this plan.
</ParamField>

<ParamField body="TaxRateId" type="integer">
  Standard tax rate applied to charges on this plan.
</ParamField>

<ParamField body="ReducedTaxRateId" type="integer">
  Reduced tax rate applied when applicable.
</ParamField>

<ParamField body="ExemptTaxRateId" type="integer">
  Tax-exempt rate applied when applicable.
</ParamField>

<ParamField body="FinancialAccountId" type="integer">
  Financial account used for revenue tracking.
</ParamField>

<ParamField body="TermsAndConditions" type="string">
  Terms and conditions text that members must accept when signing up.
</ParamField>

<ParamField body="NewContractDocumentUrl" type="string">
  URL to upload a new contract document template.
</ParamField>

<ParamField body="ClearContractDocumentFile" type="boolean">
  Set to true to remove the uploaded contract document file.
</ParamField>

<ParamField body="GroupName" type="string">
  Group name used to visually group plans together on the members portal.
</ParamField>

<ParamField body="DisablePortalCancellations" type="boolean">
  Prevents members from cancelling this plan through the members portal.
</ParamField>

<ParamField body="SubscribersLimit" type="integer">
  Maximum number of members that can be signed up to this plan at any time.
</ParamField>

<ParamField body="CancellationLimitDays" type="integer">
  Minimum number of days a contract must be active before it can be cancelled.
</ParamField>

<ParamField body="DefaultContractTerm" type="integer">
  Default minimum contract term in months for new sign-ups.
</ParamField>

<ParamField body="CancelMemeberAccountAfter" type="integer">
  Number of days after contract cancellation before the member account is deactivated.
</ParamField>

<ParamField body="CheckinPricePlanLimit" type="integer">
  Maximum number of check-ins included per billing cycle.
</ParamField>

<ParamField body="CheckinMonthLimit" type="integer">
  Maximum number of check-ins allowed per month.
</ParamField>

<ParamField body="CheckinWeekLimit" type="integer">
  Maximum number of check-ins allowed per week.
</ParamField>

<ParamField body="VisitorMonthLimit" type="integer">
  Maximum number of visitor passes allowed per month.
</ParamField>

<ParamField body="VisitorWeekLimit" type="integer">
  Maximum number of visitor passes allowed per week.
</ParamField>

<ParamField body="VisitorDayLimit" type="integer">
  Maximum number of visitor passes allowed per day.
</ParamField>

<ParamField body="HoursPricePlanLimit" type="integer">
  Maximum number of hours included per billing cycle.
</ParamField>

<ParamField body="HoursMonthLimit" type="integer">
  Maximum number of hours allowed per month.
</ParamField>

<ParamField body="HoursWeekLimit" type="integer">
  Maximum number of hours allowed per week.
</ParamField>

<ParamField body="BookingMinuteWeekLimit" type="integer">
  Maximum booking minutes allowed per week.
</ParamField>

<ParamField body="BookingMinuteMonthLimit" type="integer">
  Maximum booking minutes allowed per month.
</ParamField>

<ParamField body="DiscountExtraServices" type="number">
  Discount percentage for extra services.
</ParamField>

<ParamField body="DiscountTimePasses" type="number">
  Discount percentage for time passes.
</ParamField>

<ParamField body="DiscountCharges" type="number">
  Discount percentage for charges.
</ParamField>

<ParamField body="AutoCancelAfter" type="integer">
  Number of days after which the contract is automatically cancelled if not paid.
</ParamField>

<ParamField body="AdvanceInvoiceCycles" type="integer">
  Number of billing cycles to invoice in advance.
</ParamField>

<ParamField body="ProrateDayOfMonth" type="integer">
  Day of the month used to align billing cycles when prorating.
</ParamField>

<ParamField body="ProrateDaysBefore" type="integer">
  Number of days before the prorate day to start prorating.
</ParamField>

<ParamField body="ProrateCancellations" type="boolean">
  Whether to prorate the final invoice when a contract is cancelled mid-cycle.
</ParamField>

<ParamField body="ChargeAndExtend" type="integer">
  Number of days to extend a contract after payment is received.
</ParamField>

<ParamField body="ExcludeFromInvoice" type="boolean">
  Whether to exclude this plan's charges from member invoices.
</ParamField>

<ParamField body="AutoRaiseInvoices" type="boolean">
  Whether to automatically generate invoices at the end of each billing cycle.
</ParamField>

<ParamField body="RaiseInvoiceEvery" type="integer">
  Raise invoice every N months.
</ParamField>

<ParamField body="RaiseInvoiceEveryWeeks" type="integer">
  Raise invoice every N weeks.
</ParamField>

<ParamField body="MinimumPrice" type="number">
  Minimum total amount charged per billing cycle regardless of usage.
</ParamField>

<ParamField body="MinimumPriceIncludeTimePasses" type="boolean">
  Whether time pass charges count towards the minimum price.
</ParamField>

<ParamField body="MinimumPriceIncludeExtraServices" type="boolean">
  Whether extra service charges count towards the minimum price.
</ParamField>

<ParamField body="MinimumPriceIncludeEvents" type="boolean">
  Whether event charges count towards the minimum price.
</ParamField>

<ParamField body="Archived" type="boolean">
  Whether the plan is archived and no longer available for new sign-ups.
</ParamField>

<ParamField body="Starred" type="boolean">
  Whether the plan is starred (highlighted) on the members portal.
</ParamField>

<ParamField body="KeepNewAccountsOnHold" type="boolean">
  Whether new sign-ups are kept on hold until manually approved.
</ParamField>

<ParamField body="CanBePaused" type="boolean">
  Whether members can pause their contract on this plan.
</ParamField>

<ParamField body="PauseYearlyLimit" type="integer">
  Maximum number of times a contract can be paused per year.
</ParamField>

<ParamField body="PauseCyclesLimit" type="integer">
  Maximum number of billing cycles a contract can be paused for.
</ParamField>

<ParamField body="BookingDueDateDayOfMonth" type="integer">
  Day of the month used when BookingDueDateStrategy is NextNthOfMonth.
</ParamField>

<ParamField body="IsVirtualOffice" type="boolean">
  Whether this is a virtual office plan with mail handling features.
</ParamField>

<ParamField body="WaitForIdentityChecksToActivate" type="boolean">
  Whether to keep the contract on hold until all required identity checks are completed.
</ParamField>

<ParamField body="RequestAddressIdentityCheck" type="boolean">
  Whether to request an address identity check from members signing up to this plan.
</ParamField>

<ParamField body="AddressIdentityCheckDescription" type="string">
  Instructions shown to members when completing the address identity check.
</ParamField>

<ParamField body="KeepPausedIfAddressMismatch" type="boolean">
  Whether to keep the contract paused if the address identity check reveals a mismatch.
</ParamField>

<ParamField body="RequestIdentityCheck" type="boolean">
  Whether to request an identity (ID document) check from members signing up to this plan.
</ParamField>

<ParamField body="IdentityCheckDescription" type="string">
  Instructions shown to members when completing the identity check.
</ParamField>

<ParamField body="RequestAmlCheck" type="boolean">
  Whether to request an AML check from members signing up to this plan.
</ParamField>

<ParamField body="AmlCheckOpenSanctionsEnabled" type="boolean">
  Whether to enable AML checks against the OpenSanctions dataset.
</ParamField>

<ParamField body="AmlCheckPappersEnabled" type="boolean">
  Whether to enable AML checks against the Pappers dataset.
</ParamField>

<ParamField body="AmlCheckOpenSanctionsDataset" type="string">
  Which OpenSanctions dataset to check against for AML screening (e.g. 'default').
</ParamField>

<ParamField body="AmlCheckScoreThreshold" type="number">
  Score threshold for AML checks, between 0 and 1. Matches with a score above this threshold will be considered a positive match. Default is 0.7.
</ParamField>

<ParamField body="SendOnBoardingFormByEmail" type="boolean">
  Whether to email the onboarding form to new members signing up to this plan.
</ParamField>

<ParamField body="FormPageId" type="integer">
  ID of the onboarding form page sent to new members.
</ParamField>

<ParamField body="ProductsStore" type="integer[]">
  Product IDs for mail stored for collection (virtual office).
</ParamField>

<ParamField body="AddedProductsStore" type="integer[]">
  The added products store value for this tariff.
</ParamField>

<ParamField body="RemovedProductsStore" type="integer[]">
  The removed products store value for this tariff.
</ParamField>

<ParamField body="ProductsForward" type="integer[]">
  Product IDs for mail forwarding (virtual office).
</ParamField>

<ParamField body="AddedProductsForward" type="integer[]">
  The added products forward value for this tariff.
</ParamField>

<ParamField body="RemovedProductsForward" type="integer[]">
  The removed products forward value for this tariff.
</ParamField>

<ParamField body="ProductsRecycle" type="integer[]">
  Product IDs for mail recycling (virtual office).
</ParamField>

<ParamField body="AddedProductsRecycle" type="integer[]">
  The added products recycle value for this tariff.
</ParamField>

<ParamField body="RemovedProductsRecycle" type="integer[]">
  The removed products recycle value for this tariff.
</ParamField>

<ParamField body="ProductsShred" type="integer[]">
  Product IDs for mail shredding (virtual office).
</ParamField>

<ParamField body="AddedProductsShred" type="integer[]">
  The added products shred value for this tariff.
</ParamField>

<ParamField body="RemovedProductsShred" type="integer[]">
  The removed products shred value for this tariff.
</ParamField>

<ParamField body="ProductsScan" type="integer[]">
  Product IDs for mail scanning (virtual office).
</ParamField>

<ParamField body="AddedProductsScan" type="integer[]">
  The added products scan value for this tariff.
</ParamField>

<ParamField body="RemovedProductsScan" type="integer[]">
  The removed products scan value for this tariff.
</ParamField>

<ParamField body="ProductsReturn" type="integer[]">
  Product IDs for returning mail to sender (virtual office).
</ParamField>

<ParamField body="AddedProductsReturn" type="integer[]">
  The added products return value for this tariff.
</ParamField>

<ParamField body="RemovedProductsReturn" type="integer[]">
  The removed products return value for this tariff.
</ParamField>

<ParamField body="ProductsDeposit" type="integer[]">
  Product IDs for check deposits (virtual office).
</ParamField>

<ParamField body="AddedProductsDeposit" type="integer[]">
  The added products deposit value for this tariff.
</ParamField>

<ParamField body="RemovedProductsDeposit" type="integer[]">
  The removed products deposit value for this tariff.
</ParamField>

<ParamField body="ProductsCollect" type="integer[]">
  Product IDs for mail collection (virtual office).
</ParamField>

<ParamField body="AddedProductsCollect" type="integer[]">
  The added products collect value for this tariff.
</ParamField>

<ParamField body="RemovedProductsCollect" type="integer[]">
  The removed products collect value for this tariff.
</ParamField>

<ParamField body="MaximumDeliveryStorageDays" type="integer">
  Maximum number of days deliveries are stored before being returned (virtual office).
</ParamField>

<ParamField body="MaximumCompanyAliases" type="integer">
  Maximum number of company name aliases allowed for mail handling (virtual office).
</ParamField>

<ParamField body="MaximumRecipients" type="integer">
  Maximum number of mail recipients allowed (virtual office).
</ParamField>

<ParamField body="MaximumAddresses" type="integer">
  Maximum number of forwarding addresses allowed (virtual office).
</ParamField>

<ParamField body="TransferProductsToContract" type="boolean">
  Whether to automatically transfer mail handling products to the member's contract.
</ParamField>

## Code Examples

<CodeGroup>
  ```bash cURL theme={null}
  curl -X PUT \
    "https://spaces.nexudus.com/api/billing/tariffs" \
    -H "Authorization: Bearer YOUR_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{
      "BusinessId": 0,
      "Name": "",
      "SystemTariffType": 0,
      "Price": 0,
      "CurrencyId": 0,
      "CancellationPeriod": 0,
      "DisplayOrder": 0,
      "InvoiceEvery": 0,
      "InvoiceEveryWeeks": 0,
      "BookingDueDateStrategy": 0,
      "AddressIdentityCheckProvider": 0,
      "AddressIdentityCheckRepeatPattern": 0,
      "IdentityCheckProvider": 0,
      "IdentityCheckRepeatPattern": 0,
      "DeliveryPreferencesMail": 0,
      "DeliveryPreferencesParcels": 0,
      "DeliveryPreferencesChecks": 0,
      "DeliveryPreferencesPublicity": 0,
      "DeliveryPreferencesOther": 0,
      "Id": 87654321
  }'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    'https://spaces.nexudus.com/api/billing/tariffs',
    {
      method: 'PUT',
      headers: {
        'Authorization': 'Bearer YOUR_TOKEN',
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        BusinessId: 0,
        Name: '',
        SystemTariffType: 0,
        Price: 0,
        CurrencyId: 0,
        CancellationPeriod: 0,
        DisplayOrder: 0,
        InvoiceEvery: 0,
        InvoiceEveryWeeks: 0,
        BookingDueDateStrategy: 0,
        AddressIdentityCheckProvider: 0,
        AddressIdentityCheckRepeatPattern: 0,
        IdentityCheckProvider: 0,
        IdentityCheckRepeatPattern: 0,
        DeliveryPreferencesMail: 0,
        DeliveryPreferencesParcels: 0,
        DeliveryPreferencesChecks: 0,
        DeliveryPreferencesPublicity: 0,
        DeliveryPreferencesOther: 0,
        Id: 87654321
      })
    }
  );

  const data = await response.json();
  ```

  ```python Python theme={null}
  import requests

  response = requests.put(
      'https://spaces.nexudus.com/api/billing/tariffs',
      headers={
          'Authorization': 'Bearer YOUR_TOKEN',
          'Content-Type': 'application/json'
      },
      json={
          'BusinessId': 0,
          'Name': '',
          'SystemTariffType': 0,
          'Price': 0,
          'CurrencyId': 0,
          'CancellationPeriod': 0,
          'DisplayOrder': 0,
          'InvoiceEvery': 0,
          'InvoiceEveryWeeks': 0,
          'BookingDueDateStrategy': 0,
          'AddressIdentityCheckProvider': 0,
          'AddressIdentityCheckRepeatPattern': 0,
          'IdentityCheckProvider': 0,
          'IdentityCheckRepeatPattern': 0,
          'DeliveryPreferencesMail': 0,
          'DeliveryPreferencesParcels': 0,
          'DeliveryPreferencesChecks': 0,
          'DeliveryPreferencesPublicity': 0,
          'DeliveryPreferencesOther': 0,
          'Id': 87654321
      }
  )

  data = response.json()
  ```
</CodeGroup>

## Response

### 200

<ResponseField name="Status" type="integer">
  HTTP status code. `200` on success.
</ResponseField>

<ResponseField name="Message" type="string">
  A human-readable message confirming the update.
</ResponseField>

<ResponseField name="Value" type="object">
  Contains the `Id` of the updated record.
</ResponseField>

<ResponseField name="WasSuccessful" type="boolean">
  `true` if the tariff was updated successfully.
</ResponseField>

<ResponseField name="Errors" type="array">
  `null` on success.
</ResponseField>

```json Example Response theme={null}
{
  "Status": 200,
  "Message": "Tariff was successfully updated.",
  "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

<ResponseField name="Message" type="string">
  A summary of the validation error(s), in the format `PropertyName: error message`.
</ResponseField>

<ResponseField name="Value" type="any">
  `null` on validation failure.
</ResponseField>

<ResponseField name="Errors" type="object[]">
  Array of validation errors.

  <Expandable>
    <ResponseField name="AttemptedValue" type="any">
      The value that was submitted for the field, or `null` if missing.
    </ResponseField>

    <ResponseField name="Message" type="string">
      The validation error message.
    </ResponseField>

    <ResponseField name="PropertyName" type="string">
      The name of the property that failed validation.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="WasSuccessful" type="boolean">
  `false` when the request fails validation.
</ResponseField>

```json Example Response theme={null}
{
  "Message": "Name: is a required field",
  "Value": null,
  "Errors": [
    {
      "AttemptedValue": null,
      "Message": "is a required field",
      "PropertyName": "Name"
    }
  ],
  "WasSuccessful": false
}
```
