---
title: "Create a product"
method: POST
path: "/v1/products"
---

# Create a product

`POST /v1/products`

Creates a new product object.

## Response `200`

Successful response.

- Product — Products describe the specific goods or services you offer to your customers. For example, you might offer a Standard and Premium version of your goods or service; each version would be a separate Product. They can be used in conjunction with [Prices](https://api.stripe.com#prices) to configure pricing in Payment Links, Checkout, and Subscriptions. Related guides: [Set up a subscription](https://docs.stripe.com/billing/subscriptions/set-up-subscription), [share a Payment Link](https://docs.stripe.com/payment-links), [accept payments with Checkout](https://docs.stripe.com/payments/accept-a-payment#create-product-prices-upfront), and more about [Products and Prices](https://docs.stripe.com/products-prices/overview)
  - `active` boolean, required — Whether the product is currently available for purchase.
  - `created` integer, required — Time at which the object was created. Measured in seconds since the Unix epoch.
  - `default_price` union — The ID of the [Price](https://docs.stripe.com/api/prices) object that is the default price for this product.
    - string
    - Price — Prices define the unit cost, currency, and (optional) billing cycle for both recurring and one-time purchases of products. [Products](https://api.stripe.com#products) help you track inventory or provisioning, and prices help you track payment terms. Different physical goods or levels of service should be represented by products, and pricing options should be represented by prices. This approach lets you change prices without having to change your provisioning scheme. For example, you might have a single "gold" product that has prices for $10/month, $100/year, and €9 once. Related guides: [Set up a subscription](https://docs.stripe.com/billing/subscriptions/set-up-subscription), [create an invoice](https://docs.stripe.com/billing/invoices/create), and more about [products and prices](https://docs.stripe.com/products-prices/overview).
      - `active` boolean, required — Whether the price can be used for new purchases.
      - `billing_scheme` 'per_unit' | 'tiered', required — Describes how to compute the price per period. Either `per_unit` or `tiered`. `per_unit` indicates that the fixed amount (specified in `unit_amount` or `unit_amount_decimal`) will be charged per unit in `quantity` (for prices with `usage_type=licensed`), or per unit of total usage (for prices with `usage_type=metered`). `tiered` indicates that the unit pricing will be computed using a tiering strategy as defined using the `tiers` and `tiers_mode` attributes.
      - `created` integer, required — Time at which the object was created. Measured in seconds since the Unix epoch.
      - `currency` string, currency, required — Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https://stripe.com/docs/currencies).
      - `currency_options` object — Prices defined in each available currency option. Each key must be a three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html) and a [supported currency](https://stripe.com/docs/currencies).
      - `custom_unit_amount` CustomUnitAmount
        - `maximum` integer, nullable — The maximum unit amount the customer can specify for this item.
        - `minimum` integer, nullable — The minimum unit amount the customer can specify for this item. Must be at least the minimum charge amount.
        - `preset` integer, nullable — The starting unit amount which can be updated by the customer.
      - `id` string, required — Unique identifier for the object.
      - `livemode` boolean, required — Has the value `true` if the object exists in live mode or the value `false` if the object exists in test mode.
      - `lookup_key` string, nullable — A lookup key used to retrieve prices dynamically from a static string. This may be up to 200 characters.
      - `metadata` object, required — Set of [key-value pairs](https://docs.stripe.com/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
      - `nickname` string, nullable — A brief description of the price, hidden from customers.
      - `object` 'price', required — String representing the object's type. Objects of the same type share the same value.
      - `product` union, required — The ID of the product this price is associated with.
        - string
        - Product — recursive
        - DeletedProduct
          - `deleted` true, required — Always true for a deleted object
          - `id` string, required — Unique identifier for the object.
          - `object` 'product', required — String representing the object's type. Objects of the same type share the same value.
      - `recurring` Recurring
        - `interval` 'day' | 'month' | 'week' | 'year', required — The frequency at which a subscription is billed. One of `day`, `week`, `month` or `year`.
        - `interval_count` integer, required — The number of intervals (specified in the `interval` attribute) between subscription billings. For example, `interval=month` and `interval_count=3` bills every 3 months.
        - `meter` string, nullable — The meter tracking the usage of a metered price
        - `usage_type` 'licensed' | 'metered', required — Configures how the quantity per period should be determined. Can be either `metered` or `licensed`. `licensed` automatically bills the `quantity` set when adding it to a subscription. `metered` aggregates the total usage based on usage records. Defaults to `licensed`.
      - `tax_behavior` 'exclusive' | 'inclusive' | 'unspecified', nullable — Only required if a [default tax behavior](https://docs.stripe.com/tax/products-prices-tax-categories-tax-behavior#setting-a-default-tax-behavior-(recommended)) was not provided in the Stripe Tax settings. Specifies whether the price is considered inclusive of taxes or exclusive of taxes. One of `inclusive`, `exclusive`, or `unspecified`. Once specified as either `inclusive` or `exclusive`, it cannot be changed.
      - `tiers` PriceTier[] — Each element represents a pricing tier. This parameter requires `billing_scheme` to be set to `tiered`. See also the documentation for `billing_scheme`.
        - `flat_amount` integer, nullable — Price for the entire tier.
        - `flat_amount_decimal` string, decimal, nullable — Same as `flat_amount`, but contains a decimal value with at most 12 decimal places.
        - `unit_amount` integer, nullable — Per unit price for units relevant to the tier.
        - `unit_amount_decimal` string, decimal, nullable — Same as `unit_amount`, but contains a decimal value with at most 12 decimal places.
        - `up_to` integer, nullable — Up to and including to this quantity will be contained in the tier.
      - `tiers_mode` 'graduated' | 'volume', nullable — Defines if the tiering price should be `graduated` or `volume` based. In `volume`-based tiering, the maximum quantity within a period determines the per unit price. In `graduated` tiering, pricing can change as the quantity grows.
      - `transform_quantity` TransformQuantity
        - `divide_by` integer, required — Divide usage by this number.
        - `round` 'down' | 'up', required — After division, either round the result `up` or `down`.
      - `type` 'one_time' | 'recurring', required — One of `one_time` or `recurring` depending on whether the price is for a one-time purchase or a recurring (subscription) purchase.
      - `unit_amount` integer, nullable — The unit amount in cents (or local equivalent) to be charged, represented as a whole integer if possible. Only set if `billing_scheme=per_unit`.
      - `unit_amount_decimal` string, decimal, nullable — The unit amount in cents (or local equivalent) to be charged, represented as a decimal string with at most 12 decimal places. Only set if `billing_scheme=per_unit`.
  - `description` string, nullable — The product's description, meant to be displayable to the customer. Use this field to optionally store a long form explanation of the product being sold for your own rendering purposes.
  - `id` string, required — Unique identifier for the object.
  - `images` string[], required — A list of up to 8 URLs of images for this product, meant to be displayable to the customer.
  - `livemode` boolean, required — Has the value `true` if the object exists in live mode or the value `false` if the object exists in test mode.
  - `marketing_features` ProductMarketingFeature[], required — A list of up to 15 marketing features for this product. These are displayed in [pricing tables](https://docs.stripe.com/payments/checkout/pricing-table).
    - `name` string — The marketing feature name. Up to 80 characters long.
  - `metadata` object, required — Set of [key-value pairs](https://docs.stripe.com/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
  - `name` string, required — The product's name, meant to be displayable to the customer.
  - `object` 'product', required — String representing the object's type. Objects of the same type share the same value.
  - `package_dimensions` PackageDimensions
    - `height` number, required — Height, in inches.
    - `length` number, required — Length, in inches.
    - `weight` number, required — Weight, in ounces.
    - `width` number, required — Width, in inches.
  - `shippable` boolean, nullable — Whether this product is shipped (i.e., physical goods).
  - `statement_descriptor` string, nullable — Extra information about a product which will appear on your customer's credit card statement. In the case that multiple products are billed at once, the first statement descriptor will be used. Only used for subscription payments.
  - `tax_code` union — A [tax code](https://docs.stripe.com/tax/tax-categories) ID.
    - string
    - TaxCode — [Tax codes](https://stripe.com/docs/tax/tax-categories) classify goods and services for tax purposes.
      - `description` string, required — A detailed description of which types of products the tax code represents.
      - `id` string, required — Unique identifier for the object.
      - `name` string, required — A short name for the tax code.
      - `object` 'tax_code', required — String representing the object's type. Objects of the same type share the same value.
  - `unit_label` string, nullable — A label that represents units of this product. When set, this will be included in customers' receipts, invoices, Checkout, and the customer portal.
  - `updated` integer, required — Time at which the object was last updated. Measured in seconds since the Unix epoch.
  - `url` string, nullable — A URL of a publicly-accessible webpage for this product.

## Other responses

- `default` — Error response.

---

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