---
title: "creates a new product"
method: POST
path: "/v1/api/products"
tags: ["Products"]
---

# creates a new product

`POST /v1/api/products`

## Request body

- CreateProductRequest
  - `description` string — Description of the product. This will be passed as the description when creating the charge
  - `gateway_account_id` string, required — gateway account id of the Gateway Account as identified by adminusers.
  - `language` string — The language pages for the product will be in. If not provided, defaults to 'en'. Allowed values 'en', 'cy'
  - `metadata` object
  - `name` string, required — Name of the product. This will be passed as the name when creating the charge
  - `pay_api_token` string, required — valid api token for the gateway account of above service which this product takes payments for
  - `price` integer — Price for the product in pence. This will be passed as the amount when creating charge. Mandatory for Non-ADHOC and Non-AGENT_INITIATED_MOTO products
  - `product_name_path` string — Product Name Path part of Product Path. Required for Adhoc type only.
  - `reference_enabled` boolean — Flag to set whether payment reference is auto generated or entered by user. True means that user enters reference at the beginning of a user journey.
  - `reference_hint` string — Hint text for reference entry text box. Optional field when reference enabled. Ignored if reference_enabled is set to false.
  - `reference_label` string — Only required if reference_enabled is true. Label for the reference entry text box.
  - `return_url` string — (https only) where to redirect to upon completion of a payment. If not provided, pay-products will generate a default url to itself when creating a charge
  - `service_name_path` string — Service Name Path part of Product Path. Required for Adhoc type only.
  - `type` 'DEMO' | 'PROTOTYPE' | 'ADHOC' | 'AGENT_INITIATED_MOTO', required — Type of the product

## Response `201`

OK

- Product
  - `_links` Link[]
    - `href` string
    - `method` string
    - `rel` 'self' | 'pay' | 'next' | 'friendly'
  - `amount_hint` string
  - `date_created` string, date-time
  - `description` string
  - `external_id` string
  - `gateway_account_id` integer
  - `language` 'en' | 'cy'
  - `metadata` object
  - `name` string
  - `pay_api_token` string
  - `price` integer
  - `product_name_path` string
  - `reference_enabled` boolean
  - `reference_hint` string
  - `reference_label` string
  - `require_captcha` boolean
  - `return_url` string
  - `service_name_path` string
  - `status` 'ACTIVE' | 'INACTIVE'
  - `type` 'DEMO' | 'PROTOTYPE' | 'ADHOC' | 'AGENT_INITIATED_MOTO'

## Other responses

- `400` — Invalid payload
- `409` — A product with product_name_path already exists

## Changes

- **2025-07-28** `521f70c3f2d9` — 1 info
  - added the optional property `date_created` to the response with the `201` status
- **2023-01-04** `7a993ebe4a85` — 1 info
  - added the optional property `pay_api_token` to the response with the `201` status
- **2022-08-26** `16f0bb4aa3cf` — 1 warning
  - removed the optional property `new_payment_link_journey_enabled` from the response with the `201` status
- **2022-04-05** `9ffbc14fb6d4` — 1 info
  - added the optional property `amount_hint` to the response with the `201` status

[Change history](https://skmtc.dev/government-digital-service/apis/products-api/changes/v1/api/products/post.md)

---

[API](https://skmtc.dev/government-digital-service/apis/products-api.md) · [All operations](https://skmtc.dev/government-digital-service/apis/products-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/government-digital-service/products-api/revisions/521f70c3f2d9/schema)
