---
title: "Create SKU"
method: POST
path: "/v1/products/{productId}/skus"
tags: ["Products"]
---

# Create SKU

`POST /v1/products/{productId}/skus`

This method adds product variants to a [created product](/api-reference/products/create-product). 

> 📘 Upsert Mode
>
> If you pass an `id` or a `source_id` that already exists in the sku database, Voucherify will return a related sku object with updated fields.

## Request body

- ProductsSkusCreateRequestBody — Request body schema for **POST** `v1/products/{productId}/skus
  - `id` string — Unique SKU ID.
  - `source_id` string — A unique SKU identifier from your inventory system.
  - `sku` string — Unique user-defined SKU name.
  - `price` integer — SKU unit price. The value is multiplied by 100 to represent 2 decimal places. For example `10000 cents` for `$100.00`.
  - `currency` string — SKU price currency.
  - `attributes` object — The attributes object stores values for all custom attributes inherited by the SKU from the parent product. A set of key/value pairs that are attached to a SKU object and are unique to each SKU within a product family.
  - `image_url` string — The HTTPS URL pointing to the .png or .jpg file that will be used to render the SKU image.
  - `metadata` object — The metadata object stores all custom attributes assigned to the SKU. A set of key/value pairs that you can attach to a SKU object. It can be useful for storing additional information about the SKU in a structured format.

## Response `200`

Returns the created SKU object.

- ProductsSkusCreateResponseBody — This is an object representing a product SKU.
  - `id` string, required — A unique identifier that represents the SKU and is assigned by Voucherify.
  - `source_id` string, nullable, required — A unique SKU identifier from your inventory system.
  - `product_id` string, required — The parent product's unique ID.
  - `sku` string, nullable, required — Unique user-defined SKU name.
  - `price` integer, nullable, required — Unit price. It is represented by a value multiplied by 100 to accurately reflect 2 decimal places, such as `$100.00` being expressed as `10000`.
  - `currency` string, nullable — SKU price currency.
  - `attributes` object, required — The attributes object stores values for all custom attributes inherited by the SKU from the parent product. A set of key/value pairs that are attached to a SKU object and are unique to each SKU within a product family.
  - `image_url` string, nullable, required — The HTTPS URL pointing to the .png or .jpg file that will be used to render the SKU image.
  - `metadata` object, required — The metadata object stores all custom attributes assigned to the SKU. A set of key/value pairs that you can attach to a SKU object. It can be useful for storing additional information about the SKU in a structured format. It can be used to create product collections.
  - `created_at` string, date-time, required — Timestamp representing the date and time when the SKU was created. The value is shown in the ISO 8601 format.
  - `updated_at` string, date-time, nullable, required — Timestamp representing the date and time when the SKU was updated. The value is shown in the ISO 8601 format.
  - `object` 'sku', required — The type of the object represented by JSON. This object stores information about the `SKU`.

---

[API](https://skmtc.net/voucherifyio/apis/voucherify-api-async-actions.md) · [All operations](https://skmtc.net/voucherifyio/apis/voucherify-api-async-actions/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/voucherifyio/voucherify-api-async-actions/revisions/4982266e0494/schema)
