On this page
No Headings
Last updated: June 10, 2026
When you set up your subscription plan, you can choose from four different pricing models:
A fixed-pricing plan is a frequency-based subscription plan that charges customers a fixed amount at a fixed frequency.
Sample use cases:
The following sample request shows how to create a fixed pricing plan. Use this sample to adjust your code when you create a plan.
API endpoint used: Create plan
curl -v –X POST https://api-m.sandbox.paypal.com/v1/billing/plans \
-H "PayPal-Auth-Assertion: AUTH-ASSERTION" \
-H "Accept: application/json" \
-H "Authorization: Bearer ACCESS-TOKEN" \
-H "Content-Type: application/json" \
-H "PayPal-Request-Id: PLAN-18062020-001" \
-d '{
"name": "Premium Music Plus",
"description": "A premium plan with music download feature",
"product_id": "PROD-5RN21878H3527870P",
"billing_cycles": [{
"frequency": {
"interval_unit": "MONTH",
"interval_count": 1
},
"tenure_type": "REGULAR",
"sequence": 1,
"total_cycles": 0,
"pricing_scheme": {
"fixed_price": {
"value": "5",
"currency_code": "USD"
}
}
}],
"payment_preferences": {
"auto_bill_outstanding": true,
"payment_failure_threshold": 1
}
}'A quantity-based pricing plan charges subscribers by the quantity of goods or services to which they subscribed.
Sample use cases:
During subscription creation, the subscriber chooses a quantity. That quantity determines the amount charged every regular billing cycle.
Note: Subscribers can request an update to the quantity as things change. The new quantity and definition determine the new price that's applicable to subsequent billing cycles.
The following sample request shows how to create a quantity-based pricing plan. Use this sample to adjust your code when you create a plan.
In this sample, the quantity_supported parameter indicates that this plan is a quantity-based plan.
API endpoint used: Create plan
curl -v –X POST https://api-m.sandbox.paypal.com/v1/billing/plans \
-H "PayPal-Auth-Assertion: AUTH-ASSERTION" \
-H "Accept: application/json" \
-H "Authorization: Bearer ACCESS-TOKEN" \
-H "Content-Type: application/json" \
-H "PayPal-Request-Id: PLAN-18062020-001" \
-d '{
"name": "Classic treat",
"description": "500gm dog food per bag",
"product_id": "PROD-6DN21878H3529990P",
"billing_cycles": [{
"frequency": {
"interval_unit": "WEEK",
"interval_count": 1
},
"tenure_type": "REGULAR",
"sequence": 1,
"total_cycles": 0,
"pricing_scheme": {
"fixed_price": {
"value": "9",
"currency_code": "USD"
}
}
}],
"quantity_supported": true,
"payment_preferences": {
"auto_bill_outstanding": true,
"payment_failure_threshold": 1
}
}'A volume-based pricing model defines the subscription's price based on the price per unit of the number of product units within a specified range.
Sample use cases:
A merchant offers a volume-based monthly plan that provides software licenses to businesses using these defined fees:
| Number of software licenses | Price per license (per month) |
|---|---|
| 1-5 | $15 |
| 6-10 | $14 |
| 11-15 | $13 |
| 16-20 | $12 |
| 21 and beyond | $11 |
During subscription creation, the subscriber chooses a quantity. That quantity determines the amount charged every regular billing cycle.
Subscription 1
Subscription 2
A merchant offers a volume-based monthly plan that provides tech support and assistance to relevant businesses with the using these defined fees:
| Number of technicians (Tech Support) | Price per technician (per month) |
|---|---|
| 1-10 | $30 |
| 11-20 | $29 |
| 21-30 | $28 |
| 31 and beyond | $27.5 |
Subscription 1
Subscription 2
Note: Subscribers can request an update to the quantity as things change. You can also customize the price for a subscriber or plan level at any time. The new quantity and definition determine the new price that's applicable to subsequent billing cycles.
The following sample request shows how to create a volume-based pricing plan. Use this sample to adjust your code when you create a plan.
In this sample, the pricing_model and quantity_supported parameters indicate that this plan is a volume-based plan.
API endpoint used: Create plan
curl -v –X POST https://api-m.sandbox.paypal.com/v1/billing/plans \
-H "PayPal-Auth-Assertion: AUTH-ASSERTION" \
-H "Accept: application/json" \
-H "Authorization: Bearer ACCESS-TOKEN" \
-H "Content-Type: application/json" \
-H "PayPal-Request-Id: PLAN-18062020-001" \
-d '{
"name": "Standard Plan",
"description": "Volume based Software Licenses",
"product_id": "PROD-6DN21878H3529990P",
"billing_cycles": [{
"frequency": {
"interval_unit": "MONTH",
"interval_count": 1
},
"tenure_type": "REGULAR",
"sequence": 1,
"total_cycles": 0,
"pricing_scheme": {
"pricing_model": "VOLUME",
"tiers": [
{
"starting_quantity": "1",
"ending_quantity": "5",
"amount": {
"value": "15",
"currency_code": "USD"
}
},
{
"starting_quantity": "6",
"ending_quantity": "10",
"amount": {
"value": "14",
"currency_code": "USD"
}
},
{
"starting_quantity": "11",
"ending_quantity": "15",
"amount": {
"value": "13",
"currency_code": "USD"
}
},
{
"starting_quantity": "16",
"ending_quantity": "20",
"amount": {
"value": "12",
"currency_code": "USD"
}
},
{
"starting_quantity": "21",
"amount": {
"value": "11",
"currency_code": "USD"
}
}
]
}
}],
"quantity_supported": true,
"payment_preferences": {
"auto_bill_outstanding": true,
"payment_failure_threshold": 1
}
}'A tier-based pricing model defines the subscription's price and any price changes based on the quantity of product units within a tier.
Sample use cases:
A merchant offers a tiered-based monthly plan that provides software licenses to businesses using these defined fees:
| Number of software licenses | Price per license (per month) |
|---|---|
| 1-5 | $15 |
| 6-10 | $14 |
| 11-15 | $13 |
| 16-20 | $12 |
| 21 and beyond | $11 |
During subscription creation, the subscriber chooses a quantity. That quantity determines the amount charged every regular billing cycle.
Subscription 1
Subscription 2
A merchant offers a tiered-based monthly plan that provides tech support and assistance to relevant businesses with the following fee schedule:
| Number of technicians (Tech Support) | Price per technician (per month) |
|---|---|
| 1-10 | $30 |
| 11-20 | $29 |
| 21-30 | $28 |
| 31 and beyond | $27.5 |
During subscription creation, the subscriber chooses a quantity. That quantity determines the amount charged every regular billing cycle.
Subscription 1
Subscription 2
Note: Subscribers can request an update to the quantity as things change. You can also customize the price for a subscriber or plan level at any time. The new quantity and definition determine the new price that's applicable to subsequent billing cycles.
The following sample request shows how to create a tiered-based pricing plan. Use this sample to adjust your code when you create a plan.
In this sample, the pricing_model and quantity_supported parameters indicate that this plan is a tiered-based plan.
API endpoint used: Create plan
curl -v –X POST https://api-m.sandbox.paypal.com/v1/billing/plans \
-H "PayPal-Auth-Assertion: AUTH-ASSERTION" \
-H "Accept: application/json" \
-H "Authorization: Bearer ACCESS-TOKEN" \
-H "Content-Type: application/json" \
-H "PayPal-Request-Id: PLAN-18062020-001" \
-d '{
"name": "Platinum Plan",
"description": "Tiered based pricing for technical support",
"product_id": "PROD-6DN21878H3529990P",
"billing_cycles": [{
"frequency": {
"interval_unit": "MONTH",
"interval_count": 1
},
"tenure_type": "REGULAR",
"sequence": 1,
"total_cycles": 0,
"pricing_scheme": {
"pricing_model": "TIERED",
"tiers": [
{
"starting_quantity": "1",
"ending_quantity": "10",
"amount": {
"value": "30",
"currency_code": "USD"
}
},
{
"starting_quantity": 11",
"ending_quantity": "20",
"amount": {
"value": "29",
"currency_code": "USD"
}
},
{
"starting_quantity": "21",
"ending_quantity": "30",
"amount": {
"value": "28",
"currency_code": "USD"
}
},
{
"starting_quantity": "31",
"amount": {
"value": "27.5",
"currency_code": "USD"
}
}
]
}
}],
"quantity_supported": true,
"payment_preferences": {
"auto_bill_outstanding": true,
"payment_failure_threshold": 1
}
}'
## See also
* Use the [Plans resource group](/api/subscriptions/v1#plans) of the Subscriptions REST API to manage plans, including: updating pricing, updating the plan, and deactivating the plan.
export const _frontmatter = {"title":"Pricing plans","contentType":"Docs","keywords":"subscriptions, pricing plans","productStatus":"Current","apiVersion":"v1","date":"2022-04-06T23:06:12.000Z"}