> ## Documentation Index
> Fetch the complete documentation index at: https://paypal-sb-staging.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Receive updated order information via callback URL

> The documentation for this 'endpoint' is different from the other endpoints under v2 Orders. For this endpoint the role of client and server is reversed. The client sending the request is PayPal, and the server sending the response is the merchant. In the request, PayPal will send the buyer's redacted shipping address and selected shipping option to the callback URL defined the create order request. The response from the merchant will update the Orders resource.



## OpenAPI

````yaml api-reference/checkout_orders_v2.json post /v2/checkout/orders/order-update-callback
openapi: 3.0.3
info:
  title: Orders
  description: >-
    An order represents a payment between two or more parties. Use the Orders
    API to create, update, retrieve, authorize, and capture orders.
  version: '2.28'
  contact: {}
servers:
  - url: https://api-m.sandbox.paypal.com
    description: PayPal Sandbox Environment
  - url: https://api-m.paypal.com
    description: PayPal Live Environment
security: []
tags:
  - name: orders
    description: >-
      Use the `/orders` resource to create, update, retrieve, authorize, capture
      and track orders.
  - name: trackers
    description: >-
      Use the `/trackers` resource to update and retrieve tracking information
      for PayPal orders.
  - name: externalcallback
    description: >-
      PayPal will use the callback url defined in the create order request to
      send merchants shipping address and shipping options data while the buyer
      is in the PayPal checkout.
externalDocs:
  url: https://developer.paypal.com/docs/api/orders/v2/
paths:
  /v2/checkout/orders/order-update-callback:
    post:
      tags:
        - externalcallback
      summary: Receive updated order information via callback URL
      description: >-
        The documentation for this 'endpoint' is different from the other
        endpoints under v2 Orders. For this endpoint the role of client and
        server is reversed. The client sending the request is PayPal, and the
        server sending the response is the merchant. In the request, PayPal will
        send the buyer's redacted shipping address and selected shipping option
        to the callback URL defined the create order request. The response from
        the merchant will update the Orders resource.
      operationId: server.callback
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/order_update_callback_request'
      responses:
        '200':
          description: The callback to merchant was successful.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/order_update_callback_response'
        '400':
          description: >-
            The request is not well-formed, is syntactically incorrect, or
            violates the schema.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_400'
        '403':
          description: The transaction failed due to insufficient permissions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_403'
        '422':
          description: >-
            The requested action could not be completed, was semantically
            incorrect, or failed business validation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_422'
        '500':
          description: An internal server error has occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_500'
        default:
          $ref: '#/components/responses/default'
components:
  schemas:
    order_update_callback_request:
      title: OrderUpdateCallbackRequest
      type: object
      description: >-
        Shipping Options Callback request. This will be implemented by the
        merchants.
      properties:
        id:
          type: string
          description: The ID of the order.
          readOnly: true
          minLength: 1
          maxLength: 36
          pattern: ^[A-Z0-9-]+$
        shipping_address:
          description: >-
            The portable international postal address. Maps to
            [AddressValidationMetadata](https://github.com/googlei18n/libaddressinput/wiki/AddressValidationMetadata)
            and HTML 5.1 [Autofilling form controls: the autocomplete
            attribute](https://www.w3.org/TR/html51/sec-forms.html#autofilling-form-controls-the-autocomplete-attribute).
          type: object
          title: Portable Postal Address (Medium-Grained)
          properties:
            admin_area_2:
              type: string
              description: A city, town, or village. Smaller than `admin_area_level_1`.
              maxLength: 120
            admin_area_1:
              type: string
              description: >-
                The highest-level sub-division in a country, which is usually a
                province, state, or ISO-3166-2 subdivision. This data is
                formatted for postal delivery, for example, `CA` and not
                `California`. Value, by country, is:<ul><li>UK. A
                county.</li><li>US. A state.</li><li>Canada. A
                province.</li><li>Japan. A prefecture.</li><li>Switzerland. A
                *kanton*.</li></ul>
              maxLength: 300
            postal_code:
              type: string
              description: >-
                The postal code, which is the ZIP code or equivalent. Typically
                required for countries with a postal code or an equivalent. See
                [postal code](https://en.wikipedia.org/wiki/Postal_code).
              maxLength: 60
            country_code:
              $ref: '#/components/schemas/country_code'
          required:
            - country_code
        shipping_option:
          description: >-
            The options that the payee or merchant offers to the payer to ship
            or pick up their items.
          type: object
          title: Shipping Option
          properties:
            id:
              type: string
              description: A unique ID that identifies a payer-selected shipping option.
              maxLength: 127
            label:
              type: string
              description: >-
                A description that the payer sees, which helps them choose an
                appropriate shipping option. For example, `Free Shipping`, `USPS
                Priority Shipping`, `Expédition prioritaire USPS`, or `USPS
                yōuxiān fā huò`. Localize this description to the payer's
                locale.
              maxLength: 127
            type:
              $ref: '#/components/schemas/shipping_type'
              description: A classification for the method of purchase fulfillment.
            amount:
              $ref: '#/components/schemas/money'
              description: The shipping cost for the selected option.
          required:
            - id
            - label
        purchase_units:
          $ref: '#/components/schemas/definitions-purchase_unit_request_list'
      required:
        - shipping_address
        - purchase_units
    order_update_callback_response:
      title: OrderUpdateCallbackResponse
      description: Returns the updated shipping options for an order.
      type: object
      properties:
        id:
          type: string
          description: The ID of the order.
          readOnly: true
          minLength: 1
          maxLength: 36
          pattern: ^[A-Z0-9-]+$
        purchase_units:
          $ref: '#/components/schemas/shipping_options_purchase_unit'
    error_400:
      type: object
      title: Bad Request Error
      description: Request is not well-formed, syntactically incorrect, or violates schema.
      properties:
        name:
          type: string
          enum:
            - INVALID_REQUEST
        message:
          type: string
          enum:
            - >-
              Request is not well-formed, syntactically incorrect, or violates
              schema.
        details:
          type: array
          items:
            $ref: '#/components/schemas/error_details'
        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'
    error_403:
      type: object
      title: Not Authorized Error
      description: >-
        The client is not authorized to access this resource, although it may
        have valid credentials. 
      properties:
        name:
          type: string
          enum:
            - NOT_AUTHORIZED
        message:
          type: string
          enum:
            - Authorization failed due to insufficient permissions.
        details:
          type: array
          items:
            $ref: '#/components/schemas/error_details'
        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'
    error_422:
      type: object
      title: Unprocessable Entity Error
      description: >-
        The requested action cannot be performed and may require interaction
        with APIs or processes outside of the current request. This is distinct
        from a 500 response in that there are no systemic problems limiting the
        API from performing the request.
      properties:
        name:
          type: string
          enum:
            - UNPROCESSABLE_ENTITY
        message:
          type: string
          enum:
            - >-
              The requested action could not be performed, semantically
              incorrect, or failed business validation.
        details:
          type: array
          items:
            $ref: '#/components/schemas/error_details'
        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'
    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
    country_code:
      type: string
      description: >-
        The [2-character ISO 3166-1 code](/api/rest/reference/country-codes/)
        that identifies the country or region.<blockquote><strong>Note:</strong>
        The country code for Great Britain is <code>GB</code> and not
        <code>UK</code> 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.</blockquote>
      format: ppaas_common_country_code_v2
      maxLength: 2
      minLength: 2
      pattern: ^([A-Z]{2}|C2)$
    shipping_type:
      type: string
      title: Shipping Type
      description: A classification for the method of purchase fulfillment.
      x-enumDescriptions:
        - value: SHIPPING
          description: The payer intends to receive the items at a specified address.
          default: true
        - value: PICKUP
          description: >-
            DEPRECATED. To ensure that seller protection is correctly assigned,
            please use 'PICKUP_IN_STORE' or 'PICKUP_FROM_PERSON' instead.
            Currently, this field indicates that the payer intends to pick up
            the items at a specified address (ie. a store address). 
        - value: PICKUP_IN_STORE
          description: >-
            The payer intends to pick up the item(s) from the payee's physical
            store. Also termed as BOPIS, "Buy Online, Pick-up in Store". Seller
            protection is provided with this option.
        - value: PICKUP_FROM_PERSON
          description: >-
            The payer intends to pick up the item(s) from the payee in person.
            Also termed as BOPIP, "Buy Online, Pick-up in Person". Seller
            protection is not available, since the payer is receiving the item
            from the payee in person, and can validate the item prior to
            payment.
      enum:
        - SHIPPING
        - PICKUP
        - PICKUP_IN_STORE
        - PICKUP_FROM_PERSON
    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](/api/rest/reference/currency-codes/).
          maxLength: 32
          pattern: ^((-?[0-9]+)|(-?([0-9]+)?[.][0-9]+))$
      required:
        - currency_code
        - value
    definitions-purchase_unit_request_list:
      type: array
      description: >-
        An array of purchase units. At present only 1 purchase_unit is
        supported. Each purchase unit establishes a contract between a payer and
        the payee. Each purchase unit represents either a full or partial order
        that the payer intends to purchase from the payee.
      minItems: 1
      maxItems: 1
      items:
        $ref: '#/components/schemas/purchase_unit_request'
    shipping_options_purchase_unit:
      type: object
      title: Shipping Option and Amount data at Purchase Unit
      description: >-
        This would contain shipping option and amount data at purchase unit
        level.
      properties:
        reference_id:
          type: string
          description: >-
            The API caller-provided external ID for the purchase unit. Required
            for multiple purchase units when you must update the order through
            `PATCH`. If you omit this value and the order contains only one
            purchase unit, PayPal sets this value to `default`.
            <blockquote><strong>Note:</strong> If there are multiple purchase
            units, <code>reference_id</code> is required for each purchase
            unit.</blockquote>
          minLength: 1
          maxLength: 256
          pattern: ^.*$
        amount:
          $ref: '#/components/schemas/amount_with_breakdown'
          description: >-
            The total order amount with an optional breakdown that provides
            details, such as the total item amount, total tax amount, shipping,
            handling, insurance, and discounts, if any.
        shipping_options:
          $ref: '#/components/schemas/definitions-shipping_option_list'
    error_details:
      title: Error Details
      type: object
      description: The error details. Required for client-side `4XX` errors.
      properties:
        field:
          type: string
          description: >-
            The field that caused the error. If this field is in the body, set
            this value to the field's JSON pointer value. Required for
            client-side errors.
        value:
          type: string
          description: The value of the field that caused the error.
        location:
          $ref: '#/components/schemas/error_location'
        issue:
          type: string
          description: The unique, fine-grained application-level error code.
        description:
          type: string
          description: >-
            The human-readable description for an issue. The description can
            change over the lifetime of an API, so clients must not depend on
            this value.
      required:
        - issue
    error_link_description:
      title: Link Description
      description: >-
        The request-related [HATEOAS link](/api/rest/responses/#hateoas-links)
        information.
      type: object
      required:
        - href
        - rel
      properties:
        href:
          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.
          type: string
          minLength: 0
          maxLength: 20000
          pattern: ^.*$
        rel:
          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).
          type: string
          minLength: 0
          maxLength: 100
          pattern: ^.*$
        method:
          description: The HTTP method required to make the related call.
          type: string
          minLength: 3
          maxLength: 6
          pattern: ^[A-Z]*$
          enum:
            - GET
            - POST
            - PUT
            - DELETE
            - PATCH
    error_default:
      description: The default error response.
      oneOf:
        - $ref: '#/components/schemas/error_400'
        - $ref: '#/components/schemas/error_401'
        - $ref: '#/components/schemas/error_403'
        - $ref: '#/components/schemas/error_404'
        - $ref: '#/components/schemas/error_409'
        - $ref: '#/components/schemas/error_415'
        - $ref: '#/components/schemas/error_422'
        - $ref: '#/components/schemas/error_429'
        - $ref: '#/components/schemas/error_500'
        - $ref: '#/components/schemas/error_503'
    currency_code:
      description: >-
        The [three-character ISO-4217 currency
        code](/api/rest/reference/currency-codes/) that identifies the currency.
      type: string
      format: ppaas_common_currency_code_v2
      minLength: 3
      maxLength: 3
    purchase_unit_request:
      type: object
      title: Purchase Unit Request
      description: >-
        The purchase unit request. Includes required information for the payment
        contract.
      properties:
        reference_id:
          type: string
          description: >-
            The API caller-provided external ID for the purchase unit. Required
            for multiple purchase units when you must update the order through
            `PATCH`. If you omit this value and the order contains only one
            purchase unit, PayPal sets this value to `default`.
          minLength: 1
          maxLength: 256
        amount:
          $ref: '#/components/schemas/amount_with_breakdown'
          description: >-
            The total order amount with an optional breakdown that provides
            details, such as the total item amount, total tax amount, shipping,
            handling, insurance, and discounts, if any.<br/>If you specify
            `amount.breakdown`, the amount equals `item_total` plus `tax_total`
            plus `shipping` plus `handling` plus `insurance` minus
            `shipping_discount` minus discount.<br/>The amount must be a
            positive number. The `amount.value` field supports up to 15 digits
            preceding the decimal. For a list of supported currencies, decimal
            precision, and maximum charge amount, see the PayPal REST APIs <a
            href="https://developer.paypal.com/api/rest/reference/currency-codes/">Currency
            Codes</a>.
        payee:
          $ref: '#/components/schemas/payee'
          description: The merchant who receives payment for this transaction.
        payment_instruction:
          $ref: '#/components/schemas/payment_instruction'
        description:
          type: string
          description: >-
            <blockquote>This field supports up to 3,000 characters, but
            <strong>any content beyond 127 characters (including spaces) will be
            truncated. The 127 character limit is reflected in the
            response</strong> representation of this field.</blockquote>The
            purchase description. The maximum length of the character is
            dependent on the type of characters used. The character length is
            specified assuming a US ASCII character. Depending on type of
            character; (e.g. accented character, Japanese characters) the number
            of characters that that can be specified as input might not equal
            the permissible max length.
          minLength: 1
          maxLength: 3000
        custom_id:
          type: string
          description: >-
            The API caller-provided external ID. Used to reconcile client
            transactions with PayPal transactions. Appears in transaction and
            settlement reports but is not visible to the payer.
          minLength: 1
          maxLength: 255
        invoice_id:
          type: string
          description: >-
            The API caller-provided external invoice number for this order.
            Appears in both the payer's transaction history and the emails that
            the payer receives. invoice_id values are required to be unique
            within each merchant account by default. Although the uniqueness
            validation is configurable, disabling this behavior will remove the
            account's ability to use invoice_id in other APIs as an identifier.
            It is highly recommended to keep a unique invoice_id for each Order.
          minLength: 1
          maxLength: 127
        soft_descriptor:
          type: string
          description: >-
            <blockquote>This field supports up to 127 characters, but
            <strong>any content beyond 22 characters (including spaces) will be
            truncated. The 22 character limit is reflected in the
            response</strong> representation of this field.</blockquote>The soft
            descriptor is the dynamic text used to construct the statement
            descriptor that appears on a payer's card statement.<br><br>If an
            Order is paid using the "PayPal Wallet", the statement descriptor
            will appear in following format on the payer's card statement:
            <code><var>PAYPAL_prefix</var>+(space)+<var>merchant_descriptor</var>+(space)+
            <var>soft_descriptor</var></code><blockquote><strong>Note:</strong>
            The merchant descriptor is the descriptor of the merchant’s payment
            receiving preferences which can be seen by logging into the merchant
            account
            https://www.sandbox.paypal.com/businessprofile/settings/info/edit</blockquote>The
            <code>PAYPAL</code> prefix uses 8 characters. Only the first 22
            characters will be displayed in the statement. <br>For example,
            if:<ul><li>The PayPal prefix toggle is <code>PAYPAL
            *</code>.</li><li>The merchant descriptor in the profile is
            <code>Janes Gift</code>.</li><li>The soft descriptor is
            <code>800-123-1234</code>.</li></ul>Then, the statement descriptor
            on the card is <code>PAYPAL * Janes Gift 80</code>.
          minLength: 1
          maxLength: 1000
        items:
          $ref: '#/components/schemas/item_request_list'
        shipping:
          $ref: '#/components/schemas/shipping_detail'
          description: The name and address of the person to whom to ship the items.
        supplementary_data:
          $ref: '#/components/schemas/supplementary_data'
          description: Contains Supplementary Data.
      required:
        - amount
    amount_with_breakdown:
      type: object
      title: Amount with Breakdown
      description: >-
        The total order amount with an optional breakdown that provides details,
        such as the total item amount, total tax amount, shipping, handling,
        insurance, and discounts, if any.<br/>If you specify `amount.breakdown`,
        the amount equals `item_total` plus `tax_total` plus `shipping` plus
        `handling` plus `insurance` minus `shipping_discount` minus
        discount.<br/>The amount must be a positive number. For listed of
        supported currencies and decimal precision, see the PayPal REST APIs <a
        href="/docs/integration/direct/rest/currency-codes/">Currency Codes</a>.
      allOf:
        - $ref: '#/components/schemas/money'
        - properties:
            breakdown:
              $ref: '#/components/schemas/amount_breakdown'
    definitions-shipping_option_list:
      type: array
      minItems: 1
      maxItems: 10
      description: >-
        An array of shipping options that the payee or merchant offers to the
        payer to ship or pick up their items.
      items:
        $ref: '#/components/schemas/shipping_option'
    error_location:
      type: string
      description: >-
        The location of the field that caused the error. Value is `body`,
        `path`, or `query`.
      enum:
        - body
        - path
        - query
      default: body
    error_401:
      type: object
      title: Unauthorized Error
      description: >-
        Authentication failed due to missing Authorization header, or invalid
        authentication credentials.
      properties:
        name:
          type: string
          enum:
            - AUTHENTICATION_FAILURE
        message:
          type: string
          enum:
            - >-
              Authentication failed due to missing authorization header, or
              invalid authentication credentials.
        details:
          type: array
          items:
            $ref: '#/components/schemas/error_details'
        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'
    error_404:
      type: object
      title: Not found Error
      description: >-
        The server has not found anything matching the request URI. This either
        means that the URI is incorrect or the resource is not available.
      properties:
        name:
          type: string
          enum:
            - RESOURCE_NOT_FOUND
        message:
          type: string
          enum:
            - The specified resource does not exist.
        details:
          type: array
          items:
            $ref: '#/components/schemas/error_details'
        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'
    error_409:
      type: object
      title: Resource Conflict Error
      description: The server has detected a conflict while processing this request.
      properties:
        name:
          type: string
          enum:
            - RESOURCE_CONFLICT
        message:
          type: string
          enum:
            - The server has detected a conflict while processing this request.
        details:
          type: array
          items:
            $ref: '#/components/schemas/error_details'
        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'
    error_415:
      type: object
      title: Unsupported Media Type Error
      description: The server does not support the request payload's media type.
      properties:
        name:
          type: string
          enum:
            - UNSUPPORTED_MEDIA_TYPE
        message:
          type: string
          enum:
            - The server does not support the request payload's media type.
        details:
          type: array
          items:
            $ref: '#/components/schemas/error_details'
        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'
    error_429:
      type: object
      title: Too many requests
      description: Too many requests. Blocked due to rate limiting.
      properties:
        name:
          type: string
          enum:
            - RATE_LIMIT_REACHED
        message:
          type: string
          enum:
            - Too many requests. Blocked due to rate limiting.
        debug_id:
          type: string
          description: The PayPal internal ID. Used for correlation purposes.
    error_503:
      type: object
      title: Service Unavailable Error
      description: >-
        The server is temporarily unable to handle the request, for example,
        because of planned maintenance or downtime.
      properties:
        name:
          type: string
          enum:
            - SERVICE_UNAVAILABLE
        message:
          type: string
          enum:
            - Service Unavailable.
        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: SERVICE_UNAVAILABLE
        message: Service Unavailable.
        debug_id: 90957fca61718
        information_link: >-
          https://developer.paypal.com/docs/api/orders/v2/#error-SERVICE_UNAVAILABLE
    payee:
      type: object
      title: Payee
      description: >-
        The merchant who receives the funds and fulfills the order. The merchant
        is also known as the payee.
      allOf:
        - $ref: '#/components/schemas/payee_base'
        - properties: {}
    payment_instruction:
      type: object
      title: Payment Instruction
      description: >-
        Any additional payment instructions to be consider during payment
        processing. This processing instruction is applicable for Capturing an
        order or Authorizing an Order.
      properties:
        platform_fees:
          $ref: '#/components/schemas/platform_fee_list'
        disbursement_mode:
          $ref: '#/components/schemas/disbursement_mode'
          description: >-
            The funds that are held payee by the marketplace/platform. This
            field is only applicable to merchants that been enabled for PayPal
            Complete Payments Platform for Marketplaces and Platforms
            capability.
        payee_pricing_tier_id:
          type: string
          description: >-
            This field is only enabled for selected merchants/partners to use
            and provides the ability to trigger a specific pricing rate/plan for
            a payment transaction. The list of eligible 'payee_pricing_tier_id'
            would be provided to you by your Account Manager. Specifying values
            other than the one provided to you by your account manager would
            result in an error.
          minLength: 1
          maxLength: 20
          pattern: ^.*$
        payee_receivable_fx_rate_id:
          type: string
          description: >-
            FX identifier generated returned by PayPal to be used for payment
            processing in order to honor FX rate (for eligible integrations) to
            be used when amount is settled/received into the payee account.
          maxLength: 4000
          minLength: 1
          pattern: ^.*$
    item_request_list:
      type: array
      description: An array of items that the customer purchases from the merchant.
      items:
        $ref: '#/components/schemas/item_request'
    shipping_detail:
      type: object
      description: The shipping details.
      title: Shipping Details
      properties:
        name:
          description: The name of the party.
          type: object
          title: Name
          properties:
            full_name:
              type: string
              description: When the party is a person, the party's full name.
              maxLength: 300
        email_address:
          $ref: '#/components/schemas/email_address'
          description: >-
            The email address of the recipient of the shipped items, which may
            belong to either the payer, or an alternate contact, for delivery.
        phone_number:
          description: >-
            The phone number, in its canonical international [E.164 numbering
            plan format](https://www.itu.int/rec/T-REC-E.164/en).
          type: object
          title: Phone
          properties:
            country_code:
              type: string
              description: >-
                The country calling code (CC), in its canonical international
                [E.164 numbering plan
                format](https://www.itu.int/rec/T-REC-E.164/en). The combined
                length of the CC and the national number must not be greater
                than 15 digits. The national number consists of a national
                destination code (NDC) and subscriber number (SN).
              minLength: 1
              maxLength: 3
              pattern: ^[0-9]{1,3}?$
            national_number:
              type: string
              description: >-
                The national number, in its canonical international [E.164
                numbering plan format](https://www.itu.int/rec/T-REC-E.164/en).
                The combined length of the country calling code (CC) and the
                national number must not be greater than 15 digits. The national
                number consists of a national destination code (NDC) and
                subscriber number (SN).
              minLength: 1
              maxLength: 14
              pattern: ^[0-9]{1,14}?$
          required:
            - country_code
            - national_number
        type:
          title: Fulfillment Type
          description: >-
            A classification for the method of purchase fulfillment (e.g
            shipping, in-store pickup, etc). Either `type` or `options` may be
            present, but not both.
          type: string
          minLength: 1
          maxLength: 255
          pattern: ^[0-9A-Z_]+$
          x-enumDescriptions:
            - value: SHIPPING
              description: The payer intends to receive the items at a specified address.
              default: true
            - value: PICKUP_IN_PERSON
              description: DEPRECATED. Please use "PICKUP_FROM_PERSON" instead.
            - value: PICKUP_IN_STORE
              description: >-
                The payer intends to pick up the item(s) from the payee's
                physical store. Also termed as BOPIS, "Buy Online, Pick-up in
                Store". Seller protection is provided with this option.
            - value: PICKUP_FROM_PERSON
              description: >-
                The payer intends to pick up the item(s) from the payee in
                person. Also termed as BOPIP, "Buy Online, Pick-up in Person".
                Seller protection is not available, since the payer is receiving
                the item from the payee in person, and can validate the item
                prior to payment.
          enum:
            - SHIPPING
            - PICKUP_IN_PERSON
            - PICKUP_IN_STORE
            - PICKUP_FROM_PERSON
        options:
          $ref: '#/components/schemas/shipping_option_list'
        address:
          description: >-
            The portable international postal address. Maps to
            [AddressValidationMetadata](https://github.com/googlei18n/libaddressinput/wiki/AddressValidationMetadata)
            and HTML 5.1 [Autofilling form controls: the autocomplete
            attribute](https://www.w3.org/TR/html51/sec-forms.html#autofilling-form-controls-the-autocomplete-attribute).
          type: object
          title: Portable Postal Address (Medium-Grained)
          properties:
            address_line_1:
              type: string
              description: >-
                The first line of the address, such as number and street, for
                example, `173 Drury Lane`. Needed for data entry, and Compliance
                and Risk checks. This field needs to pass the full address.
              maxLength: 300
            address_line_2:
              type: string
              description: >-
                The second line of the address, for example, a suite or
                apartment number.
              maxLength: 300
            admin_area_2:
              type: string
              description: A city, town, or village. Smaller than `admin_area_level_1`.
              maxLength: 120
            admin_area_1:
              type: string
              description: >-
                The highest-level sub-division in a country, which is usually a
                province, state, or ISO-3166-2 subdivision. This data is
                formatted for postal delivery, for example, `CA` and not
                `California`. Value, by country, is:<ul><li>UK. A
                county.</li><li>US. A state.</li><li>Canada. A
                province.</li><li>Japan. A prefecture.</li><li>Switzerland. A
                *kanton*.</li></ul>
              maxLength: 300
            postal_code:
              type: string
              description: >-
                The postal code, which is the ZIP code or equivalent. Typically
                required for countries with a postal code or an equivalent. See
                [postal code](https://en.wikipedia.org/wiki/Postal_code).
              maxLength: 60
            country_code:
              $ref: '#/components/schemas/country_code'
          required:
            - country_code
    supplementary_data:
      title: Supplementary Data
      type: object
      description: >-
        Supplementary data about a payment. This object passes information that
        can be used to improve risk assessments and processing costs, for
        example, by providing Level 2 and Level 3 payment data.
      properties:
        card:
          $ref: '#/components/schemas/card_supplementary_data'
          description: >-
            Merchants and partners can add Level 2 and 3 data to payments to
            reduce risk and payment processing costs. For more information about
            processing payments, see <a
            href="https://developer.paypal.com/docs/checkout/advanced/processing/">checkout</a>
            or <a
            href="https://developer.paypal.com/docs/multiparty/checkout/advanced/processing/">multiparty
            checkout</a>.
        risk:
          $ref: '#/components/schemas/risk_supplementary_data'
          description: >-
            Merchants and partners can add additional customer parameters that
            can help with better fraud protection and reduced risk for unbranded
            card payments.
    amount_breakdown:
      type: object
      description: >-
        The breakdown of the amount. Breakdown provides details such as total
        item amount, total tax amount, shipping, handling, insurance, and
        discounts, if any.
      title: Amount Breakdown
      properties:
        item_total:
          $ref: '#/components/schemas/money'
          description: >-
            The subtotal for all items. Required if the request includes
            `purchase_units[].items[].unit_amount`. Must equal the sum of
            `(items[].unit_amount * items[].quantity)` for all items.
            <code>item_total.value</code> can not be a negative number.
        shipping:
          $ref: '#/components/schemas/money'
          description: >-
            The shipping fee for all items within a given `purchase_unit`.
            <code>shipping.value</code> can not be a negative number.
        handling:
          $ref: '#/components/schemas/money'
          description: >-
            The handling fee for all items within a given `purchase_unit`.
            <code>handling.value</code> can not be a negative number.
        tax_total:
          $ref: '#/components/schemas/money'
          description: >-
            The total tax for all items. Required if the request includes
            `purchase_units.items.tax`. Must equal the sum of `(items[].tax *
            items[].quantity)` for all items. <code>tax_total.value</code> can
            not be a negative number.
        insurance:
          $ref: '#/components/schemas/money'
          description: >-
            The insurance fee for all items within a given `purchase_unit`.
            <code>insurance.value</code> can not be a negative number.
        shipping_discount:
          $ref: '#/components/schemas/money'
          description: >-
            The shipping discount for all items within a given `purchase_unit`.
            <code>shipping_discount.value</code> can not be a negative number.
        discount:
          $ref: '#/components/schemas/discount_with_breakdown'
          description: >-
            The discount for all items within a given `purchase_unit`.
            <code>discount.value</code> can not be a negative number.
    shipping_option:
      type: object
      title: Shipping Option
      description: >-
        The options that the payee or merchant offers to the payer to ship or
        pick up their items.
      properties:
        id:
          type: string
          description: A unique ID that identifies a payer-selected shipping option.
          maxLength: 127
        label:
          type: string
          description: >-
            A description that the payer sees, which helps them choose an
            appropriate shipping option. For example, `Free Shipping`, `USPS
            Priority Shipping`, `Expédition prioritaire USPS`, or `USPS yōuxiān
            fā huò`. Localize this description to the payer's locale.
          maxLength: 127
        type:
          $ref: '#/components/schemas/shipping_type'
          description: A classification for the method of purchase fulfillment.
        amount:
          $ref: '#/components/schemas/money'
          description: The shipping cost for the selected option.
        selected:
          type: boolean
          description: >-
            If the API request sets `selected = true`, it represents the
            shipping option that the payee or merchant expects to be
            pre-selected for the payer when they first view the
            `shipping.options` in the PayPal Checkout experience. As part of the
            response if a `shipping.option` contains `selected=true`, it
            represents the shipping option that the payer selected during the
            course of checkout with PayPal. Only one `shipping.option` can be
            set to `selected=true`.
      required:
        - id
        - label
        - selected
    payee_base:
      type: object
      title: Payee Base
      description: >-
        The details for the merchant who receives the funds and fulfills the
        order. The merchant is also known as the payee.
      properties:
        email_address:
          $ref: '#/components/schemas/email'
          description: The email address of merchant.
        merchant_id:
          $ref: '#/components/schemas/account_id'
          description: The encrypted PayPal account ID of the merchant.
    platform_fee_list:
      type: array
      description: >-
        An array of various fees, commissions, tips, or donations. This field is
        only applicable to merchants that been enabled for PayPal Complete
        Payments Platform for Marketplaces and Platforms capability.
      minItems: 0
      maxItems: 1
      items:
        $ref: '#/components/schemas/platform_fee'
    disbursement_mode:
      type: string
      title: Disbursement Mode
      description: The funds that are held on behalf of the merchant.
      default: INSTANT
      minLength: 1
      maxLength: 16
      pattern: ^[A-Z_]+$
      x-enumDescriptions:
        - value: INSTANT
          description: The funds are released to the merchant immediately.
          default: INSTANT
        - value: DELAYED
          description: >-
            The funds are held for a finite number of days. The actual duration
            depends on the region and type of integration. You can release the
            funds through a referenced payout. Otherwise, the funds disbursed
            automatically after the specified duration.
      enum:
        - INSTANT
        - DELAYED
    item_request:
      type: object
      title: Item Request
      description: The details for the items to be purchased.
      properties:
        name:
          type: string
          description: The item name or title.
          minLength: 1
          maxLength: 127
        unit_amount:
          $ref: '#/components/schemas/money'
          description: >-
            The item price or rate per unit. If you specify
            <code>unit_amount</code>,
            <code>purchase_units[].amount.breakdown.item_total</code> is
            required. Must equal <code>unit_amount * quantity</code> for all
            items. <code>unit_amount.value</code> can not be a negative number.
        tax:
          $ref: '#/components/schemas/money'
          description: >-
            The item tax for each unit. If <code>tax</code> is specified,
            <code>purchase_units[].amount.breakdown.tax_total</code> is
            required. Must equal <code>tax * quantity</code> for all items.
            <code>tax.value</code> can not be a negative number.
        quantity:
          type: string
          description: The item quantity. Must be a whole number.
          maxLength: 10
          pattern: ^[1-9][0-9]{0,9}$
        description:
          type: string
          description: >-
            <blockquote>This field accepts a <strong>maximum of 2048 total
            characters (including spaces)</strong>. Excess characters are
            automatically truncated.</blockquote>The detailed item description.
          maxLength: 4000
        sku:
          type: string
          description: The stock keeping unit (SKU) for the item.
          maxLength: 127
        url:
          type: string
          format: uri
          minLength: 1
          maxLength: 2048
          description: >-
            The URL to the item being purchased. Visible to buyer and used in
            buyer experiences.
        category:
          type: string
          description: The item category type.
          x-enumDescriptions:
            - value: DIGITAL_GOODS
              description: >-
                Goods that are stored, delivered, and used in their electronic
                format. This value is not currently supported for API callers
                that leverage the <a
                href="https://www.paypal.com/us/webapps/mpp/commerce-platform">PayPal
                for Commerce Platform</a> product.
            - value: PHYSICAL_GOODS
              description: A tangible item that can be shipped with proof of delivery.
            - value: DONATION
              description: >-
                A contribution or gift for which no good or service is
                exchanged, usually to a not for profit organization.
          minLength: 1
          maxLength: 20
          enum:
            - DIGITAL_GOODS
            - PHYSICAL_GOODS
            - DONATION
        image_url:
          type: string
          format: uri
          description: >-
            The URL of the item's image. File type and size restrictions apply.
            An image that violates these restrictions will not be honored.
          minLength: 1
          maxLength: 2048
          pattern: ^(https:)([/|.|\w|\s|-])*\.(?:jpg|gif|png|jpeg|JPG|GIF|PNG|JPEG)
        upc:
          $ref: '#/components/schemas/universal_product_code'
          description: The Universal Product Code of the item.
        billing_plan:
          $ref: '#/components/schemas/order_billing_plan'
      required:
        - name
        - unit_amount
        - quantity
    email_address:
      type: string
      description: >-
        The internationalized email address.<blockquote><strong>Note:</strong>
        Up to 64 characters are allowed before and 255 characters are allowed
        after the <code>@</code> sign. However, the generally accepted maximum
        length for an email address is 254 characters. The pattern verifies that
        an unquoted <code>@</code> sign exists.</blockquote>
      format: ppaas_common_email_address_v2
      minLength: 3
      maxLength: 254
      pattern: >-
        ^(?:[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?\.)+[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[A-Za-z0-9-]*[A-Za-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$
    shipping_option_list:
      type: array
      description: >-
        An array of shipping options that the payee or merchant offers to the
        payer to ship or pick up their items.
      minItems: 0
      maxItems: 10
      items:
        $ref: '#/components/schemas/shipping_option'
    card_supplementary_data:
      type: object
      title: Card Supplementary Data
      description: >-
        Merchants and partners can add Level 2 and 3 data to payments to reduce
        risk and payment processing costs. For more information about processing
        payments, see <a
        href="https://developer.paypal.com/docs/checkout/advanced/processing/">checkout</a>
        or <a
        href="https://developer.paypal.com/docs/multiparty/checkout/advanced/processing/">multiparty
        checkout</a>.
      properties:
        level_2:
          $ref: '#/components/schemas/level_2_card_processing_data'
        level_3:
          $ref: '#/components/schemas/level_3_card_processing_data'
    risk_supplementary_data:
      type: object
      title: Risk Supplementary Data
      description: >-
        Additional information necessary to evaluate the risk profile of a
        transaction.
      properties:
        customer:
          $ref: '#/components/schemas/participant_metadata'
    discount_with_breakdown:
      type: object
      title: Discount
      description: >-
        The discount amount and currency code. For list of supported currencies
        and decimal precision, see the PayPal REST APIs <a
        href="/docs/integration/direct/rest/currency-codes/">Currency Codes</a>.
      allOf:
        - $ref: '#/components/schemas/money'
        - properties: {}
    email:
      type: string
      description: >-
        The internationalized email address.<blockquote><strong>Note:</strong>
        Up to 64 characters are allowed before and 255 characters are allowed
        after the <code>@</code> sign. However, the generally accepted maximum
        length for an email address is 254 characters. The pattern verifies that
        an unquoted <code>@</code> sign exists.</blockquote>
      format: merchant_common_email_address_v2
      maxLength: 254
      minLength: 3
      pattern: >-
        (?:[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*|(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-zA-Z0-9-]*[a-zA-Z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
    account_id:
      type: string
      title: PayPal Account Identifier
      description: The account identifier for a PayPal account.
      format: ppaas_payer_id_v3
      minLength: 13
      maxLength: 13
      pattern: ^[2-9A-HJ-NP-Z]{13}$
    platform_fee:
      type: object
      title: Platform Fee
      description: >-
        The platform or partner fee, commission, or brokerage fee that is
        associated with the transaction. Not a separate or isolated transaction
        leg from the external perspective. The platform fee is limited in scope
        and is always associated with the original payment for the purchase
        unit.
      properties:
        amount:
          $ref: '#/components/schemas/money'
          description: The fee for this transaction.
        payee:
          $ref: '#/components/schemas/payee_base'
          description: >-
            The recipient of the fee for this transaction. If you omit this
            value, the default is the API caller.
      required:
        - amount
    universal_product_code:
      type: object
      title: Universal Product Code
      description: The Universal Product Code of the item.
      properties:
        type:
          title: Universal Product Code Type
          type: string
          x-enumDescriptions:
            - value: UPC-A
            - value: UPC-B
            - value: UPC-C
            - value: UPC-D
            - value: UPC-E
            - value: UPC-2
            - value: UPC-5
          description: The Universal Product Code type.
          minLength: 1
          maxLength: 5
          pattern: ^[0-9A-Z_-]+$
          enum:
            - UPC-A
            - UPC-B
            - UPC-C
            - UPC-D
            - UPC-E
            - UPC-2
            - UPC-5
        code:
          type: string
          description: The UPC product code of the item.
          minLength: 6
          maxLength: 17
          pattern: ^[0-9]{0,17}$
      required:
        - type
        - code
    order_billing_plan:
      title: Billing Plan
      description: >-
        Metadata for merchant-managed recurring billing plans. Valid only during
        the saved payment method token or billing agreement creation.
      type: object
      properties:
        billing_cycles:
          $ref: '#/components/schemas/billing_cycle_list'
        setup_fee:
          $ref: '#/components/schemas/money'
          description: >-
            The setup fee for the recurring plan. Ensure its part of the item
            amount.
        name:
          type: string
          description: Name of the recurring plan.
          minLength: 1
          maxLength: 127
          pattern: ^[A-Za-z0-9() +',.:-]+$
      required:
        - billing_cycles
    level_2_card_processing_data:
      type: object
      title: Level 2 Card Processing Data
      description: >-
        The level 2 card processing data collections. If your merchant account
        has been configured for Level 2 processing this field will be passed to
        the processor on your behalf. Please contact your PayPal Technical
        Account Manager to define level 2 data for your business.
      properties:
        invoice_id:
          type: string
          description: >-
            Use this field to pass a purchase identification value of up to 127
            ASCII characters. The length of this field will be adjusted to meet
            network specifications (25chars for Visa and Mastercard, 17chars for
            Amex), and the original invoice ID will still be displayed in your
            existing reports.
          minLength: 1
          maxLength: 127
          pattern: ^[\w‘\-.,":;\!?]*$
        tax_total:
          $ref: '#/components/schemas/money'
          description: >
            Use this field to break down the amount of tax included in the total
            purchase amount. The value provided here will not add to the total
            purchase amount. The value can't be negative, and in most cases, it
            must be greater than zero in order to qualify for lower interchange
            rates. 
             Value, by country, is:

                UK. A county.
                US. A state.
                Canada. A province.
                Japan. A prefecture.
                Switzerland. A kanton.
    level_3_card_processing_data:
      type: object
      title: Level 3 Card Processing Data
      description: >-
        The level 3 card processing data collections, If your merchant account
        has been configured for Level 3 processing this field will be passed to
        the processor on your behalf. Please contact your PayPal Technical
        Account Manager to define level 3 data for your business.
      properties:
        shipping_amount:
          $ref: '#/components/schemas/money'
          description: >-
            Use this field to break down the shipping cost included in the total
            purchase amount. The value provided here will not add to the total
            purchase amount. The value cannot be negative.
        duty_amount:
          $ref: '#/components/schemas/money'
          description: >-
            Use this field to break down the duty amount included in the total
            purchase amount. The value provided here will not add to the total
            purchase amount. The value cannot be negative.
        discount_amount:
          $ref: '#/components/schemas/money'
          description: >-
            Use this field to break down the discount amount included in the
            total purchase amount. The value provided here will not add to the
            total purchase amount. The value cannot be negative.
        shipping_address:
          description: >-
            The portable international postal address. Maps to
            [AddressValidationMetadata](https://github.com/googlei18n/libaddressinput/wiki/AddressValidationMetadata)
            and HTML 5.1 [Autofilling form controls: the autocomplete
            attribute](https://www.w3.org/TR/html51/sec-forms.html#autofilling-form-controls-the-autocomplete-attribute).
          type: object
          title: Portable Postal Address (Medium-Grained)
          properties:
            address_line_1:
              type: string
              description: >-
                The first line of the address, such as number and street, for
                example, `173 Drury Lane`. Needed for data entry, and Compliance
                and Risk checks. This field needs to pass the full address.
              maxLength: 300
            address_line_2:
              type: string
              description: >-
                The second line of the address, for example, a suite or
                apartment number.
              maxLength: 300
            admin_area_2:
              type: string
              description: A city, town, or village. Smaller than `admin_area_level_1`.
              maxLength: 120
            admin_area_1:
              type: string
              description: >-
                The highest-level sub-division in a country, which is usually a
                province, state, or ISO-3166-2 subdivision. This data is
                formatted for postal delivery, for example, `CA` and not
                `California`. Value, by country, is:<ul><li>UK. A
                county.</li><li>US. A state.</li><li>Canada. A
                province.</li><li>Japan. A prefecture.</li><li>Switzerland. A
                *kanton*.</li></ul>
              maxLength: 300
            postal_code:
              type: string
              description: >-
                The postal code, which is the ZIP code or equivalent. Typically
                required for countries with a postal code or an equivalent. See
                [postal code](https://en.wikipedia.org/wiki/Postal_code).
              maxLength: 60
            country_code:
              $ref: '#/components/schemas/country_code'
          required:
            - country_code
        ships_from_postal_code:
          type: string
          description: Use this field to specify the postal code of the shipping location.
          minLength: 1
          maxLength: 60
          pattern: ^[a-zA-Z0-9_'.-]*$
        line_items:
          $ref: '#/components/schemas/line_item_list'
    participant_metadata:
      type: object
      title: Participant metadata
      description: Profile information of the sender or receiver.
      properties:
        ip_address:
          $ref: '#/components/schemas/ip_address'
          description: >-
            The consumer's IP address, which can be represented in either IPv4
            or IPv6 format.
    billing_cycle_list:
      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: 3
      items:
        $ref: '#/components/schemas/billing_cycle'
    line_item_list:
      type: array
      description: >-
        A list of the items that were purchased with this payment. If your
        merchant account has been configured for Level 3 processing this field
        will be passed to the processor on your behalf.
      minItems: 1
      maxItems: 100
      items:
        $ref: '#/components/schemas/line_item'
    ip_address:
      type: string
      title: IP Address
      description: >-
        An Internet Protocol address (IP address). This address assigns a
        numerical label to each device that is connected to a computer network
        through the Internet Protocol. Supports IPv4 and IPv6 addresses.
      format: ppaas_ip_address_v1
      minLength: 7
      maxLength: 39
      pattern: >-
        ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])$|^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$
    billing_cycle:
      title: Billing Cycle
      description: >-
        The billing cycle providing details of the billing frequency, amount,
        duration and if the billing cycle is a free, discounted or regular
        billing cycle. The sequence of the billing cycle will be in the
        following order - free trial billing cycle(s), discounted trial billing
        cycle(s), regular billing cycle(s).
      type: object
      properties:
        tenure_type:
          type: string
          description: >-
            The tenure type of the billing cycle identifies if the billing cycle
            is a trial(free or discounted) or regular billing cycle.
          minLength: 1
          maxLength: 24
          pattern: ^[A-Z_]+$
          x-enumDescriptions:
            - value: REGULAR
              description: >-
                A regular billing cycle to identify recurring charges for the
                billing agreement.
            - value: TRIAL
              description: >-
                A trial billing cycle to identify free or discounted charge for
                the billing agreement. Free trails will not have a price object
                in pricing scheme where as a discounted trial would have a
                discounted price compared to regular billing cycle.
          enum:
            - REGULAR
            - TRIAL
        pricing_scheme:
          $ref: '#/components/schemas/pricing_scheme'
          description: >-
            The active pricing scheme for this billing cycle. A free trial
            billing cycle does not require a pricing scheme.
        frequency:
          $ref: '#/components/schemas/frequency'
          description: The frequency details for this billing cycle.
        total_cycles:
          type: integer
          description: >-
            The number of times this billing cycle gets executed. Trial billing
            cycles can only be executed a finite number of times (value between
            <code>1</code> and <code>999</code> for <code>total_cycles</code>).
            Regular billing cycles can be executed infinite times (value of
            <code>0</code> for <code>total_cycles</code>) or a finite number of
            times (value between <code>1</code> and <code>999</code> for
            <code>total_cycles</code>).
          minimum: 0
          maximum: 999
          default: 1
          format: int32
        sequence:
          type: integer
          description: >-
            The order in which this cycle is to run among other billing cycles.
            For example, a trial billing cycle has a `sequence` of `1` while a
            regular billing cycle has a `sequence` of `2`, so that trial cycle
            runs before the regular cycle.
          minimum: 1
          maximum: 3
          default: 1
          format: int32
        start_date:
          $ref: '#/components/schemas/date_no_time'
          description: >-
            The start date for the billing cycle, in YYYY-MM-DD. This field
            should be not be provided if the billing cycle starts at the time of
            checkout. When this field is not provided, the billing cycle amount
            will be included in any data validations confirming that the total
            provided by the merchant match the sum of individual items due at
            the time of checkout. Only one billing cycle (with sequence equal to
            1) can have a no start date.
      required:
        - tenure_type
    line_item:
      type: object
      title: Line Item
      description: >-
        The line items for this purchase. If your merchant account has been
        configured for Level 3 processing this field will be passed to the
        processor on your behalf.
      properties:
        name:
          type: string
          description: The item name or title.
          minLength: 1
          maxLength: 127
        quantity:
          type: string
          description: The item quantity. Must be a whole number.
          maxLength: 10
          pattern: ^[1-9][0-9]{0,9}$
        description:
          type: string
          description: The detailed item description.
          maxLength: 2048
        sku:
          type: string
          description: The stock keeping unit (SKU) for the item.
          maxLength: 127
        url:
          type: string
          format: uri
          minLength: 1
          maxLength: 2048
          description: >-
            The URL to the item being purchased. Visible to buyer and used in
            buyer experiences.
        image_url:
          type: string
          format: uri
          description: >-
            The URL of the item's image. File type and size restrictions apply.
            An image that violates these restrictions will not be honored.
          minLength: 1
          maxLength: 2048
          pattern: >-
            ^(https:)([/|.|\w|\s|-])*\.(?:jpg|gif|png|jpeg|JPG|GIF|PNG|JPEG)(\?.*)?$
        upc:
          $ref: '#/components/schemas/universal_product_code'
          description: The Universal Product Code of the item.
        billing_plan:
          $ref: '#/components/schemas/order_billing_plan'
        unit_amount:
          $ref: '#/components/schemas/money'
          description: >-
            The item price or rate per unit. Must equal <code>unit_amount *
            quantity</code> for all items. <code>unit_amount.value</code> can
            not be a negative number.
        tax:
          $ref: '#/components/schemas/money'
          description: >-
            The item tax for each unit. Must equal <code>tax * quantity</code>
            for all items. <code>tax.value</code> can not be a negative number.
        commodity_code:
          type: string
          description: >-
            Code used to classify items purchased and track the total amount
            spent across various categories of products and services. Different
            corporate purchasing organizations may use different standards, but
            the United Nations Standard Products and Services Code (UNSPSC) is
            frequently used.
          minLength: 1
          maxLength: 12
          pattern: ^[a-zA-Z0-9_'.-]*$
        discount_amount:
          $ref: '#/components/schemas/money'
          description: >-
            Use this field to break down the discount amount included in the
            total purchase amount. The value provided here will not add to the
            total purchase amount. The value cannot be negative.
        total_amount:
          $ref: '#/components/schemas/money'
          description: >-
            The subtotal for all items. Must equal the sum of
            (items[].unit_amount * items[].quantity) for all items.
            item_total.value can not be a negative number.
        unit_of_measure:
          type: string
          description: >-
            Unit of measure is a standard used to express the magnitude of a
            quantity in international trade. Most commonly used (but not limited
            to) examples are: Acre (ACR), Ampere (AMP), Centigram (CGM),
            Centimetre (CMT), Cubic inch (INQ), Cubic metre (MTQ), Fluid ounce
            (OZA), Foot (FOT), Hour (HUR), Item (ITM), Kilogram (KGM), Kilometre
            (KMT), Kilowatt (KWT), Liquid gallon (GLL), Liter (LTR), Pounds
            (LBS), Square foot (FTK).
          minLength: 1
          maxLength: 12
          pattern: ^[a-zA-Z0-9_'.-]*$
      required:
        - name
        - quantity
    pricing_scheme:
      title: Pricing Scheme
      description: The pricing scheme details.
      type: object
      properties:
        price:
          $ref: '#/components/schemas/money'
          description: The price the customer will be charged based on the pricing model
        pricing_model:
          type: string
          description: The pricing model for the billing cycle.
          minLength: 1
          maxLength: 24
          pattern: ^[A-Z_]+$
          x-enumDescriptions:
            - value: FIXED
              description: >-
                A fixed pricing scheme where the customer is charged a fixed
                amount.
            - value: VARIABLE
              description: >-
                A variable pricing scheme where the customer is charged a
                variable amount.
            - value: AUTO_RELOAD
              description: >-
                A auto-reload pricing scheme where the customer is charged a
                fixed amount for reload.
          enum:
            - FIXED
            - VARIABLE
            - AUTO_RELOAD
        reload_threshold_amount:
          $ref: '#/components/schemas/money'
          description: >-
            The threshold amount on which the reload charge would be triggered.
            This will be associated with the account-balance where if the
            account-balance goes below this amount then customer would incur
            reload charge.
      required:
        - pricing_model
    frequency: {}
    date_no_time:
      type: string
      description: >-
        The stand-alone date, in [Internet date and time
        format](https://tools.ietf.org/html/rfc3339#section-5.6). To represent
        special legal values, such as a date of birth, you should use dates with
        no associated time or time-zone data. Whenever possible, use the
        standard `date_time` type. This regular expression does not validate all
        dates. For example, February 31 is valid and nothing is known about leap
        years.
      format: ppaas_date_notime_v2
      minLength: 10
      maxLength: 10
      pattern: ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$
  responses:
    default:
      description: The default response.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error_default'

````