Request to Pay via QR Code API

Streamline your digital payment experience to create, update, and manage payment requests and payment links, letting your customers pay instantly via shareable QR codes or payment URLs. You can easily track payment status, retrieve payment details, and handle bulk requests, all while integrating with your customers’ financial institutions for secure, real-time transactions.

OpenAPI Specification

jp-morgan-chase-request-to-pay-via-qr-code-api-openapi.yml Raw ↑
# Harvested verbatim from the J.P. Morgan Payments Developer Portal.
# method: searched
# source: https://developer.payments.jpmorgan.com/api/llm-content?path=en%2Fapi%2Ftreasury%2Freceivables%2Frequest-to-pay-api.md
# generated: '2026-07-28'
openapi: 3.0.0
info:
  title: Request to Pay via QR Code API
  version: 1.4.4
  description: 'Streamline your digital payment experience to create, update, and manage payment requests
    and payment links, letting your customers pay instantly via shareable QR codes or payment URLs. You
    can easily track payment status, retrieve payment details, and handle bulk requests, all while integrating
    with your customers’ financial institutions for secure, real-time transactions.

    '
  contact:
    name: JPMorgan Chase & Co. API Support
    email: imsd.security.operations@jpmorgan.com
    url: https://apistore.jpmchase.net/support/contact
  license:
    name: Contact JPMorgan Chase & Co. API Support for licensing terms.
    url: https://apistore.jpmchase.net/support/contact
servers:
- url: https://api.payments.jpmorgan.com/receivables/request-to-pay/v1
  description: PRODUCTION - MTLS
- url: https://api-cat.payments.jpmorgan.com/receivables/request-to-pay/v1
  description: CLIENT TESTING - MTLS
- url: https://api-mock.payments.jpmorgan.com/receivables/request-to-pay/v1
  description: MOCK
tags:
- name: Payment Link
  description: Manage Payment Links
- name: Payment Request
  description: Manage Payment Requests
- name: Payment Request - Bulk
  description: Manage Payment Requests in Bulk
paths:
  /payment-links:
    post:
      summary: Generate a Payment Link
      operationId: generatePaymentLink
      description: "**Generates a new Payment Link**\n\n|Market     |Description                     \
        \                                                   |\n|:--------------------------|:------------------------------------------------------------------|\n\
        |Brazil                     |Standard                                                        \
        \   |\n|Singapore                  |Does Not Apply                                           \
        \          |    \n"
      tags:
      - Payment Link
      requestBody:
        $ref: '#/components/requestBodies/PaymentLinkRequest'
      responses:
        '201':
          $ref: '#/components/responses/201-PaymentLinkCreated'
        '400':
          $ref: '#/components/responses/400-BadRequest'
        '401':
          $ref: '#/components/responses/401-Unauthorized'
        '403':
          $ref: '#/components/responses/403-Forbidden'
        '405':
          $ref: '#/components/responses/405-MethodNotAllowed'
        '429':
          $ref: '#/components/responses/429-TooManyRequests'
        '503':
          $ref: '#/components/responses/503-ServiceUnavailable'
    get:
      summary: Retrieve a List of Payment Links
      operationId: retrievePaymentLinks
      description: "**Retrieves a list of Payment Links**\n \n *Note*: \n   - Mandatory: Specify the date\
        \ range\n   - Maximum permissible date range: **one month**\n   - Maximum historical data access:\
        \ Up to **one year** from the current date\n\n|Market     |Description                       \
        \                                                 |\n|:--------------------------|:------------------------------------------------------------------|\n\
        |Brazil                     |Standard                                                        \
        \   |\n|Singapore                  |Does Not Apply                                           \
        \          |    \n"
      tags:
      - Payment Link
      parameters:
      - $ref: '#/components/parameters/FromDate'
      - $ref: '#/components/parameters/ToDate'
      - $ref: '#/components/parameters/ExpirationType'
      - $ref: '#/components/parameters/RequestMethodType'
      - $ref: '#/components/parameters/PaymentLinkStatus'
      - $ref: '#/components/parameters/PageSize'
      - $ref: '#/components/parameters/Cursor'
      responses:
        '200':
          $ref: '#/components/responses/200-PaymentLinksResponse'
        '400':
          $ref: '#/components/responses/400-BadRequest-GET-Collection'
        '401':
          $ref: '#/components/responses/401-Unauthorized'
        '403':
          $ref: '#/components/responses/403-Forbidden'
        '405':
          $ref: '#/components/responses/405-MethodNotAllowed'
        '429':
          $ref: '#/components/responses/429-TooManyRequests'
        '503':
          $ref: '#/components/responses/503-ServiceUnavailable'
  /payment-links/{id}:
    get:
      summary: Retrieve a Single Payment Link
      description: "**Retrieves the details of a single Payment Link using the Payment Link Id** \n  |Market\
        \     |Description                                                                        |\n\
        \  |:--------------------------|:------------------------------------------------------------------|\n\
        \  |Brazil                     |Standard                                                     \
        \      |\n  |Singapore                  |Does not Apply                                      \
        \               |\n"
      tags:
      - Payment Link
      operationId: retrievePaymentLink
      parameters:
      - $ref: '#/components/parameters/Id'
      responses:
        '200':
          $ref: '#/components/responses/200-PaymentLinkResponse'
        '400':
          $ref: '#/components/responses/400-BadRequest-GET-Entity'
        '401':
          $ref: '#/components/responses/401-Unauthorized'
        '403':
          $ref: '#/components/responses/403-Forbidden'
        '404':
          $ref: '#/components/responses/404-NotFound'
        '405':
          $ref: '#/components/responses/405-MethodNotAllowed'
        '429':
          $ref: '#/components/responses/429-TooManyRequests'
        '503':
          $ref: '#/components/responses/503-ServiceUnavailable'
  /payment-requests:
    post:
      summary: Create a Payment Request
      operationId: createPaymentRequest
      description: '**Creates a Payment Request based on the payments details provided:**

        - **Brazil** :  returns a Payment Link and an optional QR code for digital payment

        - **Singapore** : returns QR Code for digital payment

        - **Hong Kong** : returns QR Code for digital payment

        '
      tags:
      - Payment Request
      parameters:
      - $ref: '#/components/parameters/IdempotencyKey'
      requestBody:
        $ref: '#/components/requestBodies/PaymentRequest'
      responses:
        '201':
          $ref: '#/components/responses/201-PaymentRequestCreated'
        '400':
          $ref: '#/components/responses/400-BadRequest'
        '401':
          $ref: '#/components/responses/401-Unauthorized'
        '403':
          $ref: '#/components/responses/403-Forbidden'
        '429':
          $ref: '#/components/responses/429-TooManyRequests'
        '503':
          $ref: '#/components/responses/503-ServiceUnavailable'
      callbacks: {}
  /payment-requests/{id}:
    get:
      summary: Retrieve the Details of a Single Payment Request
      operationId: retrievePaymentRequest
      description: '**Retrieves a single Payment Request using the Payment Request Id**


        |Markets     |Description                                                                        |

        |:--------------------------|:------------------------------------------------------------------|

        |Brazil,<br>Singapore,<br>Hong&nbsp;Kong                     |Uses Payment Request Id ("id") for
        Static and Dynamic Requests            |

        '
      tags:
      - Payment Request
      parameters:
      - $ref: '#/components/parameters/PaymentRequestId'
      - $ref: '#/components/parameters/RevisionNumber'
      responses:
        '200':
          $ref: '#/components/responses/200-PaymentRequestDetails'
        '400':
          $ref: '#/components/responses/400-BadRequest-GET-Entity'
        '401':
          $ref: '#/components/responses/401-Unauthorized'
        '403':
          $ref: '#/components/responses/403-Forbidden'
        '404':
          $ref: '#/components/responses/404-NotFound'
        '429':
          $ref: '#/components/responses/429-TooManyRequests'
        '503':
          $ref: '#/components/responses/503-ServiceUnavailable'
    put:
      summary: Create a Payment Request by Client Id or Update a Payment Request
      operationId: updatePaymentRequest
      description: '- Creates a Payment Request with a client provided transaction identifier OR

        - Updates the details of an existing Payment Request with a client provided

        transaction identifier  OR

        - Updates the details of an existing payment request with a J.P. Morgan generated transaction

        identifier


        |Markets     |Description                                                                        |

        |:--------------------------|:------------------------------------------------------------------|

        |Brazil                     |Uses Payment Request Id ("id") for Static and Dynamic Requests     |

        |Singapore,<br>Hong&nbsp;Kong                  |Does Not Apply                          |'
      tags:
      - Payment Request
      parameters:
      - $ref: '#/components/parameters/PaymentRequestIdPutOnly'
      - $ref: '#/components/parameters/IfMatch'
      requestBody:
        $ref: '#/components/requestBodies/PaymentRequestUpdate'
      responses:
        '200':
          $ref: '#/components/responses/200-PaymentRequestUpdated'
        '400':
          $ref: '#/components/responses/400-BadRequest-GET-Entity'
        '401':
          $ref: '#/components/responses/401-Unauthorized'
        '403':
          $ref: '#/components/responses/403-Forbidden'
        '404':
          $ref: '#/components/responses/404-NotFound'
        '405':
          $ref: '#/components/responses/405-MethodNotAllowed'
        '412':
          $ref: '#/components/responses/412-PreconditionFailed'
        '429':
          $ref: '#/components/responses/429-TooManyRequests'
        '503':
          $ref: '#/components/responses/503-ServiceUnavailable'
  /payment-requests/{id}/cancel:
    post:
      summary: Cancel a Single Payment Request
      operationId: cancelPaymentRequest
      description: '**Cancels a Payment Request using the Payment Request Id**


        |Markets     |Description                                                                        |

        |:--------------------------|:------------------------------------------------------------------|

        |Brazil,<br>Singapore,<br>Hong&nbsp;Kong                     |Uses Payment Request Id ("id") for
        Static and Dynamic Requests            |

        '
      tags:
      - Payment Request
      parameters:
      - $ref: '#/components/parameters/PaymentRequestId'
      requestBody:
        $ref: '#/components/requestBodies/PaymentRequestCancellationRequest'
      responses:
        '200':
          $ref: '#/components/responses/200-PaymentRequestCancellationResponse'
        '400':
          $ref: '#/components/responses/400-BadRequest-GET-Entity'
        '401':
          $ref: '#/components/responses/401-Unauthorized'
        '403':
          $ref: '#/components/responses/403-Forbidden'
        '404':
          $ref: '#/components/responses/404-NotFound'
        '429':
          $ref: '#/components/responses/429-TooManyRequests'
        '503':
          $ref: '#/components/responses/503-ServiceUnavailable'
  /payment-requests/search:
    post:
      summary: Retrieve a List of Payment Requests
      operationId: retrievePaymentRequests
      description: '**Retrieves a list of Payment Requests**'
      tags:
      - Payment Request
      requestBody:
        $ref: '#/components/requestBodies/PaymentRequestSearchRequest'
      responses:
        '200':
          $ref: '#/components/responses/200-PaymentRequestCollectionResponse'
        '400':
          $ref: '#/components/responses/400-BadRequest-GET-Collection'
        '401':
          $ref: '#/components/responses/401-Unauthorized'
        '403':
          $ref: '#/components/responses/403-Forbidden'
        '429':
          $ref: '#/components/responses/429-TooManyRequests'
        '503':
          $ref: '#/components/responses/503-ServiceUnavailable'
  /payment-requests/bulk:
    post:
      summary: Create Bulk Payment Requests
      operationId: createPaymentRequests
      description: '**Creates one or more Payment Requests asynchronously based on the payment request

        details provided**


        |Market                     |Description                                                        |

        |:--------------------------|:------------------------------------------------------------------|

        |Brazil                     |Applicable only for Dynamic Due Date QR Codes                       |

        |Singapore                  |Does not Apply                               |'
      tags:
      - Payment Request - Bulk
      parameters:
      - $ref: '#/components/parameters/IdempotencyKey'
      requestBody:
        $ref: '#/components/requestBodies/PaymentRequestBulkCreate'
      responses:
        '202':
          $ref: '#/components/responses/202-BulkResponse'
        '400':
          $ref: '#/components/responses/400-BadRequest'
        '401':
          $ref: '#/components/responses/401-Unauthorized'
        '403':
          $ref: '#/components/responses/403-Forbidden'
        '429':
          $ref: '#/components/responses/429-TooManyRequests'
        '503':
          $ref: '#/components/responses/503-ServiceUnavailable'
  /payment-requests/bulk/{id}:
    get:
      summary: Retrieve Bulk Payment Request Details
      description: '**Retrieves the Bulk Payment Request details using the Bulk Payment Request Id**


        |Market     |Description                                                                        |

        |:--------------------------|:------------------------------------------------------------------|

        |Brazil                     |Uses Payment Request Id for Static and Dynamic Requests            |

        |Singapore                  |Does not Apply            |

        '
      tags:
      - Payment Request - Bulk
      operationId: retrievePaymentRequestBulk
      parameters:
      - $ref: '#/components/parameters/BulkId'
      responses:
        '200':
          $ref: '#/components/responses/200-BulkPaymentRequestDetails'
        '400':
          $ref: '#/components/responses/400-BadRequest-GET-Entity'
        '401':
          $ref: '#/components/responses/401-Unauthorized'
        '403':
          $ref: '#/components/responses/403-Forbidden'
        '404':
          $ref: '#/components/responses/404-NotFound'
        '429':
          $ref: '#/components/responses/429-TooManyRequests'
        '503':
          $ref: '#/components/responses/503-ServiceUnavailable'
    put:
      summary: Update bulk payment request details
      description: "**Updates the Bulk Payment Request details using the Bulk Payment Request Id** \n\n\
        |Market     |Description                                                                     \
        \   |\n|:--------------------------|:------------------------------------------------------------------|\n\
        |Brazil                     |Uses Payment Request Id for Static and Dynamic Requests         \
        \   |\n|Singapore                  |Does not Apply                                           \
        \          |   \n"
      tags:
      - Payment Request - Bulk
      operationId: updatePaymentRequestBulk
      parameters:
      - $ref: '#/components/parameters/BulkId'
      - $ref: '#/components/parameters/IfMatch'
      requestBody:
        $ref: '#/components/requestBodies/PaymentRequestBulkUpdate'
      responses:
        '202':
          $ref: '#/components/responses/202-BulkResponse'
        '400':
          $ref: '#/components/responses/400-BadRequest-GET-Entity'
        '401':
          $ref: '#/components/responses/401-Unauthorized'
        '403':
          $ref: '#/components/responses/403-Forbidden'
        '404':
          $ref: '#/components/responses/404-NotFound'
        '405':
          $ref: '#/components/responses/405-MethodNotAllowed'
        '429':
          $ref: '#/components/responses/429-TooManyRequests'
        '503':
          $ref: '#/components/responses/503-ServiceUnavailable'
components:
  x-jpmc-securitySchemes:
    MutualTLS:
      type: x509
      description: Mutual TLS authentication using client and server certificates.
  parameters:
    FromDate:
      name: fromDate
      in: query
      description: Specify the date time from which you want to start retrieving the Payment Links
      schema:
        type: string
        format: date-time
      required: false
    ToDate:
      name: toDate
      in: query
      description: Specify the date time until which you want to retrieve the Payment Links generated.
        Format expected- `YYYY-MM-DDThh:mm:ss`+/-time offset to UTC
      required: false
      schema:
        type: string
        format: date-time
    ExpirationType:
      name: expirationType
      in: query
      description: Filter by expiration type
      schema:
        $ref: '#/components/schemas/ExpirationType'
      required: false
      examples:
        ImmediatePaymentRequest:
          value: IMMEDIATE
        DueDatePaymentRequest:
          value: DUE_DATE
    RequestMethodType:
      name: requestMethodType
      in: query
      description: Filter by request method type
      schema:
        $ref: '#/components/schemas/RequestMethodType'
      required: false
      examples:
        None:
          value: NONE
          description: Not associated to any request method
        QRCode:
          value: QR_CODE
          description: Associated to QR Code
    PaymentLinkStatus:
      name: paymentLinkStatus
      in: query
      description: Search by payment link status (whether the qr is linked to a payment link or not)
      schema:
        type: string
        enum:
        - LINKED
        - NOT_LINKED
      required: false
    PageSize:
      name: pageSize
      in: query
      description: For pagination, total number of results to return per page
      required: false
      schema:
        $ref: '#/components/schemas/PageSize'
    Cursor:
      name: cursor
      in: query
      description: For selecting a cursor when using pagination
      required: false
      schema:
        $ref: '#/components/schemas/CursorId'
    Id:
      name: id
      in: path
      description: Unique Payment Link identifier
      schema:
        $ref: '#/components/schemas/PaymentLinkId'
      required: true
      examples:
        ImmediatePaymentRequestBR:
          summary: Payment Link identifier with immediate expiry - Brazil Market
          value: a901840f-2a0c-4f79-ae17-6d21ce75d58c
        DueDatePaymentRequestBR:
          summary: Payment Link identifier with due date expiry - Brazil Market
          value: 55835a9c-180e-48ba-8373-b4d806c77962
    IdempotencyKey:
      name: Idempotency-Key
      in: header
      description: 'Client generated unique idempotency key used in recognizing consecutive retries of
        the same request


        **V4 UUIDs are recommended**'
      schema:
        $ref: '#/components/schemas/IdempotencyKey'
      required: false
    PaymentRequestId:
      name: id
      in: path
      description: 'Unique transaction identifier provided by <mark>client</mark> or identifier generated
        by <mark>JPM</mark>


        |Markets     |Description                                                        |

        |:--------------------------|:------------------------------------------------------------------|

        |Brazil                     |<ul><li>Mandatory field</li><li>For Static QR Codes Minimum Length:
        1 characters , Maximum Length:  25 characters</li><li>For Dynamic QR Codes Minimum Length: 26
        characters , Maximum Length:  35 characters</li></ul>   |

        |Singapore,<br>Hong&nbsp;Kong                  |<ul><li>Mandatory field</li><li>For Static and
        Dynamic QR Codes Maximum Length:  35 characters</li></ul>   |'
      schema:
        $ref: '#/components/schemas/PaymentRequestId'
      required: true
      examples:
        ImmediatePaymentRequestBR:
          summary: Payment Request identifier with Dynamic QR Code and immediate expiry - Brazil market
          value: 1062ad7dee5c4611962733d4ce5cf9c9
        DueDatePaymentRequestBR:
          summary: Payment Request identifier with Dynamic QR Code and  due date expiry - Brazil market
          value: 05df6aaa4fea44128795a1d42b5e3e45
        StaticQRCodeBR:
          summary: Payment Request identifier with Static QR Code - Brazil market
          value: 9e9ea51f07874f3eb3bba60017280a93
    RevisionNumber:
      name: revisionNumber
      in: query
      description: Payment request revision number. If unspecified, API will return Payment Request details
        with the latest revision
      schema:
        $ref: '#/components/schemas/RevisionNumber'
      required: false
    PaymentRequestIdPutOnly:
      name: id
      in: path
      description: 'Unique transaction identifier provided by <mark>client</mark> or identifier generated
        by <mark>JPM</mark>


        |Market     |Description                                                        |

        |:--------------------------|:------------------------------------------------------------------|

        |Brazil                     |<ul><li>Mandatory field</li><li>For Static QR Codes Minimum Length:
        1 characters , Maximum Length:  25 characters</li><li>For Dynamic QR Codes Minimum Length: 26
        characters , Maximum Length:  35 characters</li></ul>   |'
      schema:
        $ref: '#/components/schemas/PaymentRequestId'
      required: true
      examples:
        ImmediatePaymentRequestBR:
          summary: Payment Request identifier with Dynamic QR Code and immediate expiry - Brazil market
          value: 1062ad7dee5c4611962733d4ce5cf9c9
        DueDatePaymentRequestBR:
          summary: Payment Request identifier with Dynamic QR Code and  due date expiry - Brazil market
          value: 05df6aaa4fea44128795a1d42b5e3e45
        StaticQRCodeBR:
          summary: Payment Request identifier with Static QR Code - Brazil market
          value: 9e9ea51f07874f3eb3bba60017280a93
    IfMatch:
      name: If-Match
      description: JPM created ETag - An opaque version identifier for the resource
      in: header
      schema:
        type: string
        minLength: 1
        maxLength: 100
      required: false
    BulkId:
      name: id
      in: path
      description: Unique Payment Requests batch identifier assigned by JPM
      schema:
        $ref: '#/components/schemas/PaymentRequestBulkId'
      required: true
      examples:
        BulkPaymentRequestsBR:
          summary: Bulk Payment Request Identifier - Brazil Market
          value: 253f67f3-b640-44cb-aabd-2cc348b52678
  schemas:
    ExpirationType:
      title: ExpirationType
      description: 'Payment request expiration type

        |Markets                     |Description                                                        |

        |:--------------------------|:------------------------------------------------------------------|

        |Brazil                     |IMMEDIATE, DUE-DATE apply for Dynamic QR Codes                |

        |Singapore                  |Provide SCHEDULED if expiry date/time is provided in expiresAt. Mandatory
        for Dynamic QR. Optional for Static QR.                             |

        |Hong&nbsp;Kong                  |Provide SCHEDULED if expiry date/time is provided in expiresAt.
        Mandatory for Dynamic QR. Not supported for Static QR. |'
      type: string
      enum:
      - IMMEDIATE
      - DUE_DATE
      - SCHEDULED
    RequestMethodType:
      title: RequestMethodType
      description: "Payment Request method type \n\n| Value  | Description                           \
        \         |\n|:-----  |:-----------------------------------------------|\n|NONE    |QR code not\
        \ required                            |\n|QR_CODE |Generate QR Code and associate to payment request|"
      type: string
      enum:
      - NONE
      - QR_CODE
    PageSize:
      type: integer
      format: int32
      minimum: 1
      maximum: 99
      default: 10
      description: Pagination limit for normal sized payload elements
    CursorId:
      type: string
      minLength: 1
      maxLength: 50
    PaymentLinkId:
      title: id
      type: string
      description: Unique payment link identifier generated by JPM
      minLength: 0
      maxLength: 128
      example: 253f67f3-b640-44cb-aabd-2cc348b52678
    PaymentLinkAlternateIdentifier:
      title: alternateIdentifier
      type: integer
      format: int64
      description: 'Numeric identifier required by some markets


        |MARKET | Description                               |

        |:------|:------------------------------------------|

        |BRAZIL | Requires generation of numeric identifier |

        |SINGAPORE | Does not Apply |'
      example: 12345
    ISOCountryCode:
      title: ISOCountryCode
      type: string
      description: 'ISO 3166-1 Alpha-2 country code


        |Markets     |Country ISO Code     |Description                                                        |

        |:----------|:--------------------|:------------------------------------------------------------------|

        |Brazil     |BR                   |ISO Country Code for the Market |

        |Singapore  |SG                   |ISO Country Code for the Market |

        |Hong&nbsp;Kong   |HK                   |ISO Country Code for the Market |'
      minLength: 2
      maxLength: 2
      pattern: ^[A-Z]{2}$
      example: AU
    PaymentRequestId:
      title: PaymentRequestId
      type: string
      description: 'Unique transaction identifier provided by <mark>client</mark> or identifier generated
        by <mark>JPM</mark>


        |Market     |Description                                                        |

        |:--------------------------|:------------------------------------------------------------------|

        |Brazil                     |<ul><li>Mandatory field</li><li>For Static QR Codes Minimum Length:
        1 characters , Maximum Length:  25 characters</li><li>For Dynamic QR Codes Minimum Length: 26
        characters , Maximum Length:  35 characters</li></ul>   |

        |Singapore                  |<ul><li>Mandatory field</li><li>For Static and Dynamic QR Codes Maximum
        Length:  35 characters</li></ul>   |

        |HongKong                   |<ul><li>Mandatory field</li><li>For Static and Dynamic QR Codes Maximum
        Length:  35 characters</li></ul>   |'
      minLength: 1
      maxLength: 36
    PaymentLink:
      title: PaymentLink
      type: object
      description: 'The payment link is a URL hosted at the receiver''s PSP. This is invoked by the

        payer''s PSP to retrieve associated QR Code details


        | Market | Description                                    |

        |:-----  |:-----------------------------------------------|

        |Brazil  |Associated to a QR code using a PIX URL format per Brazil Central Bank rules|

        |Singapore  |Does not Apply|

        '
      properties:
        id:
          $ref: '#/components/schemas/PaymentLinkId'
        alternateIdentifier:
          $ref: '#/components/schemas/PaymentLinkAlternateIdentifier'
        expirationType:
          $ref: '#/components/schemas/ExpirationType'
        country:
          description: Payment requested for country / market
          $ref: '#/components/schemas/ISOCountryCode'
        url:
          type: string
          description: 'Payment Service Provider''s (PSP) hosted payment resource, where customer

            can pay for services / goods


            example: pix.jpmchase.com/qr/v2/2353c790eefb11eaadc10242ac120002


            |MARKET | Url Format                                                                                                                                                                          |

            |:------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|

            |BRAZIL | <ul><li>Immediate pay: https://{FQDN}/{pixEndpoint}/{pixUrlAccessToken}</li><li>Pay
            by due date: https://{FQDN}/{pixEndpoint}/cobv/{pixUrlAccessToken}</li></ul>         |

            '
          format: uri
        createdAt:
          type: string
          format: date-time
          description: 'Payment Link/location creation timestamp. Format -

            `YYYY-MM-DDThh:mm:ss`+/-time offset to UTC

            '
        paymentRequestId:
          $ref: '#/components/schemas/PaymentRequestId'
    Cursor:
      title: Cursor
      type: object
      description: Pagination cursor
      required:
      - this
      - first
      - goodUntil
      properties:
        first:
          $ref: '#/components/schemas/CursorId'
        prev:
          $ref: '#/components/schemas/CursorId'
        this:
          $ref: '#/components/schemas/CursorId'
        next:
          $ref: '#/components/schemas/CursorId'
        goodUntil:
          description: Cursor validity period. Format - `YYYY-MM-DDThh:mm:ss`+/-time offset to UTC
          type: string
          format: date-time
    PaymentLinks:
      title: PaymentLinks
      type: object
      description: Contains an array of Payment Link items
      properties:
        paymentLinks:
          type: array
          items:
            $ref: '#/components/schemas/PaymentLink'
          minItems: 0
          maxItems: 99
        metadata:
          title: MetaData
          type: object
          description: Contains cursor information to move through the result set
          properties:
            cursor:
              $ref: '#/components/schemas/Cursor'
            asOf:
              type: string
              format: date-time
      required:
      - paymentLinks
      - metadata
    ErrorContext:
      title: ErrorContext
      type: object
      required:
      - message
      properties:
        code:
          type: string
          description: JPM Short code that identifies the error - publicly cataloged and documented
          minLength: 5
          maxLength: 5
          pattern: ^[0-9]+
        message:
          type: string
          description: Human readable textual description of the error
          minLength: 1
          maxLength: 99
        location:
          type: string
          title: The component of the request impacted, can either be 'body', 'query', 'header', or 'path'
          description: The location of the error occurred in the request
          minLength: 1
          maxLength: 99
          enum:
          - BODY
          - PATH
          - QUERY
          - HEADER
        field:
          type: string
          description: The field which caused the error. Where the location of the error occurred is BODY,
            the field would contain the JSON Path expression
          minLength: 1
          maxLength: 99
          pattern: ^\$?[0-9a-zA-Z-_.()\[\]{}]+$
      description: Error Context
    Error:
      type: object
      title: Error
      description: Common error model
      properties:
        title:
          type: string
          title: Short humanly-readable title of the error
          minLength: 1
          maxLength: 100
        httpStatus:
          type: integer
          default: 400
          title: ' HTTP Status Code'
        traceId:
          type: string
          title: JPM Assigned traced identifier
        requestId:
          type: string
          title: The 'client originated' requestId
        context:
          type: array
          title: Provides additional context and detail on the validation errors
          items:
            $ref: '#/components/schemas/ErrorContext'
          minItems: 0
          maxItems: 100
      required:
      - title
      readOnly: true
    PaymentLinkRequest:
      title: PaymentLinkRequest
      type: object
      description: 'Payment link generation request from client '
      properties:
        expirationType:
          $ref: '#/components/schemas/ExpirationType'
        country:
          description

# --- truncated at 32 KB (469 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/jp-morgan-chase/refs/heads/main/openapi/jp-morgan-chase-request-to-pay-via-qr-code-api-openapi.yml