openapi: 3.2.0
info:
  title: Payments
  description: <blockquote><strong>Deprecation notice:</strong> The
    <code>/v1/payments</code> endpoint is deprecated. Use the
    <code>/v2/payments</code> endpoint instead. For details, see <a
    href="/docs/checkout/integrate/">PayPal Checkout Basic
    Integration</a>.</blockquote>Use the Payments REST API to easily and
    securely accept online and mobile payments. The payments name space contains
    resource collections for payments, sales, refunds, authorizations, captures,
    and orders.<blockquote><strong>Important:</strong> The use of the PayPal
    REST <code>/payments</code> APIs to accept credit card payments is
    restricted. Instead, you can accept credit card payments with <a
    href="https://www.braintreepayments.com/products/braintree-direct">Braintree
    Direct</a>.</blockquote>You can enable customers to make PayPal and credit
    card payments with only a few clicks, depending on the country. You can
    accept an immediate payment or authorize a payment and capture it later. You
    can show details for completed payments, refunds, and authorizations. You
    can make full or partial refunds. You also can void or re-authorize
    authorizations. For more information, see the <a
    href="/docs/integration/direct/payments/">Payments overview</a>.
  version: "1.12"
  contact: {}
servers:
  - url: https://api-m.sandbox.paypal.com
    description: PayPal API Sandbox
tags:
  - name: payment
    description: <blockquote><strong>Deprecation notice:</strong> The
      <code>/v1/payments</code> endpoint is deprecated. Use the
      <code>/v2/payments</code> endpoint instead. For details, see <a
      href="/docs/checkout/integrate/">PayPal Checkout Basic
      Integration</a>.</blockquote>Use the <code>/payment</code> resource to
      create a <em>sale</em>, an <em>authorized payment</em>, or an
      <em>order</em>. A sale is a direct credit card payment, stored credit card
      payment, or PayPal payment. An authorized payment places funds on hold to
      be captured later. An order is a purchase that a customer has approved but
      for which the funds are not placed on hold. You can also use this resource
      to execute approved PayPal payments and show details for, update, and list
      payments. For more information, see also <a
      href="/docs/integration/direct/payments/"Payments</a>.
  - name: sale
    description: <blockquote><strong>Deprecation notice:</strong> The
      <code>/v1/payments</code> endpoint is deprecated. Use the
      <code>/v2/payments</code> endpoint instead. For details, see <a
      href="/docs/checkout/integrate/">PayPal Checkout Basic
      Integration</a>.</blockquote>A <em>sale</em> is a completed payment. Use
      the <code>/sale</code> resource to show sale details and refund a sale.
      For more information, see also <a
      href="/docs/integration/direct/payments/refund-payments/">Refund
      payments</a>.
  - name: authorization
    description: <blockquote><strong>Deprecation notice:</strong> The
      <code>/v1/payments</code> endpoint is deprecated. Use the
      <code>/v2/payments</code> endpoint instead. For details, see <a
      href="/docs/checkout/integrate/">PayPal Checkout Basic
      Integration</a>.</blockquote>Use the <code>/authorization</code> resource
      and related sub-resources to show details for, capture, void, and
      reauthorize an authorization.
  - name: orders
    description: <blockquote><strong>Deprecation notice:</strong> The
      <code>/v1/payments</code> endpoint is deprecated. Use the
      <code>/v2/payments</code> endpoint instead. For details, see <a
      href="/docs/checkout/integrate/">PayPal Checkout Basic
      Integration</a>.</blockquote>Use the <code>/orders</code> resource to
      authorize, capture, void, and show details for an
      order.<blockquote><strong>Note:</strong> You cannot refund an order
      directly. Instead, you must refund a completed payment for an order. For
      integration information, see <a
      href="/docs/integration/direct/payments/orders/">Orders</a> and <a
      href="/docs/integration/direct/payments/refund-payments/">refund
      payment</a>.</blockquote>For more information, see also <a
      href="/docs/integration/direct/payments/orders/">Orders</a>.
  - name: capture
    description: <blockquote><strong>Deprecation notice:</strong> The
      <code>/v1/payments</code> endpoint is deprecated. Use the
      <code>/v2/payments</code> endpoint instead. For details, see <a
      href="/docs/checkout/integrate/">PayPal Checkout Basic
      Integration</a>.</blockquote>Use the <code>/capture</code> resource and
      sub-resources to show details for and refund captured payments.
  - name: refund
    description: <blockquote><strong>Deprecation notice:</strong> The
      <code>/v1/payments</code> endpoint is deprecated. Use the
      <code>/v2/payments</code> endpoint instead. For details, see <a
      href="/docs/checkout/integrate/">PayPal Checkout Basic
      Integration</a>.</blockquote>Use the <code>/refund</code> resource to show
      details for a refund on direct and captured payments.
  - name: receipt
    description: <blockquote><strong>Deprecation notice:</strong> The
      <code>/v1/payments</code> endpoint is deprecated. Use the
      <code>/v2/payments</code> endpoint instead. For details, see <a
      href="/docs/checkout/integrate/">PayPal Checkout Basic
      Integration</a>.</blockquote>Use the <code>/receipt</code> resource to
      show details for a payment receipt.
externalDocs:
  url: https://developer.paypal.com/docs/api/payments/v1/
paths:
  /v1/payments/payment:
    post:
      summary: Create payment
      description: '<blockquote><strong>Deprecation notice:</strong> The
        <code>/v1/payments</code> endpoint is deprecated. Use the
        <code>/v2/payments</code> endpoint instead. For details, see <a
        href="/docs/checkout/integrate/">PayPal Checkout Basic
        Integration</a>.</blockquote>Creates a sale, an authorized payment to be
        captured later, or an order. To create a sale, authorization, or order,
        include the payment details in the JSON request body. Set the
        <code>intent</code> to <code>sale</code>, <code>authorize</code>, or
        <code>order</code>. <blockquote><strong>Note: </strong>TPP Clients
        (Third Party Providers in the context of PSD2 regulation) are restricted
        from using <code>authorize</code> and <code>order</code>
        intents.</blockquote> Include payer, transaction details, and, for
        PayPal payments only, redirect URLs. The combination of the
        <code>payment_method</code> and <code>funding_instrument</code>
        determines the type of payment that is created. For more information,
        see <a href="/docs/integration/direct/payments/">Payments REST API</a>.'
      operationId: payment.create
      responses:
        "201":
          description: A successful request returns the HTTP `201 Created` status code and
            a JSON response body that shows payment details.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/payment"
        default:
          description: The error details.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/error"
      parameters:
        - $ref: "#/components/parameters/paypal_partner_attribution_id"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/payment"
            examples:
              payment:
                value:
                  intent: sale
                  payer:
                    payment_method: paypal
                  transactions:
                    - amount:
                        total: "30.11"
                        currency: USD
                        details:
                          subtotal: "30.00"
                          tax: "0.07"
                          shipping: "0.03"
                          handling_fee: "1.00"
                          shipping_discount: "-1.00"
                          insurance: "0.01"
                      description: The payment transaction description.
                      custom: EBAY_EMS_90048630024435
                      invoice_number: "48787589673"
                      payment_options:
                        allowed_payment_method: INSTANT_FUNDING_SOURCE
                      soft_descriptor: ECHI5786786
                      item_list:
                        items:
                          - name: hat
                            description: Brown hat.
                            quantity: "5"
                            price: "3"
                            tax: "0.01"
                            sku: "1"
                            currency: USD
                          - name: handbag
                            description: Black handbag.
                            quantity: "1"
                            price: "15"
                            tax: "0.02"
                            sku: product34
                            currency: USD
                        shipping_address:
                          recipient_name: Brian Robinson
                          line1: 4th Floor
                          line2: "Unit #34"
                          city: San Jose
                          country_code: US
                          postal_code: "95131"
                          phone: "011862212345678"
                          state: CA
                  note_to_payer: Contact us for any questions on your order.
                  redirect_urls:
                    return_url: https://example.com/return
                    cancel_url: https://example.com/cancel
      security:
        - Oauth2:
            - https://api.paypal.com/v1/payments/.*
        - Oauth2:
            - https://uri.paypal.com/services/payments/payment
        - Oauth2:
            - https://uri.paypal.com/services/payments/realtimepayment
        - Oauth2:
            - https://uri.paypal.com/services/payments/paymentcard
        - Oauth2:
            - https://uri.paypal.com/services/payments/channelpartner
      tags:
        - payment
    get:
      summary: List payments
      description: <blockquote><strong>Deprecation notice:</strong> The
        <code>/v1/payments</code> endpoint is deprecated. Use the
        <code>/v2/payments</code> endpoint instead. For details, see <a
        href="/docs/checkout/integrate/">PayPal Checkout Basic
        Integration</a>.</blockquote>Lists payments that are completed. Payments
        that you just created with the <a
        href="/docs/api/payments/v1/#payment_create">create payment</a> call do
        not appear in the list.<br/><br/>The list shows the payments that are
        made to the merchant who makes the call. To filter the payments that
        appear in the response, you can specify one or more optional query and
        pagination parameters. See <a
        href="/docs/api/reference/api-requests/#query-parameters">Filtering and
        pagination</a>.
      operationId: payment.list
      responses:
        "200":
          description: A successful request returns the HTTP `200 OK` status code and a
            JSON response body that lists payments with payment details.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/payment_history"
        default:
          description: The error details.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/error"
      parameters:
        - $ref: "#/components/parameters/count"
        - $ref: "#/components/parameters/start_id"
        - $ref: "#/components/parameters/start_index"
        - $ref: "#/components/parameters/start_time"
        - $ref: "#/components/parameters/end_time"
        - $ref: "#/components/parameters/payee_id"
        - $ref: "#/components/parameters/sort_by"
        - $ref: "#/components/parameters/sort_order"
      security:
        - Oauth2:
            - https://api.paypal.com/v1/payments/.*
        - Oauth2:
            - https://uri.paypal.com/services/payments/payment
        - Oauth2:
            - https://uri.paypal.com/services/payments/realtimepayment
        - Oauth2:
            - https://uri.paypal.com/services/payments/payment/authcapture
        - Oauth2:
            - https://uri.paypal.com/services/checkout/onetimepayment
      tags:
        - payment
  /v1/payments/payment/{payment_id}:
    get:
      summary: Show payment details
      description: <blockquote><strong>Deprecation notice:</strong> The
        <code>/v1/payments</code> endpoint is deprecated. Use the
        <code>/v2/payments</code> endpoint instead. For details, see <a
        href="/docs/checkout/integrate/">PayPal Checkout Basic
        Integration</a>.</blockquote>Shows details for a payment, by ID, that
        has yet to complete. For example, shows details for a payment that was
        created, approved, or failed.
      operationId: payment.get
      responses:
        "200":
          description: A successful request returns the HTTP `200 OK` status code and a
            JSON response body that shows payment details.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/payment"
        default:
          description: The error details.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/error"
      parameters:
        - $ref: "#/components/parameters/payment_id"
      security:
        - Oauth2:
            - https://api.paypal.com/v1/payments/.*
        - Oauth2:
            - https://uri.paypal.com/services/payments/payment
        - Oauth2:
            - https://uri.paypal.com/services/payments/realtimepayment
        - Oauth2:
            - https://uri.paypal.com/services/payments/payment/authcapture
      tags:
        - payment
    patch:
      summary: Partially update payment
      description: '<blockquote><strong>Deprecation notice:</strong> The
        <code>/v1/payments</code> endpoint is deprecated. Use the
        <code>/v2/payments</code> endpoint instead. For details, see <a
        href="/docs/checkout/integrate/">PayPal Checkout Basic
        Integration</a>.</blockquote>Partially updates a payment, by ID. You can
        update the amount, shipping address, invoice ID, and custom data. You
        cannot update a payment after the payment executes.
        <blockquote><strong>Note: </strong>TPP Clients (Third Party Providers in
        the context of PSD2 regulation) are restricted from patching amount once
        authorized.</blockquote>'
      operationId: payment.update
      responses:
        "200":
          description: A successful request returns the HTTP `200 OK` status code and a
            JSON response body that shows payment details.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/payment"
        default:
          description: The error details.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/error"
      parameters:
        - $ref: "#/components/parameters/payment_id"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/patch_request"
            examples:
              patch_request:
                value:
                  - op: replace
                    path: /transactions/0/amount
                    value:
                      total: "18.37"
                      currency: EUR
                      details:
                        subtotal: "13.37"
                        shipping: "5.00"
                  - op: add
                    path: /transactions/0/item_list/shipping_address
                    value:
                      recipient_name: Anna Gruneberg
                      line1: Kathwarinenhof 1
                      city: Flensburg
                      postal_code: "24939"
                      country_code: DE
      security:
        - Oauth2:
            - https://api.paypal.com/v1/payments/.*
        - Oauth2:
            - https://uri.paypal.com/services/payments/payment
        - Oauth2:
            - https://uri.paypal.com/services/payments/realtimepayment
        - Oauth2:
            - https://uri.paypal.com/services/payments/channelpartner
      tags:
        - payment
  /v1/payments/payment/{payment_id}/execute:
    post:
      summary: Execute approved PayPal payment
      description: <blockquote><strong>Deprecation notice:</strong> The
        <code>/v1/payments</code> endpoint is deprecated. Use the
        <code>/v2/payments</code> endpoint instead. For details, see <a
        href="/docs/checkout/integrate/">PayPal Checkout Basic
        Integration</a>.</blockquote>Executes a PayPal payment that the customer
        has approved. You can optionally update one or more transactions when
        you execute the payment.<blockquote><strong>Important:</strong> This
        call works only after a customer has approved the payment. For more
        information, learn about <a
        href="/docs/integration/direct/payments/paypal-payments/">PayPal
        payments</a>.</blockquote>
      operationId: payment.execute
      responses:
        "200":
          description: A successful request returns the HTTP `200 OK` status code and a
            JSON response body that shows details for the executed payment.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/payment"
        default:
          description: The error details.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/error"
      parameters:
        - $ref: "#/components/parameters/paypal_request_id"
        - $ref: "#/components/parameters/paypal_partner_attribution_id"
        - $ref: "#/components/parameters/payment_id"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/payment_execution"
            examples:
              payment_execution:
                value:
                  payer_id: CR87QHB7JTRSC
      security:
        - Oauth2:
            - https://api.paypal.com/v1/payments/.*
        - Oauth2:
            - https://uri.paypal.com/services/payments/payment
        - Oauth2:
            - https://uri.paypal.com/services/payments/realtimepayment
      tags:
        - payment
  /v1/payments/sale/{sale_id}:
    get:
      summary: Show sale details
      description: <blockquote><strong>Deprecation notice:</strong> The
        <code>/v1/payments</code> endpoint is deprecated. Use the
        <code>/v2/payments</code> endpoint instead. For details, see <a
        href="/docs/checkout/integrate/">PayPal Checkout Basic
        Integration</a>.</blockquote>Shows details for a sale, by ID. Returns
        only sales that were created through the REST API.
      operationId: sale.get
      responses:
        "200":
          description: A successful request returns the HTTP `200 OK` status code and a
            JSON response body that shows sale details.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/sale"
        default:
          description: The error details.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/error"
      parameters:
        - $ref: "#/components/parameters/sale_id"
      security:
        - Oauth2:
            - https://api.paypal.com/v1/payments/.*
        - Oauth2:
            - https://uri.paypal.com/services/payments/payment
        - Oauth2:
            - https://uri.paypal.com/services/payments/realtimepayment
        - Oauth2:
            - https://uri.paypal.com/services/payments/payment/authcapture
      tags:
        - sale
  /v1/payments/sale/{sale_id}/refund:
    post:
      summary: Refund sale
      description: <blockquote><strong>Deprecation notice:</strong> The
        <code>/v1/payments</code> endpoint is deprecated. Use the
        <code>/v2/payments</code> endpoint instead. For details, see <a
        href="/docs/checkout/integrate/">PayPal Checkout Basic
        Integration</a>.</blockquote>Refunds a sale, by ID. For a full refund,
        do not include the <code>amount</code> object in the JSON request body.
        For a partial refund, include an <code>amount</code> object in the JSON
        request body.
      operationId: sale.refund
      responses:
        "200":
          description: A successful idempotent request returns the HTTP `200 Created`
            status code and a JSON response body that shows details for the
            refunded sale.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/detailed_refund"
        "201":
          description: A successful request returns the HTTP `201 Created` status code and
            a JSON response body that shows details for the refunded sale.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/detailed_refund"
        "409":
          description: The request failed because a previous call for the given resource
            is in progress.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/error"
        default:
          description: The error details.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/error"
      parameters:
        - $ref: "#/components/parameters/paypal_request_id"
        - $ref: "#/components/parameters/sale_id"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/refund_request"
            examples:
              refund_request:
                value:
                  amount:
                    total: "100.00"
                    currency: USD
                  invoice_number: INV-7654321
      security:
        - Oauth2:
            - https://api.paypal.com/v1/payments/.*
        - Oauth2:
            - https://uri.paypal.com/services/payments/payment
        - Oauth2:
            - https://uri.paypal.com/services/payments/refund
        - Oauth2:
            - https://uri.paypal.com/services/payments/unilateralrefund
      tags:
        - sale
  /v1/payments/authorization/{authorization_id}:
    get:
      summary: Show authorization details
      description: <blockquote><strong>Deprecation notice:</strong> The
        <code>/v1/payments</code> endpoint is deprecated. Use the
        <code>/v2/payments</code> endpoint instead. For details, see <a
        href="/docs/checkout/integrate/">PayPal Checkout Basic
        Integration</a>.</blockquote>Shows details for an authorization, by ID.
      operationId: authorization.get
      responses:
        "200":
          description: A successful request returns the HTTP `200 OK` status code and a
            JSON response body that shows authorization details.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/authorization"
        default:
          description: The error details.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/error"
      parameters:
        - $ref: "#/components/parameters/authorization_id"
      security:
        - Oauth2:
            - https://api.paypal.com/v1/payments/.*
        - Oauth2:
            - https://uri.paypal.com/services/payments/payment
        - Oauth2:
            - https://uri.paypal.com/services/payments/realtimepayment
        - Oauth2:
            - https://uri.paypal.com/services/payments/payment/authcapture
      tags:
        - authorization
  /v1/payments/authorization/{authorization_id}/capture:
    post:
      summary: Capture authorization
      description: <blockquote><strong>Deprecation notice:</strong> The
        <code>/v1/payments</code> endpoint is deprecated. Use the
        <code>/v2/payments</code> endpoint instead. For details, see <a
        href="/docs/checkout/integrate/">PayPal Checkout Basic
        Integration</a>.</blockquote>Captures and processes an authorization, by
        ID. The original payment call must specify an intent of
        <code>authorize</code>.
      operationId: authorization.capture
      responses:
        "201":
          description: A successful request returns the HTTP `201 Created` status code and
            a JSON response body that shows details for the captured
            authorization.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/capture"
        default:
          description: The error details.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/error"
      parameters:
        - $ref: "#/components/parameters/authorization_id"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/capture"
            examples:
              capture:
                value:
                  amount:
                    currency: USD
                    total: "4.54"
                  is_final_capture: true
      security:
        - Oauth2:
            - https://api.paypal.com/v1/payments/.*
        - Oauth2:
            - https://uri.paypal.com/services/payments/payment
        - Oauth2:
            - https://uri.paypal.com/services/payments/payment/authcapture
      tags:
        - authorization
  /v1/payments/authorization/{authorization_id}/void:
    post:
      summary: Void authorization
      description: <blockquote><strong>Deprecation notice:</strong> The
        <code>/v1/payments</code> endpoint is deprecated. Use the
        <code>/v2/payments</code> endpoint instead. For details, see <a
        href="/docs/checkout/integrate/">PayPal Checkout Basic
        Integration</a>.</blockquote>Voids, or cancels, an authorization, by ID.
        You cannot void a fully captured authorization.
      operationId: authorization.void
      responses:
        "200":
          description: A successful request returns the HTTP `200 OK` status code and a
            JSON response body that shows details for the voided authorization.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/authorization"
        "409":
          description: The request failed because a previous call for the given resource
            is in progress.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/error"
        default:
          description: The error details.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/error"
      parameters:
        - $ref: "#/components/parameters/paypal_request_id"
        - $ref: "#/components/parameters/authorization_id"
      security:
        - Oauth2:
            - https://api.paypal.com/v1/payments/.*
        - Oauth2:
            - https://uri.paypal.com/services/payments/payment
        - Oauth2:
            - https://uri.paypal.com/services/payments/payment/authcapture
      tags:
        - authorization
  /v1/payments/authorization/{authorization_id}/reauthorize:
    post:
      summary: Re-authorize payment
      description: <blockquote><strong>Deprecation notice:</strong> The
        <code>/v1/payments</code> endpoint is deprecated. Use the
        <code>/v2/payments</code> endpoint instead. For details, see <a
        href="/docs/checkout/integrate/">PayPal Checkout Basic
        Integration</a>.</blockquote>Re-authorizes a PayPal account payment, by
        authorization ID. To ensure that funds are still available, re-authorize
        a payment after the initial three-day honor period. Supports only the
        <code>amount</code> request parameter. You can re-authorize a payment
        only once from four to 29 days after three-day honor period for the
        original authorization expires. If 30 days have passed from the original
        authorization, you must create a new authorization instead. A
        re-authorized payment itself has a new three-day honor period. You can
        re-authorize a transaction once for up to 115% of the originally
        authorized amount, not to exceed an increase of $75 USD.
      operationId: authorization.reauthorize
      responses:
        "201":
          description: A successful request returns the HTTP `201 Created` status code and
            a JSON response body that shows details for the re-authorized
            authorization.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/authorization"
        default:
          description: The error details.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/error"
      parameters:
        - $ref: "#/components/parameters/authorization_id"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/authorization"
      security:
        - Oauth2:
            - https://api.paypal.com/v1/payments/.*
        - Oauth2:
            - https://uri.paypal.com/services/payments/payment
        - Oauth2:
            - https://uri.paypal.com/services/payments/payment/authcapture
      tags:
        - authorization
  /v1/payments/orders/{order_id}:
    get:
      summary: Show order details
      description: <blockquote><strong>Deprecation notice:</strong> The
        <code>/v1/payments</code> endpoint is deprecated. Use the
        <code>/v2/payments</code> endpoint instead. For details, see <a
        href="/docs/checkout/integrate/">PayPal Checkout Basic
        Integration</a>.</blockquote>Shows details for an order, by ID.
      operationId: orders.get
      responses:
        "200":
          description: A successful request returns the HTTP `200 OK` status code and a
            JSON response body that shows details for the voided authorization.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/order"
        default:
          description: The error details.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/error"
      parameters:
        - $ref: "#/components/parameters/order_id"
      security:
        - Oauth2:
            - https://api.paypal.com/v1/payments/.*
        - Oauth2:
            - https://uri.paypal.com/services/payments/payment
        - Oauth2:
            - https://uri.paypal.com/services/payments/realtimepayment
        - Oauth2:
            - https://uri.paypal.com/services/payments/payment/authcapture
      tags:
        - orders
  /v1/payments/orders/{order_id}/capture:
    post:
      summary: Capture order
      description: <blockquote><strong>Deprecation notice:</strong> The
        <code>/v1/payments</code> endpoint is deprecated. Use the
        <code>/v2/payments</code> endpoint instead. For details, see <a
        href="/docs/checkout/integrate/">PayPal Checkout Basic
        Integration</a>.</blockquote>Captures a payment for an order, by ID. To
        use this call, the original payment call must specify an
        <code>order</code> intent. In the JSON request body, include the payment
        amount and indicate whether this capture is the final capture for the
        authorization.
      operationId: orders.capture
      responses:
        "201":
          description: A successful request returns the HTTP `201 Created` status code and
            a JSON response body that shows details for the captured order.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/capture"
        default:
          description: The error details.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/error"
      parameters:
        - $ref: "#/components/parameters/order_id"
      requestBody:
        $ref: "#/components/requestBodies/capture"
      security:
        - Oauth2:
            - https://api.paypal.com/v1/payments/.*
        - Oauth2:
            - https://uri.paypal.com/services/payments/payment
        - Oauth2:
            - https://uri.paypal.com/services/payments/payment/authcapture
      tags:
        - orders
  /v1/payments/orders/{order_id}/do-void:
    post:
      summary: Void order
      description: <blockquote><strong>Deprecation notice:</strong> The
        <code>/v1/payments</code> endpoint is deprecated. Use the
        <code>/v2/payments</code> endpoint instead. For details, see <a
        href="/docs/checkout/integrate/">PayPal Checkout Basic
        Integration</a>.</blockquote>Voids, or cancels, an order, by ID. You can
        only void orders that are either in the <code>PENDING</code> or
        <code>AUTHORIZED</code> states or those in the <code>CAPTURED</code>
        state that are not fully captured.
      operationId: orders.void
      responses:
        "200":
          description: A successful request returns the HTTP `200 OK` status code and a
            JSON response body that shows details for the voided order.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/order"
        default:
          description: The error details.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/error"
      parameters:
        - $ref: "#/components/parameters/paypal_request_id"
        - $ref: "#/components/parameters/order_id"
      security:
        - Oauth2:
            - https://api.paypal.com/v1/payments/.*
        - Oauth2:
            - https://uri.paypal.com/services/payments/payment
        - Oauth2:
            - https://uri.paypal.com/services/payments/payment/authcapture
      tags:
        - orders
  /v1/payments/orders/{order_id}/authorize:
    post:
      summary: Authorize order
      description: <blockquote><strong>Deprecation notice:</strong> The
        <code>/v1/payments</code> endpoint is deprecated. Use the
        <code>/v2/payments</code> endpoint instead. For details, see <a
        href="/docs/checkout/integrate/">PayPal Checkout Basic
        Integration</a>.</blockquote>Authorizes an order, by ID. In the JSON
        request body, include an <code>amount</code> object.
      operationId: orders.authorize
      responses:
        "201":
          description: A successful request returns the HTTP `201 Created` status code and
            a JSON response body that shows details for the authorized order.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/authorization"
        default:
          description: The error details.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/error"
      parameters:
        - $ref: "#/components/parameters/order_id"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/order"
      security:
        - Oauth2:
            - https://api.paypal.com/v1/payments/.*
        - Oauth2:
            - https://uri.paypal.com/services/payments/payment
        - Oauth2:
            - https://uri.paypal.com/services/payments/payment/authcapture
      tags:
        - orders
  /v1/payments/capture/{capture_id}:
    get:
      summary: Show captured payment details
      description: <blockquote><strong>Deprecation notice:</strong> The
        <code>/v1/payments</code> endpoint is deprecated. Use the
        <code>/v2/payments</code> endpoint instead. For details, see <a
        href="/docs/checkout/integrate/">PayPal Checkout Basic
        Integration</a>.</blockquote>Shows details for a captured payment, by
        ID.
      operationId: capture.get
      responses:
        "200":
          description: A successful request returns the HTTP `200 OK` status code and a
            JSON response body that shows details for the captured payment.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/capture"
        default:
          description: The error details.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/error"
      parameters:
        - $ref: "#/components/parameters/capture_id"
      security:
        - Oauth2:
            - https://api.paypal.com/v1/payments/.*
        - Oauth2:
            - https://uri.paypal.com/services/payments/payment
        - Oauth2:
            - https://uri.paypal.com/services/payments/realtimepayment
        - Oauth2:
            - https://uri.paypal.com/services/payments/payment/authcapture
      tags:
        - capture
  /v1/payments/capture/{capture_id}/refund:
    post:
      summary: Refund captured payment
      description: <blockquote><strong>Deprecation notice:</strong> The
        <code>/v1/payments</code> endpoint is deprecated. Use the
        <code>/v2/payments</code> endpoint instead. For details, see <a
        href="/docs/checkout/integrate/">PayPal Checkout Basic
        Integration</a>.</blockquote>Refunds a captured payment, by ID. In the
        JSON request body, include an <code>amount</code> object.
      operationId: capture.refund
      responses:
        "200":
          description: A successful idempotent request returns the HTTP `200 OK` status
            code and a JSON response body that shows details for the captured
            payment.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/detailed_refund"
        "201":
          description: A successful request returns the HTTP `201 OK` status code and a
            JSON response body that shows details for the captured payment.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/detailed_refund"
        "409":
          description: The request failed because a previous call for the given resource
            is in progress.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/error"
        default:
          description: The error details.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/error"
      parameters:
        - $ref: "#/components/parameters/paypal_request_id"
        - $ref: "#/components/parameters/capture_id"
      requestBody:
        $ref: "#/components/requestBodies/refund_request"
      security:
        - Oauth2:
            - https://api.paypal.com/v1/payments/.*
        - Oauth2:
            - https://uri.paypal.com/services/payments/payment
        - Oauth2:
            - https://uri.paypal.com/services/payments/refund
        - Oauth2:
            - https://uri.paypal.com/services/payments/unilateralrefund
      tags:
        - capture
  /v1/payments/refund/{refund_id}:
    get:
      summary: Show refund details
      description: <blockquote><strong>Deprecation notice:</strong> The
        <code>/v1/payments</code> endpoint is deprecated. Use the
        <code>/v2/payments</code> endpoint instead. For details, see <a
        href="/docs/checkout/integrate/">PayPal Checkout Basic
        Integration</a>.</blockquote>Shows details for a refund, by ID.
      operationId: refund.get
      responses:
        "200":
          description: A successful request returns the HTTP `200 OK` status code and a
            JSON response body that shows refund details.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/refund"
        default:
          description: The error details.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/error"
      parameters:
        - $ref: "#/components/parameters/refund_id"
      security:
        - Oauth2:
            - https://api.paypal.com/v1/payments/.*
        - Oauth2:
            - https://uri.paypal.com/services/payments/payment
        - Oauth2:
            - https://uri.paypal.com/services/payments/refund
      tags:
        - refund
components:
  requestBodies:
    capture:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/capture"
    refund_request:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/refund_request"
  securitySchemes:
    Oauth2:
      type: oauth2
      description: Oauth 2.0 authentication
      flows:
        clientCredentials:
          tokenUrl: /api/oauth-proxy
          scopes:
            https://api.paypal.com/v1/payments/.*: Deprecated. Legacy payment scope. It will
              be replaced with new scopes
            https://uri.paypal.com/services/payments/payment: New special privileged scope
              available to do payment. This will be available to internal
              clients only
            https://uri.paypal.com/services/payments/realtimepayment: Permission to do any
              real time payment, with support for sale/authorize/order intents
            https://uri.paypal.com/services/payments/payment/authcapture:
              "Permission to do non-real time payments like authorization on
              order or capture on authorization or an order "
            https://uri.paypal.com/services/payments/refund: Permission to initiate a
              refund/reversal on a sale or capture transaction
            https://uri.paypal.com/services/payments/paymentcard: Permission to do unbranded credit or debit card payments
            https://uri.paypal.com/services/payments/futurepayments: Permission for future or pre-approved payment.
            https://uri.paypal.com/services/payments/channelpartner: Permission to
              explicitly specify the receiver of a payment on request payload.
            https://uri.paypal.com/services/payments/unilateralrefund: This scope enables
              partners/facilitators to perform unilateralrefund and also refund.
            https://uri.paypal.com/services/checkout/onetimepayment: This scope enable
              buyer's checkout flow to load payment information.
  schemas:
    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_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_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_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_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_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_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_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"
      examples:
        - 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
    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"
      examples:
        - name: SERVICE_UNAVAILABLE
          message: Service Unavailable.
          debug_id: 90957fca61718
          information_link: https://developer.paypal.com/docs/api/orders/v2/#error-SERVICE_UNAVAILABLE
    error_details-2:
      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:
          type: string
          description: The location of the field that caused the error. Value is `body`,
            `path`, or `query`.
          default: body
        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
    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
    error:
      type: object
      title: Error
      description: The error details.
      properties:
        name:
          type: string
          description: The human-readable, unique name of the error.
        message:
          type: string
          description: The message that describes the error.
        debug_id:
          type: string
          description: The PayPal internal ID. Used for correlation purposes.
        information_link:
          type: string
          description: The information link, or URI, that shows detailed information about
            this error for the developer.
          readOnly: true
        details:
          type: array
          description: An array of additional details about the error.
          items:
            $ref: "#/components/schemas/error_details-2"
        links:
          type: array
          description: An array of request-related [HATEOAS
            links](/docs/api/reference/api-responses/#hateoas-links).
          readOnly: true
          items:
            $ref: "#/components/schemas/link_description"
            readOnly: true
      required:
        - name
        - message
        - debug_id
    credit_card_token:
      type: object
      title: Credit Card Token
      description: The tokenized credit card details. You can use this instrument to
        fund a payment.
      properties:
        credit_card_id:
          type: string
          description: The ID of credit card that is stored in the PayPal vault.
          minLength: 1
          maxLength: 256
        payer_id:
          type: string
          description: Deprecated. A unique ID that you can assign and track when you
            store a credit card in the vault or use a vaulted credit card. This
            ID can help to avoid unintentional use or misuse of credit cards and
            can be any value, such as a UUID, user name, or email address.
            **Required** when you use a vaulted credit card and if a `payer_id`
            was originally provided when you vaulted the credit card. Use
            external_customer_id instead.
          minLength: 1
          maxLength: 256
        external_customer_id:
          type: string
          description: The externally-provided ID of the customer.
          minLength: 1
          maxLength: 256
        last4:
          type: string
          readOnly: true
          description: The last four digits of the stored credit card number.
          minLength: 4
          maxLength: 4
        type:
          type: string
          readOnly: true
          description: The credit card type. Value is `visa`, `mastercard`, `discover`, or
            `amex`. Do not use these lowercase values for display.
          minLength: 1
          maxLength: 256
        expire_month:
          type: integer
          readOnly: true
          description: The expiration month with no leading zero. Value is from `1` to `12`.
          minimum: 1
          maximum: 12
        expire_year:
          type: string
          readOnly: true
          description: The four-digit expiration year.
          pattern: ^[0-9]{4}$
          minLength: 4
          maxLength: 4
      required:
        - credit_card_id
    funding_instrument:
      type: object
      title: Funding Instrument
      description: The funding instrument details. An instance of this schema is valid
        if and only if it validates against exactly one of these supported
        properties.
      properties:
        credit_card_token:
          description: The tokenized credit card details. You can use this instrument to
            fund a payment.
          $ref: "#/components/schemas/credit_card_token"
    country_code:
      type: string
      description: The [two-character ISO 3166-1
        code](/docs/api/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)$
    address:
      type: object
      title: Address
      description: The billing address or shipping address for a payment.
      properties:
        line1:
          type: string
          description: The first line of the address. For example, number, street, and so
            on.
          maxLength: 300
        line2:
          type: string
          description: The second line of the address. For example, suite or apartment
            number.
          maxLength: 300
        city:
          type: string
          description: The city name.
          maxLength: 64
        country_code:
          $ref: "#/components/schemas/country_code"
        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).
        state:
          type: string
          description: "The [code](/docs/integration/direct/rest/state-codes/) for a US
            state or the equivalent for other countries. Required for
            transactions if the address is in one of these countries:
            [Argentina](/docs/integration/direct/rest/state-codes/#argentina),
            [Brazil](/docs/integration/direct/rest/state-codes/#brazil),
            [Canada](/docs/integration/direct/rest/state-codes/#canada),
            [China](/docs/integration/direct/rest/state-codes/#china),
            [India](/docs/integration/direct/rest/state-codes/#india),
            [Italy](/docs/integration/direct/rest/state-codes/#italy),
            [Japan](/docs/integration/direct/rest/state-codes/#japan),
            [Mexico](/docs/integration/direct/rest/state-codes/#mexico),
            [Thailand](/docs/integration/direct/rest/state-codes/#thailand), or
            [United States](/docs/integration/direct/rest/state-codes/#usa)."
          maxLength: 300
        phone:
          type: string
          format: phone
          description: The phone number, in [E.123
            format](https://www.itu.int/rec/T-REC-E.123-200102-I/en). Maximum
            length is 50 characters.
        normalization_status:
          type: string
          description: The address normalization status. Returned only for payers from
            Brazil.
          readOnly: true
          enum:
            - UNKNOWN
            - UNNORMALIZED_USER_PREFERRED
            - NORMALIZED
            - UNNORMALIZED
        type:
          type: string
          description: The type of address. For example, `HOME_OR_WORK`, `GIFT`, and so on.
      required:
        - line1
        - country_code
    shipping_address:
      title: Shipping Address
      description: The shipping address details.
      allOf:
        - $ref: "#/components/schemas/address"
        - properties:
            recipient_name:
              type: string
              description: The name of the recipient at this address.
              maxLength: 127
    payer_info:
      type: object
      title: Payer Information
      description: The payer information.
      properties:
        email:
          type: string
          format: email
          description: The payer's email address. Maximum length is 127 characters.
        salutation:
          type: string
          description: The payer's salutation.
          readOnly: true
        first_name:
          type: string
          description: The payer's first name.
          readOnly: true
        middle_name:
          type: string
          description: The payer's middle name.
          readOnly: true
        last_name:
          type: string
          description: The payer's last name.
          readOnly: true
        suffix:
          type: string
          description: The payer's suffix.
          readOnly: true
        payer_id:
          type: string
          description: The PayPal-assigned encrypted payer ID.
          readOnly: true
        birth_date:
          type: string
          format: date-time
          description: The birth date of the payer, in [Internet date
            format](https://tools.ietf.org/html/rfc3339#section-5.6). For
            example, `1990-04-12`.
        tax_id:
          type: string
          description: The payer's tax ID. Supported for the PayPal payment method only.
          maxLength: 14
        tax_id_type:
          type: string
          description: The payer's tax ID type. Supported for the PayPal payment method
            only.
          enum:
            - BR_CPF
            - BR_CNPJ
        billing_address:
          $ref: "#/components/schemas/address"
          description: The payer's billing address.
        shipping_address:
          $ref: "#/components/schemas/shipping_address"
          description: Deprecated. The shipping address. Use the shipping address for the
            purchase unit or at the root level of the checkout session.
          readOnly: true
    payer:
      type: object
      title: Payer
      description: The payer. The payer funds the payment.
      properties:
        payment_method:
          type: string
          minLength: 4
          maxLength: 17
          description: The payment method.
          enum:
            - credit_card
            - paypal
            - pay_upon_invoice
            - carrier
            - alternate_payment
            - bank
        status:
          type: string
          minLength: 8
          maxLength: 10
          description: The status of payer's PayPal account.
          readOnly: true
          enum:
            - VERIFIED
            - UNVERIFIED
        funding_instruments:
          type: array
          description: An array of a single funding instrument for the current payment.
            Valid only and required for the credit card payment method. The
            array must include either a `credit_card` or `credit_card_token`
            object. If the array contains more than one instrument, the payment
            is declined.
          items:
            $ref: "#/components/schemas/funding_instrument"
          minItems: 1
          maxItems: 1
        payer_info:
          $ref: "#/components/schemas/payer_info"
    token:
      type: object
      title: Token
      description: The tokenized payment source to fund a payment.
      properties:
        id:
          type: string
          description: The PayPal-generated ID for the token.
          minLength: 1
          maxLength: 255
        type:
          type: string
          description: The tokenization method that generated the ID.
          minLength: 1
          maxLength: 255
          pattern: ^[0-9A-Z_-]+$
          enum:
            - BILLING_AGREEMENT
      required:
        - id
        - type
    payment_source:
      type: object
      title: Payment Source
      description: The payment source definition.
      properties:
        token:
          $ref: "#/components/schemas/token"
    payment_pattern:
      type: string
      description: Provides context (e.g. frequency of payment (Single, Recurring)
        along with whether (Customer is Present, Not Present) for the payment
        being processed. For Card and PayPal Vaulted/Billing Agreement
        transactions, this helps specify the appropriate indicators to the
        networks (e.g. Mastercard, Visa) which ensures compliance as well as
        ensure a better auth-rate. For bank processing, indicates to clearing
        house whether the transaction is recurring or not depending on the
        option chosen.
      title: Payment pattern
      minLength: 3
      maxLength: 255
      pattern: ^[A-Z_]+$
      enum:
        - CUSTOMER_PRESENT_ONETIME_PURCHASE
        - CUSTOMER_NOT_PRESENT_RECURRING
        - CUSTOMER_PRESENT_RECURRING_FIRST
        - CUSTOMER_PRESENT_ONETIME_PURCHASE_VAULTED
        - CUSTOMER_NOT_PRESENT_ONETIME_PURCHASE_VAULTED
        - MAIL_ORDER_TELEPHONE_ORDER
    application_context:
      type: object
      title: Application Context
      description: The application context. Set these properties to customize the
        payment flow experience for your customers.
      properties:
        brand_name:
          type: string
          description: A label that overrides the business name in the merchant's PayPal
            account on the PayPal checkout pages.
          maxLength: 127
        locale:
          type: string
          description: The locale of pages that the PayPal payment experience displays.
            Please refer
            [here](/docs/api/reference/locale-codes/#localize-the-checkout-experience)
            for list of supported local codes.  Defaulted to en_US if not
            provided or invalid.
        landing_page:
          type: string
          description: The type of landing page to show on the PayPal site for customer
            checkout. To use the non-PayPal account landing page, set to
            `Billing`. To use the PayPal account log in landing page, set to
            `Login`.
        shipping_preference:
          type: string
          description: The shipping preference.
          default: GET_FROM_FILE
          enum:
            - NO_SHIPPING
            - GET_FROM_FILE
            - SET_PROVIDED_ADDRESS
        user_action:
          type: string
          description: The user action. Presents the customer with either the
            <strong>Continue</strong> or <strong>Pay Now</strong> checkout
            flow:<table><thead><tr valign="top"
            align="left"><th>Flow</th><th>Action</th><th>Description</th></tr></thead><tbody><tr
            valign="top" align="left"><td><strong>Pay
            Now</strong></td><td><code>user_action=commit</code></td><td>After
            the customer is redirected to the PayPal payment page, shows the
            <strong>Pay Now</strong> button.<br/><br/>Use this option when you
            know the final amount when checkout is initiated and you want to
            process the payment immediately when the customer clicks <strong>Pay
            Now</strong>.</td></tr><tr valign="top"
            align="left"><td><strong>Continue</strong></td><td>
            <code>user_action=continue</code></td><td>After the customer is
            redirected to the PayPal payment page, shows the
            <strong>Continue</strong> button.<br/><br/>Use this option when you
            do not know the final amount when you initiate the checkout flow and
            you want to redirect the customer to the merchant page without
            processing the payment.</td></tr></tbody></table>
        preferred_payment_source:
          type: object
          description: The preferred payment source for the payer. Currently supported
            only for PayPal Billing Agreements. If provided, checkout experience
            will have this payment source pre-selected for the payer.
          $ref: "#/components/schemas/payment_source"
        payment_pattern:
          $ref: "#/components/schemas/payment_pattern"
    amount:
      type: object
      title: Amount
      description: The payment amount, with details.
      properties:
        currency:
          type: string
          description: The [three-character ISO-4217 currency
            code](/docs/integration/direct/rest/currency-codes/). PayPal does
            not support all currencies.
        total:
          type: string
          description: The total amount charged to the payee by the payer. For refunds,
            represents the amount that the payee refunds to the original payer.
            Maximum length is 10 characters, which includes:<ul><li>Seven digits
            before the decimal point.</li><li>The decimal point.</li><li>Two
            digits after the decimal point.</li><li>For currencies like `JPY` do
            not support decimals.</li></ul>
        details:
          type: object
          title: Payment Amount Details
          description: The additional details about the payment
            amount.<blockquote><strong>Note:</strong> For an order authorization
            or capture, you cannot include the amount <code>details</code>
            object.</blockquote>
          properties:
            subtotal:
              type: string
              description: The subtotal amount for the items. If the request includes line
                items, this property is **required**. Maximum length is 10
                characters, which includes:<ul><li>Seven digits before the
                decimal point.</li><li>The decimal point.</li><li>Two digits
                after the decimal
                point.</li></ul><blockquote><strong>Note:</strong> For an order
                authorization or capture, you cannot include the
                <code>subtotal</code> parameter.</blockquote>
            shipping:
              type: string
              description: The shipping fee. Maximum length is 10 characters, which
                includes:<ul><li>Seven digits before the decimal
                point.</li><li>The decimal point.</li><li>Two digits after the
                decimal point.</li></ul><blockquote><strong>Note:</strong> For
                an order authorization or capture, you cannot include the
                <code>shipping</code> parameter.</blockquote>
            tax:
              type: string
              description: The tax. Maximum length is 10 characters, which
                includes:<ul><li>Seven digits before the decimal
                point.</li><li>The decimal point.</li><li>Two digits after the
                decimal point.</li></ul><blockquote><strong>Note:</strong> For
                an order authorization or capture, you cannot include the
                <code>tax</code> parameter.</blockquote>
            handling_fee:
              type: string
              description: The handling fee. Maximum length is 10 characters, which
                includes:<ul><li>Seven digits before the decimal
                point.</li><li>The decimal point.</li><li>Two digits after the
                decimal point.</li></ul>Supported for the PayPal payment method
                only.<blockquote><strong>Note:</strong> For an order
                authorization or capture, you cannot include the
                <code>handling_fee</code> parameter.</blockquote>
            shipping_discount:
              type: string
              description: The shipping fee discount. Maximum length is 10 characters, which
                includes:<ul><li>Seven digits before the decimal
                point.</li><li>The decimal point.</li><li>Two digits after the
                decimal point.</li></ul>Supported for the PayPal payment method
                only.<blockquote><strong>Note:</strong> For an order
                authorization or capture, you cannot include the
                <code>shipping_discount</code> parameter.</blockquote>
            insurance:
              type: string
              description: The insurance fee. Maximum length is 10 characters, which
                includes:<ul><li>Seven digits before the decimal
                point.</li><li>The decimal point.</li><li>Two digits after the
                decimal point.</li></ul>Supported only for the PayPal payment
                method.<blockquote><strong>Note:</strong> For an order
                authorization or capture, you cannot include the
                <code>insurance</code> parameter.</blockquote>
            gift_wrap:
              type: string
              description: The gift wrap fee. Maximum length is 10 characters, which
                includes:<ul><li>Seven digits before the decimal
                point.</li><li>The decimal point.</li><li>Two digits after the
                decimal point.</li></ul><blockquote><strong>Note:</strong> For
                an order authorization or capture, you cannot include the
                <code>gift_wrap</code> parameter.</blockquote>
              x-hidden: true
      required:
        - currency
        - total
    payee:
      type: object
      title: Payee
      description: The payee who receives the funds and fulfills the order.
      properties:
        email:
          type: string
          format: email
          description: The email address associated with the payee's PayPal account. For
            an intent of authorize or order, the email address must be
            associated with a confirmed PayPal business account. For an intent
            of sale, the email can either:<ul><li>Be associated with a confirmed
            PayPal personal or business account.</li><li>Not be associated with
            a PayPal account.</li></ul>
        merchant_id:
          type: string
          description: The PayPal account ID for the payee.
    currency_code:
      description: The [three-character ISO-4217 currency
        code](/docs/api/reference/currency-codes/) that identifies the currency.
      type: string
      format: ppaas_common_currency_code_v2
      minLength: 3
      maxLength: 3
    item:
      type: object
      title: Item
      description: The item details.
      properties:
        sku:
          type: string
          description: The stock keeping unit (SKU) for the item.
          maxLength: 127
        name:
          type: string
          description: The item name. If this value is greater than the maximum allowed
            length, the API truncates the string.
          maxLength: 127
        description:
          type: string
          description: The item description. Supported for only the PayPal payment method.
          maxLength: 127
        quantity:
          type: string
          description: The item quantity. Must be a whole number.
          maxLength: 10
          pattern: ^[0-9]{0,10}$
        price:
          type: string
          description: The item cost. Supports two decimal places.
          maxLength: 10
          pattern: ^[0-9]{0,10}(\.[0-9]{0,2})?$
        currency:
          $ref: "#/components/schemas/currency_code"
        tax:
          type: string
          description: The item tax. Supported only for the PayPal payment method.
      required:
        - quantity
        - price
        - currency
    payment_hold_reason:
      type: object
      title: Related Resources
      description: The payment-related financial transactions, which include sales,
        authorizations, captures, and refunds. To show resource details, use the
        resource ID. For example, to [show details for a related
        authorization](/docs/api/payments/v1/#authorization_get), use the ID
        returned in the `authorization` object. You can also use the [HATEOAS
        links](/docs/api/hateoas-links/) for a resource to complete operations
        for that resource. For example, a `sale` object provides a `refund` link
        that enables you to refund the sale.
      properties:
        payment_hold_reason:
          description: The reason that PayPal holds the recipient fund. Set only if the
            payment hold status is `HELD`.
          type: string
          enum:
            - PAYMENT_HOLD
            - SHIPPING_RISK_HOLD
    currency:
      type: object
      title: Currency
      description: The currency and amount for a transaction.
      properties:
        currency:
          type: string
          description: The [three-character ISO-4217 currency
            code](/docs/integration/direct/rest/currency-codes/). PayPal does
            not support all currencies.
        value:
          type: string
          description: The amount. Includes the specified number of digits after decimal
            separator for the [ISO-4217 currency
            code](https://en.wikipedia.org/wiki/ISO_4217#Active_codes).
      required:
        - currency
        - value
    fmf_details:
      type: object
      title: FMF Details
      description: The Fraud Management Filter (FMF) details that are applied to the
        payment that result in an accept, deny, or pending action. Returned in a
        payment response only if the merchant has enabled FMF in the profile
        settings and one of the fraud filters was triggered based on those
        settings. For more information, see [Fraud Management Filters
        Summary](/docs/classic/fmf/integration-guide/FMFSummary/).
      properties:
        filter_type:
          type: string
          description: The filter type.
          readOnly: true
          enum:
            - ACCEPT
            - PENDING
            - DENY
            - REPORT
        filter_id:
          type: string
          description: The filter ID.
          readOnly: true
          enum:
            - AVS_NO_MATCH
            - AVS_PARTIAL_MATCH
            - AVS_UNAVAILABLE_OR_UNSUPPORTED
            - CARD_SECURITY_CODE_MISMATCH
            - MAXIMUM_TRANSACTION_AMOUNT
            - UNCONFIRMED_ADDRESS
            - COUNTRY_MONITOR
            - LARGE_ORDER_NUMBER
            - BILLING_OR_SHIPPING_ADDRESS_MISMATCH
            - RISKY_ZIP_CODE
            - SUSPECTED_FREIGHT_FORWARDER_CHECK
            - TOTAL_PURCHASE_PRICE_MINIMUM
            - IP_ADDRESS_VELOCITY
            - RISKY_EMAIL_ADDRESS_DOMAIN_CHECK
            - RISKY_BANK_IDENTIFICATION_NUMBER_CHECK
            - RISKY_IP_ADDRESS_RANGE
            - PAYPAL_FRAUD_MODEL
        name:
          type: string
          description: The filter name.
          readOnly: true
        description:
          type: string
          description: The filter description.
          readOnly: true
      required:
        - filter_type
        - filter_id
    processor_response:
      type: object
      title: Processor Response
      description: The processor-provided response codes that describe the submitted
        payment. Supported only when the `payment_method` is `credit_card`.
      properties:
        response_code:
          type: string
          description: The PayPal normalized response code, which is generated from the
            processor's specific response code.
          maxLength: 4
          readOnly: true
        avs_code:
          type: string
          description: The [Address Verification System
            (AVS)](/docs/nvp-soap-api/AVSResponseCodes/) response code.
          maxLength: 1
          pattern: "[A-z0-9]{1}"
          readOnly: true
        cvv_code:
          type: string
          description: The [CVV](/docs/nvp-soap-api/AVSResponseCodes/) system response code.
          maxLength: 1
          pattern: "[A-z0-9]{1}"
          readOnly: true
        advice_code:
          type: string
          description: The merchant advice on how to handle declines for recurring payments.
          readOnly: true
          enum:
            - 01_NEW_ACCOUNT_INFORMATION
            - 02_TRY_AGAIN_LATER
            - 02_STOP_SPECIFIC_PAYMENT
            - 03_DO_NOT_TRY_AGAIN
            - 03_REVOKE_AUTHORIZATION_FOR_FUTURE_PAYMENT
            - 21_DO_NOT_TRY_AGAIN_CARD_HOLDER_CANCELLED_RECURRRING_CHARGE
            - 21_CANCEL_ALL_RECURRING_PAYMENTS
        eci_submitted:
          type: string
          description: The processor-provided authorization response.
          readOnly: true
        vpas:
          type: string
          description: The processor-provided Visa Payer Authentication Service (VPAS)
            status.
          readOnly: true
      required:
        - response_code
    sale:
      type: object
      title: Sale
      description: The sale transaction details.
      properties:
        id:
          type: string
          readOnly: true
          description: The ID of the sale transaction.
        amount:
          description: The amount to collect.
          $ref: "#/components/schemas/amount"
        payment_mode:
          type: string
          description: The transaction payment mode. Supported only for PayPal payments.
          readOnly: true
          enum:
            - INSTANT_TRANSFER
            - MANUAL_BANK_TRANSFER
            - DELAYED_TRANSFER
            - ECHECK
        state:
          type: string
          enum:
            - completed
            - partially_refunded
            - pending
            - refunded
            - denied
          description: The state of the sale transaction.
          readOnly: true
        reason_code:
          type: string
          enum:
            - CHARGEBACK
            - GUARANTEE
            - BUYER_COMPLAINT
            - REFUND
            - UNCONFIRMED_SHIPPING_ADDRESS
            - ECHECK
            - INTERNATIONAL_WITHDRAWAL
            - RECEIVING_PREFERENCE_MANDATES_MANUAL_ACTION
            - PAYMENT_REVIEW
            - REGULATORY_REVIEW
            - UNILATERAL
            - VERIFICATION_REQUIRED
            - TRANSACTION_APPROVED_AWAITING_FUNDING
          description: A reason code that describes why the transaction state is pending
            or reversed. Supported only for PayPal payments.
          readOnly: true
        protection_eligibility:
          type: string
          enum:
            - ELIGIBLE
            - PARTIALLY_ELIGIBLE
            - INELIGIBLE
          description: The merchant protection level in effect for the transaction.
            Supported only for PayPal payments.
          readOnly: true
        protection_eligibility_type:
          type: string
          enum:
            - ITEM_NOT_RECEIVED_ELIGIBLE
            - UNAUTHORIZED_PAYMENT_ELIGIBLE
            - ITEM_NOT_RECEIVED_ELIGIBLE,UNAUTHORIZED_PAYMENT_ELIGIBLE
          description: The merchant protection type in effect for the transaction.
            Returned only when `protection_eligibility` is `ELIGIBLE` or
            `PARTIALLY_ELIGIBLE`. Supported only for PayPal payments.
          readOnly: true
        clearing_time:
          type: string
          format: date-time
          description: The date and time when the PayPal eCheck transaction is expected to
            clear, in [Internet date and time
            format](https://tools.ietf.org/html/rfc3339#section-5.6).
          readOnly: true
        payment_hold_status:
          type: string
          enum:
            - HELD
          description: The recipient fund status. Returned only when the fund status is
            `held`.
          readOnly: true
        payment_hold_reasons:
          type: array
          readOnly: true
          description: An array of reasons that PayPal holds the recipient fund. Set only
            if the payment hold status is `HELD`.
          items:
            $ref: "#/components/schemas/payment_hold_reason"
        transaction_fee:
          description: The currency and amount of the transaction fee for this payment.
            Would not be returned for `pending` transactions where the funds
            have not been realized in the payee account.
          readOnly: true
          $ref: "#/components/schemas/currency"
        receivable_amount:
          description: The currency and amount of the net that the merchant receives for
            this transaction in their receivable currency. Returned only in
            cross-currency use cases where a merchant bills a buyer in a
            non-primary currency for that buyer.
          $ref: "#/components/schemas/currency"
        transaction_fee_in_receivable_currency:
          description: The currency and amount of the PayPal fee for this payment in the
            receivable currency. Returned only in cases the fee is charged in
            the receivable currency. Example `CNY`. Would not be returned for
            `pending` transactions where the funds have not been realized in the
            payee account.
          readOnly: true
          $ref: "#/components/schemas/currency"
        exchange_rate:
          type: string
          description: The exchange rate for this transaction. Returned only in
            cross-currency use cases where a merchant bills a buyer in a
            non-primary currency for that buyer.
          readOnly: true
        fmf_details:
          $ref: "#/components/schemas/fmf_details"
        receipt_id:
          type: string
          description: The receipt ID, which is a payment ID number that is returned for
            guest users to identify the payment.
          pattern: ^[0-9]{4}-[0-9]{4}-[0-9]{4}-[0-9]{4}$
          readOnly: true
        parent_payment:
          type: string
          description: The ID of the payment on which this transaction is based.
          readOnly: true
        processor_response:
          $ref: "#/components/schemas/processor_response"
        billing_agreement_id:
          type: string
          description: The ID of the billing agreement. Used as reference to execute this
            transaction.
          readOnly: true
        create_time:
          type: string
          format: date-time
          description: The date and time of the sale, in [Internet date and time
            format](https://tools.ietf.org/html/rfc3339#section-5.6).
          readOnly: true
        update_time:
          type: string
          format: date-time
          description: The date and time when the resource was last updated, in [Internet
            date and time
            format](https://tools.ietf.org/html/rfc3339#section-5.6).
          readOnly: true
        links:
          type: array
          description: An array of request-related [HATEOAS
            links](/docs/api/reference/api-responses/#hateoas-links).
          readOnly: true
          items:
            $ref: "#/components/schemas/link_description"
      required:
        - id
        - amount
        - state
        - parent_payment
        - create_time
    authorization:
      type: object
      title: Authorization
      description: The authorization details.
      properties:
        id:
          type: string
          readOnly: true
          description: The ID of the authorization.
        amount:
          $ref: "#/components/schemas/amount"
          description: The amount being authorized.
        payment_mode:
          type: string
          description: The payment mode of the authorization.
          readOnly: true
          enum:
            - INSTANT_TRANSFER
        state:
          type: string
          description: The authorized payment state.
          readOnly: true
          enum:
            - pending
            - authorized
            - partially_captured
            - captured
            - expired
            - denied
            - voided
        reason_code:
          type: string
          description: The reason code for the pending transaction state.
          readOnly: true
          enum:
            - AUTHORIZATION
        pending_reason:
          type: string
          description: Deprecated. The reason code for the pending transaction state.
            Obsolete. Use `reason_code` instead.
          readOnly: true
          enum:
            - AUTHORIZATION
        protection_eligibility:
          type: string
          description: The level of seller protection present for the transaction.
            Supported for the PayPal payment method only.
          readOnly: true
          enum:
            - ELIGIBLE
            - PARTIALLY_ELIGIBLE
            - INELIGIBLE
        protection_eligibility_type:
          type: string
          description: The type of seller protection for the transaction. Returned only
            when the `protection_eligibility` property is `ELIGIBLE` or
            `PARTIALLY_ELIGIBLE`. Supported for the PayPal payment method only.
          readOnly: true
          enum:
            - ITEM_NOT_RECEIVED_ELIGIBLE
            - UNAUTHORIZED_PAYMENT_ELIGIBLE
            - ITEM_NOT_RECEIVED_ELIGIBLE,UNAUTHORIZED_PAYMENT_ELIGIBLE
        fmf_details:
          $ref: "#/components/schemas/fmf_details"
        parent_payment:
          type: string
          readOnly: true
          description: The ID of the payment on which this transaction is based.
        processor_response:
          $ref: "#/components/schemas/processor_response"
        valid_until:
          type: string
          format: date-time
          description: The date and time when the authorization expires, in [Internet date
            and time format](https://tools.ietf.org/html/rfc3339#section-5.6).
          readOnly: true
        create_time:
          type: string
          format: date-time
          description: The date and time when the authorization was created, in [Internet
            date and time
            format](https://tools.ietf.org/html/rfc3339#section-5.6).
          readOnly: true
        update_time:
          type: string
          format: date-time
          description: The date and time when the authorization was last updated, in
            [Internet date and time
            format](https://tools.ietf.org/html/rfc3339#section-5.6).
          readOnly: true
        receipt_id:
          type: string
          description: The receipt ID, which identifies the payment. Value is 16-digit
            numeric payment ID number that is returned for guest users.
          pattern: ^[0-9]{4}-[0-9]{4}-[0-9]{4}-[0-9]{4}$
          readOnly: true
        links:
          type: array
          description: An array of request-related [HATEOAS
            links](/docs/api/reference/api-responses/#hateoas-links).
          readOnly: true
          items:
            $ref: "#/components/schemas/link_description"
      required:
        - amount
    order:
      type: object
      title: Order
      description: The order transaction details.
      properties:
        id:
          type: string
          readOnly: true
          description: The ID of the order transaction.
        amount:
          description: The amount to collect.<blockquote><strong>Note:</strong> For an
            order authorization, you cannot include amount
            <code>details</code>.</blockquote>
          $ref: "#/components/schemas/amount"
        payment_mode:
          type: string
          description: The transaction payment mode.
          readOnly: true
          enum:
            - INSTANT_TRANSFER
            - MANUAL_BANK_TRANSFER
            - DELAYED_TRANSFER
            - ECHECK
        state:
          type: string
          description: The state of the order transaction.
          readOnly: true
          enum:
            - PENDING
            - AUTHORIZED
            - CAPTURED
            - COMPLETED
            - VOIDED
        reason_code:
          type: string
          description: The reason code that describes why the transaction state is pending
            or reversed. Supported only for PayPal payments.
          readOnly: true
          enum:
            - PAYER_SHIPPING_UNCONFIRMED
            - MULTI_CURRENCY
            - RISK_REVIEW
            - REGULATORY_REVIEW
            - VERIFICATION_REQUIRED
            - ORDER
            - OTHER
        pending_reason:
          type: string
          enum:
            - payer_shipping_unconfirmed
            - multi_currency
            - risk_review
            - regulatory_review
            - verification_required
            - order
            - other
          description: Deprecated. The reason code for the pending transaction state.
            Obsolete. Use `reason_code` instead.
          readOnly: true
        protection_eligibility:
          type: string
          description: The level of seller protection in effect for the transaction.
          readOnly: true
          enum:
            - ELIGIBLE
            - PARTIALLY_ELIGIBLE
            - INELIGIBLE
        protection_eligibility_type:
          type: string
          description: The kind of seller protection in effect for the transaction.
            Returned only when the `protection_eligibility` property is
            `ELIGIBLE` or `PARTIALLY_ELIGIBLE`. Supported only for PayPal
            payments.
          readOnly: true
          enum:
            - ITEM_NOT_RECEIVED_ELIGIBLE
            - UNAUTHORIZED_PAYMENT_ELIGIBLE
            - ITEM_NOT_RECEIVED_ELIGIBLE,UNAUTHORIZED_PAYMENT_ELIGIBLE
        parent_payment:
          type: string
          readOnly: true
          description: The ID of the payment on which this transaction is based.
        fmf_details:
          $ref: "#/components/schemas/fmf_details"
        create_time:
          type: string
          format: date-time
          description: The date and time when the resource was created, in [Internet date
            and time format](https://tools.ietf.org/html/rfc3339#section-5.6).
          readOnly: true
        update_time:
          type: string
          format: date-time
          description: The date and time when the resource was last updated, in [Internet
            date and time
            format](https://tools.ietf.org/html/rfc3339#section-5.6).
          readOnly: true
        links:
          type: array
          description: An array of request-related [HATEOAS
            links](/docs/api/reference/api-responses/#hateoas-links).
          readOnly: true
          items:
            $ref: "#/components/schemas/link_description"
      required:
        - amount
    capture:
      type: object
      title: Capture
      description: The capture transaction details.
      properties:
        id:
          type: string
          description: The ID of the capture transaction.
          readOnly: true
        amount:
          description: The amount to capture. If the amount matches the originally
            authorized amount, the state of the authorization changes to
            `captured`. Otherwise, the state changes to `partially_captured`.
          $ref: "#/components/schemas/amount"
        is_final_capture:
          type: boolean
          description: Indicates whether to release all remaining held funds.
          default: false
        state:
          type: string
          description: The state of the capture.
          readOnly: true
          enum:
            - pending
            - completed
            - refunded
            - partially_refunded
            - denied
        reason_code:
          type: string
          description: The reason code that describes why the transaction state is pending
            or reversed.
          readOnly: true
          enum:
            - CHARGEBACK
            - GUARANTEE
            - BUYER_COMPLAINT
            - REFUND
            - UNCONFIRMED_SHIPPING_ADDRESS
            - ECHECK
            - INTERNATIONAL_WITHDRAWAL
            - RECEIVING_PREFERENCE_MANDATES_MANUAL_ACTION
            - PAYMENT_REVIEW
            - REGULATORY_REVIEW
            - UNILATERAL
            - VERIFICATION_REQUIRED
            - TRANSACTION_APPROVED_AWAITING_FUNDING
            - NONE
        parent_payment:
          type: string
          readOnly: true
          description: The ID of the payment on which this transaction is based.
        invoice_number:
          type: string
          description: The invoice number to track this payment.
          maxLength: 127
        transaction_fee:
          description: The currency and amount of the transaction fee for this payment.
            Would not be returned for `pending` transactions where the funds
            have not been realized in the payee account.
          readOnly: true
          $ref: "#/components/schemas/currency"
        transaction_fee_in_receivable_currency:
          description: The currency and amount of the PayPal fee for this payment in the
            receivable currency. Returned only in cases the fee is charged in
            the receivable currency. Example `CNY`. Would not be returned for
            `pending` transactions where the funds have not been realized in the
            payee account.
          readOnly: true
          $ref: "#/components/schemas/currency"
        receivable_amount:
          description: The net amount and currency that the merchant receives for this
            transaction in the receivable currency.
          $ref: "#/components/schemas/currency"
          readOnly: true
        exchange_rate:
          type: string
          description: The exchange rate applied for this transaction. Returned when there
            is a currency conversion from the transaction currency to the
            receivable currency.
          readOnly: true
        note_to_payer:
          type: string
          description: A free-form field that clients can use to send a note to the payer.
          maxLength: 255
        create_time:
          type: string
          format: date-time
          description: The date and time of the capture, in [Internet date and time
            format](https://tools.ietf.org/html/rfc3339#section-5.6).
          readOnly: true
        update_time:
          type: string
          format: date-time
          description: The date and time when the resource was last updated, in [Internet
            date and time
            format](https://tools.ietf.org/html/rfc3339#section-5.6).
          readOnly: true
        links:
          type: array
          description: An array of request-related [HATEOAS
            links](/docs/api/reference/api-responses/#hateoas-links).
          readOnly: true
          items:
            $ref: "#/components/schemas/link_description"
    refund:
      type: object
      title: Refund
      description: The refund details.
      properties:
        id:
          type: string
          readOnly: true
          description: The ID of the refund transaction. Maximum length is 17 characters.
        amount:
          $ref: "#/components/schemas/amount"
          description: The refund amount. Includes both the amount refunded to the payer
            and amount of the fee refunded to the payee.
        state:
          type: string
          description: The state of the refund.
          readOnly: true
          enum:
            - pending
            - completed
            - cancelled
            - failed
        reason:
          type: string
          description: The reason that the transaction is being refunded.
        invoice_number:
          type: string
          description: The invoice or tracking ID number.
          maxLength: 127
        sale_id:
          type: string
          readOnly: true
          description: The ID of the sale transaction being refunded.
        capture_id:
          type: string
          readOnly: true
          description: The ID of the sale transaction being refunded.
        parent_payment:
          type: string
          readOnly: true
          description: The ID of the payment on which this transaction is based.
        description:
          type: string
          description: The refund description. Value must be single-byte alphanumeric
            characters.
        create_time:
          type: string
          format: date-time
          description: The date and time when the refund was created, in [Internet date
            and time format](https://tools.ietf.org/html/rfc3339#section-5.6).
          readOnly: true
        update_time:
          type: string
          format: date-time
          description: The date and time when the resource was last updated, in [Internet
            date and time
            format](https://tools.ietf.org/html/rfc3339#section-5.6).
          readOnly: true
        links:
          type: array
          description: An array of request-related [HATEOAS
            links](/docs/api/reference/api-responses/#hateoas-links).
          readOnly: true
          items:
            $ref: "#/components/schemas/link_description"
    related_resources:
      type: object
      title: Related Resources
      description: The payment-related financial transactions, which include sales,
        authorizations, captures, and refunds. To show resource details, use the
        resource ID. For example, to [show details for a related
        authorization](/docs/api/payments/v1/#authorization_get), use the ID
        returned in the `authorization` object. You can also use the [HATEOAS
        links](/docs/api/hateoas-links/) for a resource to complete operations
        for that resource. For example, a `sale` object provides a `refund` link
        that enables you to refund the sale.
      properties:
        sale:
          $ref: "#/components/schemas/sale"
        authorization:
          $ref: "#/components/schemas/authorization"
        order:
          $ref: "#/components/schemas/order"
        capture:
          $ref: "#/components/schemas/capture"
        refund:
          $ref: "#/components/schemas/refund"
    transaction:
      type: object
      title: Transaction
      description: An array of payment-related transactions. A transaction defines
        what the payment is for and who fulfills the payment.
      properties:
        amount:
          $ref: "#/components/schemas/amount"
          description: The amount to collect.
        payee:
          $ref: "#/components/schemas/payee"
        description:
          type: string
          description: The purchase description.
          maxLength: 127
        note_to_payee:
          type: string
          description: The note to the recipient of the funds in this transaction.
          maxLength: 255
        custom:
          type: string
          description: The free-form field for the client's use.
          maxLength: 127
        invoice_number:
          type: string
          description: The invoice number to track this payment.
          maxLength: 127
        soft_descriptor:
          type: string
          description: The soft descriptor to use to charge this funding source. If
            greater than the maximum allowed length, the API truncates the
            string.
          maxLength: 22
        payment_options:
          type: object
          title: Payment Options
          description: The payment options for this transaction.
          properties:
            allowed_payment_method:
              type: string
              description: The payment method for this transaction. This field does not apply
                to the credit card payment method.
              default: UNRESTRICTED
              enum:
                - UNRESTRICTED
                - INSTANT_FUNDING_SOURCE
                - IMMEDIATE_PAY
        item_list:
          type: object
          title: Item List
          description: An array of items that are being purchased.
          properties:
            items:
              type: array
              description: An array of items that are being purchased.
              items:
                $ref: "#/components/schemas/item"
            shipping_address:
              $ref: "#/components/schemas/shipping_address"
            shipping_method:
              type: string
              description: The shipping method used for this payment, such as USPS Parcel.
            shipping_phone_number:
              type: string
              description: The shipping phone number, in its canonical international format as
                defined by the [E.164](https://en.wikipedia.org/wiki/E.164)
                numbering plan. Enables merchants to share payer’s contact
                number with PayPal for the current payment. The final contact
                number for the payer who is associated with the transaction
                might be the same as or different from the
                `shipping_phone_number` based on the payer’s action on PayPal.
        notify_url:
          type: string
          format: uri
          description: The URL to send payment notifications.
          maxLength: 2048
        related_resources:
          type: array
          description: An array of payment-related transactions. A transaction defines
            what the payment is for and who fulfills the payment.
          readOnly: true
          items:
            $ref: "#/components/schemas/related_resources"
    payment:
      type: object
      title: Payment
      description: The payment details.
      properties:
        id:
          type: string
          description: The ID of the payment.
          readOnly: true
        intent:
          type: string
          description: The payment intent. Value is:<ul><li><code>sale</code>. Makes an
            immediate payment.</li><li><code>authorize</code>. [Authorizes a
            payment for capture
            later](/docs/integration/direct/payments/authorize-and-capture-payments/).</li><li><code>order</code>.
            [Creates an
            order](/docs/integration/direct/payments/orders/).</li></ul>
          enum:
            - sale
            - authorize
            - order
        payer:
          description: The source of the funds for this payment. Payment method is PayPal
            Wallet payment or bank direct debit.
          $ref: "#/components/schemas/payer"
        application_context:
          description: Use the application context resource to customize payment flow
            experience for your buyers.
          $ref: "#/components/schemas/application_context"
        transactions:
          type: array
          description: An array of payment-related transactions. A transaction defines
            what the payment is for and who fulfills the payment. For update and
            execute payment calls, the **`transactions`** object accepts the
            **`amount`** object only.
          items:
            $ref: "#/components/schemas/transaction"
        state:
          type: string
          description: The state of the payment, authorization, or order transaction.
            Value is:<ul><li><code>created</code>. The transaction was
            successfully created.</li><li><code>approved</code>. The customer
            approved the transaction. The state changes from
            <code>created</code> to <code>approved</code> on generation of the
            <code>sale_id</code> for sale transactions,
            <code>authorization_id</code> for authorization transactions, or
            <code>order_id</code> for order
            transactions.</li><li><code>failed</code>. The transaction request
            failed.</li></ul>
          enum:
            - created
            - approved
            - failed
            - partially_completed
            - in_progress
          readOnly: true
        experience_profile_id:
          type: string
          description: Deprecated. The PayPal-generated ID for the merchant's payment
            experience profile. For information, see [create web experience
            profile](/docs/api/payment-experience/v1/#web-profiles_create). Use
            application_context instead.
        note_to_payer:
          type: string
          description: A free-form field that clients can use to send a note to the payer.
          maxLength: 165
        redirect_urls:
          type: object
          description: A set of redirect URLs that you provide for PayPal-based payments.
          title: Redirect URLs
          additionalProperties: false
          properties:
            return_url:
              type: string
              format: uri
              description: The URL where the payer is redirected after he or she approves the
                payment. **Required for PayPal account payments**.
            cancel_url:
              type: string
              format: uri
              description: The URL where the payer is redirected after he or she cancels the
                payment. **Required for PayPal account payments**.
        failure_reason:
          type: string
          description: The reason code for a payment failure.
          enum:
            - UNABLE_TO_COMPLETE_TRANSACTION
            - INVALID_PAYMENT_METHOD
            - PAYER_CANNOT_PAY
            - CANNOT_PAY_THIS_PAYEE
            - REDIRECT_REQUIRED
            - PAYEE_FILTER_RESTRICTIONS
          readOnly: true
        create_time:
          type: string
          format: date-time
          description: The date and time when the payment was created, in [Internet date
            and time format](https://tools.ietf.org/html/rfc3339#section-5.6).
          readOnly: true
        update_time:
          type: string
          format: date-time
          description: The date and time when the payment was updated, in [Internet date
            and time format](https://tools.ietf.org/html/rfc3339#section-5.6).
          readOnly: true
        links:
          type: array
          description: An array of request-related [HATEOAS
            links](/docs/api/reference/api-responses/#hateoas-links).
          readOnly: true
          items:
            $ref: "#/components/schemas/link_description"
      required:
        - intent
        - payer
    payment_history:
      type: object
      title: "Payment History "
      description: An array of merchant payments that are complete. Payments that you
        just created with the [create
        payment](/docs/api/payments/v1/#payment_create) call do not appear in
        the list.
      properties:
        payments:
          type: array
          description: An array of payments that are complete. Payments that you just
            created with the [create
            payment](/docs/api/payments/v1/#payment_create) call do not appear
            in the list.
          items:
            $ref: "#/components/schemas/payment"
        count:
          type: integer
          description: The number of items returned in each range of results. Note that
            the last results range might have fewer items than the requested
            number of items.
          maximum: 20
        next_id:
          type: string
          description: The ID of the element to use to get the next range of results.
          readOnly: true
    patch:
      type: object
      title: Patch
      description: The JSON patch object to apply partial updates to resources.
      properties:
        op:
          type: string
          description: The operation.
          enum:
            - add
            - remove
            - replace
            - move
            - copy
            - test
        path:
          type: string
          description: The <a href="https://tools.ietf.org/html/rfc6901">JSON Pointer</a>
            to the target document location at which to complete the operation.
        value:
          title: Patch Value
          description: The value to apply. The <code>remove</code> operation does not
            require a value.
        from:
          type: string
          description: The <a href="https://tools.ietf.org/html/rfc6901">JSON Pointer</a>
            to the target document location from which to move the value.
            Required for the <code>move</code> operation.
      required:
        - op
    patch_request:
      type: array
      title: Patch Request
      description: An array of JSON patch objects to apply partial updates to resources.
      items:
        $ref: "#/components/schemas/patch"
    cart_base:
      type: object
      title: Cart Base
      description: The cart.
      properties:
        reference_id:
          type: string
          description: The merchant-provided ID for the purchase unit.
          maxLength: 256
        amount:
          $ref: "#/components/schemas/amount"
          description: The amount to collect.
        payee:
          $ref: "#/components/schemas/payee"
        description:
          type: string
          description: The purchase description.
          maxLength: 127
        note_to_payee:
          type: string
          description: The note to the recipient of the funds in this transaction.
          maxLength: 255
        custom:
          type: string
          description: The free-form field for the client's use.
          maxLength: 127
        invoice_number:
          type: string
          description: The invoice number to track this payment.
          maxLength: 127
        soft_descriptor:
          type: string
          description: The payment descriptor on account transactions on the customer's
            credit card statement, that PayPal sends to processors. The maximum
            length of the soft descriptor information that you can pass in the
            API field is 22 characters, in the following format:<pre>22 -
            len(PAYPAL * (8)) - len(<var>Descriptor in Payment Receiving
            Preferences of Merchant account</var> + 1)</pre>The PAYPAL prefix
            uses 8 characters.<br/><br/>The soft descriptor supports the
            following ASCII characters:<ul><li>Alphanumeric
            characters</li><li>Dashes</li><li>Asterisks</li><li>Periods
            (.)</li><li>Spaces</li></ul>For Wallet payments marketplace
            integrations:<ul><li>The merchant descriptor in the Payment
            Receiving Preferences must be the marketplace name.</li><li>You
            can't use the remaining space to show the customer service
            number.</li><li>The remaining spaces can be a combination of seller
            name and country.</li></ul><br/>For unbranded payments (Direct Card)
            marketplace integrations, use a combination of the seller name and
            phone number.
          maxLength: 22
        payment_options:
          type: object
          title: Payment Options
          description: The payment options for this transaction.
          properties:
            allowed_payment_method:
              type: string
              description: The payment method for this transaction. This field does not apply
                to the credit card payment method.
              default: UNRESTRICTED
              enum:
                - UNRESTRICTED
                - INSTANT_FUNDING_SOURCE
                - IMMEDIATE_PAY
        item_list:
          type: object
          title: Item List
          description: An array of items that are being purchased.
          properties:
            items:
              type: array
              description: An array of items that are being purchased.
              items:
                $ref: "#/components/schemas/item"
            shipping_address:
              $ref: "#/components/schemas/shipping_address"
            shipping_phone_number:
              type: string
              description: The shipping phone number, in its canonical international format as
                defined by the [E.164](https://en.wikipedia.org/wiki/E.164)
                numbering plan. Enables merchants to share payer’s contact
                number with PayPal for the current payment. The final contact
                number for the payer who is associated with the transaction
                might be the same as or different from the
                `shipping_phone_number` based on the payer’s action on PayPal.
              minLength: 1
              maxLength: 50
        notify_url:
          type: string
          format: uri
          description: The send payment notifications URL.
          maxLength: 2048
        order_url:
          type: string
          format: uri
          description: The payment-related URL on the merchant site.
          maxLength: 2048
      required:
        - amount
    payment_execution:
      type: object
      title: Payment Execution
      description: Executes a PayPal account-based payment with the `payer_id`
        obtained from the web approval URL.
      properties:
        payer_id:
          type: string
          description: The ID of the payer that PayPal passes in the `return_url`.
        transactions:
          type: array
          description: An array of transaction details. Includes the amount and item
            details. For update and execute payment calls, the `transactions`
            object accepts only the `amount` object.
          items:
            $ref: "#/components/schemas/cart_base"
    refund_request:
      type: object
      title: Refund Request
      description: The refund request.
      properties:
        amount:
          description: The refund amount. Includes both the amount to refund to the payer
            and the fee amount to refund to the payee.
          $ref: "#/components/schemas/amount"
        description:
          type: string
          description: The refund description. Value is a string of single-byte
            alphanumeric characters.
          maxLength: 255
        reason:
          type: string
          description: The refund reason description.
          maxLength: 30
        invoice_number:
          type: string
          description: The invoice number that tracks this payment. Value is a string of
            single-byte alphanumeric characters.
          maxLength: 127
    refund-2:
      type: object
      title: Refund
      description: The refund transaction details.
      properties:
        id:
          type: string
          readOnly: true
          description: The ID of the refund transaction.
          maxLength: 17
        amount:
          description: The refund amount. Includes both the amount refunded to the payer
            and the fee refunded to the payee.
          $ref: "#/components/schemas/amount"
        state:
          type: string
          enum:
            - pending
            - completed
            - cancelled
            - failed
          description: The state of the refund.
          readOnly: true
        reason:
          type: string
          description: The reason that the transaction is being refunded.
        invoice_number:
          type: string
          description: Your own invoice or tracking ID number. Value is a string of
            single-byte alphanumeric characters.
          maxLength: 127
        sale_id:
          type: string
          readOnly: true
          description: The ID of the sale transaction being refunded.
        capture_id:
          type: string
          readOnly: true
          description: The ID of the sale transaction being refunded.
        parent_payment:
          type: string
          readOnly: true
          description: The ID of the payment on which this transaction is based.
        description:
          type: string
          description: The refund description.
        create_time:
          type: string
          format: date-time
          description: The date and time when the refund was created, in [Internet date
            and time format](https://tools.ietf.org/html/rfc3339#section-5.6).
          readOnly: true
        update_time:
          type: string
          format: date-time
          description: The date and time when the resource was last updated, in [Internet
            date and time
            format](https://tools.ietf.org/html/rfc3339#section-5.6).
          readOnly: true
        links:
          type: array
          description: An array of request-related [HATEOAS
            links](/docs/api/reference/api-responses/#hateoas-links).
          readOnly: true
          items:
            $ref: "#/components/schemas/link_description"
    detailed_refund:
      type: object
      title: Detailed Refund
      description: The refund transaction details.
      allOf:
        - $ref: "#/components/schemas/refund-2"
        - properties:
            custom:
              type: string
              description: The note to the payer in this transaction.
              maxLength: 127
            invoice_number:
              type: string
              description: The invoice number to track this payment.
              maxLength: 127
            refund_from_transaction_fee:
              description: The currency and amount of the transaction fee that is refunded to
                original the recipient of payment.
              $ref: "#/components/schemas/currency"
            refund_from_received_amount:
              description: The currency and amount of the refund that is subtracted from the
                original payment recipient's PayPal balance.
              $ref: "#/components/schemas/currency"
            total_refunded_amount:
              description: The currency and amount of the total refund from the original
                purchase. For example, if a payer makes $100 purchase and the
                payer was refunded $20 a week ago and $30 in this transaction,
                the gross refund amount is $30 for this transaction and the
                total refunded amount is $50.
              $ref: "#/components/schemas/currency"
  parameters:
    paypal_partner_attribution_id:
      name: PayPal-Partner-Attribution-Id
      in: header
      required: false
      schema:
        type: string
        maxLength: 32
    count:
      name: count
      in: query
      description: The number of items to list in the response.
      required: false
      schema:
        type: integer
        maximum: 20
        default: 10
    start_id:
      name: start_id
      in: query
      description: The ID of the starting resource in the response. When results are
        paged, you can use the `next_id` value as the `start_id` to continue
        with the next set of results.
      required: false
      schema:
        type: string
    start_index:
      name: start_index
      in: query
      description: The start index of the payments to list. Typically, you use the
        `start_index` to jump to a specific position in the resource history
        based on its cart. For example, to start at the second item in a list of
        results, specify `?start_index=2`.
      required: false
      schema:
        type: integer
    start_time:
      name: start_time
      in: query
      description: The start date and time for the range to show in the response, in
        [Internet date and time
        format](https://tools.ietf.org/html/rfc3339#section-5.6). For example,
        `start_time=2016-03-06T11:00:00Z`.
      required: false
      schema:
        type: string
    end_time:
      name: end_time
      in: query
      description: The end date and time for the range to show in the response, in
        [Internet date and time
        format](https://tools.ietf.org/html/rfc3339#section-5.6). For example,
        `end_time=2016-03-06T11:00:00Z`.
      required: false
      schema:
        type: string
    payee_id:
      name: payee_id
      in: query
      description: Filters the payments in the response by a PayPal-assigned merchant
        ID that identifies the payee.
      required: false
      schema:
        type: string
    sort_by:
      name: sort_by
      in: query
      description: Sorts the payments in the response by a create time.
      required: false
      schema:
        type: string
        enum:
          - create_time
    sort_order:
      name: sort_order
      in: query
      description: Sorts the payments in the response in descending order.
      required: false
      schema:
        type: string
        enum:
          - desc
    payment_id:
      name: payment_id
      in: path
      description: The ID of the payment to execute.
      required: true
      schema:
        type: string
    paypal_request_id:
      name: PayPal-Request-Id
      description: The server stores keys for 30 days.
      in: header
      required: false
      schema:
        type: string
        maxLength: 78
    sale_id:
      name: sale_id
      in: path
      description: The ID of the sale transaction to refund.
      required: true
      schema:
        type: string
    authorization_id:
      name: authorization_id
      in: path
      description: The ID of the authorization to re-authorize.
      required: true
      schema:
        type: string
    order_id:
      name: order_id
      in: path
      description: The ID of the order to authorize.
      required: true
      schema:
        type: string
    capture_id:
      name: capture_id
      in: path
      description: The ID of the captured payment to refund.
      required: true
      schema:
        type: string
    refund_id:
      name: refund_id
      in: path
      description: The ID of the refund for which to show details.
      required: true
      schema:
        type: string
x-hidden: true
x-errors:
  - name: AGREEMENT_ALREADY_CANCELLED
    message: The requested agreement is already canceled.
    description: The agreement that was used to make the payment is already canceled.
  - name: AMOUNT_MISMATCH
    message: The totals of the cart item amounts do not match sale amounts.
    description: The amount total does not match the item amount totals.
  - name: AUTH_SETTLE_NOT_ALLOWED
    message: Authorization and Capture feature is not enabled for the merchant.
    description: Make sure that the recipient of the funds is a verified business account.
  - name: AUTHORIZATION_ALREADY_COMPLETED
    message: Capture refused - this authorization has already been completed.
    description: The capture on the authorization failed because it was already
      completed by one or more previous captures on this authorization.
  - name: AUTHORIZATION_AMOUNT_LIMIT_EXCEEDED
    message: Authorization amount exceeds allowed order limit.
    description: The authorization amount exceeds the allowed order limit.
  - name: AUTHORIZATION_CANNOT_BE_VOIDED
    message: Authorization is in [x] state and hence cannot be voided.
    description: You cannot void this authorization because it is in a state, such
      as `captured` or `expired`, that cannot be voided.
  - name: AUTHORIZATION_EXPIRED
    message: Authorization has expired.
    description: The authorization related to this request has expired. You must
      reauthorize the transaction.
  - name: AUTHORIZATION_ID_DOES_NOT_EXIST
    message: The requested authorization ID does not exist.
    description: The authorization ID in the request does not exist in the PayPal system.
  - name: AUTHORIZATION_VOIDED
    message: Authorization has been voided.
    description: This authorization was already voided. You can [show authorization
      details](/docs/api/payments/v1/#authorization_get) for a voided
      authorization.
  - name: BA_TOKEN_CREATION_FAILED
    message: Billing agreement token creation failed.
    description: The billing agreement token creation failed.
  - name: BANK_ACCOUNT_VALIDATION_FAILED
    message: Bank account validation failed.
    description: The validation of the bank account failed.
  - name: BILLING_AGREEMENT_CREATION_FAILED
    message: Billing agreement creation failed.
    description: The billing agreement creation failed.
  - name: BUYER_NOT_SET
    message: Buyer is not yet set for this purchase.
    description: The customer cannot make this purchase.
  - name: CANNOT_PAY_SELF
    message: Payer cannot pay him- or herself.
    description: The customer cannot pay him- or herself.
  - name: PLATFORM_FEE_PAYEE_CANNOT_BE_SAME_AS_PAYER
    message: The payer cannot pay themselves. The recipient account of the platform
      fees must be different from the payer account.
    description: The customer cannot pay platform fee for themselves.
  - name: CANNOT_REAUTH_CHILD_AUTHORIZATION
    message: Can only reauthorize the original authorization, not a reauthorization.
    description: Reauthorization only works on an original authorization ID.
  - name: CANNOT_REAUTH_INSIDE_HONOR_PERIOD
    message: Reauthorization is not allowed within the honor period.
    description: You can only reauthorize a payment after the three-day honor period
      concludes.
  - name: CAPTURE_AMOUNT_LIMIT_EXCEEDED
    message: Capture amount specified exceeded allowable limit.
    description: You can only capture up to the original authorization amount.
  - name: CARD_TOKEN_PAYER_MISMATCH
    message: "`payer_id` does not match ID for this token."
    description: The `payer_id` must match the one that was provided when the credit
      card was stored in the vault.
  - name: COMPLIANCE_VIOLATION
    message: Transaction is declined due to compliance violation.
    description: The transaction is declined due to a compliance violation.
  - name: CREDIT_CARD_CVV_CHECK_FAILED
    message: The credit card CVV check failed.
    description: The CVV provided for the credit card was not valid. Resend the
      payment with a valid CVV for the credit card.
  - name: CREDIT_CARD_REFUSED
    message: Credit card was refused.
    description: The credit card used for the payment was refused. Resend the
      request with another credit card.
  - name: CREDIT_PAYMENT_NOT_ALLOWED
    message: Buyer cannot use credit to complete the payment.
    description: You cannot use credit to complete this payment. Ask the customer to
      retry the transaction with alternate funding instrument.
  - name: CURRENCY_MISMATCH
    message: Currency provided in the request must match the currency of the parent
      order or authorization.
    description: The currency that was used to capture an authorization must match
      the original currency of the authorization.
  - name: CURRENCY_NOT_ALLOWED
    message: Currency is not supported.
    description: The currency is not currently supported.
  - name: DOMESTIC_TRANSACTION_REQUIRED
    message: This transaction requires the payee and payer to be resident in the
      same country, a domestic transaction is required to create this payment.
    description: The payer and payee do not reside in the same country.
  - name: DUPLICATE_REQUEST_ID
    message: The value of PayPal-Request-Id header has already been used.
    description: Resend the request with a unique `PayPal-Request-Id` header value.
  - name: DUPLICATE_TRANSACTION
    message: Duplicate invoice Id detected.
    description: Resend the request with a unique `invoice_number` value.
  - name: ERROR_AUTH
    message: Unauthorized payment.
    description: You do not have the proper permissions to complete this request.
  - name: EXPIRED_CREDIT_CARD_TOKEN
    message: Credit card token is expired.
    description: Use the Vault API to store the credit card again.
  - name: FEATURE_UNSUPPORTED_FOR_PAYEE
    message: This feature is unsupported.
    description: This feature is not supported for the payee.
  - name: FULL_REFUND_NOT_ALLOWED_AFTER_PARTIAL_REFUND
    message: Full refund refused - partial refund has already been done on this payment.
    description: You cannot refund the full payment amount after you have partially
      refunded a payment.
  - name: IMMEDIATE_PAY_NOT_SUPPORTED
    message: Immediate pay is not supported for the specified payment intent.
    description: For this payment intent, immediate payment is not supported.
  - name: INSTRUMENT_DECLINED
    message: The instrument presented was either declined by the processor or bank,
      or it can't be used for this payment.
    description: If the customer's funding source has insufficient funds, restart
      the payment and prompt the customer to choose another payment method that
      is available on your site.
  - name: INSUFFICIENT_FUNDS
    message: Buyer cannot pay - insufficient funds.
    description: The customer must add a valid funding instrument, such as a credit
      card or bank account, to their PayPal account.
  - name: INTERNAL_SERVICE_ERROR
    message: An internal service error has occurred.
    description: Resend the request at another time. If this error persists, contact
      [PayPal Merchant Technical Support](https://www.paypal-support.com).
  - name: INVALID_ACCOUNT_NUMBER
    message: Account number does not exist.
    description: Provide a valid account number and resend the request.
  - name: INVALID_CITY_STATE_ZIP
    message: The combination of city, state, and zip in the address is invalid.
    description: The address contains an invalid combination of a city, state, and zip code.
  - name: INVALID_EXPERIENCE_PROFILE_ID
    message: The requested experience profile ID was not found.
    description: To get the profile ID for a merchant, [list web experience
      profiles](/docs/api/payment-experience/v1/#web-profiles_get-list).
  - name: INVALID_FACILITATOR_CONFIGURATION
    message: This transaction cannot be processed due to an invalid facilitator
      configuration.
    description: To process this transaction type, you must have the right account
      configuration.
  - name: INVALID_PAYER_ID
    message: Payer ID is invalid.
    description: The specified `payer_id` is not valid. Resend the request with a
      valid `payer_id`.
  - name: INVALID_RESOURCE_ID
    message: The requested resource ID was not found.
    description: Provide a valid resource ID and resend the request.
  - name: MALFORMED_REQUEST
    message: JSON request is malformed.
    description: Review the JSON request.
  - name: MAX_NUMBER_OF_PAYMENT_ATTEMPTS_EXCEEDED
    message: You have exceeded the maximum number of payment attempts.
    description: The maximum number of payment attempts was reached.
  - name: MAXIMUM_ALLOWED_AUTHORIZATION_REACHED_FOR_ORDER
    message: You have reached the configured maximum number of authorizations
      allowed for an order.
    description: You cannot create any more authorizations for this order.
  - name: MERCHANT_NOT_ENABLED_FOR_CHANNEL_INITIATED_BILLING
    message: Merchant is not enabled for channel-initiated billing.
    description: The merchant cannot use channel-initiated billing.
  - name: MERCHANT_NOT_ENABLED_FOR_REFERENCE_TRANSACTION
    message: Merchant is not enabled for reference transaction.
    description: The merchant cannot make reference transactions.
  - name: NEED_CREDIT_CARD
    message: Need credit card to complete the payment.
    description: To complete this payment, a credit card is required.
  - name: NEED_CREDIT_CARD_OR_BANK_ACCOUNT
    message: Need bank or credit card to complete the payment.
    description: To complete this payment, a bank card or credit card is required.
  - name: NOT_IMPLEMENTED
    message: Not implemented.
    description: This API capability is not implemented.
  - name: ORDER_ALREADY_COMPLETED
    message: Order has already been voided, expired, or completed.
    description: This order was already voided, completed, or expired.
  - name: ORDER_CANNOT_BE_VOIDED
    message: You can only void orders that are either in the `PENDING` or
      `AUTHORIZED` state, or those in the `CAPTURED` state that are not fully
      captured.
    description: Due to the state of the order, you cannot void it.
  - name: ORDER_IS_EXPIRED
    message: Order has expired.
    description: The order has expired.
  - name: ORDER_VOIDED
    message: Order has been voided.
    description: The order was already voided. For more information, you can [show
      order details](/docs/api/payments/v1/#orders_get).
  - name: PAYEE_ACCOUNT_INVALID
    message: Payee account is invalid.
    description: The payee account is not valid.
  - name: PAYEE_ACCOUNT_LOCKED_OR_CLOSED
    message: Payee account is locked or closed.
    description: The recipient account is locked or closed and cannot receive payments.
  - name: PAYEE_ACCOUNT_NO_CONFIRMED_EMAIL
    message: Refused - payee account does not have a confirmed email.
    description: For this transaction to proceed, the payment recipient must have a
      confirmed email.
  - name: PAYEE_ACCOUNT_RESTRICTED
    message: Refused - payee account is restricted.
    description: The account receiving this payment is restricted and cannot receive
      payments at this time.
  - name: PAYEE_BLOCKED_TRANSACTION
    message: The Fraud settings for this seller are such that this payment cannot be
      executed.
    description: The fraud filter configuration for the seller blocks this payment.
  - name: PAYEE_COUNTRY_NOT_ENABLED
    message: Payee country is not enabled for this feature.
    description: The payee country is not enabled for billing product.
  - name: PAYER_ACCOUNT_LOCKED_OR_CLOSED
    message: The payer account cannot be used for this transaction.
    description: The payer account is locked or closed.
  - name: PAYER_ACCOUNT_RESTRICTED
    message: The payer account is restricted.
    description: The payer account cannot be used for this transaction.
  - name: PAYER_ACTION_REQUIRED
    message: Transaction cannot complete successfully, instruct the buyer to return
      to PP.
    description: The customer must return to PayPal to before the transaction can complete.
  - name: PAYER_CANNOT_PAY
    message: Payer cannot pay for this transaction.
    description: Payer cannot pay for this transaction. Please contact the payer to
      find other ways to pay for this transaction.
  - name: PAYER_COUNTRY_NOT_ENABLED
    message: Payer country is not enabled for this feature.
    description: The payer country is not enabled for billing product.
  - name: PAYER_EMPTY_BILLING_ADDRESS
    message: Billing address is empty.
    description: The billing address is required for credit card transactions
      without a PayPal account.
  - name: PAYER_ID_MISSING_FOR_CARD_TOKEN
    message: "`payer_id` is required for payments made with this token."
    description: A `payer_id` is required when one was used to store the credit card
      in the vault.
  - name: PAYMENT_ALREADY_DONE
    message: Payment has been done already for this cart.
    description: You have completed the payment for this request already. Look up
      the transaction to get the details.
  - name: PAYMENT_APPROVAL_EXPIRED
    message: Payment approval has expired.
    description: Inform customers that the transaction has expired and that they
      must restart the transaction. Offer customers a link to restart the
      payment flow from payment creation and redirect the customer to PayPal.
  - name: PAYMENT_CANNOT_BE_INITIATED
    message: Payment cannot be processed.
    description: PayPal cannot start processing the payment due to an issue with the
      specified information.
  - name: PAYMENT_DENIED
    message: PayPal has declined to process this transaction.
    description: PayPal declined the payment due to one or more customer issues.
  - name: PAYMENT_EXPIRED
    message: The payment is expired.
    description: The payment expired because too much time has passed between
      payment creation or approval and execution of that payment. Restart the
      payment request starting from payment creation.
  - name: PAYMENT_METHOD_UNUSABLE
    message: Payer cannot pay with this payment method.
    description: The specified payment method is not usable. For example, PayPal
      business rules do not allow the payment method or the payment method
      information was incorrect in the request.
  - name: PAYMENT_NOT_APPROVED_FOR_EXECUTION
    message: Payer has not approved payment.
    description: The customer must approve all payments that use the PayPal payment method.
  - name: PAYMENT_REQUEST_ID_INVALID
    message: PayPal request ID is invalid. Please try a different one.
    description: Try a different PayPal request ID.
  - name: PAYMENT_STATE_INVALID
    message: This request is invalid due to the current state of the payment.
    description: The payment state does not allow this kind of request.
  - name: PERMISSION_DENIED
    message: No permission for the requested operation.
    description: You do not have the proper permissions to complete this request.
  - name: PHONE_NUMBER_REQUIRED
    message: This transaction requires the payer to provide a valid phone number.
    description: The customer must provide a phone number to PayPal to proceed with
      the payment.
  - name: REAUTH_NOT_SUPPORTED_FOR_ORDER
    message: Re-authorization is not allowed for this type of authorization.
    description: You cannot re-authorize an order.
  - name: REDIRECT_PAYER_FOR_ALTERNATE_FUNDING
    message: Transaction failed. Redirect the payer to select another funding source.
    description: The transaction failed so try another funding instrument.
  - name: REFUND_EXCEEDED_TRANSACTION_AMOUNT
    message: Refund refused - the requested refund amount would exceed the amount of
      transaction being refunded.
    description: The requested refund must be less than or equal to the original
      transaction amount. To see the original transaction amount, [show the
      refund details](/docs/api/payments/v1/#refund_get).
  - name: REFUND_FAILED_INSUFFICIENT_FUNDS
    message: Refund failed due to insufficient funds in your PayPal account.
    description: You do not have sufficient funds in your PayPal account to process
      this refund.
  - name: REFUND_TIME_LIMIT_EXCEEDED
    message: This transaction is too old to refund.
    description: For information about refund time limits, see [PayPal Customer
      Support](https://www.paypal.com/us/selfhelp/home). After the time limit
      expires, you must send a payment instead of issuing a refund.
  - name: REQUESTED_OPERATION_REFUSED_DUE_TO_SELLER_OPT_OUT
    message: You cannot perform this operation as payee has opted out on PayPal.com.
    description: The third-party-initiated operations are blocked because the payee
      has opted out on paypal.com.
  - name: REQUIRED_SCOPE_MISSING
    message: Access token does not have required scope.
    description: You must get user consent with the correct scope for this type of request.
  - name: SENDING_LIMIT_EXCEEDED
    message: The transaction exceeds the buyer's sending limit.
    description: The customer cannot make any more transactions.
  - name: SHIPPING_ADDRESS_INVALID
    message: Provided shipping address is invalid.
    description: The specified shipping address is not valid.
  - name: TOO_MANY_REAUTHORIZATIONS
    message: Maximum number of reauthorizations for this authorization has been reached.
    description: You can only reauthorize a payment once.
  - name: TOO_MANY_SETTLEMENTS
    message: Maximum number of allowable settlements has been reached. No more
      settlement for the authorization.
    description: The maximum number of settlements was reached.
  - name: TRANSACTION_ALREADY_REFUNDED
    message: Refund transaction refused - this transaction has already been refunded.
    description: You can only refund a transaction up to the original amount. While
      you can do multiple partial refunds up to the original amount, you can
      only do a full refund once.
  - name: TRANSACTION_LIMIT_EXCEEDED
    message: Total payment amount exceeded transaction limit.
    description: The transaction limit was exceeded. For information about the
      PayPal transaction limits, see [PayPal Customer
      Support](https://www.paypal.com/us/selfhelp/home).
  - name: TRANSACTION_RECEIVING_LIMIT_EXCEEDED
    message: The transaction exceeds the receiver’s receiving limit.
    description: The amount exceeds the maximum amount for a single transaction.
  - name: TRANSACTION_REFUSED
    message: This request was refused.
    description: The possible reasons for this failure are:<ul><li>The partial
      refund amount must be less than or equal to the original transaction
      amount.</li><li>The partial refund amount must be less than or equal to
      the remaining amount.</li><li>The partial refund amount is not
      valid.</li><li>The partial refund must be the same currency as the
      original transaction.</li><li>Because a complaint case exists on this
      transaction, only a refund of the full or full remaining amount of the
      transaction can be messaged.</li><li>You are over the time limit to
      complete a refund on this transaction.</li><li>Cannot do a full refund
      after a partial refund.</li><li>Transaction was fully
      refunded.</li><li>You cannot refund this type of transaction.</li><li>You
      cannot do a partial refund on this transaction.</li><li>The merchant
      account has limitations or restrictions.</li><li>Refunds are not supported
      for the payer's selected payment method. Contact the payer directly to
      arrange a refund via alternative means.</li><li>The time limit set by the
      payer's selected payment method to refund this transaction has expired.
      Contact the payer directly to arrange a refund via alternative
      means.</li><li>We're unable to process refunds for the payer's selected
      payment method. Contact the payer directly to arrange a refund via
      alternative means.</li><li>Please find alternate means to refund the
      payment to the buyer.</li><li>Please check the amount and the currency of
      the transaction and try again. Alternately, please find alternate means to
      refund the payment to the buyer.</li><li>Please find alternate means to
      refund the payment to the buyer as this type of transaction cannot be
      refunded.</li><li>Please find alternate means to refund the payment to the
      buyer or try again after some time.</li><li>The card account is closed or
      never existed. Please find alternate means to refund the payment to the
      buyer.</li><li>The transaction cannot be refunded. Please find alternate
      means to refund the payment to the buyer.</li><li>The transaction was
      refused because of suspected fraud. Please find alternate means to refund
      the payment to the buyer or try again after some time.</li><li>The
      transaction cannot be refunded due to regulatory restrictions that are
      permanent or temporary. Please find alternate means to refund the payment
      to the buyer or try again after some time.</li></ul>
  - name: TRANSACTION_REFUSED_BY_PAYPAL_RISK
    message: PayPal risk refused this transaction.
    description: PayPal risk assessment refused this transaction.
  - name: TRANSACTION_REFUSED_PAYEE_PREFERENCE
    message: Merchant profile preference is set to automatically deny certain
      transactions.
    description: The merchant account preferences are set to deny this kind of transaction.
  - name: UNAUTHORIZED_PAYMENT
    message: Unauthorized payment.
    description: This payment was not authorized.
  - name: UNSUPPORTED_PAYEE_COUNTRY
    message: Payee country is not supported for this transaction.
    description: The merchant does not accept payments from this country.
  - name: UNSUPPORTED_PAYEE_CURRENCY
    message: The currency is not accepted by payee.
    description: The merchant does not accept payments in this currency.
  - name: VALIDATION_ERROR
    message: Invalid request - see details.
    description: A validation error occurred with your request.
  - name: BILLING_AGREEMENT_ID_MISMATCH
    message: Billing Agreement ID must match the one that was provided during
      payment creation.
    description: Billing Agreement ID must match the one that was provided during
      payment creation.
  - name: INVALID_PICKUP_ADDRESS
    message: Invalid shipping address.
    description: "If the 'shipping_option.type' is set as 'PICKUP' then the
      'shipping_address.recipient_name' should start with 'S2S' meaning Ship To
      Store. Example: 'S2S My Store'."
  - name: INVALID_PAYPAL_PAYMENT_TOKEN
    message: Payment token is invalid. A payment token is typically valid for 3
      hours since the time it was issued. Please check the token and try again.
    description: Will be returned only for [Google Pay
      Integration](/docs/archive/checkout/how-to/googlepay-integration) for the
      [Create
      payment](https://developer.paypal.com/docs/api/payments/v1/#payment_create)
      call.
  - name: PREVIOUS_REQUEST_IN_PROGRESS
    message: A previous request on this resource is currently in progress. Please
      wait for some time and try again. It is best to space out the initial and
      the subsequent request(s) to avoid receiving this error.
    description: This scenario only occurs when making multiple API requests on the
      same resource within a very short duration. To resolve this, API callers
      need to make subsequent requests with a delay.
