- Pricing plans through entitlements that assign privilege values for each plan level.
- Subscriptions through entitlement overrides that customize access for individual customers.
- Your feature defines what customers can access. For example, you create an API access feature.
- Privileges set specific limits and permissions within each feature. For example, you add a
rate_limitprivilege to the API access feature to control the number of requests. - When you add a feature to a plan, you set specific values for each privilege. These values are called entitlements. For example, you set the
rate_limitprivilege to 1,000 requests per day in your Basic plan and 100,000 requests per day in your Premium plan. - Subscription entitlements override plan entitlements for individual customers. For example, you set a specific customer’s
rate_limitto 50,000 requests per day even though they are on the Basic plan.
1. Understand feature configuration
Before you create a feature, you can plan these configuration details for your application. Then, you can make a POST call to the Create feature endpoint to send the information to PayPal. Feature identification- Name: Choose a human-readable identifier that describes the feature.
- Code: Create a unique identifier you use in API calls. Ensure this code is unique across all features in your account.
- Description: Provide details about what the feature enables or restricts.
- Name: Choose a human-readable identifier that describes the privilege.
- Code: Create a unique identifier for the privilege within the feature.
2. Create features
You can create features with or without privileges. Theprivileges[] array is optional - you can add privileges later by updating the feature.
Use a valid access token and make a POST call to the /v1/commerce/billing/features endpoint with all required request parameters.
On successful feature creation, the PayPal server returns the feature details including any privileges you created inline.
Feature without privileges
You can create a basic feature without any privileges.Feature with privileges
You can create a feature with associated privileges to enable fine-grained control. Basic privileges You can use basic privilege types when you want to define simple access controls for features.value_type to SELECT when you want customers to choose from a predefined list of options. When you use SELECT, you must also provide a config.select_options array with the available choices.
Request body parameters
| Parameter name | Description |
|---|---|
codeRequired, string | Unique identifier for the feature. Must be unique across all features in your account. |
namestring | Human-readable name for the feature. |
descriptionstring | Description of what functionality the feature provides or restricts. |
privileges[]array | Optional array of privilege configurations. Each privilege defines specific access controls within the feature. |
privileges[].codeRequired when privileges[] provided, string | Unique identifier for the privilege within the feature. |
privileges[].namestring | Human-readable name for the privilege. |
privileges[].value_typestring | Data type that this privilege accepts when assigned values in entitlements. Possible values: INTEGER - Numeric limitsBOOLEAN - On/off togglesSELECT - Predefined optionsSTRING - Text values |
privileges[].configRequired for SELECT type, object | Configuration object for SELECT type privileges. Contains select_options array with available choices. |
Response parameters
This section documents only the response parameters relevant for the next step. For the exhaustive list of response parameters, see API reference.
| Parameter name | Description and further action |
|---|---|
codestring | Unique code for the created feature. Use this code in future operations, such as managing the feature. |
privileges[].codestring | Unique code for each privilege within the feature. Use this code in future operations, such as deleting privileges. |
3. Manage features
You can update feature configurations when adding new privileges, modifying existing privilege settings, or changing feature descriptions. To review a feature’s current configuration, make a GET call to the /v1/commerce/billing/features/ endpoint.| Feature attribute | Updatable | Possible management options | Impact on existing customers |
|---|---|---|---|
| Feature name | Yes | Update feature details - modify display name | No impact - display only |
| Feature description | Yes | Update feature details - modify feature description | No impact - display only |
| Feature privileges | Yes | Update feature details - modify privilege configuration | Affects existing customer entitlements |
| Feature code | No | Feature cannot be modified - unique identifier remains permanent | N/A - cannot be modified |