PayPal Plans API

The Plans API from PayPal — 5 operation(s) for plans.

Operations 7

POST /v1/billing/plans Create plan #
GET /v1/billing/plans List plans #
GET /v1/billing/plans/{id} Show plan details #
PATCH /v1/billing/plans/{id} Update plan #
POST /v1/billing/plans/{id}/activate Activate plan #
POST /v1/billing/plans/{id}/deactivate Deactivate plan #
POST /v1/billing/plans/{id}/update-pricing-schemes Update pricing #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/paypal-plans-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

paypal-plans-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Paypal Subscriptions Authorizations Plans API
  description: You can use billing plans and subscriptions to create subscriptions that process recurring PayPal payments for physical or digital goods, or services. A plan includes pricing and billing cycle information that defines the amount and frequency of charge for a subscription. You can also define a fixed plan, such as a $5 basic plan or a volume- or graduated-based plan with pricing tiers based on the quantity purchased. For more information, see <a href="/docs/subscriptions/">Subscriptions Overview</a>.
  version: '1.6'
  contact: {}
servers:
- url: https://api-m.sandbox.paypal.com
  description: PayPal Sandbox Environment
- url: https://api-m.paypal.com
  description: PayPal Live Environment
tags:
- name: Plans
paths:
  /v1/billing/plans:
    post:
      summary: Create plan
      description: Creates a plan that defines pricing and billing cycle details for subscriptions.
      operationId: plans.create
      responses:
        '200':
          description: A successful request returns the HTTP `200 OK` status code and a JSON response body that shows billing plan details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/plan'
              examples:
                plan:
                  value:
                    id: P-5ML4271244454362WXNWU5NQ
                    product_id: PROD-XXCD1234QWER65782
                    name: Video Streaming Service Plan
                    description: Video Streaming Service basic plan
                    status: ACTIVE
                    billing_cycles:
                    - frequency:
                        interval_unit: MONTH
                        interval_count: 1
                      tenure_type: TRIAL
                      sequence: 1
                      total_cycles: 2
                      pricing_scheme:
                        fixed_price:
                          value: '3'
                          currency_code: USD
                        version: 1
                        create_time: '2020-05-27T12:13:51Z'
                        update_time: '2020-05-27T12:13:51Z'
                    - frequency:
                        interval_unit: MONTH
                        interval_count: 1
                      tenure_type: TRIAL
                      sequence: 2
                      total_cycles: 3
                      pricing_scheme:
                        fixed_price:
                          currency_code: USD
                          value: '6'
                        version: 1
                        create_time: '2020-05-27T12:13:51Z'
                        update_time: '2020-05-27T12:13:51Z'
                    - frequency:
                        interval_unit: MONTH
                        interval_count: 1
                      tenure_type: REGULAR
                      sequence: 3
                      total_cycles: 12
                      pricing_scheme:
                        fixed_price:
                          currency_code: USD
                          value: '10'
                        version: 1
                        create_time: '2020-05-27T12:13:51Z'
                        update_time: '2020-05-27T12:13:51Z'
                    payment_preferences:
                      auto_bill_outstanding: true
                      setup_fee:
                        value: '10'
                        currency_code: USD
                      setup_fee_failure_action: CONTINUE
                      payment_failure_threshold: 3
                    taxes:
                      percentage: '10'
                      inclusive: false
                    create_time: '2020-05-27T12:13:51Z'
                    update_time: '2020-05-27T12:13:51Z'
                    links:
                    - href: https://api-m.paypal.com/v1/billing/plans/P-5ML4271244454362WXNWU5NQ
                      rel: self
                      method: GET
                    - href: https://api-m.paypal.com/v1/billing/plans/P-5ML4271244454362WXNWU5NQ
                      rel: edit
                      method: PATCH
                    - href: https://api-m.paypal.com/v1/billing/plans/P-5ML4271244454362WXNWU5NQ/deactivate
                      rel: deactivate
                      method: POST
                    - href: https://api-m.paypal.com/v1/billing/plans/P-5ML4271244454362WXNWU5NQ/update-pricing-schemes
                      rel: edit
                      method: POST
        '201':
          description: A successful request returns the HTTP `201 Created` status code and a JSON response body that shows billing plan details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/plan'
        '400':
          description: Bad Request. Request is not well-formed, syntactically incorrect, or violates schema.
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/error_400'
                - $ref: '#/components/schemas/plans.create-400'
        '401':
          description: Authentication failed due to missing authorization header, or invalid authentication credentials.
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/error_401'
                - $ref: '#/components/schemas/401'
        '403':
          description: Authorization failed due to insufficient permissions.
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/error_403'
                - $ref: '#/components/schemas/403'
        '422':
          description: The requested action could not be performed, semantically incorrect, or failed business validation.
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/error_422'
                - $ref: '#/components/schemas/422'
        '500':
          description: An internal server error has occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_500'
        default:
          $ref: '#/components/responses/default'
      parameters:
      - $ref: '#/components/parameters/prefer'
      - $ref: '#/components/parameters/paypal_request_id'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/plan_request_POST'
            examples:
              plan_request_post:
                value:
                  product_id: PROD-XXCD1234QWER65782
                  name: Video Streaming Service Plan
                  description: Video Streaming Service basic plan
                  status: ACTIVE
                  billing_cycles:
                  - frequency:
                      interval_unit: MONTH
                      interval_count: 1
                    tenure_type: TRIAL
                    sequence: 1
                    total_cycles: 2
                    pricing_scheme:
                      fixed_price:
                        value: '3'
                        currency_code: USD
                  - frequency:
                      interval_unit: MONTH
                      interval_count: 1
                    tenure_type: TRIAL
                    sequence: 2
                    total_cycles: 3
                    pricing_scheme:
                      fixed_price:
                        value: '6'
                        currency_code: USD
                  - frequency:
                      interval_unit: MONTH
                      interval_count: 1
                    tenure_type: REGULAR
                    sequence: 3
                    total_cycles: 12
                    pricing_scheme:
                      fixed_price:
                        value: '10'
                        currency_code: USD
                  payment_preferences:
                    auto_bill_outstanding: true
                    setup_fee:
                      value: '10'
                      currency_code: USD
                    setup_fee_failure_action: CONTINUE
                    payment_failure_threshold: 3
                  taxes:
                    percentage: '10'
                    inclusive: false
      security:
      - Oauth2:
        - https://uri.paypal.com/services/subscriptions
      tags:
      - Plans
    get:
      summary: List plans
      description: Lists billing plans.
      operationId: plans.list
      responses:
        '200':
          description: A successful request returns the HTTP `200 OK` status code and a JSON response body that lists billing plans.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/plan_collection'
        '400':
          description: Request is not well-formed, syntactically incorrect, or violates schema.
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/error_400'
                - $ref: '#/components/schemas/400'
        '401':
          description: Authentication failed due to missing authorization header, or invalid authentication credentials.
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/error_401'
                - $ref: '#/components/schemas/401'
        '403':
          description: Authorization failed due to insufficient permissions.
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/error_403'
                - $ref: '#/components/schemas/403'
        '404':
          description: The specified resource does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_404'
        '500':
          description: An internal server error has occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_500'
        default:
          $ref: '#/components/responses/default'
      parameters:
      - $ref: '#/components/parameters/prefer'
      - $ref: '#/components/parameters/product_id'
      - $ref: '#/components/parameters/plan_ids'
      - $ref: '#/components/parameters/page_size'
      - $ref: '#/components/parameters/page'
      - $ref: '#/components/parameters/total_required'
      security:
      - Oauth2:
        - https://uri.paypal.com/services/subscriptions
      tags:
      - Plans
  /v1/billing/plans/{id}:
    get:
      summary: Show plan details
      description: Shows details for a plan, by ID.
      operationId: plans.get
      responses:
        '200':
          description: A successful request returns the HTTP `200 OK` status code and a JSON response body that shows plan details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/plan'
        '401':
          description: Authentication failed due to missing authorization header, or invalid authentication credentials.
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/error_401'
                - $ref: '#/components/schemas/401'
        '403':
          description: Authorization failed due to insufficient permissions.
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/error_403'
                - $ref: '#/components/schemas/403'
        '404':
          description: The specified resource does not exist.
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/error_404'
                - $ref: '#/components/schemas/404'
        '500':
          description: An internal server error has occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_500'
        default:
          $ref: '#/components/responses/default'
      parameters:
      - $ref: '#/components/parameters/id'
      security:
      - Oauth2:
        - https://uri.paypal.com/services/subscriptions
      tags:
      - Plans
    patch:
      summary: Update plan
      description: Updates a plan with the `CREATED` or `ACTIVE` status. For an `INACTIVE` plan, you can make only status updates.<br/>You can patch these attributes and objects:<table><thead><tr><th>Attribute or object</th><th>Operations</th></tr></thead><tbody><tr><td><code>description</code></td><td>replace</td></tr><tr><td><code>payment_preferences.auto_bill_outstanding</code></td><td>replace</td></tr><tr><td><code>taxes.percentage</code></td><td>replace</td></tr><tr><td><code>payment_preferences.payment_failure_threshold</code></td><td>replace</td></tr><tr><td><code>payment_preferences.setup_fee</code></td><td>replace</td></tr><tr><td><code>payment_preferences.setup_fee_failure_action</code></td><td>replace</td></tr><tr><td><code>name</code></td><td>replace</td></tr></tbody></table>
      operationId: plans.patch
      responses:
        '204':
          description: A successful request returns the HTTP `204 No Content` status code with no JSON response body.
        '400':
          description: Request is not well-formed, syntactically incorrect, or violates schema.
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/error_400'
                - $ref: '#/components/schemas/plans.patch-400'
        '401':
          description: Authentication failed due to missing authorization header, or invalid authentication credentials.
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/error_401'
                - $ref: '#/components/schemas/401'
        '403':
          description: Authorization failed due to insufficient permissions.
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/error_403'
                - $ref: '#/components/schemas/403'
        '404':
          description: The specified resource does not exist.
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/error_404'
                - $ref: '#/components/schemas/404'
        '422':
          description: The requested action could not be performed, semantically incorrect, or failed business validation.
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/error_422'
                - $ref: '#/components/schemas/plans.patch-422'
        '500':
          description: An internal server error has occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_500'
        default:
          $ref: '#/components/responses/default'
      parameters:
      - $ref: '#/components/parameters/id'
      requestBody:
        $ref: '#/components/requestBodies/patch_request'
      security:
      - Oauth2:
        - https://uri.paypal.com/services/subscriptions
      tags:
      - Plans
  /v1/billing/plans/{id}/activate:
    post:
      summary: Activate plan
      description: Activates a plan, by ID.
      operationId: plans.activate
      responses:
        '204':
          description: A successful request returns the HTTP `204 No Content` status code with no JSON response body.
        '401':
          description: Authentication failed due to missing authorization header, or invalid authentication credentials.
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/error_401'
                - $ref: '#/components/schemas/401'
        '403':
          description: Authorization failed due to insufficient permissions.
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/error_403'
                - $ref: '#/components/schemas/403'
        '404':
          description: The specified resource does not exist.
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/error_404'
                - $ref: '#/components/schemas/404'
        '422':
          description: The requested action could not be performed, semantically incorrect, or failed business validation.
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/error_422'
                - $ref: '#/components/schemas/plans.activate-422'
        '500':
          description: An internal server error has occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_500'
        default:
          $ref: '#/components/responses/default'
      parameters:
      - $ref: '#/components/parameters/id'
      security:
      - Oauth2:
        - https://uri.paypal.com/services/subscriptions
      tags:
      - Plans
  /v1/billing/plans/{id}/deactivate:
    post:
      summary: Deactivate plan
      description: Deactivates a plan, by ID.
      operationId: plans.deactivate
      responses:
        '204':
          description: A successful request returns the HTTP `204 No Content` status code with no JSON response body.
        '401':
          description: Authentication failed due to missing authorization header, or invalid authentication credentials.
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/error_401'
                - $ref: '#/components/schemas/401'
        '403':
          description: Authorization failed due to insufficient permissions.
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/error_403'
                - $ref: '#/components/schemas/403'
        '404':
          description: The specified resource does not exist.
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/error_404'
                - $ref: '#/components/schemas/404'
        '422':
          description: The requested action could not be performed, semantically incorrect, or failed business validation.
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/error_422'
                - $ref: '#/components/schemas/plans.deactivate-422'
        '500':
          description: An internal server error has occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_500'
        default:
          $ref: '#/components/responses/default'
      parameters:
      - $ref: '#/components/parameters/id'
      security:
      - Oauth2:
        - https://uri.paypal.com/services/subscriptions
      tags:
      - Plans
  /v1/billing/plans/{id}/update-pricing-schemes:
    post:
      summary: Update pricing
      description: Updates pricing for a plan. For example, you can update a regular billing cycle from $5 per month to $7 per month.
      operationId: plans.update-pricing-schemes
      responses:
        '204':
          description: A successful request returns the HTTP `204 No Content` status code with no JSON response body.
        '400':
          description: Bad Request. Request is not well-formed, syntactically incorrect, or violates schema.
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/error_400'
                - $ref: '#/components/schemas/plans.update-pricing-schemes-400'
        '401':
          description: Authentication failed due to missing authorization header, or invalid authentication credentials.
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/error_401'
                - $ref: '#/components/schemas/401'
        '403':
          description: Authorization failed due to insufficient permissions.
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/error_403'
                - $ref: '#/components/schemas/403'
        '404':
          description: The specified resource does not exist.
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/error_404'
                - $ref: '#/components/schemas/404'
        '422':
          description: The requested action could not be performed, semantically incorrect, or failed business validation.
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/error_422'
                - $ref: '#/components/schemas/plans.update-pricing-schemes-422'
        '500':
          description: An internal server error has occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_500'
        default:
          $ref: '#/components/responses/default'
      parameters:
      - $ref: '#/components/parameters/id'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/update_pricing_schemes_list_request'
            examples:
              update_pricing_schemes_list_request:
                value:
                  pricing_schemes:
                  - billing_cycle_sequence: 1
                    pricing_scheme:
                      fixed_price:
                        value: '50'
                        currency_code: USD
                  - billing_cycle_sequence: 2
                    pricing_scheme:
                      fixed_price:
                        value: '100'
                        currency_code: USD
                      pricing_model: VOLUME
                      tiers:
                      - starting_quantity: '1'
                        ending_quantity: '1000'
                        amount:
                          value: '150'
                          currency_code: USD
                      - starting_quantity: '1001'
                        amount:
                          value: '250'
                          currency_code: USD
      security:
      - Oauth2:
        - https://uri.paypal.com/services/subscriptions
      tags:
      - Plans
components:
  schemas:
    error_500:
      type: object
      title: Internal Server Error
      description: This is either a system or application error, and generally indicates that although the client appeared to provide a correct request, something unexpected has gone wrong on the server.
      properties:
        name:
          type: string
          enum:
          - INTERNAL_SERVER_ERROR
        message:
          type: string
          enum:
          - An internal server error occurred.
        debug_id:
          type: string
          description: The PayPal internal ID. Used for correlation purposes.
        links:
          description: An array of request-related [HATEOAS links](https://en.wikipedia.org/wiki/HATEOAS).
          type: array
          minItems: 0
          maxItems: 10000
          items:
            $ref: '#/components/schemas/error_link_description'
      example:
        name: INTERNAL_SERVER_ERROR
        message: An internal server error occurred.
        debug_id: 90957fca61718
        links:
        - href: https://developer.paypal.com/api/orders/v2/#error-INTERNAL_SERVER_ERROR
          rel: information_link
    link_description:
      type: object
      title: Link Description
      description: The request-related [HATEOAS link](/docs/api/reference/api-responses/#hateoas-links) information.
      required:
      - href
      - rel
      properties:
        href:
          type: string
          description: The complete target URL. To make the related call, combine the method with this [URI Template-formatted](https://tools.ietf.org/html/rfc6570) link. For pre-processing, include the `$`, `(`, and `)` characters. The `href` is the key HATEOAS component that links a completed call with a subsequent call.
        rel:
          type: string
          description: The [link relation type](https://tools.ietf.org/html/rfc5988#section-4), which serves as an ID for a link that unambiguously describes the semantics of the link. See [Link Relations](https://www.iana.org/assignments/link-relations/link-relations.xhtml).
        method:
          type: string
          description: The HTTP method required to make the related call.
          enum:
          - GET
          - POST
          - PUT
          - DELETE
          - HEAD
          - CONNECT
          - OPTIONS
          - PATCH
    pricing_scheme:
      title: Pricing Scheme
      description: The pricing scheme details.
      type: object
      properties:
        version:
          type: integer
          description: The version of the pricing scheme.
          minimum: 0
          maximum: 999
          readOnly: true
        fixed_price:
          description: The fixed amount to charge for the subscription. The changes to fixed amount are applicable to both existing and future subscriptions. For existing subscriptions, payments within 10 days of price change are not affected.
          $ref: '#/components/schemas/money'
        pricing_model:
          type: string
          description: The pricing model for tiered plan. The `tiers` parameter is required.
          minLength: 1
          maxLength: 24
          pattern: ^[A-Z_]+$
          enum:
          - VOLUME
          - TIERED
        tiers:
          type: array
          description: An array of pricing tiers which are used for billing volume/tiered plans. pricing_model field has to be specified.
          minItems: 1
          maxItems: 32
          items:
            $ref: '#/components/schemas/pricing_tier'
        create_time:
          description: The date and time when this pricing scheme was created, in [Internet date and time format](https://tools.ietf.org/html/rfc3339#section-5.6).
          readOnly: true
          $ref: '#/components/schemas/date_time'
        update_time:
          description: The date and time when this pricing scheme was last updated, in [Internet date and time format](https://tools.ietf.org/html/rfc3339#section-5.6).
          readOnly: true
          $ref: '#/components/schemas/date_time'
    money:
      type: object
      title: Money
      description: The currency and amount for a financial transaction, such as a balance or payment due.
      properties:
        currency_code:
          $ref: '#/components/schemas/currency_code'
        value:
          type: string
          description: The value, which might be:<ul><li>An integer for currencies like `JPY` that are not typically fractional.</li><li>A decimal fraction for currencies like `TND` that are subdivided into thousandths.</li></ul>For the required number of decimal places for a currency code, see [Currency Codes](/docs/integration/direct/rest/currency-codes/).
          maxLength: 32
          pattern: ^((-?[0-9]+)|(-?([0-9]+)?[.][0-9]+))$
      required:
      - currency_code
      - value
    date_time:
      type: string
      description: The date and time, in [Internet date and time format](https://tools.ietf.org/html/rfc3339#section-5.6). Seconds are required while fractional seconds are optional.<blockquote><strong>Note:</strong> The regular expression provides guidance but does not reject all invalid dates.</blockquote>
      format: ppaas_date_time_v3
      minLength: 20
      maxLength: 64
      pattern: ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])[T,t]([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)([.][0-9]+)?([Zz]|[+-][0-9]{2}:[0-9]{2})$
    plan:
      title: Plan
      description: The plan details.
      type: object
      properties:
        id:
          type: string
          description: The unique PayPal-generated ID for the plan.
          minLength: 3
          maxLength: 50
          readOnly: true
        product_id:
          type: string
          description: The ID for the product.
          minLength: 6
          maxLength: 50
        name:
          type: string
          description: The plan name.
          minLength: 1
          maxLength: 127
        status:
          type: string
          description: The plan status.
          minLength: 1
          maxLength: 24
          pattern: ^[A-Z_]+$
          enum:
          - CREATED
          - INACTIVE
          - ACTIVE
        description:
          type: string
          description: The detailed description of the plan.
          minLength: 1
          maxLength: 127
        billing_cycles:
          type: array
          description: An array of billing cycles for trial billing and regular billing. A plan can have at most two trial cycles and only one regular cycle.
          minItems: 1
          maxItems: 12
          items:
            $ref: '#/components/schemas/billing_cycle'
        payment_preferences:
          $ref: '#/components/schemas/payment_preferences'
        taxes:
          $ref: '#/components/schemas/taxes'
        quantity_supported:
          type: boolean
          description: Indicates whether you can subscribe to this plan by providing a quantity for the goods or service.
          default: false
        create_time:
          description: The date and time when the plan was created, in [Internet date and time format](https://tools.ietf.org/html/rfc3339#section-5.6).
          readOnly: true
          $ref: '#/components/schemas/date_time'
        update_time:
          description: The date and time when the plan was last updated, in [Internet date and time format](https://tools.ietf.org/html/rfc3339#section-5.6).
          readOnly: true
          $ref: '#/components/schemas/date_time'
        links:
          type: array
          description: An array of request-related [HATEOAS links](/docs/api/reference/api-responses/#hateoas-links).
          readOnly: true
          minItems: 1
          maxItems: 10
          items:
            $ref: '#/components/schemas/link_description'
            readOnly: true
    '404':
      properties:
        details:
          type: array
          items:
            anyOf:
            - title: INVALID_RESOURCE_ID
              properties:
                issue:
                  type: string
                  enum:
                  - INVALID_RESOURCE_ID
                description:
                  type: string
                  enum:
                  - Specified resource ID does not exist. Please check the resource ID and try again.
    currency_code:
      description: The [three-character ISO-4217 currency code](/docs/integration/direct/rest/currency-codes/) that identifies the currency.
      type: string
      format: ppaas_common_currency_code_v2
      minLength: 3
      maxLength: 3
    payment_preferences:
      title: Payment Preferences
      description: The payment preferences for a subscription.
      type: object
      properties:
        auto_bill_outstanding:
          type: boolean
          description: Indicates whether to automatically bill the outstanding amount in the next billing cycle.
          default: true
        setup_fee:
          description: The initial set-up fee for the service.
          $ref: '#/components/schemas/money'
        setup_fee_failure_action:
          type: string
          description: The action to take on the subscription if the initial payment for the setup fails.
          minLength: 1
          maxLength: 24
          pattern: ^[A-Z_]+$
          default: CANCE

# --- truncated at 32 KB (74 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/paypal/refs/heads/main/openapi/paypal-plans-api-openapi.yml