---
title: "Creates a product"
method: POST
path: "/products"
tags: ["Products"]
---

# Creates a product

`POST /products`

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.).

## Request body

- ProductRequest
  - `name` string, required
  - `description` string, required
  - `price` union, required
    - FixedRecurringPrice
      - `amount` MonetaryAmount, required
        - `amount` string, required — Monetary amount in decimal format, using a period (.) as the decimal separator. (e.g. '1.01' in $ currency represents 1$ and 1 cent.)
        - `currency` string, required — Currency code following ISO-4217
      - `interval_months` integer, required
      - `type` string, required
    - OneTimePrice
      - `amount` MonetaryAmount, required
        - `amount` string, required — Monetary amount in decimal format, using a period (.) as the decimal separator. (e.g. '1.01' in $ currency represents 1$ and 1 cent.)
        - `currency` string, required — Currency code following ISO-4217
      - `type` string, required
    - UsagePrice
      - `interval_months` integer, required
      - `type` string, required
      - `billing_scheme` union, required
        - PerUnitBilling
          - `type` string, required
          - `amount` MonetaryAmount, required
            - `amount` string, required — Monetary amount in decimal format, using a period (.) as the decimal separator. (e.g. '1.01' in $ currency represents 1$ and 1 cent.)
            - `currency` string, required — Currency code following ISO-4217
          - `units` integer, required
        - TieredBilling — All tiers except for the highest have to define a value for upTo. There cannot be more than one tier with the same upTo value.
          - `type` string, required
          - `mode` 'GRADUATED' | 'METERED', required — In metered tiering, the maximum quantity within a period determines the price. In graduated tiering, pricing changes as the quantity grows – the price from each tier up to the reported quantity is accumulated.
          - `tiers` Tier[], required
            - `up_to` integer, required
            - `flat_price` MonetaryAmount
              - …
            - `per_unit_price` MonetaryAmount
              - …
  - `include_in_arr_mrr` boolean, required
  - `revenue_pattern` 'DAILY' | 'EVEN_PERIOD', required — DAILY means that the revenue is divided equally per day in the revenue period. EVEN_PERIOD means that the revenue is divided equally for each calendar month in the revenue period.
  - `account_code` string, required — The account code found in the Chart of Accounts
  - `status` 'ACTIVE' | 'INACTIVE'
  - `external_references` ExternalReference[]
    - `type` string, required
    - `id` string, required
    - `url` string, uri

## Response `200`

OK

- Product
  - `id` string, uuid, required
  - `name` string, required
  - `description` string, required
  - `price` union, required
    - FixedRecurringPrice
      - `amount` MonetaryAmount, required
        - `amount` string, required — Monetary amount in decimal format, using a period (.) as the decimal separator. (e.g. '1.01' in $ currency represents 1$ and 1 cent.)
        - `currency` string, required — Currency code following ISO-4217
      - `interval_months` integer, required
      - `type` string, required
    - OneTimePrice
      - `amount` MonetaryAmount, required
        - `amount` string, required — Monetary amount in decimal format, using a period (.) as the decimal separator. (e.g. '1.01' in $ currency represents 1$ and 1 cent.)
        - `currency` string, required — Currency code following ISO-4217
      - `type` string, required
    - UsagePrice
      - `interval_months` integer, required
      - `type` string, required
      - `billing_scheme` union, required
        - PerUnitBilling
          - `type` string, required
          - `amount` MonetaryAmount, required
            - `amount` string, required — Monetary amount in decimal format, using a period (.) as the decimal separator. (e.g. '1.01' in $ currency represents 1$ and 1 cent.)
            - `currency` string, required — Currency code following ISO-4217
          - `units` integer, required
        - TieredBilling — All tiers except for the highest have to define a value for upTo. There cannot be more than one tier with the same upTo value.
          - `type` string, required
          - `mode` 'GRADUATED' | 'METERED', required — In metered tiering, the maximum quantity within a period determines the price. In graduated tiering, pricing changes as the quantity grows – the price from each tier up to the reported quantity is accumulated.
          - `tiers` Tier[], required
            - `up_to` integer, required
            - `flat_price` MonetaryAmount
              - …
            - `per_unit_price` MonetaryAmount
              - …
  - `include_in_arr_mrr` boolean, required
  - `revenue_pattern` 'DAILY' | 'EVEN_PERIOD', required — DAILY means that the revenue is divided equally per day in the revenue period. EVEN_PERIOD means that the revenue is divided equally for each calendar month in the revenue period.
  - `external_references` ExternalReference[]
    - `type` string, required
    - `id` string, required
    - `url` string, uri
  - `status` 'ACTIVE' | 'INACTIVE', required
  - `account_code` string, required — The account code found in the Chart of Accounts

## Other responses

- `default` — Error

---

[API](https://skmtc.net/rillet/apis/rillet-accounting-api.md) · [All operations](https://skmtc.net/rillet/apis/rillet-accounting-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/rillet/rillet-accounting-api/versions/a2ab794dd5f2/schema)
