Deprecation notice: TheYou use billing plans and billing agreements to create an agreement for a recurring PayPal or debit card payment for goods or services./v1/payments/billing-plans
endpoints are deprecated. Use the/v1/billing/plans
endpoints instead. For details, see Subscriptions Integration.
state
to ACTIVE
.Important: The use of the PayPal REST /payments
APIs to accept credit card payments is restricted. Instead, you can accept credit card payments with Braintree Direct.
Shows details for a billing plan, by ID.
A successful request returns the HTTP 200 OK
status code and a JSON response body that shows plan details.
curl -v -X GET https://api-m.sandbox.paypal.com/v1/payments/billing-plans/P-7DC96732KA7763723UOPKETA \ -H 'Authorization: Bearer access_token6V7rbVwmlM1gFZKW_8QtzWXqpcwQ6T5vhEGYNJDAAdn3paCgRpdeMdVYmWzgbKSsECednupJ3Zx5Xd-g'
{- "id": "P-7DC96732KA7763723UOPKETA",
- "state": "CREATED",
- "name": "Plan with Regular and Trial Payment Definitions",
- "description": "Plan with regular and trial payment definitions.",
- "type": "FIXED",
- "payment_definitions": [
- {
- "id": "PD-03223056L66578712UOPKETA",
- "name": "Trial payment definition",
- "type": "TRIAL",
- "frequency": "WEEK",
- "amount": {
- "currency": "USD",
- "value": "9.19"
}, - "charge_models": [
- {
- "id": "CHM-6JY06508UT8026625UOPKETA",
- "type": "TAX",
- "amount": {
- "currency": "USD",
- "value": "2"
}
}, - {
- "id": "CHM-7XN63093LF858372XUOPKETA",
- "type": "SHIPPING",
- "amount": {
- "currency": "USD",
- "value": "1"
}
}
], - "cycles": "2",
- "frequency_interval": "5"
}, - {
- "id": "PD-0MF87809KK310750TUOPKETA",
- "name": "Regular payment definition",
- "type": "REGULAR",
- "frequency": "MONTH",
- "amount": {
- "currency": "USD",
- "value": "100"
}, - "charge_models": [
- {
- "id": "CHM-1V202179WT9709019UOPKETA",
- "type": "TAX",
- "amount": {
- "currency": "USD",
- "value": "12"
}
}, - {
- "id": "CHM-89H01708244053321UOPKETA",
- "type": "SHIPPING",
- "amount": {
- "currency": "USD",
- "value": "10"
}
}
], - "cycles": "12",
- "frequency_interval": "2"
}
], - "merchant_preferences": {
- "setup_fee": {
- "currency": "USD",
- "value": "1"
}, - "max_fail_attempts": "0",
- "auto_bill_amount": "YES",
- "initial_fail_amount_action": "CONTINUE"
}, - "create_time": "2017-06-16T07:40:20.940Z",
- "update_time": "2017-06-16T07:40:20.940Z",
- "links": [
- {
- "rel": "self",
- "method": "GET"
}
]
}
Updates fields in a billing plan, by ID. In the JSON request body, include a patch object that specifies the operation to perform, one or more fields to update, and a new value for each updated field.
op required | string The operation.
| ||||||||||||||||||||||||||
path | string The JSON Pointer to the target document location at which to complete the operation. | ||||||||||||||||||||||||||
value | object (Patch Value) The value to apply. The | ||||||||||||||||||||||||||
from | string The JSON Pointer to the target document location from which to move the value. Required for the |
A successful request returns the HTTP 200 OK
status code with no JSON response body.
[- {
- "op": "replace",
- "path": "/",
- "value": {
- "state": "ACTIVE"
}
}
]
Creates a billing plan. In the JSON request body, include the plan details. A plan must include at least one regular payment definition and, optionally, a trial payment definition. Each payment definition specifies a billing period, which determines how often and for how long the customer is charged. A plan can specify a fixed or infinite number of payment cycles. A payment definition can optionally specify shipping fee and tax amounts. The default state of a new plan is CREATED
. Before you can create an agreement from a plan, you must activate the plan by updating its state
to ACTIVE
.
A successful request returns the HTTP 201 Created
status code and a JSON response body that shows plan details.
{- "name": "Simple Plan",
- "description": "Plan with one regular payment definition, minimal merchant preferences, and no shipping fees or tax.",
- "type": "FIXED",
- "payment_definitions": [
- {
- "name": "Regular payment definition",
- "type": "REGULAR",
- "frequency": "MONTH",
- "frequency_interval": "2",
- "amount": {
- "value": "100",
- "currency": "USD"
}, - "cycles": "12"
}
], - "merchant_preferences": {
}
}
{- "id": "P-1TV69435N82273154UPWDU4I",
- "state": "CREATED",
- "name": "Simple Plan",
- "description": "Plan with one regular payment definition, minimal merchant preferences, and no shipping fees or tax.",
- "type": "FIXED",
- "payment_definitions": [
- {
- "id": "PD-62U12008P21526502UPWDU4I",
- "name": "Regular payment definition",
- "type": "REGULAR",
- "frequency": "MONTH",
- "amount": {
- "currency": "USD",
- "value": "100"
}, - "charge_models": [ ],
- "cycles": "12",
- "frequency_interval": "2"
}
], - "merchant_preferences": {
- "setup_fee": {
- "currency": "USD",
- "value": "0"
}, - "max_fail_attempts": "0",
- "auto_bill_amount": "NO",
- "initial_fail_amount_action": "CONTINUE"
}, - "create_time": "2017-06-16T09:05:06.161Z",
- "update_time": "2017-06-16T09:05:06.161Z",
- "links": [
- {
- "rel": "self",
- "method": "GET"
}
]
}
Lists billing plans. To filter the plans that appear in the response, specify one or more optional query and pagination parameters.
A successful request returns the HTTP 200 OK
status code and a JSON response body that lists plans with details.
curl -v -X GET https://api-m.sandbox.paypal.com/v1/payments/billing-plans?page_size=3&status=ALL&page_size=2&page=1&total_required=yes \ -H 'Authorization: Bearer access_token6V7rbVwmlM1gFZKW_8QtzWXqpcwQ6T5vhEGYNJDAAdn3paCgRpdeMdVYmWzgbKSsECednupJ3Zx5Xd-g'
{- "total_items": "166",
- "total_pages": "83",
- "plans": [
- {
- "id": "P-7DC96732KA7763723UOPKETA",
- "state": "ACTIVE",
- "name": "Plan with Regular and Trial Payment Definitions",
- "description": "Plan with regular and trial billing payment definitions.",
- "type": "FIXED",
- "create_time": "2017-08-22T04:41:52.836Z",
- "update_time": "2017-08-22T04:41:53.169Z",
- "links": [
- {
- "rel": "self",
- "method": "GET"
}
]
}, - {
- "id": "P-1TV69435N82273154UPWDU4I",
- "state": "INACTIVE",
- "name": "Plan with Regular Payment Definition",
- "description": "Plan with one regular payment definition, minimal merchant preferences, and no shipping fees or tax.",
- "type": "INFINITE",
- "create_time": "2017-08-22T04:41:55.623Z",
- "update_time": "2017-08-22T04:41:56.055Z",
- "links": [
- {
- "rel": "self",
- "method": "GET"
}
]
}
], - "links": [
- {
- "rel": "start",
- "method": "GET"
}, - {
- "rel": "previous_page",
- "method": "GET"
}, - {
- "rel": "next_page",
- "method": "GET"
}, - {
- "rel": "last",
- "method": "GET"
}
]
}
Message:
An internal service error has occurred.
Description: Resend the request at another time. If this error continues, contact PayPal Merchant Technical Support.
Message:
Access token does not have required scope.
Description: Use the scope required for this request type to get buyer consent.
Message:
You don't have permission to access this resource.
Description: Pass a valid plan ID.
Message:
Invalid request - see details.
Description: A validation issue occurred with your request.
The shipping fee and tax information.
id | string <= 128 characters The ID of the charge model. |
type required | string <= 20 characters The charge model type, which is tax or shipping. |
required | object (Currency) The currency and amount for a financial transaction, such as a balance or payment due. |
{- "id": "string",
- "type": "TAX",
- "amount": {
- "currency": "string",
- "value": "string"
}
}
The currency and amount for a financial transaction, such as a balance or payment due.
currency required | string |
value required | string The value, which might be:
|
{- "currency": "string",
- "value": "string"
}
The error information.
name required | string The human-readable, unique name of the error. |
debug_id | string The PayPal internal ID. Used for correlation purposes. |
message required | string The message that describes the error. |
information_link required | string The URI to detailed information related to this error for the developer. |
Array of objects (Error Details) An array of additional details for the error. |
{- "name": "string",
- "debug_id": "string",
- "message": "string",
- "information_link": "string",
- "details": [
- {
- "field": "string",
- "issue": "string"
}
]
}
The error details. Required for client-side 4XX
errors.
field required | string The name of the field that caused the error. |
issue required | string The reason for the error. |
{- "field": "string",
- "issue": "string"
}
The request-related HATEOAS link information.
href required | string The complete target URL. To make the related call, combine the method with this URI Template-formatted link. For pre-processing, include the |
rel required | string The link relation type, which serves as an ID for a link that unambiguously describes the semantics of the link. See Link Relations. |
method | string The HTTP method required to make the related call. |
{- "href": "string",
- "rel": "string",
- "method": "GET"
}
The merchant preferences for a plan, which define how much it costs to set up the agreement, the URLs where the customer can approve or cancel the agreement, the maximum number of allowed failed payment attempts, whether PayPal automatically bills the outstanding balance in the next billing cycle, and the action if the customer's initial payment fails.
cancel_url required | string <uri> <= 1000 characters The URL where the customer can cancel the agreement. |
return_url required | string <uri> <= 1000 characters The URL where the customer can approve the agreement. |
notify_url | string <uri> <= 1000 characters The URL where the customer is notified that the agreement was created. Read-only and reserved for future use. |
max_fail_attempts | string Default: "0" The maximum number of allowed failed payment attempts. The default value, which is |
auto_bill_amount | string Default: "NO" Indicates whether PayPal automatically bills the outstanding balance in the next billing cycle. The outstanding balance is the total amount of any previously failed scheduled payments. Value is:
|
initial_fail_amount_action | string Default: "CONTINUE" The action if the customer's initial payment fails. Value is:
Note: You can use the |
accepted_payment_type | string The payment types that are accepted for this plan. Read-only and reserved for future use. |
char_set | string The character set for this plan. Read-only and reserved for future use. |
object (Currency) The currency and amount for a financial transaction, such as a balance or payment due. |
{- "max_fail_attempts": "0",
- "auto_bill_amount": "YES",
- "initial_fail_amount_action": "CONTINUE",
- "accepted_payment_type": "string",
- "char_set": "string",
- "setup_fee": {
- "currency": "string",
- "value": "string"
}
}
The JSON patch object to apply partial updates to resources.
op required | string The operation.
| ||||||||||||||||||||||||||
path | string The JSON Pointer to the target document location at which to complete the operation. | ||||||||||||||||||||||||||
value | object (Patch Value) The value to apply. The | ||||||||||||||||||||||||||
from | string The JSON Pointer to the target document location from which to move the value. Required for the |
{- "op": "add",
- "path": "string",
- "value": { },
- "from": "string"
}
An array of JSON patch objects to apply partial updates to resources.
op required | string The operation.
| ||||||||||||||||||||||||||
path | string The JSON Pointer to the target document location at which to complete the operation. | ||||||||||||||||||||||||||
value | object (Patch Value) The value to apply. The | ||||||||||||||||||||||||||
from | string The JSON Pointer to the target document location from which to move the value. Required for the |
[- {
- "op": "add",
- "path": "string",
- "value": { },
- "from": "string"
}
]
A payment definition, which determines how often and for how long the customer is charged. Includes the interval at which the customer is charged, the charge amount, and optional shipping fees and taxes.
id | string <= 128 characters The ID of the payment definition. |
name required | string <= 128 characters The payment definition name. |
type required | string The payment definition type. Each plan must have at least one regular payment definition and, optionally, a trial payment definition. Each definition specifies how often and for how long the customer is charged. |
frequency_interval required | string The interval at which the customer is charged. Value cannot be greater than 12 months. |
frequency required | string The frequency of the payment in this definition. |
cycles required | string The number of payment cycles. For infinite plans with a regular payment definition, set |
Array of objects (Charge Model) An array of shipping fees and taxes. | |
required | object (Currency) The currency and amount for a financial transaction, such as a balance or payment due. |
{- "id": "string",
- "name": "string",
- "type": "TRIAL",
- "frequency_interval": "string",
- "frequency": "WEEK",
- "cycles": "string",
- "charge_models": [
- {
- "id": "string",
- "type": "TAX",
- "amount": {
- "currency": "string",
- "value": "string"
}
}
], - "amount": {
- "currency": "string",
- "value": "string"
}
}
The billing plan details. You can base one or more agreements on an active plan.
id | string <= 128 characters The ID of the plan. |
name required | string <= 128 characters The plan name. |
description required | string <= 127 characters The plan description. Maximum length is 127 single-byte alphanumeric characters. |
type required | string <= 20 characters The plan type. Indicates whether the payment definitions in the plan have a fixed number of or infinite payment cycles. Value is:
|
state | string Default: "CREATED" The plan status. |
create_time | string The date and time when the plan was created, in Internet date and time format. |
update_time | string The date and time when the plan was updated, in Internet date and time format. |
Array of objects (Payment Definition) A payment definition, which determines how often and for how long the customer is charged. Includes the interval at which the customer is charged, the charge amount, and optional shipping fees and taxes. | |
Array of objects (Terms) An array of terms for this plan. Read-only and reserved for future use. | |
object (Merchant Preferences) The merchant preferences for a plan, which define how much it costs to set up the agreement, the URLs where the customer can approve or cancel the agreement, the maximum number of allowed failed payment attempts, whether PayPal automatically bills the outstanding balance in the next billing cycle, and the action if the customer's initial payment fails. | |
Array of objects (Link Description) An array of request-related HATEOAS links. |
{- "id": "string",
- "name": "string",
- "description": "string",
- "type": "FIXED",
- "state": "CREATED",
- "create_time": "string",
- "update_time": "string",
- "payment_definitions": [
- {
- "id": "string",
- "name": "string",
- "type": "TRIAL",
- "frequency_interval": "string",
- "frequency": "WEEK",
- "cycles": "string",
- "charge_models": [
- {
- "id": "string",
- "type": "TAX",
- "amount": {
- "currency": "string",
- "value": "string"
}
}
], - "amount": {
- "currency": "string",
- "value": "string"
}
}
], - "terms": [
- {
- "id": "string",
- "type": "MONTHLY",
- "occurrences": "string",
- "buyer_editable": "string",
- "max_billing_amount": {
- "currency": "string",
- "value": "string"
}, - "amount_range": {
- "currency": "string",
- "value": "string"
}
}
], - "merchant_preferences": {
- "max_fail_attempts": "0",
- "auto_bill_amount": "YES",
- "initial_fail_amount_action": "CONTINUE",
- "accepted_payment_type": "string",
- "char_set": "string",
- "setup_fee": {
- "currency": "string",
- "value": "string"
}
}, - "links": [
- {
- "href": "string",
- "rel": "string",
- "method": "GET"
}
]
}
A list of plans, with details for each plan and a set of HATEOAS links.
Array of objects (Plan) An array of plans. | |
total_items | string The total number of plans in the list. |
total_pages | string The total number of pages in the response. The |
Array of objects (Link Description) An array of request-related HATEOAS links. |
{- "plans": [
- {
- "id": "string",
- "name": "string",
- "description": "string",
- "type": "FIXED",
- "state": "CREATED",
- "create_time": "string",
- "update_time": "string",
- "payment_definitions": [
- {
- "id": "string",
- "name": "string",
- "type": "TRIAL",
- "frequency_interval": "string",
- "frequency": "WEEK",
- "cycles": "string",
- "charge_models": [
- {
- "id": "string",
- "type": "TAX",
- "amount": {
- "currency": null,
- "value": null
}
}
], - "amount": {
- "currency": "string",
- "value": "string"
}
}
], - "terms": [
- {
- "id": "string",
- "type": "MONTHLY",
- "occurrences": "string",
- "buyer_editable": "string",
- "max_billing_amount": {
- "currency": "string",
- "value": "string"
}, - "amount_range": {
- "currency": "string",
- "value": "string"
}
}
], - "merchant_preferences": {
- "max_fail_attempts": "0",
- "auto_bill_amount": "YES",
- "initial_fail_amount_action": "CONTINUE",
- "accepted_payment_type": "string",
- "char_set": "string",
- "setup_fee": {
- "currency": "string",
- "value": "string"
}
}, - "links": [
- {
- "href": "string",
- "rel": "string",
- "method": "GET"
}
]
}
], - "total_items": "string",
- "total_pages": "string",
- "links": [
- {
- "href": "string",
- "rel": "string",
- "method": "GET"
}
]
}
The terms for the plan.
id | string <= 128 characters The ID of the terms. |
type required | string The term type. |
occurrences required | string The number of times that money can be pulled during this term. |
buyer_editable required | string Indicates whether the customer can edit the amount in this term. |
required | object (Currency) The currency and amount for a financial transaction, such as a balance or payment due. |
required | object (Currency) The currency and amount for a financial transaction, such as a balance or payment due. |
{- "id": "string",
- "type": "MONTHLY",
- "occurrences": "string",
- "buyer_editable": "string",
- "max_billing_amount": {
- "currency": "string",
- "value": "string"
}, - "amount_range": {
- "currency": "string",
- "value": "string"
}
}