---
title: "Changes to Create a plan for a product"
method: POST
path: "/v1/sdk/products/{productRef}/plans"
---

# Changes to Create a plan for a product

`POST /v1/sdk/products/{productRef}/plans`

> Every recorded change to this operation, newest first.

## Timeline

Changed in 18 of 33 revisions.

- **2026-09-30** `e13ee57d07a6`: 1 breaking, 1 info
- **2026-09-28** `e38277a25e0c`: 1 breaking, 1 info
- **2026-09-18** `aacdf8ae7816`: 1 breaking, 1 info
- **2026-08-09** `b6df401ff4cc`: 1 breaking, 1 info
- **2026-08-05** `032545ac8d13`: 3 breaking, 30 warning, 1 info
- **2026-07-30** `8578b7536a9f`: 3 breaking, 8 warning, 9 info
- **2026-07-17** `bbc2ff2bc849`: 15 breaking, 22 warning, 5 info
- **2026-07-04** `a30b6aef464d`: 1 breaking, 2 info
- **2026-04-14** `c6f97c4a5492`: 1 breaking, 3 warning, 7 info
- **2026-04-14** `052cc028fdfa`: 1 breaking, 1 info
- **2026-04-14** `88abf6f50f11`: 3 warning, 4 info
- **2026-04-09** `7b327a22e3cb`: 2 breaking, 2 warning, 3 info
- **2026-04-07** `d69c95d790d2`: 100 breaking, 3 warning, 8 info
- **2026-03-25** `e0583a41987c`: 1 breaking, 3 warning, 25 info
- **2026-03-16** `9fd92a720973`: 12 breaking, 14 warning, 3 info
- **2026-03-16** `c38fce7d1ce2`: 2 warning, 6 info
- **2026-03-14** `0e1cded2ee5d`: 2 breaking, 10 warning, 4 info
- **2026-02-27** `9079f361f51c`: 1 info

## Changes

- **2026-09-30** `e13ee57d07a6`: 1 breaking, 1 info
  - removed `subschema #4, subschema #6, subschema #8` from the `options/items/` request property `oneOf` list
  - added `subschema #4, subschema #6` to the `options/items/` request property `oneOf` list
- **2026-09-28** `e38277a25e0c`: 1 breaking, 1 info
  - removed the enum value `top_up` of the request property `options/items/oneOf[subschema #4]/onExceed`
  - added the new `draw_credits` enum value to the request property `options/items/oneOf[subschema #4]/onExceed`
- **2026-09-18** `aacdf8ae7816`: 1 breaking, 1 info
  - removed `subschema #6, subschema #7` from the `options/items/` request property `oneOf` list
  - added `subschema #6` to the `options/items/` request property `oneOf` list
- **2026-08-09** `b6df401ff4cc`: 1 breaking, 1 info
  - removed `subschema #2, subschema #10, subschema #11` from the `options/items/` request property `oneOf` list
  - added `subschema #2, subschema #10, subschema #11` to the `options/items/` request property `oneOf` list
- **2026-08-05** `032545ac8d13`: 3 breaking, 30 warning, 1 info
  - added the new required request property `options`
  - the `currency` request property's minLength was increased from `0` to `3`
  - removed the required property `hidden` from the response with the `201` status
  - the `currency` request property's maxLength was set to `3`
  - removed the request property `billingCycle`
  - removed the request property `billingModel`
  - removed the request property `billingStrategy`
  - removed the request property `creditsPerUnit`
  - removed the request property `default`
  - removed the request property `freeUnits`
  - removed the request property `fulfillment`
  - removed the request property `hidden`
  - removed the request property `limit`
  - removed the request property `limits`
  - removed the request property `overagePolicy`
  - removed the request property `price`
  - removed the request property `pricingOptions`
  - removed the request property `returnPolicy`
  - removed the request property `type`
  - removed the request property `usageTracking`
  - removed the request property `warranty`
  - removed the optional property `billingCycle` from the response with the `201` status
  - removed the optional property `billingModel` from the response with the `201` status
  - removed the optional property `creditsPerUnit` from the response with the `201` status
  - removed the optional property `freeUnits` from the response with the `201` status
  - removed the optional property `limit` from the response with the `201` status
  - removed the optional property `limits` from the response with the `201` status
  - removed the optional property `measures` from the response with the `201` status
  - removed the optional property `meterRef` from the response with the `201` status
  - removed the optional property `pricingOptions` from the response with the `201` status
  - removed the optional property `rolloverUnusedUnits` from the response with the `201` status
  - removed the optional property `setupFee` from the response with the `201` status
  - removed the optional property `trialDays` from the response with the `201` status
  - added the required property `options` to the response with the `201` status
- **2026-07-30** `8578b7536a9f`: 3 breaking, 8 warning, 9 info
  - the response property `currency` became optional for the status `201`
  - the response property `price` became optional for the status `201`
  - the response property `requiresPayment` became optional for the status `201`
  - removed the request property `autoRenew`
  - removed the request property `basePrice`
  - removed the request property `cancellationNoticeDays`
  - removed the request property `prorationPolicy`
  - removed the request property `rolloverUnusedUnits`
  - removed the request property `setupFee`
  - removed the request property `trialDays`
  - removed the optional property `taxBehavior` from the response with the `201` status
  - the request property `billingStrategy` became optional
  - the request property `features` became optional
  - the request property `fulfillment` became optional
  - the request property `limits` became optional
  - the request property `metadata` became optional
  - the request property `overagePolicy` became optional
  - the request property `returnPolicy` became optional
  - the request property `usageTracking` became optional
  - the request property `warranty` became optional
- **2026-07-17** `bbc2ff2bc849`: 15 breaking, 22 warning, 5 info
  - added the new required request property `billingStrategy`
  - added the new required request property `fulfillment`
  - added the new required request property `overagePolicy`
  - added the new required request property `prorationPolicy`
  - added the new required request property `returnPolicy`
  - added the new required request property `warranty`
  - the `name` request property's minLength was increased from `1` to `2`
  - added the pattern `^[\p{L}\p{N} .,'"&\/()+:\-]*$` to the request property `name`
  - added the pattern `^[\p{L}\p{N}\s.,'"&\/()+:%;?!@#_[\]\-]*$` to the request property `description`
  - the `accessExpiryDays` request property type changed from `number` to `integer`
  - the `creditsPerUnit` request property type changed from `number` to `integer`
  - the `freeUnits` request property type changed from `number` to `integer`
  - the `limit` request property type changed from `number` to `integer`
  - the `maxActiveUsers` request property type changed from `number` to `integer`
  - the `trialDays` request property type changed from `number` to `integer`
  - the `price` request property's exclusiveMaximum was set to `false`
  - the `accessExpiryDays` request property's exclusiveMinimum was set to `false`
  - the `basePrice` request property's exclusiveMinimum was set to `false`
  - the `creditsPerUnit` request property's exclusiveMinimum was set to `false`
  - the `freeUnits` request property's exclusiveMinimum was set to `false`
  - the `limit` request property's exclusiveMinimum was set to `false`
  - the `maxActiveUsers` request property's exclusiveMinimum was set to `false`
  - the `price` request property's exclusiveMinimum was set to `false`
  - the `setupFee` request property's exclusiveMinimum was set to `false`
  - the `trialDays` request property's exclusiveMinimum was set to `false`
  - the `description` request property's maxLength was set to `500`
  - the `name` request property's maxLength was set to `200`
  - the `price` request property's max was set to `10000000.00`
  - the `accessExpiryDays` request property's min was set to `0.00`
  - the `basePrice` request property's min was set to `0.00`
  - the `creditsPerUnit` request property's min was set to `1.00`
  - the `freeUnits` request property's min was set to `0.00`
  - the `limit` request property's min was set to `0.00`
  - the `maxActiveUsers` request property's min was set to `0.00`
  - the `price` request property's min was set to `0.00`
  - the `setupFee` request property's min was set to `0.00`
  - the `trialDays` request property's min was set to `0.00`
  - added the new optional request property `cancellationNoticeDays`
  - added the new optional request property `hidden`
  - added the new optional request property `taxBehavior`
  - …2 more
- **2026-07-04** `a30b6aef464d`: 1 breaking, 2 info
  - the request property `name` became required
  - added the new optional request property `pricingOptions`
  - added the optional property `pricingOptions` to the response with the `201` status
- **2026-04-14** `c6f97c4a5492`: 1 breaking, 3 warning, 7 info
  - added the new required request property `usageTracking`
  - removed the request property `pricePerUnit`
  - removed the optional property `pricePerUnit` from the response with the `201` status
  - added the new `hybrid` enum value to the `type` response property for the response status `201`
  - added the new optional request property `autoRenew`
  - added the new optional request property `basePrice`
  - added the new optional request property `creditsPerUnit`
  - added the new optional request property `rolloverUnusedUnits`
  - added the new optional request property `setupFee`
  - added the new optional request property `trialDays`
  - added the optional property `creditsPerUnit` to the response with the `201` status
- **2026-04-14** `052cc028fdfa`: 1 breaking, 1 info
  - removed the required property `id` from the response with the `201` status
  - added the optional property `meterRef` to the response with the `201` status
- **2026-04-14** `88abf6f50f11`: 3 warning, 4 info
  - removed the request property `creditsPerUnit`
  - removed the optional property `creditsPerUnit` from the response with the `201` status
  - removed the optional property `meterRef` from the response with the `201` status
  - added the new optional request property `pricePerUnit`
  - added the new `hybrid` enum value to the request property `type`
  - added the optional property `pricePerUnit` to the response with the `201` status
  - added the required property `id` to the response with the `201` status
- **2026-04-09** `7b327a22e3cb`: 2 breaking, 2 warning, 3 info
  - removed the enum value `hybrid` of the request property `type`
  - removed the required property `id` from the response with the `201` status
  - removed the request property `pricePerUnit`
  - removed the optional property `pricePerUnit` from the response with the `201` status
  - added the new optional request property `creditsPerUnit`
  - added the optional property `creditsPerUnit` to the response with the `201` status
  - added the optional property `meterRef` to the response with the `201` status
- **2026-04-07** `d69c95d790d2`: 100 breaking, 3 warning, 8 info
  - the request property `features` became required
  - the request property `limits` became required
  - the request property `metadata` became required
  - removed the enum value `AED` of the request property `currency`
  - removed the enum value `AFN` of the request property `currency`
  - removed the enum value `ALL` of the request property `currency`
  - removed the enum value `AMD` of the request property `currency`
  - removed the enum value `AOA` of the request property `currency`
  - removed the enum value `AUD` of the request property `currency`
  - removed the enum value `AZN` of the request property `currency`
  - removed the enum value `BAM` of the request property `currency`
  - removed the enum value `BDT` of the request property `currency`
  - removed the enum value `BGN` of the request property `currency`
  - removed the enum value `BIF` of the request property `currency`
  - removed the enum value `BWP` of the request property `currency`
  - removed the enum value `BYN` of the request property `currency`
  - removed the enum value `CAD` of the request property `currency`
  - removed the enum value `CHF` of the request property `currency`
  - removed the enum value `CNY` of the request property `currency`
  - removed the enum value `CVE` of the request property `currency`
  - removed the enum value `CZK` of the request property `currency`
  - removed the enum value `DJF` of the request property `currency`
  - removed the enum value `DKK` of the request property `currency`
  - removed the enum value `DZD` of the request property `currency`
  - removed the enum value `EGP` of the request property `currency`
  - removed the enum value `ERN` of the request property `currency`
  - removed the enum value `ETB` of the request property `currency`
  - removed the enum value `EUR` of the request property `currency`
  - removed the enum value `GBP` of the request property `currency`
  - removed the enum value `GEL` of the request property `currency`
  - removed the enum value `GMD` of the request property `currency`
  - removed the enum value `GNF` of the request property `currency`
  - removed the enum value `HRK` of the request property `currency`
  - removed the enum value `HUF` of the request property `currency`
  - removed the enum value `IDR` of the request property `currency`
  - removed the enum value `ILS` of the request property `currency`
  - removed the enum value `INR` of the request property `currency`
  - removed the enum value `IQD` of the request property `currency`
  - removed the enum value `IRR` of the request property `currency`
  - removed the enum value `ISK` of the request property `currency`
  - …71 more
- **2026-03-25** `e0583a41987c`: 1 breaking, 3 warning, 25 info
  - the response's body type changed from no type to `object` for status `201`
  - removed the request property `name`
  - removed the request property `pricePerUnit`
  - removed the request property `quota`
  - added the optional property `accessExpiryDays` to the response with the `201` status
  - added the optional property `billingCycle` to the response with the `201` status
  - added the optional property `billingModel` to the response with the `201` status
  - added the optional property `currencySymbol` to the response with the `201` status
  - added the optional property `features` to the response with the `201` status
  - added the optional property `freeUnits` to the response with the `201` status
  - added the optional property `limit` to the response with the `201` status
  - added the optional property `limits` to the response with the `201` status
  - added the optional property `maxActiveUsers` to the response with the `201` status
  - added the optional property `measures` to the response with the `201` status
  - added the optional property `pricePerUnit` to the response with the `201` status
  - added the optional property `rolloverUnusedUnits` to the response with the `201` status
  - added the optional property `setupFee` to the response with the `201` status
  - added the optional property `trialDays` to the response with the `201` status
  - added the required property `createdAt` to the response with the `201` status
  - added the required property `currency` to the response with the `201` status
  - added the required property `id` to the response with the `201` status
  - added the required property `isActive` to the response with the `201` status
  - added the required property `isFreeTier` to the response with the `201` status
  - added the required property `price` to the response with the `201` status
  - added the required property `reference` to the response with the `201` status
  - added the required property `requiresPayment` to the response with the `201` status
  - added the required property `status` to the response with the `201` status
  - added the required property `type` to the response with the `201` status
  - added the required property `updatedAt` to the response with the `201` status
- **2026-03-16** `9fd92a720973`: 12 breaking, 14 warning, 3 info
  - the response's body type changed from `object` to no type for status `201`
  - removed the required property `createdAt` from the response with the `201` status
  - removed the required property `currency` from the response with the `201` status
  - removed the required property `id` from the response with the `201` status
  - removed the required property `isActive` from the response with the `201` status
  - removed the required property `isFreeTier` from the response with the `201` status
  - removed the required property `price` from the response with the `201` status
  - removed the required property `reference` from the response with the `201` status
  - removed the required property `requiresPayment` from the response with the `201` status
  - removed the required property `status` from the response with the `201` status
  - removed the required property `type` from the response with the `201` status
  - removed the required property `updatedAt` from the response with the `201` status
  - removed the optional property `accessExpiryDays` from the response with the `201` status
  - removed the optional property `billingCycle` from the response with the `201` status
  - removed the optional property `billingModel` from the response with the `201` status
  - removed the optional property `currencySymbol` from the response with the `201` status
  - removed the optional property `features` from the response with the `201` status
  - removed the optional property `freeUnits` from the response with the `201` status
  - removed the optional property `limit` from the response with the `201` status
  - removed the optional property `limits` from the response with the `201` status
  - removed the optional property `maxActiveUsers` from the response with the `201` status
  - removed the optional property `measures` from the response with the `201` status
  - removed the optional property `pricePerUnit` from the response with the `201` status
  - removed the optional property `rolloverUnusedUnits` from the response with the `201` status
  - removed the optional property `setupFee` from the response with the `201` status
  - removed the optional property `trialDays` from the response with the `201` status
  - added the new optional request property `name`
  - added the new optional request property `pricePerUnit`
  - added the new optional request property `quota`
- **2026-03-16** `c38fce7d1ce2`: 2 warning, 6 info
  - removed the request property `meterId`
  - removed the optional property `meterId` from the response with the `201` status
  - added the optional property `billingModel` to the response with the `201` status
  - added the optional property `measures` to the response with the `201` status
  - added the optional property `pricePerUnit` to the response with the `201` status
  - added the optional property `rolloverUnusedUnits` to the response with the `201` status
  - added the optional property `setupFee` to the response with the `201` status
  - added the optional property `trialDays` to the response with the `201` status
- **2026-03-14** `0e1cded2ee5d`: 2 breaking, 10 warning, 4 info
  - removed the enum value `hybrid` of the request property `type`
  - removed the enum value `usage-based` of the request property `type`
  - removed the request property `basePrice`
  - removed the request property `billingModel`
  - removed the request property `description`
  - removed the request property `name`
  - removed the request property `pricePerUnit`
  - removed the request property `quota`
  - removed the request property `rolloverUnusedUnits`
  - removed the request property `setupFee`
  - removed the request property `trialDays`
  - removed the request property `unit`
  - added the new optional request property `limit`
  - added the new optional request property `meterId`
  - added the media type `application/json` for the response with the status `201`
  - added the non-success response with the status `404`
- **2026-02-27** `9079f361f51c`: 1 info
  - endpoint added

---

[Operation](https://skmtc.dev/solvapay/apis/solvapay-rest-api/docs/v1/sdk/products/:productRef/plans/post.md) - [API](https://skmtc.dev/solvapay/apis/solvapay-rest-api.md) - [Page](https://skmtc.dev/solvapay/apis/solvapay-rest-api/changes/v1/sdk/products/:productRef/plans/post)
