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

# Create product

`POST /products`

Creates a new product.

🔒 Requires: `products:write` scope

## Request body

- ProductCreateBody
  - `account_code_purchase` string — The code used to attribute the purchase of the product to a specific account for the Xero integration.
  - `account_code_sale` string — The code used to attribute the sales of the product to a specific account for the Xero integration.
  - `all_outlets_tax` object — Only used for tax inclusive stores.
    - `is_default` boolean — Is this the default tax.
    - `tax_id` string, UUID — The tax id associated with this product.
  - `attributes` Attribute
    - `key` string, required — The key for the attribute.
    - `value` string, required — The value for the attribute.
  - `brand_id` string, UUID — The brand ID.
  - `composite` Composite[] — A list of composite components.
    - `product_id` string, uuid — The ID of the component product.
    - `quantity` number — The quantity of the component product.
  - `description` string — A detailed description of the Product. **Note** Can contain HTML.
  - `dimensions_unit` 'IN' | 'CM' | 'MM' | 'YD' — Unit of measurement for product dimensions. These are used to calculate variable shipping rates for stores using Lightspeed eCom.
  - `handle` string — Product handle.
  - `height` number — Product height. These are used to calculate variable shipping rates for stores using Lightspeed eCom.
  - `images` ProductAddImage[] — A list of image objects.
    - `index` integer — The position of the image in the list of images.
    - `location` string, required — The location of the given file. Depending on the image provider type. s3 - The s3 key for s3 transfers. url - A full URL for url based images. product-image - the image id from an existing product image. sku-image - the image id from an existing variant image.
    - `type` 's3' | 'url' | 'product-image' | 'sku-image', required — The image provider type.
  - `inventory` ProductAddInventoryPayload[]
    - `current_amount` number, double, required — Current inventory at a given outlet.
    - `outlet_id` string, UUID, required — The outlet the inventory is for.
    - `reorder_amount` number — The default of the quantity for auto-filled inventory orders.
    - `reorder_point` number — Quantity below which the product should be included in the auto-filled inventory orders. use -1 to clear the reorder point.
  - `is_active` boolean — Indicated whether the Product is active.
  - `length` number — Product length. These are used to calculate variable shipping rates for stores using Lightspeed eCom.
  - `loyalty_amount` number — The amount of loyalty the customer receives buying this item.
  - `name` string, required — Product name. **Note:** Variants share the same name.
  - `outlet_taxes` ProductAddOutletTax[] — Only used for tax exclusive stores.
    - `outlet_id` string, UUID, required — The outlet the tax is for.
    - `tax_id` string, UUID, required — The tax id associated with this outlet.
  - `price_excluding_tax` number — The price before tax is added.
  - `price_including_tax` number — The price including all the relevant taxes.
  - `product_category_id` string, UUID — The product category.
  - `product_codes` ProductCode[]
    - `code` string, required — The sku code being added.
    - `id` string, required — Auto-generated object ID.
    - `type` 'CUSTOM' | 'EAN' | 'ISBN' | 'ITF' | 'JAN' | 'UPC' — The type of code being added.
  - `product_suppliers` ProductSupplier[]
    - `code` string, nullable — The code associated with this supplier.
    - `id` string, UUID, required — Auto-generated object ID.
    - `price` number, double, nullable — The price associated with this supplier.
    - `product_id` string, UUID, required — The ID of the product.
    - `supplier_id` string, UUID, nullable, required — The ID of the supplier.
    - `supplier_name` string, nullable, required — The name of the supplier.
  - `product_type_id` string, UUID — The product category. **Note** Product types are now product categories.
  - `sku` string — Product sku. **Note:** Should be unique.
  - `source` string — Indicates the origin of the product. Can be USER, SHOPIFY.
  - `source_id` string — External reference ID.
  - `source_variant_id` string — Secondary external reference ID.
  - `supplier_code` string — Supplier code.
  - `supplier_id` string, UUID — The supplier ID.
  - `supply_price` number, double — Default supply price.
  - `tag_ids` string[] — An array of tag IDs associated with this product.
  - `variants` ProductAddVariantPayload[]
    - `all_outlets_tax` object — Only used for tax inclusive stores.
      - `is_default` boolean — Is this the default tax.
      - `tax_id` string, UUID — The tax id associated with this product.
    - `dimensions_unit` 'IN' | 'CM' | 'MM' | 'YD' — Unit of measurement for product dimensions. These are used to calculate variable shipping rates for stores using Lightspeed eCom.
    - `height` number — Product height. These are used to calculate variable shipping rates for stores using Lightspeed eCom.
    - `images` ProductAddImage[] — A list of image objects.
      - `index` integer — The position of the image in the list of images.
      - `location` string, required — The location of the given file. Depending on the image provider type. s3 - The s3 key for s3 transfers. url - A full URL for url based images. product-image - the image id from an existing product image. sku-image - the image id from an existing variant image.
      - `type` 's3' | 'url' | 'product-image' | 'sku-image', required — The image provider type.
    - `inventory` ProductAddInventoryPayload[]
      - `current_amount` number, double, required — Current inventory at a given outlet.
      - `outlet_id` string, UUID, required — The outlet the inventory is for.
      - `reorder_amount` number — The default of the quantity for auto-filled inventory orders.
      - `reorder_point` number — Quantity below which the product should be included in the auto-filled inventory orders. use -1 to clear the reorder point.
    - `length` number — Product length. These are used to calculate variable shipping rates for stores using Lightspeed eCom.
    - `outlet_taxes` ProductAddOutletTax[] — Only used for tax exclusive stores.
      - `outlet_id` string, UUID, required — The outlet the tax is for.
      - `tax_id` string, UUID, required — The tax id associated with this outlet.
    - `price_excluding_tax` number — The price before tax is added.
    - `price_including_tax` number — The price including all the relevant taxes.
    - `product_codes` ProductCode[]
      - `code` string, required — The sku code being added.
      - `id` string, required — Auto-generated object ID.
      - `type` 'CUSTOM' | 'EAN' | 'ISBN' | 'ITF' | 'JAN' | 'UPC' — The type of code being added.
    - `product_suppliers` ProductSupplier[]
      - `code` string, nullable — The code associated with this supplier.
      - `id` string, UUID, required — Auto-generated object ID.
      - `price` number, double, nullable — The price associated with this supplier.
      - `product_id` string, UUID, required — The ID of the product.
      - `supplier_id` string, UUID, nullable, required — The ID of the supplier.
      - `supplier_name` string, nullable, required — The name of the supplier.
    - `sku` string — Product sku. This value should be included in the `product_codes` array. If it's not, it will be added automatically.
    - `supplier_code` string — Supplier code.
    - `supply_price` number, double — Default supply price.
    - `variant_definitions` VariantAttribute[] — The attributes associated with this variant. e.g. Size.
      - `attribute_id` string, uuid — The ID of the variant attribute.
      - `value` string — The value associated with the given attribute_id. e.g. Green.
    - `weight` number — Product weight. These are used to calculate variable shipping rates for stores using Lightspeed eCom.
    - `weight_unit` 'CT' | 'G' | 'OZ' | 'LB' | 'KG' — Unit of measurement for product weight. These are used to calculate variable shipping rates for stores using Lightspeed eCom.
    - `width` number — Product width. These are used to calculate variable shipping rates for stores using Lightspeed eCom.
  - `weight` number — Product weight. These are used to calculate variable shipping rates for stores using Lightspeed eCom.
  - `weight_unit` 'CT' | 'G' | 'OZ' | 'LB' | 'KG' — Unit of measurement for product weight. These are used to calculate variable shipping rates for stores using Lightspeed eCom.
  - `width` number — Product width. These are used to calculate variable shipping rates for stores using Lightspeed eCom.

## Response `200`

OK

- object
  - `data` string[] — An array containing the ID or IDs of the new products.

---

[API](https://skmtc.net/lightspeedhq/apis/api-2026-07.md) · [All operations](https://skmtc.net/lightspeedhq/apis/api-2026-07/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/lightspeedhq/api-2026-07/revisions/72d4ceb46dbb/schema)
