PayPal Developer Logo
  • Docs
    OnlineIn-PersonMultiparty3rd-PartyPayoutsDisputesReportsIdentityTrackingDocs Archive
  • APIs & SDKs
    REST APIsJavaScript SDKNVP/SOAP APIsDonate SDKBraintree GraphQL API
  • Tools
    Integration BuilderSandbox Testing GuideAPI ExecutorDemo PortalNegative TestingCodespacesNewVS Code ExtensionNewCredit Card GeneratorWebhooksAPI StatusSecure File Transfer
  • Video Library
  • Support
Log in to Dashboard
    Log in to Dashboard
    REST APIs
    Get Started with PayPal REST APIs
    Authentication
    Postman Guide
    API requests
    API responses
    Core Resources
    Overview
    Add Tracking
    Catalog Products
    Disputes
    Identity
    Invoicing
    Orders
    Partner Referrals
    Payment Experience
    Payment Method Tokens
    Payments
    Payouts
    Referenced Payouts
    Subscriptions
    Transaction Search
    Webhooks Management
    Webhooks
    Overview
    Webhook event names
    Webhooks Events dashboard
    Webhooks simulator
    Integration
    Sandbox
    Overview
    Accounts
    Bulk Accounts
    Card testing
    Codespaces
    PayPal for Visual Studio Code
    Negative Testing
    Go Live
    Production Environment
    PayPal Application Guidelines
    PayPal Security Guidelines
    Rate Limiting Guidelines
    Idempotency
    Reference
    Currency Codes
    Country Codes
    State & Province Codes
    Locale codes
    Deprecated Resources
    Deprecated resources
    Billing Agreements
      Billing Agreements
      post
      Create agreement
      post
      Execute agreement
      get
      Show agreement details
      patch
      Update agreement
      post
      Suspend agreement
      post
      Reactivate agreement
      post
      Cancel agreement
      post
      Bill agreement balance
      post
      Set agreement balance
      get
      List agreement transactions
      Errors
      Definitions
    Billing Plans
    Invoicing v1
    Orders v1
    Partner Referrals v1
    Payments v1

Billing Agreements (1)

Deprecation notice: The /v1/payments/billing-agreements endpoints are deprecated. Use the /v1/billing/subscriptions endpoints instead. For details, see Subscriptions Integration.
Use billing plans and billing agreements to create an agreement for a recurring PayPal or debit card payment for goods or services. To create an agreement, you reference an active billing plan from which the agreement inherits information. You also supply customer and payment information and, optionally, can override the referenced plan's merchant preferences and shipping fee and tax information. For more information, see Billing Plans and Agreements.
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.
Note: The Billing Agreements API does not support the payee object.

Create agreement

post/v1/payments/billing-agreements

Creates a billing agreement. In the JSON request body, include an agreement object with the name, description, start date, ID of the plan on which to base the agreement, and customer and shipping address information.

SecurityOauth2
Request
Request Body schema: application/json
name
required
string <= 128 characters

The agreement name.

description
required
string <= 128 characters

The agreement description.

start_date
required
string <date-time>

The date and time when this agreement begins, in Internet date and time format. The start date must be no less than 24 hours after the current date as the agreement can take up to 24 hours to activate.

The start date and time in the create agreement request might not match the start date and time that the API returns in the execute agreement response. When you execute an agreement, the API internally converts the start date and time to the start of the day in the time zone of the merchant account. For example, the API converts a 2017-01-02T14:36:21Z start date and time for an account in the Berlin time zone (UTC + 1) to 2017-01-02T00:00:00. When the API returns this date and time in the execute agreement response, it shows the converted date and time in the UTC time zone. So, the internal 2017-01-02T00:00:00 start date and time becomes 2017-01-01T23:00:00 externally.

object (Agreement Details)

The agreement details.

required
object (Payer)

The details for the customer who funds the payment. The API gathers this information from execution of the approval URL.

object (Merchant Preferences)

The merchant preferences that override the default information in the plan. If you omit this parameter, the agreement uses the default merchant preferences from the plan. The merchant preferences include 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 (Override Charge Model)

An array of charge models to override the charge models in the plan. A charge model defines shipping fee and tax information. If you omit this parameter, the agreement uses the default shipping fee and tax information from the plan.

required
object (Plan)

The ID of the plan on which this agreement is based.

object (Shipping Address)

The shipping address for a payment. Must be provided if it differs from the default address.

Responses
201

A successful request returns the HTTP 201 Created status code and a JSON response body that shows billing agreement details including a billing agreement id and redirect links to get the buyer's approval.

Request samples
  • Payload
  • cURL
  • Node.js
  • Java
  • Python
application/json
{
  • "name": "Override Agreement",
  • "description": "PayPal payment agreement that overrides merchant preferences and shipping fee and tax information.",
  • "start_date": "2017-12-22T09:13:49Z",
  • "payer": {
    • "payment_method": "paypal",
    • "payer_info": {
      • "email": "payer@example.com"
      }
    },
  • "plan": {
    • "id": "P-1WJ68935LL406420PUTENA2I"
    },
  • "shipping_address": {
    • "line1": "Hotel Staybridge",
    • "line2": "Crooke Street",
    • "city": "San Jose",
    • "state": "CA",
    • "postal_code": "95112",
    • "country_code": "US"
    },
  • "override_merchant_preferences": {
    • "setup_fee": {
      • "value": "3",
      • "currency": "GBP"
      },
    • "return_url": "https://example.com/",
    • "cancel_url": "https://example.com/cancel",
    • "auto_bill_amount": "YES",
    • "initial_fail_amount_action": "CONTINUE",
    • "max_fail_attempts": "11"
    },
  • "override_charge_models": [
    • {
      • "charge_id": "CHM-8373958130821962WUTENA2Q",
      • "amount": {
        • "value": "1",
        • "currency": "GBP"
        }
      }
    ]
}
Response samples
  • 201
application/json
{
  • "name": "Override Agreement",
  • "description": "Agreement that overrides merchant preferences and charge models",
  • "payer": {
    • "payment_method": "paypal",
    • "payer_info": {
      • "email": "payer@example.com"
      }
    },
  • "plan": {
    • "id": "P-1WJ68935LL406420PUTENA2I",
    • "state": "ACTIVE",
    • "name": "Fast Speed Plan",
    • "description": "Vanilla plan",
    • "type": "INFINITE",
    • "payment_definitions": [
      • {
        • "id": "PD-9WG6983719571780GUTENA2I",
        • "name": "Regular payment definition",
        • "type": "REGULAR",
        • "frequency": "DAY",
        • "amount": {
          • "currency": "GBP",
          • "value": "10"
          },
        • "charge_models": [
          • {
            • "id": "CHM-8373958130821962WUTENA2Q",
            • "type": "SHIPPING",
            • "amount": {
              • "currency": "GBP",
              • "value": "1"
              }
            },
          • {
            • "id": "CHM-2937144979861454NUTENA2Q",
            • "type": "TAX",
            • "amount": {
              • "currency": "GBP",
              • "value": "2"
              }
            }
          ],
        • "cycles": "0",
        • "frequency_interval": "1"
        },
      • {
        • "id": "PD-89M493313S710490TUTENA2Q",
        • "name": "Trial payment definition",
        • "type": "TRIAL",
        • "frequency": "MONTH",
        • "amount": {
          • "currency": "GBP",
          • "value": "100"
          },
        • "charge_models": [
          • {
            • "id": "CHM-78K47820SS4923826UTENA2Q",
            • "type": "SHIPPING",
            • "amount": {
              • "currency": "GBP",
              • "value": "10"
              }
            },
          • {
            • "id": "CHM-9M366179U7339472RUTENA2Q",
            • "type": "TAX",
            • "amount": {
              • "currency": "GBP",
              • "value": "12"
              }
            }
          ],
        • "cycles": "5",
        • "frequency_interval": "2"
        }
      ],
    • "merchant_preferences": {
      • "setup_fee": {
        • "currency": "GBP",
        • "value": "3"
        },
      • "max_fail_attempts": "11",
      • "return_url": "https://example.com/",
      • "cancel_url": "https://example.com/cancel",
      • "auto_bill_amount": "YES",
      • "initial_fail_amount_action": "CONTINUE"
      }
    },
  • "links": [
    • {
      • "href": "https://api-m.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-83C745436S346813F",
      • "rel": "approval_url",
      • "method": "REDIRECT"
      },
    • {
      • "href": "https://api-m.sandbox.paypal.com/v1/payments/billing-agreements/EC-83C745436S346813F/agreement-execute",
      • "rel": "execute",
      • "method": "POST"
      }
    ],
  • "start_date": "2017-12-22T09:13:49Z"
}

Execute agreement

post/v1/payments/billing-agreements/{payment_token}/agreement-execute

Executes a billing agreement, by ID, after customer approval.

SecurityOauth2
Request
path Parameters
payment_token
required
string

The ID of the agreement to execute.

Responses
200

A successful request returns the HTTP 200 OK status code and a JSON response body that shows billing agreement details.

Request samples
  • cURL
  • Node.js
  • Java
  • Python
curl -v -X POST https://api-m.sandbox.paypal.com/v1/payments/billing-agreements/EC-7WN97463LN263864T/agreement-execute \
  
Response samples
  • 200
application/json
{
  • "id": "I-1TJ3GAGG82Y9",
  • "state": "Active",
  • "description": "Monthly agreement with free trial payment definition.",
  • "payer": {
    • "payment_method": "paypal",
    • "status": "unverified",
    • "payer_info": {
      • "email": "johndoe@example.com",
      • "first_name": "John",
      • "last_name": "Doe",
      • "payer_id": "NEW8A85AK4ET4",
      • "shipping_address": {
        • "recipient_name": "John Doe",
        • "line1": "751235 Stout Drive",
        • "line2": "0976249 Elizabeth Court",
        • "city": "Quimby",
        • "state": "IA",
        • "postal_code": "51049",
        • "country_code": "US"
        }
      }
    },
  • "plan": {
    • "name": "Plan with Regular and Trial Payment Definitions",
    • "description": "Plan with regular and trial payment definitions.",
    • "type": "FIXED",
    • "payment_definitions": [
      • {
        • "name": "Trial payment definition",
        • "type": "TRIAL",
        • "frequency": "MONTH",
        • "amount": {
          • "value": "0.00",
          • "currency": "USD"
          },
        • "cycles": "2",
        • "charge_models": [
          • {
            • "type": "TAX",
            • "amount": {
              • "value": "0.00",
              • "currency": "USD"
              }
            },
          • {
            • "type": "SHIPPING",
            • "amount": {
              • "value": "0.00",
              • "currency": "USD"
              }
            }
          ],
        • "frequency_interval": "1"
        },
      • {
        • "name": "Regular payment definition",
        • "type": "REGULAR",
        • "frequency": "MONTH",
        • "amount": {
          • "value": "5.99",
          • "currency": "USD"
          },
        • "cycles": "10",
        • "charge_models": [
          • {
            • "type": "TAX",
            • "amount": {
              • "value": "0.29",
              • "currency": "USD"
              }
            },
          • {
            • "type": "SHIPPING",
            • "amount": {
              • "value": "0.20",
              • "currency": "USD"
              }
            }
          ],
        • "frequency_interval": "1"
        }
      ],
    • "merchant_preferences": {
      • "setup_fee": {
        • "value": "0.40",
        • "currency": "USD"
        },
      • "return_url": "https://example.com",
      • "cancel_url": "https://example.com/cancel",
      • "max_fail_attempts": "2",
      • "auto_bill_amount": "YES"
      },
    • "links": [ ],
    • "currency_code": "USD"
    },
  • "start_date": "2016-12-23T08:00:00Z",
  • "shipping_address": {
    • "recipient_name": "John Doe",
    • "line1": "751235 Stout Drive",
    • "line2": "0976249 Elizabeth Court",
    • "city": "Quimby",
    • "state": "IA",
    • "postal_code": "51049",
    • "country_code": "US"
    },
  • "agreement_details": {
    • "outstanding_balance": {
      • "value": "0.00",
      • "currency": "USD"
      },
    • "cycles_remaining": "2",
    • "cycles_completed": "0",
    • "next_billing_date": "2017-01-23T08:00:00Z",
    • "last_payment_date": "2016-12-23T08:00:00Z",
    • "last_payment_amount": {
      • "value": "0.40",
      • "currency": "USD"
      },
    • "final_payment_date": "2017-09-23T08:00:00Z",
    • "failed_payment_count": "0"
    },
  • "links": [
    • {
      • "href": "https://api-m.sandbox.paypal.com/v1/payments/billing-agreements/I-1TJ3GAGG82Y9",
      • "rel": "self",
      • "method": "GET"
      }
    ]
}

Show agreement details

get/v1/payments/billing-agreements/{agreement_id}

Shows details for a billing agreement, by ID.

SecurityOauth2
Request
path Parameters
agreement_id
required
string

The ID of the agreement for which to show details.

Responses
200

A successful request returns the HTTP 200 OK status code and a JSON response body that shows billing agreement details.

Request samples
  • cURL
  • Node.js
  • Java
  • Python
curl -v -X GET https://api-m.sandbox.paypal.com/v1/payments/billing-agreements/I-5D3XDN2D5FH1 \
  
Response samples
  • 200
application/json
{
  • "id": "I-1TJ3GAGG82Y9",
  • "state": "Active",
  • "description": "Monthly agreement with free trial payment definition.",
  • "payer": {
    • "payment_method": "paypal",
    • "status": "unverified",
    • "payer_info": {
      • "email": "johndoe@example.com",
      • "first_name": "John",
      • "last_name": "Doe",
      • "payer_id": "NEW8A85AK4ET4",
      • "shipping_address": {
        • "recipient_name": "John Doe",
        • "line1": "751235 Stout Drive",
        • "line2": "0976249 Elizabeth Court",
        • "city": "Quimby",
        • "state": "IA",
        • "postal_code": "51049",
        • "country_code": "US"
        }
      }
    },
  • "plan": {
    • "name": "Plan with Regular and Trial Payment Definitions",
    • "description": "Plan with regular and trial payment definitions.",
    • "type": "FIXED",
    • "payment_definitions": [
      • {
        • "name": "Trial payment definition",
        • "type": "TRIAL",
        • "frequency": "MONTH",
        • "amount": {
          • "value": "0.00",
          • "currency": "USD"
          },
        • "cycles": "2",
        • "charge_models": [
          • {
            • "type": "TAX",
            • "amount": {
              • "value": "0.00",
              • "currency": "USD"
              }
            },
          • {
            • "type": "SHIPPING",
            • "amount": {
              • "value": "0.00",
              • "currency": "USD"
              }
            }
          ],
        • "frequency_interval": "1"
        },
      • {
        • "name": "Regular payment definition",
        • "type": "REGULAR",
        • "frequency": "MONTH",
        • "amount": {
          • "value": "5.99",
          • "currency": "USD"
          },
        • "cycles": "10",
        • "charge_models": [
          • {
            • "type": "TAX",
            • "amount": {
              • "value": "0.29",
              • "currency": "USD"
              }
            },
          • {
            • "type": "SHIPPING",
            • "amount": {
              • "value": "0.20",
              • "currency": "USD"
              }
            }
          ],
        • "frequency_interval": "1"
        }
      ],
    • "merchant_preferences": {
      • "setup_fee": {
        • "value": "0.40",
        • "currency": "USD"
        },
      • "return_url": "https://example.com",
      • "cancel_url": "https://example.com/cancel",
      • "max_fail_attempts": "2",
      • "auto_bill_amount": "YES"
      },
    • "links": [ ],
    • "currency_code": "USD"
    },
  • "start_date": "2016-12-23T08:00:00Z",
  • "shipping_address": {
    • "recipient_name": "John Doe",
    • "line1": "751235 Stout Drive",
    • "line2": "0976249 Elizabeth Court",
    • "city": "Quimby",
    • "state": "IA",
    • "postal_code": "51049",
    • "country_code": "US"
    },
  • "agreement_details": {
    • "outstanding_balance": {
      • "currency": "USD",
      • "value": "0.00"
      },
    • "cycles_remaining": "2",
    • "cycles_completed": "0",
    • "next_billing_date": "2017-01-23T08:00:00Z",
    • "last_payment_date": "2016-12-23T08:00:00Z",
    • "last_payment_amount": {
      • "currency": "USD",
      • "value": "0.40"
      },
    • "final_payment_date": "2017-09-23T08:00:00Z",
    • "failed_payment_count": "0"
    },
  • "links": [
    • {
      • "href": "https://api-m.sandbox.paypal.com/v1/payments/billing-agreements/I-1TJ3GAGG82Y9/suspend",
      • "rel": "suspend",
      • "method": "POST"
      },
    • {
      • "href": "https://api-m.sandbox.paypal.com/v1/payments/billing-agreements/I-1TJ3GAGG82Y9/re-activate",
      • "rel": "re_activate",
      • "method": "POST"
      },
    • {
      • "href": "https://api-m.sandbox.paypal.com/v1/payments/billing-agreements/I-1TJ3GAGG82Y9/cancel",
      • "rel": "cancel",
      • "method": "POST"
      },
    • {
      • "href": "https://api-m.sandbox.paypal.com/v1/payments/billing-agreements/I-1TJ3GAGG82Y9/bill-balance",
      • "rel": "self",
      • "method": "POST"
      },
    • {
      • "href": "https://api-m.sandbox.paypal.com/v1/payments/billing-agreements/I-1TJ3GAGG82Y9/set-balance",
      • "rel": "self",
      • "method": "POST"
      }
    ]
}

Update agreement

patch/v1/payments/billing-agreements/{agreement_id}

Updates details of a billing agreement, by ID. The details include the description, shipping address, start date, and so on.

Note: For the PayPal payment method, you cannot update the start_date after the agreement is created.

SecurityOauth2
Request
path Parameters
agreement_id
required
string

The ID of the agreement to update.

Request Body schema: application/json
Array
op
required
string

The operation.

Enum: Description
add

Depending on the target location reference, completes one of these functions:

  • The target location is an array index. Inserts a new value into the array at the specified index.
  • The target location is an object parameter that does not already exist. Adds a new parameter to the object.
  • The target location is an object parameter that does exist. Replaces that parameter's value.
The value parameter defines the value to add. For more information, see 4.1. add.

remove

Removes the value at the target location. For the operation to succeed, the target location must exist. For more information, see 4.2. remove.

replace

Replaces the value at the target location with a new value. The operation object must contain a value parameter that defines the replacement value. For the operation to succeed, the target location must exist. For more information, see 4.3. replace.

move

Removes the value at a specified location and adds it to the target location. The operation object must contain a from parameter, which is a string that contains a JSON pointer value that references the location in the target document from which to move the value. For the operation to succeed, the from location must exist. For more information, see 4.4. move.

copy

Copies the value at a specified location to the target location. The operation object must contain a from parameter, which is a string that contains a JSON pointer value that references the location in the target document from which to copy the value. For the operation to succeed, the from location must exist. For more information, see 4.5. copy.

test

Tests that a value at the target location is equal to a specified value. The operation object must contain a value parameter that defines the value to compare to the target location's value. For the operation to succeed, the target location must be equal to the value value. For test, equal indicates that the value at the target location and the value that value defines are of the same JSON type. The data type of the value determines how equality is defined:

TypeConsidered equal if both values
stringsContain the same number of Unicode characters and their code points are byte-by-byte equal.
numbersAre numerically equal.
arraysContain the same number of values, and each value is equal to the value at the corresponding position in the other array, by using these type-specific rules.
objectsContain the same number of parameters, and each parameter is equal to a parameter in the other object, by comparing their keys (as strings) and their values (by using these type-specific rules).
literals (false, true, and null)Are the same. The comparison is a logical comparison. For example, whitespace between the parameter values of an array is not significant. Also, ordering of the serialization of object parameters is not significant.
For more information, see 4.6. test.

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 remove operation does not require a value.

from
string

The JSON Pointer to the target document location from which to move the value. Required for the move operation.

Responses
200

A successful request returns the HTTP 200 OK status code with no JSON response body.

Request samples
  • Payload
  • cURL
  • Node.js
  • Java
  • Python
application/json
[
  • {
    • "op": "replace",
    • "path": "/",
    • "value": {
      • "description": "Updated description.",
      • "start_date": "2017-12-22T09:13:49Z",
      • "shipping_address": {
        • "line1": "Hotel Blue Diamond",
        • "line2": "Church Street",
        • "city": "San Jose",
        • "state": "CA",
        • "postal_code": "95112",
        • "country_code": "US"
        }
      }
    }
]

Suspend agreement

post/v1/payments/billing-agreements/{agreement_id}/suspend

Suspends a billing agreement, by ID.

SecurityOauth2
Request
path Parameters
agreement_id
required
string

The ID of the agreement to suspend.

Request Body schema: application/json
note
string <= 128 characters

The reason for the agreement state change.

Responses
204

A successful request returns the HTTP 204 No Content status code with no JSON response body.

Request samples
  • Payload
  • cURL
  • Node.js
  • Java
  • Python
application/json
{
  • "note": "Suspending the profile."
}

Reactivate agreement

post/v1/payments/billing-agreements/{agreement_id}/re-activate

Reactivates a suspended billing agreement, by ID. In the JSON request body, include an agreement_state_descriptor object with with a note that describes the reason for the reactivation and the agreement amount and currency.

SecurityOauth2
Request
path Parameters
agreement_id
required
string

The ID of the agreement to reactivate.

Request Body schema: application/json
note
string <= 128 characters

The reason for the agreement state change.

Responses
204

A successful request returns the HTTP 204 No Content status code with no JSON response body.

Request samples
  • Payload
  • cURL
  • Node.js
  • Java
  • Python
application/json
{
  • "note": "Reactivating the profile."
}

Cancel agreement

post/v1/payments/billing-agreements/{agreement_id}/cancel

Cancels a billing agreement, by ID. In the JSON request body, include an agreement_state_descriptor object with an optional note that describes the reason for the cancellation and the agreement amount and currency.

SecurityOauth2
Request
path Parameters
agreement_id
required
string

The ID of the agreement to cancel.

Request Body schema: application/json
note
string <= 128 characters

The reason for the agreement state change.

Responses
204

A successful request returns the HTTP 204 No Content status code with no JSON response body.

Request samples
  • Payload
  • cURL
  • Node.js
  • Java
  • Python
application/json
{
  • "note": "Canceling the profile."
}

Bill agreement balance

post/v1/payments/billing-agreements/{agreement_id}/bill-balance

Bills the balance for an agreement, by ID. In the JSON request body, include an optional note that describes the reason for the billing action and the agreement amount and currency.

SecurityOauth2
Request
path Parameters
agreement_id
required
string

The ID of the agreement for which to bill the balance.

Request Body schema: application/json
note
string <= 128 characters

The reason for the agreement state change.

Responses
204

A successful request returns the HTTP 204 No Content status code with no JSON response body.

Request samples
  • Payload
  • cURL
  • Node.js
  • Java
  • Python
application/json
{
  • "note": "Billing balance amount."
}

Set agreement balance

post/v1/payments/billing-agreements/{agreement_id}/set-balance

Sets the balance for an agreement, by ID. In the JSON request body, specify the balance currency type and value.

SecurityOauth2
Request
path Parameters
agreement_id
required
string

The ID of the agreement for which to set a balance.

Request Body schema: application/json
value
required
string <= 32 characters ^((-?[0-9]+)|(-?([0-9]+)?[.][0-9]+))$

The currency value. Might be an integer for currencies like JPY that are not typically fractional or a three-place decimal fraction for currencies like TND that are subdivided into thousandths. For the required number of decimal places for a currency code, see Currency codes - ISO 4217.

currency
required
string <ppaas_common_currency_code_v2> (currency_code) = 3 characters

The three-character ISO-4217 currency code that identifies the currency.

Responses
204

A successful request returns the HTTP 204 No Content status code with no JSON response body.

Request samples
  • Payload
  • cURL
  • Node.js
  • Java
  • Python
application/json
{
  • "value": "100",
  • "currency": "USD"
}

List agreement transactions

get/v1/payments/billing-agreements/{agreement_id}/transactions

Lists transactions for an agreement, by ID. To filter the transactions that appear in the response, specify the optional start and end date query parameters.

SecurityOauth2
Request
path Parameters
agreement_id
required
string

The ID of the agreement for which to list transactions.

query Parameters
start_date
string

The start date of the range of transactions to list.

end_date
string

The end date of the range of transactions to list.

Responses
200

A successful request returns the HTTP 200 OK status code and a JSON response body that lists transactions with details.

Request samples
  • cURL
  • Node.js
  • Java
  • Python
curl -v -X GET https://api-m.sandbox.paypal.com/v1/payments/billing-agreements/I-1TJ3GAGG82Y9/transactions?start_date=2017-06-15&end_date=2017-06-17 \
  
Response samples
  • 200
application/json
{
  • "agreement_transaction_list": [
    • {
      • "transaction_id": "I-V8SSE9WLJGY6",
      • "status": "Completed",
      • "transaction_type": "Recurring Payment",
      • "amount": {
        • "value": "100",
        • "currency": "USD"
        },
      • "fee_amount": {
        • "value": "1",
        • "currency": "USD"
        },
      • "net_amount": {
        • "value": "100",
        • "currency": "USD"
        },
      • "payer_email": "",
      • "payer_name": " ",
      • "time_stamp": "2017-06-16T13:46:53Z",
      • "time_zone": "GMT"
      },
    • {
      • "transaction_id": "I-V8SSE9WLJGY6",
      • "status": "Denied",
      • "transaction_type": "Recurring Payment",
      • "amount": {
        • "value": "100",
        • "currency": "USD"
        },
      • "fee_amount": {
        • "value": "1",
        • "currency": "USD"
        },
      • "net_amount": {
        • "value": "100",
        • "currency": "USD"
        },
      • "payer_email": "",
      • "payer_name": " ",
      • "time_stamp": "2017-06-16T13:52:26Z",
      • "time_zone": "GMT"
      },
    • {
      • "transaction_id": "I-V8SSE9WLJGY6",
      • "status": "Pending",
      • "transaction_type": "Recurring Payment",
      • "amount": {
        • "value": "100",
        • "currency": "USD"
        },
      • "fee_amount": {
        • "value": "1",
        • "currency": "USD"
        },
      • "net_amount": {
        • "value": "100",
        • "currency": "USD"
        },
      • "payer_email": "",
      • "payer_name": " ",
      • "time_stamp": "2017-06-16T14:00:23Z",
      • "time_zone": "GMT"
      },
    • {
      • "transaction_id": "I-V8SSE9WLJGY6",
      • "status": "Denied",
      • "transaction_type": "Recurring Payment",
      • "amount": {
        • "value": "100",
        • "currency": "USD"
        },
      • "fee_amount": {
        • "value": "1",
        • "currency": "USD"
        },
      • "net_amount": {
        • "value": "100",
        • "currency": "USD"
        },
      • "payer_email": "",
      • "payer_name": " ",
      • "time_stamp": "2017-06-16T14:02:54Z",
      • "time_zone": "GMT"
      }
    ]
}

Errors

ACCOUNT_RESTRICTED

Message:
This transaction cannot be processed. Contact PayPal Customer Service.

Description: This account is restricted.

ADDRESS_INVALID

Message:
The user address is not valid.

Description: The address is not valid.

BA_TOKEN

Message:
Invalid request - see details.

Description: Invalid agreement ID. The ID is the B-XXXXXXXXXXXXXXXXXX type.

BILL_AMOUNT_GREATER_THAN_OUTSTANDING_BALANCE

Message:
The billed amount should be less than the outstanding balance.

Description: The billed amount is too large.

BUSADD_STATE_UNSUPPORTED

Message:
This transaction cannot be processed.

Description: The country listed for your business address is not currently supported.

CALL_FAILED_PAYMENT

Message:
Payment is failing.

Description: The payment is failing.

CANNOT_FIND_PROFILE_DESC

Message:
The profile description is not valid.

Description: Provide a valid agreement description.

CANNOT_MIX_CURRENCIES

Message:
The currency code is not valid. All currency codes much match.

Description: Use same currency code for all amount objects.

CANT_INCREASE_OUTSTANDING_AMOUNT

Message:
Cannot increase the delinquent amount.

Description: You cannot increase the outstanding amount for the bill.

CC_STATUS_INVALID

Message:
Profile is not active.

Description: The state of the profile is not active.

CC_TYPE_NOT_SUPPORTED

Message:
The credit card type is not supported.

Description: Use another type of credit card.

DPRP_DISABLED

Message:
DPRP is disabled for this merchant.

Description: To enable Direct Payment Recurring Payments (DPRP), enable Pro mode for your merchant sandbox account. Go to Sandbox accounts and click the Business account in the Type column. Click Profile and enable the Pro features on this business sandbox account.

DUPLICATE_REQUEST_ID

Message:
The value of PayPal-Request-Id header has already been used.

Description: Use a unique PayPal-Request-Id header value to resend the request.

EXECUTE_AGREEMENT_BUYER_NOT_ACCEPTED

Message:
Business error.

Description: The buyer has not approved this token.

EXECUTE_AGREEMENT_DOES_NOT_OWN_TOKEN

Message:
Business error.

Description: A session validation error occurred. The session does not belong to the merchant.

FEATURE_DISABLED

Message:
This transaction cannot be processed.

Description: This feature is disabled.

FEATURE_NOT_AVAILABLE

Message:
Because the recurring payments feature is not currently available, you must try again later.

Description: This feature is not available.

GATEWAY_DECLINE_CVV2

Message:
This transaction cannot be processed. Enter a valid credit card verification number.

Description: The verification number is not valid.

INTERNAL_ERROR

Message:
Internal Error.

Description: Resend the request at another time. If this error continues, contact PayPal Merchant Technical Support.

INTERNAL_SERVICE_ERROR

Message:
An internal service error has occurred.

Description: Resend the request at another time. If this error continues, contact PayPal Merchant Technical Support.

INVALID_AMOUNT

Message:
The bill amount must be greater than 0.

Description: Specify a valid amount.

INVALID_ARGS

Message:
Invalid argument. The description field or custom field is empty and the status is active.

Description: Pass correct arguments in the description field and make sure that the status is active.

INVALID_CC_NUMBER

Message:
This transaction cannot be processed. Enter a valid credit card number and type.

Description: The credit card number and type are not valid.

INVALID_CURRENCY

Message:
This transaction cannot be processed due to an unsupported currency.

Description: This currency is not supported.

INVALID_ID_PASSED

Message:
Business error.

Description: The ID is invalid ID.

INVALID_PROFILE_ACTION

Message:
The action value is not valid.

Description: Enter a valid action.

INVALID_PROFILE_ID

Message:
The profile ID is not valid.

Description: Enter a valid profile ID.

INVALID_PROFILE_STATUS

Message:
The profile status must be one of (A)ctive, (C)ancelled, or e(X)pired.

Description: Enter a valid profile status.

INVALID_SECURITY_CTX

Message:
Business error.

Description: The security context is invalid.

INVALID_STATUS_TO_CANCEL

Message:
The status is not valid for the suspend action. The profile must be active.

Description: The agreement must be active before you can suspend it.

INVALID_STATUS_TO_REACTIVATE

Message:
The activation type is not valid.

Description: Pass a valid activation type.

INVALID_STATUS_TO_SUSPEND

Message:
Invalid profile status for reactivate action. Profile must be suspended.

Description: To complete this action, you must first suspend the agreement.

INVALID_TOKEN

Message:
The token is missing or is invalid.

Description: Enter a valid token.

MALFORMED_REQUEST

Message:
The request JSON is not well formed.

Description: Review the JSON request.

MERCHANT_ACCOUNT_DENIED

Message:
Merchant account is denied.

Description: The merchant account is denied.

MERCHANT_COUNTRY_NOT_SUPPORTED

Message:
The merchant country is not supported.

Description: This country is not supported.

MERCHANT_ID_NOT_AUTHORIZED

Message:
Business error.

Description: The merchant ID not authorized to get the details.

MISSING_CVV2

Message:
This transaction cannot be processed without a credit card verification number.

Description: Enter the credit card verification number.

OUTSTANDING_PAYMENT_ALREADY_SCHEDULED

Message:
Another outstanding payment is scheduled.

Description: Another payment is already scheduled.

PAYER_ACCOUNT_DENIED

Message:
The payer's account is denied.

Description: The payer's account is denied.

PAYER_COUNTRY_NOT_SUPPORTED

Message:
The payer's country is currently not supported.

Description: This country is not supported.

PAYMENT_METHOD

Message:
Invalid request - see details.

Description: Invalid payment method. Valid value is PAYPAL.

PLAN_TYPE

Message:
Invalid request - see details.

Description: Invalid type mentioned. Valid values are MERCHANT_INITIATED_BILLING or CHANNEL_INITIATED_BILLING.

PROCESSOR_DECLINE_INVALID_CC_COUNTRY

Message:
This credit card was issued from an unsupported country.

Description: This country is not supported.

RECURRING_PAYMENT_SCHEDULED_WITHIN_24HOURS

Message:
The recurring payment was scheduled within 24 hours, so the bill outstanding amount cannot be processed.

Description: This bill outstanding amount cannot be processed.

REFUSED_CHANNEL_INITIATED_BILLING_NOT_ENABLED

Message:
Authorization error.

Description: This facilitator account is not permitted for Channel Initiated Billing.

REFUSED_MARK_REF_TXN_NOT_ENABLED

Message:
Authorization error.

Description: This merchant account is not permitted to create Merchant Initiated Billing Agreement.

REQUIRED_SCOPE_MISSING

Message:
Access token does not have required scope.

Description: Obtain user consent by using the correct scope for this request type.

RT_AGREEMENT_ALREADY_CANCELED

Message:
Business error.

Description: Failed Request: Agreement is already cancelled / Invalid agreement state.

RT_INVALID_AGREEMENT_ID

Message:
Business error.

Description: No matching record found.

SET_BALANCE_INVALID_CURRENCY_CODE

Message:
Invalid currency for delinquent amount.

Description: Specify a valid currency in the bill-balance call.

SHIPPING_ADDRESS_NOT_IN_RESIDENCE_COUNTRY

Message:
This transaction cannot be processed. The shipping country is not allowed by the buyer's country of residence.

Description: The shipping country is not supported.

SHP_INVALID_COUNTRY_CODE

Message:
This transaction cannot be processed. Enter a valid country code in the shipping address.

Description: Enter a valid country code.

START_DATE_INVALID_FORMAT

Message:
The subscription start date must be valid.

Description: Specify a valid start date in Internet date and time format. The start date must be greater than the current date.

STATUS_INVALID

Message:
The profile status is not valid for the reactivate action. The status must be active.

Description: Make sure that the status is active.

SUBSCRIPTION_UNMAPPED_ERROR

Message:
An internal error occurred.

Description: An internal error occurred.

TIME_TO_UPDATE_CLOSE_TO_BILLING_DATE

Message:
The time of the update is too close to the billing date.

Description: You cannot make an update this close to the billing date.

TOKEN_NOT_FOUND

Message:
Internal error.

Description: Invalid BA-Token Identifier. Valid token has the BA-XXXXXXXXXXXXXXXXX format.

UNAUTHORIZED_AGREEMENT_REQUEST

Message:
You do not have permission to create this agreement.

Description: You are not authorized to create this agreement.

USR_BILLING_AGRMNT_NOT_ACTIVE

Message:
This transaction cannot be processed due to an invalid merchant configuration.

Description: The merchant configuration is not valid.

VALIDATION_ERROR

Message:
Invalid request - see details.

Description: Your request has a validation error.

WALLET_TOO_MANY_ATTEMPTS

Message:
You have exceeded the maximum number of payment attempts for this token.

Description: Create a token and use it to create an agreement.

Definitions

Agreement

The billing agreement information.

id
string <= 128 characters

The PayPal-generated ID for the resource.

state
string <= 128 characters

The state of the agreement. Value is:

  • Pending. The agreement awaits initial payment completion.
  • Active. The agreement is active and payments are scheduled.
  • Suspended. The agreement is suspended and payments are not scheduled until the agreement is reactivated.
  • Cancelled. The agreement is cancelled and payments are not scheduled.
  • Expired. The agreement is expired and no payments remain to be scheduled.

Enum: "Pending" "Active" "Suspended" "Cancelled" "Expired"
description
required
string <= 128 characters

The agreement description.

start_date
required
string <date-time>

The date and time when this agreement begins, in Internet date and time format. The start date must be no less than 24 hours after the current date as the agreement can take up to 24 hours to activate.

The start date and time in the create agreement request might not match the start date and time that the API returns in the execute agreement response. When you execute an agreement, the API internally converts the start date and time to the start of the day in the time zone of the merchant account. For example, the API converts a 2017-01-02T14:36:21Z start date and time for an account in the Berlin time zone (UTC + 1) to 2017-01-02T00:00:00. When the API returns this date and time in the execute agreement response, it shows the converted date and time in the UTC time zone. So, the internal 2017-01-02T00:00:00 start date and time becomes 2017-01-01T23:00:00 externally.

object (Agreement Details)

The agreement details.

required
object (Payer)

The details for the customer who funds the payment. The API gathers this information from execution of the approval URL.

object (Merchant Preferences)

The merchant preferences that override the default information in the plan. If you omit this parameter, the agreement uses the default merchant preferences from the plan. The merchant preferences include 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 (Override Charge Model)

An array of charge models to override the charge models in the plan. A charge model defines shipping fee and tax information. If you omit this parameter, the agreement uses the default shipping fee and tax information from the plan.

required
object (Plan)

The plan that can be used to create an agreement.

Array of objects (Link Description)

An array of request-related HATEOAS links.

object (Shipping Address)

The shipping address for a payment. Must be provided if it differs from the default address.

{
  • "id": "string",
  • "state": "Pending",
  • "description": "string",
  • "start_date": "2019-08-24T14:15:22Z",
  • "agreement_details": {
    • "cycles_remaining": "string",
    • "cycles_completed": "string",
    • "next_billing_date": "string",
    • "last_payment_date": "string",
    • "final_payment_date": "string",
    • "failed_payment_count": "string",
    • "outstanding_balance": {
      • "value": "string",
      • "currency": "string"
      },
    • "last_payment_amount": {
      • "value": "string",
      • "currency": "string"
      }
    },
  • "payer": {
    • "payment_method": "bank",
    • "funding_instruments": [
      • {
        • "credit_card": {
          • "id": "string",
          • "number": "string",
          • "type": "string",
          • "expire_month": 0,
          • "expire_year": 0,
          • "cvv2": 0,
          • "first_name": "string",
          • "last_name": "string",
          • "external_customer_id": "string",
          • "state": "expired",
          • "valid_until": "string",
          • "links": [
            • {
              • "href": "string",
              • "rel": "string",
              • "method": "GET"
              }
            ],
          • "billing_address": {
            • "line1": "string",
            • "line2": "string",
            • "city": "string",
            • "state": "string",
            • "country_code": "st",
            • "postal_code": "string"
            }
          }
        }
      ],
    • "funding_option_id": "string",
    • "payer_info": {
      • "email": "user@example.com",
      • "first_name": "string",
      • "last_name": "string",
      • "payer_id": "string",
      • "shipping_address": {
        • "recipient_name": "string",
        • "default_address": true,
        • "line1": "string",
        • "line2": "string",
        • "city": "string",
        • "state": "string",
        • "country_code": "st",
        • "postal_code": "string"
        },
      • "billing_address": {
        • "line1": "string",
        • "line2": "string",
        • "city": "string",
        • "state": "string",
        • "country_code": "st",
        • "postal_code": "string"
        }
      }
    },
  • "override_merchant_preferences": {
    • "id": "string",
    • "cancel_url": "http://example.com",
    • "return_url": "http://example.com",
    • "max_fail_attempts": "string",
    • "auto_bill_amount": "YES",
    • "initial_fail_amount_action": "CONTINUE",
    • "accepted_payment_type": "string",
    • "char_set": "string",
    • "setup_fee": {
      • "value": "string",
      • "currency": "string"
      }
    },
  • "override_charge_models": [
    • {
      • "charge_id": "string",
      • "amount": {
        • "value": "string",
        • "currency": "string"
        }
      }
    ],
  • "plan": {
    • "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": {
              • "value": "string",
              • "currency": "string"
              }
            }
          ],
        • "amount": {
          • "value": "string",
          • "currency": "string"
          }
        }
      ],
    • "terms": [
      • {
        • "id": "string",
        • "type": "MONTHLY",
        • "occurrences": "string",
        • "buyer_editable": "string",
        • "max_billing_amount": {
          • "value": "string",
          • "currency": "string"
          },
        • "amount_range": {
          • "value": "string",
          • "currency": "string"
          }
        }
      ],
    • "merchant_preferences": {
      • "id": "string",
      • "cancel_url": "http://example.com",
      • "return_url": "http://example.com",
      • "max_fail_attempts": "string",
      • "auto_bill_amount": "YES",
      • "initial_fail_amount_action": "CONTINUE",
      • "accepted_payment_type": "string",
      • "char_set": "string",
      • "setup_fee": {
        • "value": "string",
        • "currency": "string"
        }
      },
    • "links": [
      • {
        • "href": "string",
        • "rel": "string",
        • "method": "GET"
        }
      ],
    • "currency_code": "string"
    },
  • "links": [
    • {
      • "href": "string",
      • "rel": "string",
      • "method": "GET"
      }
    ],
  • "shipping_address": {
    • "recipient_name": "string",
    • "default_address": true,
    • "line1": "string",
    • "line2": "string",
    • "city": "string",
    • "state": "string",
    • "country_code": "st",
    • "postal_code": "string"
    }
}

Agreement Details

The agreement details.

cycles_remaining
string

The number of payment cycles remaining for this agreement.

cycles_completed
string

The number of payment cycles completed for this agreement.

next_billing_date
string

The next billing date and time for this agreement, in Internet date and time format. For example, 2017-01-23T08:00:00Z.

last_payment_date
string

The last payment date and time for this agreement, in Internet date and time format. For example, 2016-12-23T08:00:00Z.

final_payment_date
string

The final payment date and time for this agreement, in Internet date and time format. For example, 2017-09-23T08:00:00Z.

failed_payment_count
string

The total number of failed payments for this agreement.

object (Currency)

The currency and amount of the outstanding balance for this agreement.

object (Currency)

The currency and amount of the last payment amount for this agreement.

{
  • "cycles_remaining": "string",
  • "cycles_completed": "string",
  • "next_billing_date": "string",
  • "last_payment_date": "string",
  • "final_payment_date": "string",
  • "failed_payment_count": "string",
  • "outstanding_balance": {
    • "value": "string",
    • "currency": "string"
    },
  • "last_payment_amount": {
    • "value": "string",
    • "currency": "string"
    }
}

Agreement State Descriptor

The description of the current state of an agreement.

note
string <= 128 characters

The reason for the agreement state change.

{
  • "note": "string"
}

Agreement Transaction

The agreement transaction.

transaction_id
string

The ID of the transaction.

status
string

The current status of the transaction. Value is:

  • Completed. The transaction is complete and the money has been transferred to the payee.
  • Partially_Refunded. A part of the transaction amount has been refunded to the payer.
  • Pending. The transaction is pending settlement.
  • Refunded. The transaction amount has been refunded to the payer.
  • Denied. The transaction has been denied.

Enum: "Completed" "Partially_Refunded" "Pending" "Refunded" "Denied"
transaction_type
string

The type of transaction. Typically, Recurring Payment.

payer_email
string

The email ID of the customer.

payer_name
string

The business name of the customer.

time_stamp
string

The date and time when the transaction occurred, in Internet date and time format.

time_zone
string

The time zone of the update_time field.

required
object (Currency)

The currency and amount for a transaction.

required
object (Currency)

The currency and amount for a transaction.

required
object (Currency)

The currency and amount for a transaction.

{
  • "transaction_id": "string",
  • "status": "Completed",
  • "transaction_type": "string",
  • "payer_email": "string",
  • "payer_name": "string",
  • "time_stamp": "string",
  • "time_zone": "string",
  • "amount": {
    • "value": "string",
    • "currency": "string"
    },
  • "fee_amount": {
    • "value": "string",
    • "currency": "string"
    },
  • "net_amount": {
    • "value": "string",
    • "currency": "string"
    }
}

Agreement Transactions

An array of agreement transactions.

Array of objects (Agreement Transaction)

An array of agreement transactions.

{
  • "agreement_transaction_list": [
    • {
      • "transaction_id": "string",
      • "status": "Completed",
      • "transaction_type": "string",
      • "payer_email": "string",
      • "payer_name": "string",
      • "time_stamp": "string",
      • "time_zone": "string",
      • "amount": {
        • "value": "string",
        • "currency": "string"
        },
      • "fee_amount": {
        • "value": "string",
        • "currency": "string"
        },
      • "net_amount": {
        • "value": "string",
        • "currency": "string"
        }
      }
    ]
}

charge_model

The charge model for a payment definition. A charge model defines shipping fee and tax information.

id
string <= 128 characters

The PayPal-generated ID for the resource.

type
required
string <= 20 characters

The charge model type.

Enum: "TAX" "SHIPPING"
required
object (Currency)

The currency and amount for a transaction.

{
  • "id": "string",
  • "type": "TAX",
  • "amount": {
    • "value": "string",
    • "currency": "string"
    }
}

country_code

The two-character ISO 3166-1 code that identifies the country or region.

Note: The country code for Great Britain is GB and not UK as used in the top-level domain names for that country. Use the C2 country code for China worldwide for comparable uncontrolled price (CUP) method, bank card, and cross-border transactions.

string <ppaas_common_country_code_v2> (country_code) = 2 characters ^([A-Z]{2}|C2)$

The two-character ISO 3166-1 code that identifies the country or region.

Note: The country code for Great Britain is GB and not UK as used in the top-level domain names for that country. Use the C2 country code for China worldwide for comparable uncontrolled price (CUP) method, bank card, and cross-border transactions.

"st"

Create Agreement Request

The billing agreement information.

id
string <= 128 characters

The PayPal-generated ID for the resource.

state
string <= 128 characters

The state of the agreement. Value is:

  • Pending. The agreement awaits initial payment completion.
  • Active. The agreement is active and payments are scheduled.
  • Suspended. The agreement is suspended and payments are not scheduled until the agreement is reactivated.
  • Cancelled. The agreement is cancelled and payments are not scheduled.
  • Expired. The agreement is expired and no more payments remain to be scheduled.

Enum: "Pending" "Active" "Suspended" "Cancelled" "Expired"
name
required
string <= 128 characters

The agreement name.

description
required
string <= 128 characters

The agreement description.

start_date
required
string <date-time>

The date and time when this agreement begins, in Internet date and time format. The start date must be no less than 24 hours after the current date as the agreement can take up to 24 hours to activate.

The start date and time in the create agreement request might not match the start date and time that the API returns in the execute agreement response. When you execute an agreement, the API internally converts the start date and time to the start of the day in the time zone of the merchant account. For example, the API converts a 2017-01-02T14:36:21Z start date and time for an account in the Berlin time zone (UTC + 1) to 2017-01-02T00:00:00. When the API returns this date and time in the execute agreement response, it shows the converted date and time in the UTC time zone. So, the internal 2017-01-02T00:00:00 start date and time becomes 2017-01-01T23:00:00 externally.

object (Agreement Details)

The agreement details.

required
object (Payer)

The details for the customer who funds the payment. The API gathers this information from execution of the approval URL.

object (Merchant Preferences)

The merchant preferences that override the default information in the plan. If you omit this parameter, the agreement uses the default merchant preferences from the plan. The merchant preferences include 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 (Override Charge Model)

An array of charge models to override the charge models in the plan. A charge model defines shipping fee and tax information. If you omit this parameter, the agreement uses the default shipping fee and tax information from the plan.

required
object (Plan)

The ID of the plan on which this agreement is based.

Array of objects (Link Description)

An array of request-related HATEOAS links.

object (Shipping Address)

The shipping address for a payment. Must be provided if it differs from the default address.

{
  • "id": "string",
  • "state": "Pending",
  • "name": "string",
  • "description": "string",
  • "start_date": "2019-08-24T14:15:22Z",
  • "agreement_details": {
    • "cycles_remaining": "string",
    • "cycles_completed": "string",
    • "next_billing_date": "string",
    • "last_payment_date": "string",
    • "final_payment_date": "string",
    • "failed_payment_count": "string",
    • "outstanding_balance": {
      • "value": "string",
      • "currency": "string"
      },
    • "last_payment_amount": {
      • "value": "string",
      • "currency": "string"
      }
    },
  • "payer": {
    • "payment_method": "bank",
    • "funding_instruments": [
      • {
        • "credit_card": {
          • "id": "string",
          • "number": "string",
          • "type": "string",
          • "expire_month": 0,
          • "expire_year": 0,
          • "cvv2": 0,
          • "first_name": "string",
          • "last_name": "string",
          • "external_customer_id": "string",
          • "state": "expired",
          • "valid_until": "string",
          • "links": [
            • {
              • "href": "string",
              • "rel": "string",
              • "method": "GET"
              }
            ],
          • "billing_address": {
            • "line1": "string",
            • "line2": "string",
            • "city": "string",
            • "state": "string",
            • "country_code": "st",
            • "postal_code": "string"
            }
          }
        }
      ],
    • "funding_option_id": "string",
    • "payer_info": {
      • "email": "user@example.com",
      • "first_name": "string",
      • "last_name": "string",
      • "payer_id": "string",
      • "shipping_address": {
        • "recipient_name": "string",
        • "default_address": true,
        • "line1": "string",
        • "line2": "string",
        • "city": "string",
        • "state": "string",
        • "country_code": "st",
        • "postal_code": "string"
        },
      • "billing_address": {
        • "line1": "string",
        • "line2": "string",
        • "city": "string",
        • "state": "string",
        • "country_code": "st",
        • "postal_code": "string"
        }
      }
    },
  • "override_merchant_preferences": {
    • "id": "string",
    • "cancel_url": "http://example.com",
    • "return_url": "http://example.com",
    • "max_fail_attempts": "string",
    • "auto_bill_amount": "YES",
    • "initial_fail_amount_action": "CONTINUE",
    • "accepted_payment_type": "string",
    • "char_set": "string",
    • "setup_fee": {
      • "value": "string",
      • "currency": "string"
      }
    },
  • "override_charge_models": [
    • {
      • "charge_id": "string",
      • "amount": {
        • "value": "string",
        • "currency": "string"
        }
      }
    ],
  • "plan": {
    • "id": "string"
    },
  • "links": [
    • {
      • "href": "string",
      • "rel": "string",
      • "method": "GET"
      }
    ],
  • "shipping_address": {
    • "recipient_name": "string",
    • "default_address": true,
    • "line1": "string",
    • "line2": "string",
    • "city": "string",
    • "state": "string",
    • "country_code": "st",
    • "postal_code": "string"
    }
}

Create Agreement Response

The billing agreement information.

id
string <= 128 characters

The PayPal-generated ID for the resource.

state
string <= 128 characters

The state of the agreement. Value is:

  • Pending. The agreement awaits initial payment completion.
  • Active. The agreement is active and payments are scheduled.
  • Suspended. The agreement is suspended and payments are not scheduled until the agreement is reactivated.
  • Cancelled. The agreement is cancelled and payments are not scheduled.
  • Expired. The agreement is expired and no more payments remain to be scheduled.

Enum: "Pending" "Active" "Suspended" "Cancelled" "Expired"
name
required
string <= 128 characters

The agreement name.

description
required
string <= 128 characters

The agreement description.

start_date
required
string <date-time>

The date and time when this agreement begins, in Internet date and time format. The start date must be no less than 24 hours after the current date as the agreement can take up to 24 hours to activate.

The start date and time in the create agreement request might not match the start date and time that the API returns in the execute agreement response. When you execute an agreement, the API internally converts the start date and time to the start of the day in the time zone of the merchant account. For example, the API converts a 2017-01-02T14:36:21Z start date and time for an account in the Berlin time zone (UTC + 1) to 2017-01-02T00:00:00. When the API returns this date and time in the execute agreement response, it shows the converted date and time in the UTC time zone. So, the internal 2017-01-02T00:00:00 start date and time becomes 2017-01-01T23:00:00 externally.

object (Agreement Details)

The agreement details.

required
object (Payer)

The details for the customer who funds the payment. The API gathers this information from execution of the approval URL.

object (Merchant Preferences)

The merchant preferences that override the default information in the plan. If you omit this parameter, the agreement uses the default merchant preferences from the plan. The merchant preferences include 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 (Override Charge Model)

An array of charge models to override the charge models in the plan. A charge model defines shipping fee and tax information. If you omit this parameter, the agreement uses the default shipping fee and tax information from the plan.

required
object (Plan)

The plan that can be used to create an agreement.

Array of objects (Link Description)

An array of request-related HATEOAS links.

object (Simple Postal Address (Coarse-Grained))

The shipping address of the agreement, which must be provided if it differs from the default address.

{
  • "id": "string",
  • "state": "Pending",
  • "name": "string",
  • "description": "string",
  • "start_date": "2019-08-24T14:15:22Z",
  • "agreement_details": {
    • "cycles_remaining": "string",
    • "cycles_completed": "string",
    • "next_billing_date": "string",
    • "last_payment_date": "string",
    • "final_payment_date": "string",
    • "failed_payment_count": "string",
    • "outstanding_balance": {
      • "value": "string",
      • "currency": "string"
      },
    • "last_payment_amount": {
      • "value": "string",
      • "currency": "string"
      }
    },
  • "payer": {
    • "payment_method": "bank",
    • "funding_instruments": [
      • {
        • "credit_card": {
          • "id": "string",
          • "number": "string",
          • "type": "string",
          • "expire_month": 0,
          • "expire_year": 0,
          • "cvv2": 0,
          • "first_name": "string",
          • "last_name": "string",
          • "external_customer_id": "string",
          • "state": "expired",