---
title: "Updates an agreement."
method: PUT
path: "/v2/billing/agreements/{id}"
tags: ["Billing"]
---

# Updates an agreement.

`PUT /v2/billing/agreements/{id}`

Updates an agreement with all his properties and products.

## Path parameters

- `id` integer, required

## Request body

- object — Representation of a ninja billing Agreement creation request.
  - `name` string, required — Agreement name.
  - `description` string — Agreement description.
  - `products` object[] — List of manual quantity type products.
    - `id` integer — ID of the agreement product.
    - `name` string, required — Name of the agreement product.
    - `description` string, required — Description of the agreement product.
    - `quantityType` 'MANUAL' | 'DEVICE_COUNTS' | 'TIME_ENTRIES' | 'END_USER_COUNTS' | 'BACKUP_STORAGE_COUNTS' | 'SOFTWARE_LICENSE', required — How the product quantity is calculated in billing.
    - `content` object — Product specific information needed to its calculations, structure varies by quantity type.
    - `integrationSettings` object — If 3rd party integration is enabled, the settings needed to export invoices with this product.
    - `productId` integer — Product ID of the catalog product, if assigned.
    - `order` integer — Order on which the product will be taken in account for invoicing.
    - `accountId` integer, required — Account ID assigned to the product to be mapped to a 3rd party integration product type.
    - `group` boolean, required — Whether the product can be billed as group.
    - `productUserRole` object, nullable — Representation of a ninja billing product user role request.
      - `allowAllTechnicians` boolean, required — Whether all technicians are allowed to access this product or specific roles will be specified.
      - `userRoles` integer[], required — Set of user role IDs that can access this product. Only used when allowAllTechnicians is false.
    - `taxId` integer — Tax ID assigned to the product. If null, the product will use the agreement's tax.
    - `inheritTaxFromAgreement` boolean — Whether this product inherits its tax configuration from the agreement.
  - `deviceCountsProducts` object[]
    - `id` integer — ID of the agreement product.
    - `name` string, required — Name of the agreement product.
    - `description` string, required — Description of the agreement product.
    - `quantityType` 'MANUAL' | 'DEVICE_COUNTS' | 'TIME_ENTRIES' | 'END_USER_COUNTS' | 'BACKUP_STORAGE_COUNTS' | 'SOFTWARE_LICENSE', required — How the product quantity is calculated in billing.
    - `content` object — Product specific information needed to its calculations, structure varies by quantity type.
    - `integrationSettings` object — If 3rd party integration is enabled, the settings needed to export invoices with this product.
    - `productId` integer — Product ID of the catalog product, if assigned.
    - `order` integer — Order on which the product will be taken in account for invoicing.
    - `accountId` integer, required — Account ID assigned to the product to be mapped to a 3rd party integration product type.
    - `group` boolean, required — Whether the product can be billed as group.
    - `productUserRole` object, nullable — Representation of a ninja billing product user role request.
      - `allowAllTechnicians` boolean, required — Whether all technicians are allowed to access this product or specific roles will be specified.
      - `userRoles` integer[], required — Set of user role IDs that can access this product. Only used when allowAllTechnicians is false.
    - `taxId` integer — Tax ID assigned to the product. If null, the product will use the agreement's tax.
    - `inheritTaxFromAgreement` boolean — Whether this product inherits its tax configuration from the agreement.
  - `softwareLicenseProducts` object[] — List of software license quantity type products.
    - `id` integer — ID of the agreement product.
    - `name` string, required — Name of the agreement product.
    - `description` string, required — Description of the agreement product.
    - `quantityType` 'MANUAL' | 'DEVICE_COUNTS' | 'TIME_ENTRIES' | 'END_USER_COUNTS' | 'BACKUP_STORAGE_COUNTS' | 'SOFTWARE_LICENSE', required — How the product quantity is calculated in billing.
    - `content` object — Product specific information needed to its calculations, structure varies by quantity type.
    - `integrationSettings` object — If 3rd party integration is enabled, the settings needed to export invoices with this product.
    - `productId` integer — Product ID of the catalog product, if assigned.
    - `order` integer — Order on which the product will be taken in account for invoicing.
    - `accountId` integer, required — Account ID assigned to the product to be mapped to a 3rd party integration product type.
    - `group` boolean, required — Whether the product can be billed as group.
    - `productUserRole` object, nullable — Representation of a ninja billing product user role request.
      - `allowAllTechnicians` boolean, required — Whether all technicians are allowed to access this product or specific roles will be specified.
      - `userRoles` integer[], required — Set of user role IDs that can access this product. Only used when allowAllTechnicians is false.
    - `taxId` integer — Tax ID assigned to the product. If null, the product will use the agreement's tax.
    - `inheritTaxFromAgreement` boolean — Whether this product inherits its tax configuration from the agreement.
  - `backupStorageCountsProducts` object[]
    - `id` integer — ID of the agreement product.
    - `name` string, required — Name of the agreement product.
    - `description` string, required — Description of the agreement product.
    - `quantityType` 'MANUAL' | 'DEVICE_COUNTS' | 'TIME_ENTRIES' | 'END_USER_COUNTS' | 'BACKUP_STORAGE_COUNTS' | 'SOFTWARE_LICENSE', required — How the product quantity is calculated in billing.
    - `content` object — Product specific information needed to its calculations, structure varies by quantity type.
    - `integrationSettings` object — If 3rd party integration is enabled, the settings needed to export invoices with this product.
    - `productId` integer — Product ID of the catalog product, if assigned.
    - `order` integer — Order on which the product will be taken in account for invoicing.
    - `accountId` integer, required — Account ID assigned to the product to be mapped to a 3rd party integration product type.
    - `group` boolean, required — Whether the product can be billed as group.
    - `productUserRole` object, nullable — Representation of a ninja billing product user role request.
      - `allowAllTechnicians` boolean, required — Whether all technicians are allowed to access this product or specific roles will be specified.
      - `userRoles` integer[], required — Set of user role IDs that can access this product. Only used when allowAllTechnicians is false.
    - `taxId` integer — Tax ID assigned to the product. If null, the product will use the agreement's tax.
    - `inheritTaxFromAgreement` boolean — Whether this product inherits its tax configuration from the agreement.
  - `timeEntriesProducts` object[]
    - `id` integer — ID of the agreement product.
    - `name` string, required — Name of the agreement product.
    - `description` string, required — Description of the agreement product.
    - `quantityType` 'MANUAL' | 'DEVICE_COUNTS' | 'TIME_ENTRIES' | 'END_USER_COUNTS' | 'BACKUP_STORAGE_COUNTS' | 'SOFTWARE_LICENSE', required — How the product quantity is calculated in billing.
    - `content` object — Product specific information needed to its calculations, structure varies by quantity type.
    - `integrationSettings` object — If 3rd party integration is enabled, the settings needed to export invoices with this product.
    - `productId` integer — Product ID of the catalog product, if assigned.
    - `order` integer — Order on which the product will be taken in account for invoicing.
    - `accountId` integer, required — Account ID assigned to the product to be mapped to a 3rd party integration product type.
    - `group` boolean, required — Whether the product can be billed as group.
    - `productUserRole` object, nullable — Representation of a ninja billing product user role request.
      - `allowAllTechnicians` boolean, required — Whether all technicians are allowed to access this product or specific roles will be specified.
      - `userRoles` integer[], required — Set of user role IDs that can access this product. Only used when allowAllTechnicians is false.
    - `taxId` integer — Tax ID assigned to the product. If null, the product will use the agreement's tax.
    - `inheritTaxFromAgreement` boolean — Whether this product inherits its tax configuration from the agreement.
  - `endUserCountsProducts` object[]
    - `id` integer — ID of the agreement product.
    - `name` string, required — Name of the agreement product.
    - `description` string, required — Description of the agreement product.
    - `quantityType` 'MANUAL' | 'DEVICE_COUNTS' | 'TIME_ENTRIES' | 'END_USER_COUNTS' | 'BACKUP_STORAGE_COUNTS' | 'SOFTWARE_LICENSE', required — How the product quantity is calculated in billing.
    - `content` object — Product specific information needed to its calculations, structure varies by quantity type.
    - `integrationSettings` object — If 3rd party integration is enabled, the settings needed to export invoices with this product.
    - `productId` integer — Product ID of the catalog product, if assigned.
    - `order` integer — Order on which the product will be taken in account for invoicing.
    - `accountId` integer, required — Account ID assigned to the product to be mapped to a 3rd party integration product type.
    - `group` boolean, required — Whether the product can be billed as group.
    - `productUserRole` object, nullable — Representation of a ninja billing product user role request.
      - `allowAllTechnicians` boolean, required — Whether all technicians are allowed to access this product or specific roles will be specified.
      - `userRoles` integer[], required — Set of user role IDs that can access this product. Only used when allowAllTechnicians is false.
    - `taxId` integer — Tax ID assigned to the product. If null, the product will use the agreement's tax.
    - `inheritTaxFromAgreement` boolean — Whether this product inherits its tax configuration from the agreement.
  - `content` object — Representation of a ninja billing Agreement content request.
    - `startDate` string, date, required — Effective start date of the agreement. Invoices will be generated from this date.
    - `endDate` string, date, required — Effective end date of the agreement. Invoices will not be generated from this date.
    - `businessHours` object — Days and time the work registered in tickets will be registered as off hours.
      - `twentyFourSeven` boolean
      - `days` object[]
        - `day` 'MONDAY' | 'TUESDAY' | 'WEDNESDAY' | 'THURSDAY' | 'FRIDAY' | 'SATURDAY' | 'SUNDAY'
        - `startHour` integer
        - `endHour` integer
        - `allDayClosed` boolean
    - `interval` 'ANNUAL' | 'SEMIANNUAL' | 'QUARTERLY' | 'MONTHLY' | 'BIMONTHLY' | 'BIWEEKLY' | 'WEEKLY' | 'ONE_TIME' — How frequent the automatic agreements will generate invoices.
    - `billDate` string — Date or day when the invoice will be generated, depending on the billing interval: - ANNUAL: Day of the year for the invoice to be generated, even if it is in the past will be updated to the next year eg. "2026-01-01" - QUARTERLY: Day of the month for the invoice to be generated each quarter eg. "23" - MONTHLY: Day of the month for the invoice to be generated eg. "5" - WEEKLY: Day of the week for the invoice to be generated eg. "WEDNESDAY" - ONE_TIME: Specific invoice date for the invoice to be generated eg. "2026-01-09"
  - `clientId` integer — ID of the organization owner of the agreement.
  - `invoiceGenerationType` 'AUTOMATIC' | 'MANUAL' — How the agreement invoices will be generated.
  - `multiMatchDevices` boolean — Match multiple devices when counting to generate invoices.
  - `multiMatchDeviceBackups` boolean — Match multiple backup devices when counting to generate invoices.
  - `multiMatchEndUsers` boolean, required — Match multiple end user devices when counting to generate invoices.
  - `billEmails` string[] — Primary recipient email addresses to export to 3rd party integration when invoicing.
  - `billCcEmails` string[] — Copy recipient email addresses to export to 3rd party integration when invoicing.
  - `billBccEmails` string[] — Hidden primary recipient email addresses to export to 3rd party integration when invoicing.
  - `businessHoursSource` 'CUSTOM' | 'TICKETING' — Where to pick business hours configuration, could be inherited from general configuration or custom.
  - `nextBillDate` string, date — When the next invoice will be automatically generated.
  - `nextBillingPeriodStartDate` string, date — When the next billing period will start to count for the next invoice.
  - `displayIncludedTimeOnInvoices` boolean, required — Show time entries that have been billed against an included amount of hours on invoices.
  - `dueDaysSource` 'CUSTOM' | 'INHERIT_FROM_CONFIGURATION' — Where the agreement will obtain the information about due days.
  - `dueDays` integer — How many days an invoice has to be payed after invoiced.
  - `ticketBillingSettings` object — Representation of a ninja billing ticket settings request.
    - `billTicketInAnyStatus` boolean, required — Whether a ticket can be billed in any status or under specific conditions.
    - `condition` object — Ticket state conditions under which a ticket will be invoiced.
      - `operator` 'in' | 'not_in' | 'parent_in' | 'parent_not_in', required — Operation to evaluate the ticket state.
      - `value` string, required — Allowed ticket states defined.
  - `autoApproveInvoice` boolean, required — Whether invoices generated from the agreement will be automatically approved when generated.
  - `autoCompleteInvoice` boolean, required — Whether invoices generated from the agreement will be automatically completed when approved.
  - `taxId` integer — ID of the tax to be applied to the agreement.
  - `quickBooks` object, nullable — Quickbooks integration agreement specific data.
    - `externalTax` object — Representation of a ninja billing External tax rate request.
      - `id` string, required — ID of the external tax rate assigned by the 3rd party integration.
      - `name` string, required — Name of the external tax rate assigned by the 3rd party integration.
    - `allowOnlineCreditCardPayments` boolean, required — Specifies if online credit card payments are allowed for this invoice and corresponds to the Credit card check box on the QuickBooks UI.
    - `allowOnlineAchPayments` boolean, required — Specifies if this invoice can be paid with online bank transfers and corresponds to the Bank transfer check box on the QuickBooks UI.
    - `externalTaxRequest` object — Representation of a ninja billing External tax rate request.
      - `id` string, required — ID of the external tax rate assigned by the 3rd party integration.
      - `name` string, required — Name of the external tax rate assigned by the 3rd party integration.
  - `xero` object, nullable — Xero integration agreement specific data.
    - `externalTax` object — Representation of a ninja billing External tax rate request.
      - `id` string, required — ID of the external tax rate assigned by the 3rd party integration.
      - `name` string, required — Name of the external tax rate assigned by the 3rd party integration.
    - `taxlessItemsExternalTax` object — Not billable products external integration tax rate.
      - `id` string, required
      - `name` string, required
    - `brandingTheme` object — Xero integration branding theme specific data.
      - `id` string, required
      - `name` string, required
    - `newInvoiceStatus` 'DRAFT' | 'SUBMITTED' | 'AUTHORISED' — Xero invoice status.
    - `externalTaxRequest` object — Representation of a ninja billing External tax rate request.
      - `id` string, required — ID of the external tax rate assigned by the 3rd party integration.
      - `name` string, required — Name of the external tax rate assigned by the 3rd party integration.
    - `taxlessItemsExternalTaxRequest` object — Not billable products external integration tax rate.
      - `id` string, required
      - `name` string, required
    - `brandingThemeRequest` object — Xero integration branding theme specific data.
      - `id` string, required
      - `name` string, required
  - `managedDeviceProducts` object[] — List of device count quantity type products.
    - `id` integer — ID of the agreement product.
    - `name` string, required — Name of the agreement product.
    - `description` string, required — Description of the agreement product.
    - `quantityType` 'MANUAL' | 'DEVICE_COUNTS' | 'TIME_ENTRIES' | 'END_USER_COUNTS' | 'BACKUP_STORAGE_COUNTS' | 'SOFTWARE_LICENSE', required — How the product quantity is calculated in billing.
    - `content` object — Product specific information needed to its calculations, structure varies by quantity type.
    - `integrationSettings` object — If 3rd party integration is enabled, the settings needed to export invoices with this product.
    - `productId` integer — Product ID of the catalog product, if assigned.
    - `order` integer — Order on which the product will be taken in account for invoicing.
    - `accountId` integer, required — Account ID assigned to the product to be mapped to a 3rd party integration product type.
    - `group` boolean, required — Whether the product can be billed as group.
    - `productUserRole` object, nullable — Representation of a ninja billing product user role request.
      - `allowAllTechnicians` boolean, required — Whether all technicians are allowed to access this product or specific roles will be specified.
      - `userRoles` integer[], required — Set of user role IDs that can access this product. Only used when allowAllTechnicians is false.
    - `taxId` integer — Tax ID assigned to the product. If null, the product will use the agreement's tax.
    - `inheritTaxFromAgreement` boolean — Whether this product inherits its tax configuration from the agreement.
  - `managedDeviceBackupProducts` object[] — List of backup storage count quantity type products.
    - `id` integer — ID of the agreement product.
    - `name` string, required — Name of the agreement product.
    - `description` string, required — Description of the agreement product.
    - `quantityType` 'MANUAL' | 'DEVICE_COUNTS' | 'TIME_ENTRIES' | 'END_USER_COUNTS' | 'BACKUP_STORAGE_COUNTS' | 'SOFTWARE_LICENSE', required — How the product quantity is calculated in billing.
    - `content` object — Product specific information needed to its calculations, structure varies by quantity type.
    - `integrationSettings` object — If 3rd party integration is enabled, the settings needed to export invoices with this product.
    - `productId` integer — Product ID of the catalog product, if assigned.
    - `order` integer — Order on which the product will be taken in account for invoicing.
    - `accountId` integer, required — Account ID assigned to the product to be mapped to a 3rd party integration product type.
    - `group` boolean, required — Whether the product can be billed as group.
    - `productUserRole` object, nullable — Representation of a ninja billing product user role request.
      - `allowAllTechnicians` boolean, required — Whether all technicians are allowed to access this product or specific roles will be specified.
      - `userRoles` integer[], required — Set of user role IDs that can access this product. Only used when allowAllTechnicians is false.
    - `taxId` integer — Tax ID assigned to the product. If null, the product will use the agreement's tax.
    - `inheritTaxFromAgreement` boolean — Whether this product inherits its tax configuration from the agreement.
  - `laborTicketTimeEntryProducts` object[] — List of time entry quantity type products.
    - `id` integer — ID of the agreement product.
    - `name` string, required — Name of the agreement product.
    - `description` string, required — Description of the agreement product.
    - `quantityType` 'MANUAL' | 'DEVICE_COUNTS' | 'TIME_ENTRIES' | 'END_USER_COUNTS' | 'BACKUP_STORAGE_COUNTS' | 'SOFTWARE_LICENSE', required — How the product quantity is calculated in billing.
    - `content` object — Product specific information needed to its calculations, structure varies by quantity type.
    - `integrationSettings` object — If 3rd party integration is enabled, the settings needed to export invoices with this product.
    - `productId` integer — Product ID of the catalog product, if assigned.
    - `order` integer — Order on which the product will be taken in account for invoicing.
    - `accountId` integer, required — Account ID assigned to the product to be mapped to a 3rd party integration product type.
    - `group` boolean, required — Whether the product can be billed as group.
    - `productUserRole` object, nullable — Representation of a ninja billing product user role request.
      - `allowAllTechnicians` boolean, required — Whether all technicians are allowed to access this product or specific roles will be specified.
      - `userRoles` integer[], required — Set of user role IDs that can access this product. Only used when allowAllTechnicians is false.
    - `taxId` integer — Tax ID assigned to the product. If null, the product will use the agreement's tax.
    - `inheritTaxFromAgreement` boolean — Whether this product inherits its tax configuration from the agreement.
  - `managedEndUserProducts` object[] — List of end user count quantity type products.
    - `id` integer — ID of the agreement product.
    - `name` string, required — Name of the agreement product.
    - `description` string, required — Description of the agreement product.
    - `quantityType` 'MANUAL' | 'DEVICE_COUNTS' | 'TIME_ENTRIES' | 'END_USER_COUNTS' | 'BACKUP_STORAGE_COUNTS' | 'SOFTWARE_LICENSE', required — How the product quantity is calculated in billing.
    - `content` object — Product specific information needed to its calculations, structure varies by quantity type.
    - `integrationSettings` object — If 3rd party integration is enabled, the settings needed to export invoices with this product.
    - `productId` integer — Product ID of the catalog product, if assigned.
    - `order` integer — Order on which the product will be taken in account for invoicing.
    - `accountId` integer, required — Account ID assigned to the product to be mapped to a 3rd party integration product type.
    - `group` boolean, required — Whether the product can be billed as group.
    - `productUserRole` object, nullable — Representation of a ninja billing product user role request.
      - `allowAllTechnicians` boolean, required — Whether all technicians are allowed to access this product or specific roles will be specified.
      - `userRoles` integer[], required — Set of user role IDs that can access this product. Only used when allowAllTechnicians is false.
    - `taxId` integer — Tax ID assigned to the product. If null, the product will use the agreement's tax.
    - `inheritTaxFromAgreement` boolean — Whether this product inherits its tax configuration from the agreement.
  - `invoiceNote` string, required — String message added to invoices generated from the agreement.
  - `quickBooksAgreementIntegrationDataRequest` object, nullable — Quickbooks integration agreement specific data.
    - `externalTax` object — Representation of a ninja billing External tax rate request.
      - `id` string, required — ID of the external tax rate assigned by the 3rd party integration.
      - `name` string, required — Name of the external tax rate assigned by the 3rd party integration.
    - `allowOnlineCreditCardPayments` boolean, required — Specifies if online credit card payments are allowed for this invoice and corresponds to the Credit card check box on the QuickBooks UI.
    - `allowOnlineAchPayments` boolean, required — Specifies if this invoice can be paid with online bank transfers and corresponds to the Bank transfer check box on the QuickBooks UI.
    - `externalTaxRequest` object — Representation of a ninja billing External tax rate request.
      - `id` string, required — ID of the external tax rate assigned by the 3rd party integration.
      - `name` string, required — Name of the external tax rate assigned by the 3rd party integration.
  - `xeroAgreementIntegrationDataRequest` object, nullable — Xero integration agreement specific data.
    - `externalTax` object — Representation of a ninja billing External tax rate request.
      - `id` string, required — ID of the external tax rate assigned by the 3rd party integration.
      - `name` string, required — Name of the external tax rate assigned by the 3rd party integration.
    - `taxlessItemsExternalTax` object — Not billable products external integration tax rate.
      - `id` string, required
      - `name` string, required
    - `brandingTheme` object — Xero integration branding theme specific data.
      - `id` string, required
      - `name` string, required
    - `newInvoiceStatus` 'DRAFT' | 'SUBMITTED' | 'AUTHORISED' — Xero invoice status.
    - `externalTaxRequest` object — Representation of a ninja billing External tax rate request.
      - `id` string, required — ID of the external tax rate assigned by the 3rd party integration.
      - `name` string, required — Name of the external tax rate assigned by the 3rd party integration.
    - `taxlessItemsExternalTaxRequest` object — Not billable products external integration tax rate.
      - `id` string, required
      - `name` string, required
    - `brandingThemeRequest` object — Xero integration branding theme specific data.
      - `id` string, required
      - `name` string, required
  - `multiMatchSoftwareLicenses` boolean — Match multiple software licenses when counting to generate invoices.

## Response `200`

Successfully updated agreement.

- object — Representation of a ninja billing Agreement.
  - `id` integer
  - `name` string
  - `description` string, nullable
  - `invoiceGenerationType` 'AUTOMATIC' | 'MANUAL'
  - `lastBillDate` number, double, nullable
  - `nextBillDate` string, nullable
  - `nextBillingPeriodStartDate` string, nullable
  - `lastPeriodStartDate` string, nullable
  - `lastPeriodEndDate` string, nullable
  - `content` object
    - `interval` string, nullable
    - `billDate` string, nullable
    - `startDate` string
    - `endDate` string, nullable
    - `businessHours` object — Days and time the work registered in tickets will be registered as off hours.
      - `twentyFourSeven` boolean
      - `days` object[]
        - `day` 'MONDAY' | 'TUESDAY' | 'WEDNESDAY' | 'THURSDAY' | 'FRIDAY' | 'SATURDAY' | 'SUNDAY'
        - `startHour` integer
        - `endHour` integer
        - `allDayClosed` boolean
  - `contact` object, nullable
    - `uid` string, uuid
    - `id` integer
    - `clientId` integer, nullable
    - `clientName` string, nullable
    - `firstName` string, nullable
    - `lastName` string, nullable
    - `email` string
    - `deleted` boolean
    - `userType` 'TECHNICIAN' | 'END_USER' | 'CONTACT'
    - `enabled` boolean
    - `ninjaAdmin` boolean
    - `sysadmin` boolean
  - `taxRate` object, nullable
    - `id` integer
    - `name` string
    - `description` string, nullable
    - `taxRate` number
  - `client` object — Client information associated with this invoice
    - `id` integer — Unique identifier for the client
    - `name` string — Name of the client
    - `deleted` boolean, required — Indicates if the client has been deleted
  - `externalTax` object — External tax information.
    - `id` string
    - `name` string
  - `createTime` number, double
  - `updateTime` number, double
  - `timeDefault` boolean
  - `businessHoursSource` 'CUSTOM' | 'TICKETING'
  - `dueDaysSource` 'CUSTOM' | 'INHERIT_FROM_CONFIGURATION'
  - `dueDays` integer
  - `allowOnlineCreditCardPayments` boolean
  - `allowOnlineAchPayments` boolean
  - `invoiceNote` string
  - `billEmails` string[]
  - `billCcEmails` string[]
  - `billBccEmails` string[]
  - `ticketBillingSettings` object, nullable
    - `billTicketInAnyStatus` boolean
    - `condition` object, nullable
      - `operator` string
      - `value` string
      - `metadata` object[], nullable
        - `id` integer
        - `name` string
  - `multiMatchEndUsers` boolean
  - `multiMatchDevices` boolean
  - `products` object[], nullable
    - `id` integer
    - `productId` integer
    - `name` string
    - `description` string
    - `quantityType` 'MANUAL' | 'DEVICE_COUNTS' | 'TIME_ENTRIES' | 'END_USER_COUNTS' | 'BACKUP_STORAGE_COUNTS' | 'SOFTWARE_LICENSE'
    - `content` object
    - `order` integer
    - `productUserRole` object — Representation of a ninja billing product user role response.
      - `allowAllTechnicians` boolean — Whether all technicians are allowed to access this product.
      - `userRoles` object[] — Set of user roles that can access this product. Empty when allowAllTechnicians is true.
        - `id` integer — Unique identifier of the user role.
        - `name` string — Name of the user role.
    - `integrationSettings` object
    - `accountId` integer
    - `group` boolean
    - `taxId` integer
    - `inheritTaxFromAgreement` boolean
  - `deviceCountsProducts` object[], nullable
    - `id` integer
    - `productId` integer
    - `name` string
    - `description` string
    - `quantityType` 'MANUAL' | 'DEVICE_COUNTS' | 'TIME_ENTRIES' | 'END_USER_COUNTS' | 'BACKUP_STORAGE_COUNTS' | 'SOFTWARE_LICENSE'
    - `content` object
    - `order` integer
    - `productUserRole` object — Representation of a ninja billing product user role response.
      - `allowAllTechnicians` boolean — Whether all technicians are allowed to access this product.
      - `userRoles` object[] — Set of user roles that can access this product. Empty when allowAllTechnicians is true.
        - `id` integer — Unique identifier of the user role.
        - `name` string — Name of the user role.
    - `integrationSettings` object
    - `accountId` integer
    - `group` boolean
    - `taxId` integer
    - `inheritTaxFromAgreement` boolean
  - `timeEntriesProducts` object[], nullable
    - `id` integer
    - `productId` integer
    - `name` string
    - `description` string
    - `quantityType` 'MANUAL' | 'DEVICE_COUNTS' | 'TIME_ENTRIES' | 'END_USER_COUNTS' | 'BACKUP_STORAGE_COUNTS' | 'SOFTWARE_LICENSE'
    - `content` object
    - `order` integer
    - `productUserRole` object — Representation of a ninja billing product user role response.
      - `allowAllTechnicians` boolean — Whether all technicians are allowed to access this product.
      - `userRoles` object[] — Set of user roles that can access this product. Empty when allowAllTechnicians is true.
        - `id` integer — Unique identifier of the user role.
        - `name` string — Name of the user role.
    - `integrationSettings` object
    - `accountId` integer
    - `group` boolean
    - `taxId` integer
    - `inheritTaxFromAgreement` boolean
  - `endUserCountsProducts` object[], nullable
    - `id` integer
    - `productId` integer
    - `name` string
    - `description` string
    - `quantityType` 'MANUAL' | 'DEVICE_COUNTS' | 'TIME_ENTRIES' | 'END_USER_COUNTS' | 'BACKUP_STORAGE_COUNTS' | 'SOFTWARE_LICENSE'
    - `content` object
    - `order` integer
    - `productUserRole` object — Representation of a ninja billing product user role response.
      - `allowAllTechnicians` boolean — Whether all technicians are allowed to access this product.
      - `userRoles` object[] — Set of user roles that can access this product. Empty when allowAllTechnicians is true.
        - `id` integer — Unique identifier of the user role.
        - `name` string — Name of the user role.
    - `integrationSettings` object
    - `accountId` integer
    - `group` boolean
    - `taxId` integer
    - `inheritTaxFromAgreement` boolean
  - `backupStorageCountsProducts` object[], nullable
    - `id` integer
    - `productId` integer
    - `name` string
    - `description` string
    - `quantityType` 'MANUAL' | 'DEVICE_COUNTS' | 'TIME_ENTRIES' | 'END_USER_COUNTS' | 'BACKUP_STORAGE_COUNTS' | 'SOFTWARE_LICENSE'
    - `content` object
    - `order` integer
    - `productUserRole` object — Representation of a ninja billing product user role response.
      - `allowAllTechnicians` boolean — Whether all technicians are allowed to access this product.
      - `userRoles` object[] — Set of user roles that can access this product. Empty when allowAllTechnicians is true.
        - `id` integer — Unique identifier of the user role.
        - `name` string — Name of the user role.
    - `integrationSettings` object
    - `accountId` integer
    - `group` boolean
    - `taxId` integer
    - `inheritTaxFromAgreement` boolean
  - `softwareLicenseProducts` object[], nullable
    - `id` integer
    - `productId` integer
    - `name` string
    - `description` string
    - `quantityType` 'MANUAL' | 'DEVICE_COUNTS' | 'TIME_ENTRIES' | 'END_USER_COUNTS' | 'BACKUP_STORAGE_COUNTS' | 'SOFTWARE_LICENSE'
    - `content` object
    - `order` integer
    - `productUserRole` object — Representation of a ninja billing product user role response.
      - `allowAllTechnicians` boolean — Whether all technicians are allowed to access this product.
      - `userRoles` object[] — Set of user roles that can access this product. Empty when allowAllTechnicians is true.
        - `id` integer — Unique identifier of the user role.
        - `name` string — Name of the user role.
    - `integrationSettings` object
    - `accountId` integer
    - `group` boolean
    - `taxId` integer
    - `inheritTaxFromAgreement` boolean
  - `multiMatchDeviceBackups` boolean
  - `displayIncludedTimeOnInvoices` boolean
  - `taxId` integer
  - `autoApproveInvoice` boolean
  - `autoCompleteInvoice` boolean
  - `quickBooks` object
    - `externalTax` object — External tax information.
      - `id` string
      - `name` string
    - `allowOnlineCreditCardPayments` boolean
    - `allowOnlineAchPayments` boolean
  - `xero` object
    - `externalTax` object — External tax information.
      - `id` string
      - `name` string
    - `brandingTheme` object, nullable
      - `id` string
      - `name` string
    - `taxlessItemsExternalTax` object, nullable
      - `id` string
      - `name` string
    - `newInvoiceStatus` 'DRAFT' | 'SUBMITTED' | 'AUTHORISED'
  - `active` boolean
  - `archived` boolean

## Other responses

- `400` — Bad request - interval value
- `403` — Forbidden - Insufficient permissions
- `404` — Agreement not found
- `409` — Duplicated agreement
- `500` — Permission not granted

---

[API](https://skmtc.net/ninjarmm/apis/ninjaone-public-api-2-0.md) · [All operations](https://skmtc.net/ninjarmm/apis/ninjaone-public-api-2-0/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/ninjarmm/ninjaone-public-api-2-0/versions/753f26d46650/schema)
