Products

Creates a product

Changed on

Creates a new product (good or service) that can be referenced on contracts and invoices. Choose pricing and revenue behavior consistent with how you bill customers (one-time, recurring, usage, etc.). Set type to BUNDLE to create a bundle.

post/products

Request

Request body

type'PRODUCT' | 'BUNDLE'

PRODUCT is a standalone product. BUNDLE is a product made up of other products.

namestring required
descriptionstring required
include_in_arr_mrrboolean required
include_in_sspboolean nullable

Whether this product participates in SSP revenue allocation. Requires stored product SSP to be enabled. Not allowed for bundles. Omission or null preserves the flag on update; on create it defaults to true. Usage-priced products remain excluded from SSP allocation.

revenue_pattern'DAILY' | 'EVEN_PERIOD' | 'PROGRESS'

DAILY divides revenue equally per day. EVEN_PERIOD divides revenue equally per calendar month. PROGRESS uses a progress plan; the supported measure MILESTONES recognizes allocated revenue on milestone completion and requires a one-time price. FULL contract creation supports an explicit progress plan or snapshots the referenced product's template. Existing non-progress behavior is unchanged.

account_codestring

The account code found in the Chart of Accounts

status'ACTIVE' | 'INACTIVE'

Example request

{
  "name": "English subscription",
  "description": "Subscription to english classes",
  "price": {
    "amount": {
      "amount": "1.01",
      "currency": "USD"
    },
    "interval_months": 1
  },
  "progress_plan_template": {
    "milestones": [
      {
        "key": "design-approved",
        "name": "Design approved",
        "sequence": 1,
        "value": "30",
        "expected_offset": {
          "count": 1,
          "unit": "MONTHS"
        }
      }
    ]
  },
  "account_code": "11112",
  "external_references": [
    {
      "type": "xyzSystemId",
      "id": "234",
      "url": "https://xyzsystempage.com/ids/234"
    }
  ],
  "bundle": {
    "components": [
      {
        "quantity": "1"
      }
    ]
  }
}

Response

OK

idstring uuid required
type'PRODUCT' | 'BUNDLE' required

PRODUCT is a standalone product. BUNDLE is a product made up of other products.

namestring required
descriptionstring required
include_in_arr_mrrboolean required
include_in_sspboolean

Whether this product participates in SSP revenue allocation. Omitted for bundles. Usage-priced products remain excluded regardless of this flag.

revenue_pattern'DAILY' | 'EVEN_PERIOD' | 'PROGRESS'

DAILY divides revenue equally per day. EVEN_PERIOD divides revenue equally per calendar month. PROGRESS uses a progress plan; the supported measure MILESTONES recognizes allocated revenue on milestone completion and requires a one-time price. FULL contract creation supports an explicit progress plan or snapshots the referenced product's template. Existing non-progress behavior is unchanged.

status'ACTIVE' | 'INACTIVE' required
account_codestring

The account code found in the Chart of Accounts

Example response

{
  "name": "English subscription",
  "description": "Subscription to english classes",
  "price": {
    "amount": {
      "amount": "1.01",
      "currency": "USD"
    },
    "interval_months": 1
  },
  "progress_plan_template": {
    "milestones": [
      {
        "key": "design-approved",
        "name": "Design approved",
        "sequence": 1,
        "value": "30",
        "expected_offset": {
          "count": 1,
          "unit": "MONTHS"
        }
      }
    ]
  },
  "external_references": [
    {
      "type": "xyzSystemId",
      "id": "234",
      "url": "https://xyzsystempage.com/ids/234"
    }
  ],
  "account_code": "11112",
  "bundle": {
    "components": [
      {
        "quantity": "1"
      }
    ]
  }
}

Changes

    • breaking

      added subschema #1 subschema #2 to the request body allOf list

    • breaking

      added to the request property allOf list

    • breaking

      added to the request property allOf list

    • breaking

      removed the enum value DAILY of the request property

    • breaking

      removed the enum value EVEN_PERIOD of the request property

    • breaking

      the request property type changed from string to no type

    • breaking

      the request property type changed from string to no type

    • breaking

      the response property became optional for the status

    • breaking

      the response property became optional for the status

    • breaking

      the response's property type changed from string to no type for status

    • breaking

      the response's property type changed from string to no type for status

    • info

      added the new optional request property

    • info

      added the new optional request property

    • info

      added the new optional request property

    • info

      added the new optional request property

    • info

      added the new optional request property

    • info

      the request property became optional

    • info

      the request property became optional

    • info

      added subschema #1 subschema #2 to the response body allOf list for the response status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added to the response property allOf list for the response status

    • info

      added to the response property allOf list for the response status

    • info

      removed the DAILY enum value from the response property for the response status

    • info

      removed the EVEN_PERIOD enum value from the response property for the response status

    • info

      added the required property to the response with the status

    • info

      added the required property to the response with the status