---
title: "Create Price"
method: POST
path: "/v1/prices"
tags: ["Prices"]
---

# Create Price

`POST /v1/prices`

Creates a new price. Supply `product` to attach the price to an existing product, or `product_data` to create a new product inline in the same request. A price is one-time unless you include `recurring`, in which case it bills on the given interval. Amounts are in the smallest currency unit (cents) and charged in USD. If HSA/FSA eligibility is not set on the price, the parent product's eligibility applies.

## Request body

- PriceBodyForNewPriceRequest — An envelope wrapping a single price object.
  - `price` NewPriceRequest, required — Parameters for creating a price. Reference an existing product with `product`, or create one inline with `product_data`.
    - `description` string, nullable — A brief description of the price.
    - `unit_amount` integer, required — A positive integer in cents (or 0 for a free price) representing how much to charge.
    - `recurring` Recurring — Describes how a recurring price bills over time. Present on prices of type `recurring`; `null` for one-time prices.
      - `interval` 'day' | 'week' | 'month' | 'year', required — The frequency at which a recurring price bills.
      - `interval_count` integer, nullable — The number of intervals
      - `trial_period_days` integer, nullable — The number of trial period days before the customer is charged for the first time. Whole days only. For a precise trial-end timestamp (e.g. non-integer days), use `subscription_data.trial_end` on the Create Checkout Session request instead.
    - `metadata` object, nullable — Metadata to attach to the price.
    - `product` string — The ID of the product that this price will belong to.
    - `product_data` CreateProductRequest — Parameters for creating a product. HSA/FSA eligibility is determined automatically by Flex from the name, description, and identifiers you provide, and cannot be set directly.
      - `name` string, required — The product's name, meant to be displayed to the customer.
      - `description` string, nullable — The product's description, a short blurb meant to be displayed to the customer.
      - `upc_code` string, nullable — The product's UPC code. If provided, this will be used to check whether the product is on the eligible product list.
      - `gtin` string, nullable — The product's GTIN. If provided, this will be used to check whether the product is on the eligible product list.
      - `reference_gtin` string, nullable — If the product is HSA/FSA eligible through private label, this should be provided.
      - `url` string, nullable — A URL of a publicly-accessible image of the product.
      - `client_reference_id` string, nullable — An optional identifier for the product set by the client. Immutable after creation.
      - `metadata` object, nullable — Set of key-value pairs that you can attach to a product. This can be useful for storing additional information about the product in a structured format.
      - `image_urls` string[], nullable — URLs of publicly-accessible product images for eligibility determination.
      - `categories` string[], nullable — Product categories (e.g., "Vitamins", "First Aid").
      - `components` string[], nullable — Product components or ingredients (e.g., "Vitamin C", "Zinc").

## Response `200`

An envelope wrapping a single price object.

- PriceBodyForPrice — An envelope wrapping a single price object.
  - `price` Price, required — Prices define the unit cost and (optional) billing cycle for both recurring and one-time purchases of products. Prices belong to a given product. Different physical goods or levels of service should be represented by products, and pricing options should be represented by prices.
    - `price_id` string, required — The unique identifier for the price.
    - `owner_partner_id` string, nullable — The ID of the account that owns this price. For prices shared across an organization this may be a sibling account; otherwise it is your own account ID.
    - `description` string, nullable — The description of the price.
    - `trial_period_days` integer, nullable — The number of trial period days before the customer is first charged for a recurring price.
    - `unit_amount` integer, required — The amount to charge per unit, in the smallest currency unit (e.g., `2500` = $25.00 USD).
    - `recurring` Recurring — Describes how a recurring price bills over time. Present on prices of type `recurring`; `null` for one-time prices.
      - `interval` 'day' | 'week' | 'month' | 'year', required — The frequency at which a recurring price bills.
      - `interval_count` integer, nullable — The number of intervals
      - `trial_period_days` integer, nullable — The number of trial period days before the customer is charged for the first time. Whole days only. For a precise trial-end timestamp (e.g. non-integer days), use `subscription_data.trial_end` on the Create Checkout Session request instead.
    - `active` boolean, required — Whether the price is currently active.
    - `product` union, required — An expandable field — either a string ID or an expanded Product object.
      - string
      - Product — A Product defines what you sell. Flex determines its HSA/FSA eligibility from the name, description, and identifiers you provide.
        - `product_id` string, required — The unique identifier for the product.
        - `owner_partner_id` string, nullable — The ID of the account that owns this product. For products shared across an organization this may be a sibling account; otherwise it is your own account ID.
        - `name` string, required — The name of the product.
        - `description` string, nullable — The description of the product.
        - `document_description` string, nullable — Medical-grade description optimized for use in Letters of Medical Necessity and receipts.
        - `receipt_description` string, nullable — Shortened description tailored to receipt line items
        - `created_at` string, required — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
        - `visit_type` 'cbtSleep' | 'notApplicable' | 'metabolomics' | 'tinnitus' | 'gym' | 'exerciseDiet' | 'orthopedic' | 'alcohol' | 'airPurification' | 'vaginalHealth' | 'menstrual' | 'canopy' | 'alopecia' | 'genate' | 'weightBlanket' | 'bedJet' | 'siderAl' | 'sunwinkPowder' | 'wavWatch' | 'bodyComplete' | 'ageRate' | 'nitrousOxide' | 'happyV' | 'groupChat' | 'icalmAnxiety' | 'redBloom' | 'foodom' | 'branchErgonomicFurniture' | 'curalife' | 'eloraInfantWellness' | 'nutriHealth' | 'olipop' | 'goldIntimate' | 'touchStoneEssentials' | 'utiva' | 'sleepGeekz' | 'figBrew' | 'auBabyBlanket' | 'babySleepSack' | 'oshWellness' | 'currentBodyRedLight' | 'mito' | 'circularRing' | 'lymaRedLight' | 'goodAirRx' | 'tastermonial' | 'karunaHome' | 'ergoStandingChair' | 'jbaGlucoseControl' | 'bloomNutrition' | 'buoyDrops' | 'luxeWonderWig' | 'saunaMarketplace' | 'amrioreEyewear' | 'pivotOrthoShoe' | 'lumenCynergy' | 'roga' | 'pulsetto' | 'mitoRedLight' | 'gutPersonal' | 'goFlaus' | 'myHixel' | 'calmigo' | 'dotFit' | 'stripesBeauty' | 'mixHers' | 'pmd' | 'positivityWithPurpose' | 'techRing' | 'popVeneers' | 'vertaClean' | 'lumen' | 'medicalMeal' | 'emnHealth' | 'detergentAllergy' | 'lowImpactExercise' | 'mediumImpactExercise' | 'highImpactExercise' | 'gardening' | 'babyCarrier' | 'smartGlasses' | 'coolingBed' | 'posture' | 'supplements' | 'sleep' | 'redLightTherapy' | 'fitness' | 'smartRing' | 'womensVaginalHealth' | 'fertilitySupport' | 'femaleReproduction' | 'femaleReproductionFood' | 'pregnancyLiterature' | 'iceBath' | 'orthopedicShoes' | 'sexualHealth' | 'glucose' | 'metabolicTest' | 'skinCare' | 'oralHealth' | 'oralAnxiety' | 'blueLightGlasses' | 'anxiety' | 'brainHealth' | 'babyMonitor' | 'compressionSocks' | 'compressionShorts' | 'waterPurification' | 'medSpa' | 'essentialOils' | 'sleepBuds' | 'latchLight' | 'nutritionist' | 'rairflow' | 'enduranceTraining' | 'hydration' | 'hairGrowth' | 'eD' | 'postureFitness' | 'childDevelopment' | 'adaptiveClothing' | 'adaptiveShoes' | 'sleepConsulting' | 'hairRemoval' | 'menopause' | 'maleFertility' | 'anxietyHealth' | 'bidets' | 'speechHealth' | 'artOfLiving' | 'breastMilk' | 'breathWork' | 'petSupport' | 'diapers' | 'gutSupplements' | 'smartWatch' | 'medicalBotox' | 'biomechanicalAssessment' | 'erectileReset' | 'femaleOrgasm' | 'pornAddiction' | 'memorySupport' | 'oralHealthMasticGum' | 'orthopedicSandals' | 'childDevelopmentAnxietySleep' | 'childDevelopmentAdjustment' | 'childDevelopmentBehavior' | 'childDevelopmentIdentity' | 'emnHealthMobility' — The name of the telehealth visit type.
        - `active` boolean, required — Determines if the product is active or not.
        - `upc_code` string, nullable — The upc code of the product.
        - `gtin` string, nullable — The gtin code of the product.
        - `reference_gtin` string, nullable — The GTIN of a private-label reference product, used to establish HSA/FSA eligibility.
        - `hsa_fsa_eligibility` 'not_eligible' | 'auto_substantiation' | 'private_label' | 'letter_of_medical_necessity' | 'prescription' | 'vision' | 'service' | 'pending', required — How a product qualifies for HSA/FSA payment, which determines the substantiation required to pay with a benefits card. `pending` means the product is still awaiting Flex's automatic classification, so its eligibility is not yet determined.
        - `test_mode` boolean, required — Whether the product is in test mode or not.
        - `metadata` object, nullable — Metadata associated with the product.
        - `url` string, nullable — The URL of the product.
        - `client_reference_id` string, nullable — An optional identifier for the product set by the client at creation time. Immutable after creation.
    - `created_at` string, required — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
    - `type` 'one_time' | 'recurring', required — Whether the price is charged once or on a recurring schedule.
    - `metadata` object, nullable — Metadata information for the price object
    - `hsa_fsa_eligibility` 'not_eligible' | 'auto_substantiation' | 'private_label' | 'letter_of_medical_necessity' | 'prescription' | 'vision' | 'service' | 'pending' — How a product qualifies for HSA/FSA payment, which determines the substantiation required to pay with a benefits card. `pending` means the product is still awaiting Flex's automatic classification, so its eligibility is not yet determined.
    - `test_mode` boolean, required — Whether the price is in test mode.

## Other responses

- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found
- `409` — Conflict
- `422` — Validation Error
- `429` — Too Many Requests

---

[API](https://skmtc.dev/withflex/apis/flex-api.md) · [All operations](https://skmtc.dev/withflex/apis/flex-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/withflex/flex-api/revisions/b1560fc2f199/schema)
