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

# Create a product

`POST /v1/sdk/products`

Creates a new product for the authenticated provider.

## Request body

- CreateProductRequest
  - `config` object
    - `deliveryMethod` string
    - `fulfillmentType` string
    - `validityPeriod` integer
  - `description` string
  - `imageUrl` string
  - `isManagedMcp` boolean
  - `isMcpPay` boolean
  - `metadata` object
  - `name` string, required
  - `productType` string
  - `taxBehavior` 'auto' | 'inclusive' | 'exclusive'

## Response `201`

Product created successfully

- SdkProductResponse
  - `balance` number, required — Product balance in cents
  - `config` ProductConfigDto
    - `deliveryMethod` string — Delivery method
    - `fulfillmentType` string — Fulfillment type
    - `validityPeriod` number — Validity period in days
  - `createdAt` string, required — Creation timestamp
  - `description` string — Product description
  - `imageUrl` string — URL to the product image
  - `isManagedMcp` boolean, required — Whether this product uses the Managed MCP integration (SolvaPay reverse proxy)
  - `isMcpPay` boolean, required — Deprecated alias of isManagedMcp. Prefer isManagedMcp; still emitted for wire compatibility.
  - `mcp` object — MCP linkage details for MCP-enabled products
  - `metadata` object — Arbitrary key-value metadata
  - `name` string, required — Product name
  - `plans` SdkPlanResponse[] — Plans associated with this product
    - `createdAt` string, required — Creation timestamp
    - `currency` string, required — Currency code (ISO 4217)
    - `currencySymbol` string — Currency symbol
    - `description` string — Plan description
    - `features` object — Plan features
    - `isActive` boolean, required — Whether the plan is active
    - `name` string — Plan name
    - `options` object[], required — Composable pricing options (money as integer minor units)
    - `price` number — Derived headline price in minor units (base or one-time charge)
    - `reference` string, required — Plan reference
    - `requiresPayment` boolean, required — Whether payment is required
    - `status` string, required — Plan status
    - `type` 'recurring' | 'one-time' | 'usage-based' | 'hybrid', required — Derived plan type (read from options)
    - `updatedAt` string, required — Last update timestamp
  - `productType` string — Free-form product type
  - `reference` string, required — Product reference
  - `status` string, required — Product status
  - `totalTransactions` number, required — Total number of transactions
  - `updatedAt` string, required — Last update timestamp

## Other responses

- `400` — Missing required fields or validation error

---

[API](https://skmtc.net/solvapay/apis/solvapay-rest-api.md) · [All operations](https://skmtc.net/solvapay/apis/solvapay-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/solvapay/solvapay-rest-api/revisions/d29ab7373802/schema)
