Skip to main content
POST
/
features
curl --request POST \
  --url https://api-m.sandbox.paypal.com/v1/commerce/billing/features \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "code": "seats",
  "name": "Number of seats",
  "description": "Number of users allowed in the account",
  "privileges": [
    {
      "code": "max",
      "name": "Maximum seats",
      "value_type": "INTEGER"
    },
    {
      "code": "max_admins",
      "name": "Maximum admin users",
      "value_type": "INTEGER"
    },
    {
      "code": "root",
      "name": "Allow root user",
      "value_type": "BOOLEAN"
    }
  ]
}
'
{
"code": "seats",
"name": "Number of seats",
"description": "Number of users allowed in the account",
"privileges": [
{
"code": "max",
"name": "Maximum seats",
"value_type": "INTEGER"
},
{
"code": "max_admins",
"name": "Maximum admin users",
"value_type": "INTEGER"
},
{
"code": "root",
"name": "Allow root user",
"value_type": "BOOLEAN"
}
],
"created_at": "2025-01-28T10:00:00Z"
}

Authorizations

Authorization
string
header
required

Use the /v1/oauth2/token endpoint to obtain an access token and pass it as a Bearer token in the Authorization header.

Body

application/json

Request payload for creating a new feature. Features represent entitleable capabilities that can be assigned to customers through plans.

code
string
required

Unique identifier for the feature across your entire system. This code is used when creating entitlements and should represent the feature's function (e.g., 'seats', 'api-access', 'API_STORAGE'). Allows alphanumeric characters, underscores, and hyphens.

Maximum string length: 255
Example:

"USER-SEATS"

name
string

Customer-facing name of the feature that clearly describes what functionality or capability it provides. This name appears in billing interfaces and customer portals.

Maximum string length: 255
Example:

"Number of seats"

description
string

Detailed explanation of what this feature provides, its limitations, and how it affects the customer's experience.

Maximum string length: 600
Example:

"Number of users allowed in the account"

privileges
object[]

List of configurable privileges that define what aspects of this feature can be customized when creating entitlements. Each privilege can have different values assigned in different plans or subscriptions. Can be empty if the feature is simply on/off.

Response

Feature was successfully created and is now available for use in plan entitlements

Complete feature object returned by the API, including all properties and server-generated fields like timestamps

code
string
required

Unique identifier for the feature across your entire system. This code is used when creating entitlements and should represent the feature's function (e.g., 'seats', 'api-access', 'API_STORAGE'). Allows alphanumeric characters, underscores, and hyphens.

Maximum string length: 255
Example:

"USER-SEATS"

created_at
string<date-time>
required

Timestamp indicating when this feature was first created in the system. Used for audit and tracking purposes.

Example:

"2023-10-01T12:00:00Z"

name
string

Customer-facing name of the feature that clearly describes what functionality or capability it provides. This name appears in billing interfaces and customer portals.

Maximum string length: 255
Example:

"Number of seats"

description
string

Detailed explanation of what this feature provides, its limitations, and how it affects the customer's experience.

Maximum string length: 600
Example:

"Number of users allowed in the account"

privileges
object[]

Privileges associated with this feature. Can be empty