openapi: 3.0.4
info:
  title: PublicSquare Payments API
  version: v1
servers:
  - url: https://api.publicsquare.com
paths:
  /balance-transfers:
    get:
      tags:
        - Balance Transfers
      description: "    Get a list of balance transfers for the Account.\n\n    ### Permissions\n    * `transfer:read`"
      operationId: Get all balance transfers
      parameters:
        - name: start_dt
          in: query
          description: Inclusive start date to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Inclusive start date to filter records by
            format: date-time
            example: '2024-05-30T12:14:56'
        - name: end_dt
          in: query
          description: Exclusive end date to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Exclusive end date to filter records by
            format: date-time
            nullable: true
            example: '2024-06-04T18:22:41'
        - name: status
          in: query
          description: Filter by transaction statuses
          schema:
            maxItems: 100
            type: array
            items:
              type: string
            description: Filter by transaction statuses
            nullable: true
            example:
              - succeeded
        - name: query
          in: query
          description: Filter by query
          schema:
            maxLength: 500
            type: string
            description: Filter by query
            nullable: true
            example: pmt_2YKewBonG4tgk12MheY3PiHDy
        - name: page
          in: query
          description: Page
          schema:
            maximum: 2147483647
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page
            format: int32
            nullable: true
            example: 8
        - name: size
          in: query
          description: Page size
          schema:
            maximum: 100
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page size
            format: int32
            nullable: true
            example: 20
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BalanceTransferPaginatedList'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - transfer:read
    post:
      tags:
        - Balance Transfers
      description: "    Create a new balance transfer for the Account.\n\n    ### Permissions\n    * `transfer:write`"
      operationId: Create balance transfer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateBalanceTransferRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BalanceTransfer'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - transfer:write
  '/balance-transfers/{id}':
    get:
      tags:
        - Balance Transfers
      description: "    Get a balance transfer by ID in the Account.\n\n    ### Permissions\n    * `transfer:read`"
      operationId: Get balance transfer by ID
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BalanceTransfer'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - transfer:read
  /dispute-cases:
    get:
      tags:
        - Dispute Cases
      description: "    Get a list of dispute cases for the Account.\n\n    ### Permissions\n    * `dispute-case:read`"
      operationId: Get all dispute cases
      parameters:
        - name: start_disputed_at
          in: query
          description: Inclusive lower bound on the `disputed_at` field (when the dispute was created) to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Inclusive lower bound on the `disputed_at` field (when the dispute was created) to filter records by
            format: date-time
            nullable: true
            example: '2024-05-30T12:14:56'
        - name: end_disputed_at
          in: query
          description: Exclusive upper bound on the `disputed_at` field (when the dispute was created) to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Exclusive upper bound on the `disputed_at` field (when the dispute was created) to filter records by
            format: date-time
            nullable: true
            example: '2024-06-04T18:22:41'
        - name: start_due_at
          in: query
          description: Inclusive lower bound on the `due_at` field (the deadline for response) to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Inclusive lower bound on the `due_at` field (the deadline for response) to filter records by
            format: date-time
            nullable: true
            example: '2024-05-30T12:14:56'
        - name: end_due_at
          in: query
          description: Exclusive upper bound on the `due_at` field (the deadline for response) to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Exclusive upper bound on the `due_at` field (the deadline for response) to filter records by
            format: date-time
            nullable: true
            example: '2024-06-04T18:22:41'
        - name: query
          in: query
          description: Search query to filter records by
          schema:
            maxLength: 500
            type: string
            description: Search query to filter records by
            nullable: true
            example: query
        - name: page
          in: query
          description: Page
          schema:
            maximum: 2147483647
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page
            format: int32
            nullable: true
            example: 8
        - name: size
          in: query
          description: Page size
          schema:
            maximum: 100
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page size
            format: int32
            nullable: true
            example: 20
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DisputeCasePaginatedList'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - dispute-case:read
  '/dispute-cases/{id}':
    get:
      tags:
        - Dispute Cases
      description: "    Get a dispute case by ID in the Account.\n\n    ### Permissions\n    * `dispute-case:read`"
      operationId: Get dispute case by ID
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DisputeCase'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - dispute-case:read
  /payment-intents:
    get:
      tags:
        - Payment Intents
      description: "    Get a list of payment intents for the Account.\n\n    ### Permissions\n    * `payment:read`"
      operationId: Get all payment intents
      parameters:
        - name: start_dt
          in: query
          description: Inclusive start date to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Inclusive start date to filter records by
            format: date-time
            example: '2024-05-30T12:14:56'
        - name: end_dt
          in: query
          description: Exclusive end date to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Exclusive end date to filter records by
            format: date-time
            nullable: true
            example: '2024-06-04T18:22:41'
        - name: status
          in: query
          description: Filter by transaction statuses
          schema:
            maxItems: 100
            type: array
            items:
              type: string
            description: Filter by transaction statuses
            nullable: true
            example:
              - succeeded
        - name: query
          in: query
          description: Filter by query
          schema:
            maxLength: 500
            type: string
            description: Filter by query
            nullable: true
            example: pmt_2YKewBonG4tgk12MheY3PiHDy
        - name: page
          in: query
          description: Page
          schema:
            maximum: 2147483647
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page
            format: int32
            nullable: true
            example: 8
        - name: size
          in: query
          description: Page size
          schema:
            maximum: 100
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page size
            format: int32
            nullable: true
            example: 20
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentIntentPaginatedList'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment:read
    post:
      tags:
        - Payment Intents
      description: "    Create a new payment intent for the Account.\n\n    Supports idempotent creation via the `IDEMPOTENCY-KEY` request header. Duplicate requests\n    with the same key return the original payment intent.\n\n    ### Permissions\n    * `payment:write`"
      operationId: Create payment intent
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreatePaymentIntentRequest'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentIntent'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment:write
  '/payment-intents/{id}':
    get:
      tags:
        - Payment Intents
      description: "    Get a payment intent by ID for the Account.\n\n    ### Permissions\n    * `payment:read`"
      operationId: Get payment intent by ID
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentIntent'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment:read
    put:
      tags:
        - Payment Intents
      description: "    Update a payment intent. Only allowed when status is `requires_payment_method` or `requires_confirmation`.\n\n    ### Permissions\n    * `payment:write`"
      operationId: Update payment intent
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdatePaymentIntentRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentIntent'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment:write
  '/payment-intents/{id}/attempts':
    get:
      tags:
        - Payment Intents
      description: "    Get a paginated list of payment attempts for a payment intent.\n\n    ### Permissions\n    * `payment:read`"
      operationId: Get payment intent attempts
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
        - name: start_dt
          in: query
          description: Inclusive start date to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Inclusive start date to filter records by
            format: date-time
            example: '2024-05-30T12:14:56'
        - name: end_dt
          in: query
          description: Exclusive end date to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Exclusive end date to filter records by
            format: date-time
            example: '2024-06-04T18:22:41'
        - name: status
          in: query
          description: Filter by transaction statuses
          schema:
            maxItems: 100
            type: array
            items:
              type: string
            description: Filter by transaction statuses
            example:
              - succeeded
        - name: query
          in: query
          description: Filter by query
          schema:
            maxLength: 500
            type: string
            description: Filter by query
            example: pmt_2YKewBonG4tgk12MheY3PiHDy
        - name: page
          in: query
          description: Page
          schema:
            type: integer
            description: Page
            format: int32
            example: 8
        - name: size
          in: query
          description: Page size
          schema:
            type: integer
            description: Page size
            format: int32
            example: 20
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentAttemptPaginatedList'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment:read
  '/payment-intents/{id}/confirm':
    post:
      tags:
        - Payment Intents
      description: "    Confirm a payment intent and submit it to the payment processor.\n\n    Supports idempotent confirmation via the `IDEMPOTENCY-KEY` request header.\n\n    ### Permissions\n    * `payment:write`"
      operationId: Confirm payment intent
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConfirmPaymentIntentRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentIntent'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment:write
  '/payment-intents/{id}/three_d_secure/complete':
    post:
      tags:
        - Payment Intents
      description: "    Finalize a payment intent after a 3D Secure challenge has been completed by the cardholder.\n\n    Call this once the challenge (iframe or redirect) is done. The required\n    `three_d_secure.session_id` (returned in the confirm `next_action`) identifies the\n    challenged session. The server retrieves the authentication result from Basis Theory\n    and submits the payment to the processor.\n\n    Supports idempotent completion via the `IDEMPOTENCY-KEY` request header.\n\n    ### Permissions\n    * `payment:write`"
      operationId: Complete payment intent 3DS challenge
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CompletePaymentIntentRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentIntent'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment:write
  '/payment-intents/{id}/capture':
    post:
      tags:
        - Payment Intents
      description: "    Capture funds for a payment intent that is in `requires_capture` status.\n\n    Supports idempotent capture via the `IDEMPOTENCY-KEY` request header.\n\n    ### Permissions\n    * `payment:write`"
      operationId: Capture payment intent
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CapturePaymentIntentRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentIntent'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment:write
  '/payment-intents/{id}/cancel':
    post:
      tags:
        - Payment Intents
      description: "    Cancel a payment intent. Cannot cancel an intent that has already succeeded.\n\n    Supports idempotent cancellation via the `IDEMPOTENCY-KEY` request header.\n\n    ### Permissions\n    * `payment:write`"
      operationId: Cancel payment intent
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      responses:
        '204':
          description: No Content
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment:write
  /payment-methods/apple-pay:
    get:
      tags:
        - Apple Pay
      description: "    Get a list of Apple Pay payment methods for the Account.\n\n    ### Permissions\n    * `payment-method:read`"
      operationId: Get all Apple Pay payment methods
      parameters:
        - name: page
          in: query
          description: Page
          schema:
            maximum: 2147483647
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page
            format: int32
            nullable: true
            example: 8
        - name: size
          in: query
          description: Page size
          schema:
            maximum: 100
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page size
            format: int32
            nullable: true
            example: 20
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplePayPaginatedList'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment-method:read
    post:
      tags:
        - Apple Pay
      description: "    Create a new Apple Pay payment method for the Account.\n\n    ### Permissions\n    * `payment-method:capture`\n    * `payment-method:write`"
      operationId: Create Apple Pay token
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateApplePayRequest'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplePay'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment-method:capture
            - payment-method:write
  '/customers/{customerId}/payment-methods/apple-pay':
    get:
      tags:
        - Apple Pay
      description: "    Get a list of Apple Pay payment methods for a customer.\n\n    ### Permissions\n    * `payment-method:read`"
      operationId: Get all Apple Pay payment methods for a customer
      parameters:
        - name: customerId
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
        - name: page
          in: query
          description: Page
          schema:
            maximum: 2147483647
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page
            format: int32
            nullable: true
            example: 8
        - name: size
          in: query
          description: Page size
          schema:
            maximum: 100
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page size
            format: int32
            nullable: true
            example: 20
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplePayPaginatedList'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment-method:read
  '/payment-methods/apple-pay/{id}':
    get:
      tags:
        - Apple Pay
      description: "    Get an Apple Pay payment method by ID in the Account.\n\n    ### Permissions\n    * `payment-method:read`"
      operationId: Get Apple Pay token by ID
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplePay'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment-method:read
    put:
      tags:
        - Apple Pay
      description: "    Update an existing Apple Pay payment method in the Account.\n\n    ### Permissions\n    * `payment-method:write`"
      operationId: Update Apple Pay payment method
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateApplePayRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplePay'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment-method:write
    delete:
      tags:
        - Apple Pay
      description: "    Delete an Apple Pay payment method by ID from the Account.\n\n    ### Permissions\n    * `payment-method:delete`"
      operationId: Delete Apple Pay payment method
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      responses:
        '204':
          description: No Content
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment-method:delete
  /payment-methods/apple-pay/session:
    post:
      tags:
        - Apple Pay
      description: "    Create a new Apple Pay Session. Returns an opaque Apple Pay [session object](https://developer.apple.com/documentation/apple_pay_on_the_web/apple_pay_js_api/requesting_an_apple_pay_payment_session#3199963) that will be passed into the [completeMerchantValidation](https://developer.apple.com/documentation/apple_pay_on_the_web/applepaysession/1778015-completemerchantvalidation) method.\n\n    ### Permissions\n    * `payment-method:capture`\n    * `payment-method:write`"
      operationId: Create Apple Pay Session
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateApplePaySessionRequest'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema: { }
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment-method:capture
            - payment-method:write
  '/payment-methods/apple-pay/{id}/attach':
    put:
      tags:
        - Apple Pay
      description: "    Attach an Apple Pay payment method to a customer in the Account.\n\n    ### Permissions\n    * `payment-method:write`"
      operationId: Attach Apple Pay to customer
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AttachPaymentMethodRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplePay'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment-method:write
  '/payment-methods/apple-pay/{id}/detach':
    put:
      tags:
        - Apple Pay
      description: "    Detach an Apple Pay payment method from a customer in the Account.\n\n    ### Permissions\n    * `payment-method:write`"
      operationId: Detach Apple Pay from customer
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplePay'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment-method:write
  '/payment-methods/apple-pay/domains/{id}':
    get:
      tags:
        - Apple Pay
      description: "    Get an Apple Pay domain by ID.\n\n    ### Permissions\n    * `apple-pay:read`"
      operationId: Get Apple Pay domain by ID
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplePayDomain'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - apple-pay:read
    delete:
      tags:
        - Apple Pay
      description: "    Delete an Apple Pay domain by ID from the Account.\n\n    ### Permissions\n    * `apple-pay:delete`"
      operationId: Delete Apple Pay domain
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      responses:
        '204':
          description: No Content
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - apple-pay:delete
  /payment-methods/apple-pay/domains:
    get:
      tags:
        - Apple Pay
      description: "    Get a list of registered Apple Pay domains for the Account.\n\n    ### Permissions\n    * `apple-pay:read`"
      operationId: Get all Apple Pay domains
      parameters:
        - name: page
          in: query
          description: Page
          schema:
            maximum: 2147483647
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page
            format: int32
            nullable: true
            example: 8
        - name: size
          in: query
          description: Page size
          schema:
            maximum: 100
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page size
            format: int32
            nullable: true
            example: 20
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplePayDomainPaginatedList'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - apple-pay:read
    post:
      tags:
        - Apple Pay
      description: "    Register an Apple Pay domain for the Account.\n\n    ### Permissions\n    * `apple-pay:write`"
      operationId: Register Apple Pay domain
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateApplePayDomainRequest'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplePayDomain'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - apple-pay:write
  /payment-methods/bank-accounts:
    get:
      tags:
        - Bank Accounts
      description: "    Get a list of bank account payment methods for the Account.\n\n    ### Permissions\n    * `payment-method:read`"
      operationId: Get all bank accounts
      parameters:
        - name: page
          in: query
          description: Page
          schema:
            maximum: 2147483647
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page
            format: int32
            nullable: true
            example: 8
        - name: size
          in: query
          description: Page size
          schema:
            maximum: 100
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page size
            format: int32
            nullable: true
            example: 20
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccountPaginatedList'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment-method:read
    post:
      tags:
        - Bank Accounts
      description: "    Create a new bank account payment method for the Account.\n\n    ### Permissions\n    * `payment-method:capture`\n    * `payment-method:write`"
      operationId: Create bank account
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateBankAccountRequest'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccount'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment-method:capture
            - payment-method:write
  '/customers/{customerId}/payment-methods/bank-accounts':
    get:
      tags:
        - Bank Accounts
      description: "    Get a list of bank account payment methods for a customer.\n\n    ### Permissions\n    * `payment-method:read`"
      operationId: Get all bank accounts for a customer
      parameters:
        - name: customerId
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
        - name: page
          in: query
          description: Page
          schema:
            maximum: 2147483647
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page
            format: int32
            nullable: true
            example: 8
        - name: size
          in: query
          description: Page size
          schema:
            maximum: 100
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page size
            format: int32
            nullable: true
            example: 20
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccountPaginatedList'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment-method:read
  '/payment-methods/bank-accounts/{id}':
    get:
      tags:
        - Bank Accounts
      description: "    Get a bank account payment method by ID.\n\n    ### Permissions\n    * `payment-method:read`"
      operationId: Get bank account by ID
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccount'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment-method:read
    put:
      tags:
        - Bank Accounts
      description: "    Update an existing bank account payment method in the Account.\n\n    ### Permissions\n    * `payment-method:write`"
      operationId: Update bank account
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateBankAccountRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccount'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment-method:write
    delete:
      tags:
        - Bank Accounts
      description: "    Delete a bank account payment method by ID from the Account.\n\n    ### Permissions\n    * `payment-method:delete`"
      operationId: Delete bank account
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      responses:
        '204':
          description: No Content
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment-method:delete
  /payment-methods/bank-accounts/verification:
    get:
      tags:
        - Bank Accounts
      description: "    Get URL to initiate the bank account verification process for the Account.\n\n    ### Permissions\n    * `payment-method:capture`\n    * `payment-method:write`"
      operationId: Get bank verification URL
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccountVerificationIFrame'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment-method:capture
            - payment-method:write
    post:
      tags:
        - Bank Accounts
      description: "    Save the bank account verification for the Account.\n\n    ### Permissions\n    * `payment-method:capture`\n    * `payment-method:write`"
      operationId: Save bank verification
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SaveBankAccountVerificationRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccountVerification'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment-method:capture
            - payment-method:write
  '/payment-methods/bank-accounts/{id}/balance':
    get:
      tags:
        - Bank Accounts
      description: "    Get a bank account payment method balance by ID.\n\n    ### Permissions\n    * `payment-method:read`"
      operationId: Get bank account balance by ID
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccountBalance'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment-method:read
  '/payment-methods/bank-accounts/{id}/attach':
    put:
      tags:
        - Bank Accounts
      description: "    Attach a bank account payment method to a customer in the Account.\n\n    ### Permissions\n    * `payment-method:write`"
      operationId: Attach bank account to customer
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AttachPaymentMethodRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccount'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment-method:write
  '/payment-methods/bank-accounts/{id}/detach':
    put:
      tags:
        - Bank Accounts
      description: "    Detach a bank account payment method from a customer in the Account.\n\n    ### Permissions\n    * `payment-method:write`"
      operationId: Detach bank account from customer
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccount'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment-method:write
  /payment-methods/cards:
    get:
      tags:
        - Cards
      description: "    Get a list of card payment methods for the Account.\n\n    ### Permissions\n    * `payment-method:read`"
      operationId: Get all cards
      parameters:
        - name: page
          in: query
          description: Page
          schema:
            maximum: 2147483647
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page
            format: int32
            nullable: true
            example: 8
        - name: size
          in: query
          description: Page size
          schema:
            maximum: 100
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page size
            format: int32
            nullable: true
            example: 20
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CardPaginatedList'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment-method:read
  '/customers/{customerId}/payment-methods/cards':
    get:
      tags:
        - Cards
      description: "    Get a list of card payment methods for the customer in the Account.\n\n    ### Permissions\n    * `payment-method:read`"
      operationId: Get all cards for a customer
      parameters:
        - name: customerId
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
        - name: page
          in: query
          description: Page
          schema:
            maximum: 2147483647
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page
            format: int32
            nullable: true
            example: 8
        - name: size
          in: query
          description: Page size
          schema:
            maximum: 100
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page size
            format: int32
            nullable: true
            example: 20
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CardPaginatedList'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment-method:read
  '/payment-methods/cards/{id}':
    get:
      tags:
        - Cards
      description: "    Get a card payment method by ID in the Account.\n\n    ### Permissions\n    * `payment-method:read`"
      operationId: Get card by ID
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Card'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment-method:read
    put:
      tags:
        - Cards
      description: "    Update an existing card payment method in the Account.\n\n    ### Permissions\n    * `payment-method:write`"
      operationId: Update card
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateCardRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Card'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment-method:write
    delete:
      tags:
        - Cards
      description: "    Delete a card payment method by ID from the Account.\n\n    ### Permissions\n    * `payment-method:delete`"
      operationId: Delete card
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      responses:
        '204':
          description: No Content
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment-method:delete
  '/payment-methods/cards/{id}/attach':
    put:
      tags:
        - Cards
      description: "    Attach a card payment method to a customer in the Account.\n\n    ### Permissions\n    * `payment-method:write`"
      operationId: Attach card to customer
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AttachPaymentMethodRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Card'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment-method:write
  '/payment-methods/cards/{id}/detach':
    put:
      tags:
        - Cards
      description: "    Detach a card payment method from a customer in the Account.\n\n    ### Permissions\n    * `payment-method:write`"
      operationId: Detach card from customer
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Card'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment-method:write
  /payment-methods/google-pay:
    get:
      tags:
        - Google Pay
      description: "    Get a list of Google Pay payment methods for the Account.\n\n    ### Permissions\n    * `payment-method:read`"
      operationId: Get all Google Pay payment methods
      parameters:
        - name: page
          in: query
          description: Page
          schema:
            maximum: 2147483647
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page
            format: int32
            nullable: true
            example: 8
        - name: size
          in: query
          description: Page size
          schema:
            maximum: 100
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page size
            format: int32
            nullable: true
            example: 20
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GooglePayPaginatedList'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment-method:read
    post:
      tags:
        - Google Pay
      description: "    Create a new Google Pay payment method for the Account.\n\n    ### Permissions\n    * `payment-method:capture`\n    * `payment-method:write`"
      operationId: Create Google Pay token
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateGooglePayRequest'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GooglePay'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment-method:capture
            - payment-method:write
  '/customers/{customerId}/payment-methods/google-pay':
    get:
      tags:
        - Google Pay
      description: "    Get a list of Google Pay payment methods for a customer.\n\n    ### Permissions\n    * `payment-method:read`"
      operationId: Get all Google Pay payment methods for a customer
      parameters:
        - name: customerId
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
        - name: page
          in: query
          description: Page
          schema:
            maximum: 2147483647
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page
            format: int32
            nullable: true
            example: 8
        - name: size
          in: query
          description: Page size
          schema:
            maximum: 100
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page size
            format: int32
            nullable: true
            example: 20
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GooglePayPaginatedList'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment-method:read
  '/payment-methods/google-pay/{id}':
    get:
      tags:
        - Google Pay
      description: "    Get an Google Pay payment method by ID in the Account.\n\n    ### Permissions\n    * `payment-method:read`"
      operationId: Get Google Pay token by ID
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GooglePay'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment-method:read
    put:
      tags:
        - Google Pay
      description: "    Update an existing Google Pay payment method in the Account.\n\n    ### Permissions\n    * `payment-method:write`"
      operationId: Update Google Pay payment method
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateGooglePayRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GooglePay'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment-method:write
    delete:
      tags:
        - Google Pay
      description: "    Delete a Google Pay payment method by ID from the Account.\n\n    ### Permissions\n    * `payment-method:delete`"
      operationId: Delete Google Pay payment method
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      responses:
        '204':
          description: No Content
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment-method:delete
  '/payment-methods/google-pay/{id}/attach':
    put:
      tags:
        - Google Pay
      description: "    Attach a Google Pay payment method to a customer in the Account.\n\n    ### Permissions\n    * `payment-method:write`"
      operationId: Attach Google Pay to customer
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AttachPaymentMethodRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GooglePay'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment-method:write
  '/payment-methods/google-pay/{id}/detach':
    put:
      tags:
        - Google Pay
      description: "    Detach a Google Pay payment method from a customer in the Account.\n\n    ### Permissions\n    * `payment-method:write`"
      operationId: Detach Google Pay from customer
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GooglePay'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment-method:write
  /payment-methods:
    get:
      tags:
        - Payment Methods
      description: "    Get a list of payment methods for the Account.\n\n    ### Permissions\n    * `payment-method:read`"
      operationId: Get all payment methods
      parameters:
        - name: page
          in: query
          description: Page
          schema:
            maximum: 2147483647
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page
            format: int32
            nullable: true
            example: 8
        - name: size
          in: query
          description: Page size
          schema:
            maximum: 100
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page size
            format: int32
            nullable: true
            example: 20
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentMethodPaginatedList'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment-method:read
  '/customers/{customerId}/payment-methods':
    get:
      tags:
        - Payment Methods
      description: "    Get a list of payment methods for the customer in the Account.\n\n    ### Permissions\n    * `payment-method:read`"
      operationId: Get all payment methods for a customer
      parameters:
        - name: customerId
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
        - name: page
          in: query
          description: Page
          schema:
            maximum: 2147483647
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page
            format: int32
            nullable: true
            example: 8
        - name: size
          in: query
          description: Page size
          schema:
            maximum: 100
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page size
            format: int32
            nullable: true
            example: 20
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentMethodPaginatedList'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment-method:read
  '/payment-methods/{id}':
    get:
      tags:
        - Payment Methods
      description: "    Get a payment method by ID in the Account.\n\n    ### Permissions\n    * `payment-method:read`"
      operationId: Get payment method by ID
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentMethod'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment-method:read
  /payments:
    get:
      tags:
        - Payments
      description: "    Get a list of payments for the Account.\n\n    ### Permissions\n    * `payment:read`"
      operationId: Get all payments
      parameters:
        - name: fraud_details.decision
          in: query
          description: Filter by fraud decisions
          schema:
            maxItems: 100
            type: array
            items:
              type: string
            description: Filter by fraud decisions
            nullable: true
            example:
              - accept
        - name: start_dt
          in: query
          description: Inclusive start date to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Inclusive start date to filter records by
            format: date-time
            example: '2024-05-30T12:14:56'
        - name: end_dt
          in: query
          description: Exclusive end date to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Exclusive end date to filter records by
            format: date-time
            nullable: true
            example: '2024-06-04T18:22:41'
        - name: status
          in: query
          description: Filter by transaction statuses
          schema:
            maxItems: 100
            type: array
            items:
              type: string
            description: Filter by transaction statuses
            nullable: true
            example:
              - succeeded
        - name: query
          in: query
          description: Filter by query
          schema:
            maxLength: 500
            type: string
            description: Filter by query
            nullable: true
            example: pmt_2YKewBonG4tgk12MheY3PiHDy
        - name: page
          in: query
          description: Page
          schema:
            maximum: 2147483647
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page
            format: int32
            nullable: true
            example: 8
        - name: size
          in: query
          description: Page size
          schema:
            maximum: 100
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page size
            format: int32
            nullable: true
            example: 20
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentPaginatedList'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment:read
    post:
      tags:
        - Payments
      description: "    Create a new payment for the Account.\n\n    ### Permissions\n    * `payment:write`"
      operationId: Create payment
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreatePaymentRequest'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Payment'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment:write
  '/payments/{id}':
    get:
      tags:
        - Payments
      description: "    Get a payment by ID in the Account.\n\n    ### Permissions\n    * `payment:read`"
      operationId: Get payment by ID
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Payment'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment:read
    put:
      tags:
        - Payments
      description: "    Update a payment for the Account.\n\n    ### Permissions\n    * `payment:write`"
      operationId: Update payment
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateTransactionRequest'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Payment'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment:write
  '/customers/{customerId}/payments':
    get:
      tags:
        - Payments
      description: "    Get a list of payments for the customer in the Account.\n\n    ### Permissions\n    * `payment:read`"
      operationId: Get all payments for a customer
      parameters:
        - name: customerId
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
        - name: settlement_id
          in: query
          description: Include transactions for the settlement ID
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
            description: Include transactions for the settlement ID
            nullable: true
            example: true
        - name: include_type
          in: query
          description: Include the transaction type entity in the response
          schema:
            type: boolean
            description: Include the transaction type entity in the response
            example: true
        - name: start_dt
          in: query
          description: Inclusive start date to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Inclusive start date to filter records by
            format: date-time
            example: '2024-05-30T12:14:56'
        - name: end_dt
          in: query
          description: Exclusive end date to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Exclusive end date to filter records by
            format: date-time
            nullable: true
            example: '2024-06-04T18:22:41'
        - name: status
          in: query
          description: Filter by transaction statuses
          schema:
            maxItems: 100
            type: array
            items:
              type: string
            description: Filter by transaction statuses
            nullable: true
            example:
              - succeeded
        - name: query
          in: query
          description: Filter by query
          schema:
            maxLength: 500
            type: string
            description: Filter by query
            nullable: true
            example: pmt_2YKewBonG4tgk12MheY3PiHDy
        - name: page
          in: query
          description: Page
          schema:
            maximum: 2147483647
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page
            format: int32
            nullable: true
            example: 8
        - name: size
          in: query
          description: Page size
          schema:
            maximum: 100
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page size
            format: int32
            nullable: true
            example: 20
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentPaginatedList'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment:read
  /payments/capture:
    post:
      tags:
        - Payments
      description: "    Captures funds for an existing payment for the Account.\n\n    ### Permissions\n    * `payment:write`"
      operationId: Captures a payment
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CapturePaymentRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Payment'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment:write
  /payments/cancel:
    post:
      tags:
        - Payments
      description: "    Cancels a pending payment for the Account.\n\n    ### Permissions\n    * `payment:write`"
      operationId: Cancels a payment
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CancelPaymentRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Payment'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment:write
  /payment-transfer-intents:
    get:
      tags:
        - Payment Transfer Intents
      description: "    Returns a paginated list of payment transfer intents for the account.\n\n    ### Permissions\n    * `transfer:read`"
      operationId: Get all payment transfer intents
      parameters:
        - name: start_dt
          in: query
          description: Inclusive start date to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Inclusive start date to filter records by
            format: date-time
            example: '2024-05-30T12:14:56'
        - name: end_dt
          in: query
          description: Exclusive end date to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Exclusive end date to filter records by
            format: date-time
            nullable: true
            example: '2024-06-04T18:22:41'
        - name: status
          in: query
          description: Filter by transaction statuses
          schema:
            maxItems: 100
            type: array
            items:
              type: string
            description: Filter by transaction statuses
            nullable: true
            example:
              - succeeded
        - name: query
          in: query
          description: Filter by query
          schema:
            maxLength: 500
            type: string
            description: Filter by query
            nullable: true
            example: pmt_2YKewBonG4tgk12MheY3PiHDy
        - name: page
          in: query
          description: Page
          schema:
            maximum: 2147483647
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page
            format: int32
            nullable: true
            example: 8
        - name: size
          in: query
          description: Page size
          schema:
            maximum: 100
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page size
            format: int32
            nullable: true
            example: 20
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentTransferIntentPaginatedList'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - transfer:read
    post:
      tags:
        - Payment Transfer Intents
      description: "    Initialize a new payment transfer intent. Captures transfer details and holds them in a `pending` state until confirmed or cancelled.\n\n    ### Permissions\n    * `transfer:write`"
      operationId: Create payment transfer intent
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreatePaymentTransferIntentRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentTransferIntent'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - transfer:write
  '/payment-transfer-intents/{id}':
    get:
      tags:
        - Payment Transfer Intents
      description: "    Retrieve a payment transfer intent by ID.\n\n    ### Permissions\n    * `transfer:read`"
      operationId: Get payment transfer intent by ID
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentTransferIntent'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - transfer:read
  '/payment-transfer-intents/{id}/confirm':
    post:
      tags:
        - Payment Transfer Intents
      description: "    Confirm a pending payment transfer intent and submit to the processor.\n    Returns the intent in `processing` status once the transfer has been submitted.\n\n    ### Permissions\n    * `transfer:write`"
      operationId: Confirm payment transfer intent
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentTransferIntent'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - transfer:write
  '/payment-transfer-intents/{id}/cancel':
    post:
      tags:
        - Payment Transfer Intents
      description: "    Cancel a pending payment transfer intent. Once cancelled, the intent cannot be confirmed.\n\n    ### Permissions\n    * `transfer:write`"
      operationId: Cancel payment transfer intent
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      responses:
        '204':
          description: No Content
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - transfer:write
  /payment-transfers:
    get:
      tags:
        - Payment Transfers
      description: "    Get a list of payment transfers for the Account.\n\n    ### Permissions\n    * `transfer:read`"
      operationId: Get all payment transfers
      parameters:
        - name: start_dt
          in: query
          description: Inclusive start date to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Inclusive start date to filter records by
            format: date-time
            example: '2024-05-30T12:14:56'
        - name: end_dt
          in: query
          description: Exclusive end date to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Exclusive end date to filter records by
            format: date-time
            nullable: true
            example: '2024-06-04T18:22:41'
        - name: status
          in: query
          description: Filter by transaction statuses
          schema:
            maxItems: 100
            type: array
            items:
              type: string
            description: Filter by transaction statuses
            nullable: true
            example:
              - succeeded
        - name: query
          in: query
          description: Filter by query
          schema:
            maxLength: 500
            type: string
            description: Filter by query
            nullable: true
            example: pmt_2YKewBonG4tgk12MheY3PiHDy
        - name: page
          in: query
          description: Page
          schema:
            maximum: 2147483647
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page
            format: int32
            nullable: true
            example: 8
        - name: size
          in: query
          description: Page size
          schema:
            maximum: 100
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page size
            format: int32
            nullable: true
            example: 20
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentTransferPaginatedList'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - transfer:read
    post:
      tags:
        - Payment Transfers
      description: "    Create a new payment transfer for the Account.\n\n    ### Permissions\n    * `transfer:write`"
      operationId: Create payment transfer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreatePaymentTransferRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentTransfer'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - transfer:write
  '/payment-transfers/{id}':
    get:
      tags:
        - Payment Transfers
      description: "    Get a payment transfer by ID in the Account.\n\n    ### Permissions\n    * `transfer:read`"
      operationId: Get payment transfer by ID
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentTransfer'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - transfer:read
  '/payments/{paymentId}/transfer':
    get:
      tags:
        - Payment Transfers
      description: "    Get the payment transfer by payment ID for the Account.\n\n    ### Permissions\n    * `transfer:read`"
      operationId: Get payment transfer for payment
      parameters:
        - name: paymentId
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentTransfer'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - transfer:read
  /payouts:
    get:
      tags:
        - Payouts
      description: "    Get a list of payouts for the Account.\n\n    ### Permissions\n    * `payout:read`"
      operationId: Get all payouts
      parameters:
        - name: start_dt
          in: query
          description: Inclusive start date to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Inclusive start date to filter records by
            format: date-time
            example: '2024-05-30T12:14:56'
        - name: end_dt
          in: query
          description: Exclusive end date to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Exclusive end date to filter records by
            format: date-time
            nullable: true
            example: '2024-06-04T18:22:41'
        - name: status
          in: query
          description: Filter by transaction statuses
          schema:
            maxItems: 100
            type: array
            items:
              type: string
            description: Filter by transaction statuses
            nullable: true
            example:
              - succeeded
        - name: query
          in: query
          description: Filter by query
          schema:
            maxLength: 500
            type: string
            description: Filter by query
            nullable: true
            example: pmt_2YKewBonG4tgk12MheY3PiHDy
        - name: page
          in: query
          description: Page
          schema:
            maximum: 2147483647
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page
            format: int32
            nullable: true
            example: 8
        - name: size
          in: query
          description: Page size
          schema:
            maximum: 100
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page size
            format: int32
            nullable: true
            example: 20
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayoutPaginatedList'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payout:read
    post:
      tags:
        - Payouts
      description: "    Create a new payout for the Account.\n\n    ### Permissions\n    * `payout:write`"
      operationId: Create payout
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreatePayoutRequest'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Payout'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payout:write
  '/payouts/{id}':
    get:
      tags:
        - Payouts
      description: "    Get a payout by ID in the Account.\n\n    ### Permissions\n    * `payout:read`"
      operationId: Get payout by ID
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Payout'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payout:read
    put:
      tags:
        - Payouts
      description: "    Update a payout for the Account.\n\n    ### Permissions\n    * `payout:write`"
      operationId: Update payout
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateTransactionRequest'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Payout'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payout:write
  '/customers/{customerId}/payouts':
    get:
      tags:
        - Payouts
      description: "    Get a list of payouts for the customer in the Account.\n\n    ### Permissions\n    * `payout:read`"
      operationId: Get all payouts for a customer
      parameters:
        - name: customerId
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
        - name: settlement_id
          in: query
          description: Include transactions for the settlement ID
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
            description: Include transactions for the settlement ID
            nullable: true
            example: true
        - name: include_type
          in: query
          description: Include the transaction type entity in the response
          schema:
            type: boolean
            description: Include the transaction type entity in the response
            example: true
        - name: start_dt
          in: query
          description: Inclusive start date to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Inclusive start date to filter records by
            format: date-time
            example: '2024-05-30T12:14:56'
        - name: end_dt
          in: query
          description: Exclusive end date to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Exclusive end date to filter records by
            format: date-time
            nullable: true
            example: '2024-06-04T18:22:41'
        - name: status
          in: query
          description: Filter by transaction statuses
          schema:
            maxItems: 100
            type: array
            items:
              type: string
            description: Filter by transaction statuses
            nullable: true
            example:
              - succeeded
        - name: query
          in: query
          description: Filter by query
          schema:
            maxLength: 500
            type: string
            description: Filter by query
            nullable: true
            example: pmt_2YKewBonG4tgk12MheY3PiHDy
        - name: page
          in: query
          description: Page
          schema:
            maximum: 2147483647
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page
            format: int32
            nullable: true
            example: 8
        - name: size
          in: query
          description: Page size
          schema:
            maximum: 100
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page size
            format: int32
            nullable: true
            example: 20
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayoutPaginatedList'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payout:read
  /payouts/cancel:
    post:
      tags:
        - Payouts
      description: "    Attempts to cancel a payout for the Account.\n\n    ### Permissions\n    * `payout:write`"
      operationId: Cancels a payout
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CancelPayoutRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Refund'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payout:write
  '/transactions/{transactionId}/processor':
    get:
      tags:
        - Transactions
      description: "    Get a list of processor responses for the transaction.\n\n    ### Permissions\n    * `transaction:read`"
      operationId: Get all processor responses
      parameters:
        - name: transactionId
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
        - name: page
          in: query
          description: Page
          schema:
            maximum: 2147483647
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page
            format: int32
            nullable: true
            example: 8
        - name: size
          in: query
          description: Page size
          schema:
            maximum: 100
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page size
            format: int32
            nullable: true
            example: 20
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProcessorTransactionPaginatedList'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - transaction:read
  /refunds:
    get:
      tags:
        - Refunds
      description: "    Get a list of refunds for the Account.\n\n    ### Permissions\n    * `refund:read`"
      operationId: Get all refunds
      parameters:
        - name: settlement_id
          in: query
          description: Include transactions for the settlement ID
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
            description: Include transactions for the settlement ID
            nullable: true
            example: true
        - name: include_type
          in: query
          description: Include the transaction type entity in the response
          schema:
            type: boolean
            description: Include the transaction type entity in the response
            example: true
        - name: start_dt
          in: query
          description: Inclusive start date to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Inclusive start date to filter records by
            format: date-time
            example: '2024-05-30T12:14:56'
        - name: end_dt
          in: query
          description: Exclusive end date to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Exclusive end date to filter records by
            format: date-time
            nullable: true
            example: '2024-06-04T18:22:41'
        - name: status
          in: query
          description: Filter by transaction statuses
          schema:
            maxItems: 100
            type: array
            items:
              type: string
            description: Filter by transaction statuses
            nullable: true
            example:
              - succeeded
        - name: query
          in: query
          description: Filter by query
          schema:
            maxLength: 500
            type: string
            description: Filter by query
            nullable: true
            example: pmt_2YKewBonG4tgk12MheY3PiHDy
        - name: page
          in: query
          description: Page
          schema:
            maximum: 2147483647
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page
            format: int32
            nullable: true
            example: 8
        - name: size
          in: query
          description: Page size
          schema:
            maximum: 100
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page size
            format: int32
            nullable: true
            example: 20
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RefundPaginatedList'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - refund:read
    post:
      tags:
        - Refunds
      description: "    Create a new refund for the Account.\n\n    ### Permissions\n    * `refund:write`"
      operationId: Create refund
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateRefundRequest'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Refund'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - refund:write
  '/refunds/{id}':
    get:
      tags:
        - Refunds
      description: "    Get a refund by ID in the Account.\n\n    ### Permissions\n    * `refund:read`"
      operationId: Get refund by ID
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Refund'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - refund:read
    put:
      tags:
        - Refunds
      description: "    Update a refund for the Account.\n\n    ### Permissions\n    * `refund:write`"
      operationId: Update refund
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateRefundRequest'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Payment'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - refund:write
  '/payments/{paymentId}/refunds':
    get:
      tags:
        - Refunds
      description: "    Get a list of refunds for a payment in the Account.\n\n    ### Permissions\n    * `refund:read`"
      operationId: Get all refunds for payment
      parameters:
        - name: paymentId
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
        - name: settlement_id
          in: query
          description: Include transactions for the settlement ID
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
            description: Include transactions for the settlement ID
            nullable: true
            example: true
        - name: include_type
          in: query
          description: Include the transaction type entity in the response
          schema:
            type: boolean
            description: Include the transaction type entity in the response
            example: true
        - name: start_dt
          in: query
          description: Inclusive start date to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Inclusive start date to filter records by
            format: date-time
            example: '2024-05-30T12:14:56'
        - name: end_dt
          in: query
          description: Exclusive end date to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Exclusive end date to filter records by
            format: date-time
            nullable: true
            example: '2024-06-04T18:22:41'
        - name: status
          in: query
          description: Filter by transaction statuses
          schema:
            maxItems: 100
            type: array
            items:
              type: string
            description: Filter by transaction statuses
            nullable: true
            example:
              - succeeded
        - name: query
          in: query
          description: Filter by query
          schema:
            maxLength: 500
            type: string
            description: Filter by query
            nullable: true
            example: pmt_2YKewBonG4tgk12MheY3PiHDy
        - name: page
          in: query
          description: Page
          schema:
            maximum: 2147483647
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page
            format: int32
            nullable: true
            example: 8
        - name: size
          in: query
          description: Page size
          schema:
            maximum: 100
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page size
            format: int32
            nullable: true
            example: 20
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RefundPaginatedList'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - refund:read
  /refunds/cancel:
    post:
      tags:
        - Refunds
      description: "    Attempts to cancel a refund for the Account.\n\n    ### Permissions\n    * `refund:write`"
      operationId: Cancels a refund
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CancelRefundRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Refund'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - refund:write
  /refunds/export:
    get:
      tags:
        - Refunds
      description: "    Export a list of refunds for the Account.\n\n    ### Permissions\n    * `refund:read`"
      operationId: Export refunds
      parameters:
        - name: start_dt
          in: query
          description: Inclusive start date to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Inclusive start date to filter records by
            format: date-time
            example: '2024-05-30T12:14:56'
        - name: end_dt
          in: query
          description: Exclusive end date to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Exclusive end date to filter records by
            format: date-time
            nullable: true
            example: '2024-06-04T18:22:41'
        - name: status
          in: query
          description: Filter by transaction statuses
          schema:
            maxItems: 100
            type: array
            items:
              type: string
            description: Filter by transaction statuses
            nullable: true
            example:
              - succeeded
        - name: settlement_id
          in: query
          description: Include transactions for the settlement ID
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
            description: Include transactions for the settlement ID
            nullable: true
            example: stl_BGDLZjBLAgNbyqCzJxchSoh5k
        - name: query
          in: query
          description: Filter by query
          schema:
            maxLength: 500
            type: string
            description: Filter by query
            nullable: true
            example: pmt_2YKewBonG4tgk12MheY3PiHDy
      responses:
        '200':
          description: OK
          content:
            text/csv:
              schema:
                type: string
                format: binary
            application/json:
              schema:
                type: string
                format: binary
        '400':
          description: Bad Request
          content:
            text/csv:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            text/csv:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: Forbidden
          content:
            text/csv:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: Not Found
          content:
            text/csv:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - refund:read
  /refund-transfers:
    get:
      tags:
        - Refund Transfers
      description: "    Get all refund transfers in the Account.\n\n    ### Permissions\n    * `transfer:read`"
      operationId: Get all refund transfers
      parameters:
        - name: start_dt
          in: query
          description: Inclusive start date to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Inclusive start date to filter records by
            format: date-time
            example: '2024-05-30T12:14:56'
        - name: end_dt
          in: query
          description: Exclusive end date to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Exclusive end date to filter records by
            format: date-time
            nullable: true
            example: '2024-06-04T18:22:41'
        - name: status
          in: query
          description: Filter by transaction statuses
          schema:
            maxItems: 100
            type: array
            items:
              type: string
            description: Filter by transaction statuses
            nullable: true
            example:
              - succeeded
        - name: query
          in: query
          description: Filter by query
          schema:
            maxLength: 500
            type: string
            description: Filter by query
            nullable: true
            example: pmt_2YKewBonG4tgk12MheY3PiHDy
        - name: page
          in: query
          description: Page
          schema:
            maximum: 2147483647
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page
            format: int32
            nullable: true
            example: 8
        - name: size
          in: query
          description: Page size
          schema:
            maximum: 100
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page size
            format: int32
            nullable: true
            example: 20
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RefundTransferPaginatedList'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - transfer:read
    post:
      tags:
        - Refund Transfers
      description: "    Create a new refund transfer for the Account.\n\n    ### Permissions\n    * `transfer:write`"
      operationId: Create refund transfer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateRefundTransferRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RefundTransfer'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - transfer:write
  '/refund-transfers/{id}':
    get:
      tags:
        - Refund Transfers
      description: "    Get a refund transfer by ID in the Account.\n\n    ### Permissions\n    * `transfer:read`"
      operationId: Get refund transfer by ID
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RefundTransfer'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - transfer:read
  '/refunds/{refundId}/transfer':
    get:
      tags:
        - Refund Transfers
      description: "    Get the refund transfer by refund ID for the Account.\n\n    ### Permissions\n    * `transfer:read`"
      operationId: Get refund transfer for refund
      parameters:
        - name: refundId
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RefundTransfer'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - transfer:read
  /settlements:
    get:
      tags:
        - Settlements
      description: "    Get a list of settlements for the Account.\n\n    ### Permissions\n    * `settlement:read`"
      operationId: Get all settlements
      parameters:
        - name: settlement_id
          in: query
          description: Include transactions for the settlement ID
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
            description: Include transactions for the settlement ID
            nullable: true
            example: true
        - name: include_type
          in: query
          description: Include the transaction type entity in the response
          schema:
            type: boolean
            description: Include the transaction type entity in the response
            example: true
        - name: start_dt
          in: query
          description: Inclusive start date to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Inclusive start date to filter records by
            format: date-time
            example: '2024-05-30T12:14:56'
        - name: end_dt
          in: query
          description: Exclusive end date to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Exclusive end date to filter records by
            format: date-time
            nullable: true
            example: '2024-06-04T18:22:41'
        - name: status
          in: query
          description: Filter by transaction statuses
          schema:
            maxItems: 100
            type: array
            items:
              type: string
            description: Filter by transaction statuses
            nullable: true
            example:
              - succeeded
        - name: query
          in: query
          description: Filter by query
          schema:
            maxLength: 500
            type: string
            description: Filter by query
            nullable: true
            example: pmt_2YKewBonG4tgk12MheY3PiHDy
        - name: page
          in: query
          description: Page
          schema:
            maximum: 2147483647
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page
            format: int32
            nullable: true
            example: 8
        - name: size
          in: query
          description: Page size
          schema:
            maximum: 100
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page size
            format: int32
            nullable: true
            example: 20
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SettlementPaginatedList'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - settlement:read
  '/accounts/{accountId}/settlements':
    get:
      tags:
        - Settlements
      description: "    Get a list of settlements by account ID.\n\n    ### Permissions\n    * `settlement:read`"
      operationId: Get all settlements by account ID
      parameters:
        - name: accountId
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
        - name: settlement_id
          in: query
          description: Include transactions for the settlement ID
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
            description: Include transactions for the settlement ID
            nullable: true
            example: true
        - name: include_type
          in: query
          description: Include the transaction type entity in the response
          schema:
            type: boolean
            description: Include the transaction type entity in the response
            example: true
        - name: start_dt
          in: query
          description: Inclusive start date to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Inclusive start date to filter records by
            format: date-time
            example: '2024-05-30T12:14:56'
        - name: end_dt
          in: query
          description: Exclusive end date to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Exclusive end date to filter records by
            format: date-time
            nullable: true
            example: '2024-06-04T18:22:41'
        - name: status
          in: query
          description: Filter by transaction statuses
          schema:
            maxItems: 100
            type: array
            items:
              type: string
            description: Filter by transaction statuses
            nullable: true
            example:
              - succeeded
        - name: query
          in: query
          description: Filter by query
          schema:
            maxLength: 500
            type: string
            description: Filter by query
            nullable: true
            example: pmt_2YKewBonG4tgk12MheY3PiHDy
        - name: page
          in: query
          description: Page
          schema:
            maximum: 2147483647
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page
            format: int32
            nullable: true
            example: 8
        - name: size
          in: query
          description: Page size
          schema:
            maximum: 100
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page size
            format: int32
            nullable: true
            example: 20
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SettlementPaginatedList'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - settlement:read
  '/settlements/{id}':
    get:
      tags:
        - Settlements
      description: "    Get a settlement by ID in the Account.\n\n    ### Permissions\n    * `settlement:read`"
      operationId: Get settlement by ID
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Settlement'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - settlement:read
  '/accounts/{accountId}/settlements/{id}':
    get:
      tags:
        - Settlements
      description: "    Get a settlement by ID and account ID.\n\n    ### Permissions\n    * `settlement:read`"
      operationId: Get settlement by ID and account ID
      parameters:
        - name: accountId
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Settlement'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - settlement:read
  '/settlements/{id}/transactions':
    get:
      tags:
        - Settlements
      description: "    Get a list of transactions for a settlement in the Account.\n\n    ### Permissions\n    * `settlement:read`"
      operationId: Get all transactions for a settlement
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
        - name: settlement_id
          in: query
          description: Include transactions for the settlement ID
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
            description: Include transactions for the settlement ID
            nullable: true
            example: true
        - name: include_type
          in: query
          description: Include the transaction type entity in the response
          schema:
            type: boolean
            description: Include the transaction type entity in the response
            example: true
        - name: start_dt
          in: query
          description: Inclusive start date to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Inclusive start date to filter records by
            format: date-time
            example: '2024-05-30T12:14:56'
        - name: end_dt
          in: query
          description: Exclusive end date to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Exclusive end date to filter records by
            format: date-time
            nullable: true
            example: '2024-06-04T18:22:41'
        - name: status
          in: query
          description: Filter by transaction statuses
          schema:
            maxItems: 100
            type: array
            items:
              type: string
            description: Filter by transaction statuses
            nullable: true
            example:
              - succeeded
        - name: query
          in: query
          description: Filter by query
          schema:
            maxLength: 500
            type: string
            description: Filter by query
            nullable: true
            example: pmt_2YKewBonG4tgk12MheY3PiHDy
        - name: page
          in: query
          description: Page
          schema:
            maximum: 2147483647
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page
            format: int32
            nullable: true
            example: 8
        - name: size
          in: query
          description: Page size
          schema:
            maximum: 100
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page size
            format: int32
            nullable: true
            example: 20
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionPaginatedList'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - settlement:read
  '/accounts/{accountId}/settlements/{id}/transactions':
    get:
      tags:
        - Settlements
      description: "    Get a list of transactions for a settlement by account ID.\n\n    ### Permissions\n    * `settlement:read`"
      operationId: Get all transactions for a settlement by account ID
      parameters:
        - name: accountId
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
        - name: settlement_id
          in: query
          description: Include transactions for the settlement ID
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
            description: Include transactions for the settlement ID
            nullable: true
            example: true
        - name: include_type
          in: query
          description: Include the transaction type entity in the response
          schema:
            type: boolean
            description: Include the transaction type entity in the response
            example: true
        - name: start_dt
          in: query
          description: Inclusive start date to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Inclusive start date to filter records by
            format: date-time
            example: '2024-05-30T12:14:56'
        - name: end_dt
          in: query
          description: Exclusive end date to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Exclusive end date to filter records by
            format: date-time
            nullable: true
            example: '2024-06-04T18:22:41'
        - name: status
          in: query
          description: Filter by transaction statuses
          schema:
            maxItems: 100
            type: array
            items:
              type: string
            description: Filter by transaction statuses
            nullable: true
            example:
              - succeeded
        - name: query
          in: query
          description: Filter by query
          schema:
            maxLength: 500
            type: string
            description: Filter by query
            nullable: true
            example: pmt_2YKewBonG4tgk12MheY3PiHDy
        - name: page
          in: query
          description: Page
          schema:
            maximum: 2147483647
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page
            format: int32
            nullable: true
            example: 8
        - name: size
          in: query
          description: Page size
          schema:
            maximum: 100
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page size
            format: int32
            nullable: true
            example: 20
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionPaginatedList'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - settlement:read
  '/settlements/{id}/fees':
    get:
      tags:
        - Settlements
      description: "    Get fee line items and summary for a settlement in the Account.\n\n    ### Permissions\n    * `settlement:read`"
      operationId: Get fees for a settlement
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SettlementFees'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - settlement:read
  '/accounts/{accountId}/settlements/{id}/fees':
    get:
      tags:
        - Settlements
      description: "    Get fee line items and summary for a settlement by account ID.\n\n    ### Permissions\n    * `settlement:read`"
      operationId: Get fees for a settlement by account ID
      parameters:
        - name: accountId
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SettlementFees'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - settlement:read
  /statements:
    get:
      tags:
        - Statements
      description: "    Get a paginated list of statements for the Account.\n\n    ### Permissions\n    * `statement:read`"
      operationId: Get all statements
      parameters:
        - name: start_dt
          in: query
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            format: date-time
        - name: end_dt
          in: query
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            format: date-time
        - name: query
          in: query
          schema:
            maxLength: 500
            type: string
            nullable: true
        - name: ParsedStartDate
          in: query
          schema:
            type: string
            format: date-time
            nullable: true
        - name: ParsedEndDate
          in: query
          schema:
            type: string
            format: date-time
            nullable: true
        - name: page
          in: query
          description: Page
          schema:
            maximum: 2147483647
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page
            format: int32
            nullable: true
            example: 8
        - name: size
          in: query
          description: Page size
          schema:
            maximum: 100
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page size
            format: int32
            nullable: true
            example: 20
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountStatementPaginatedList'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - statement:read
  '/statements/{id}':
    get:
      tags:
        - Statements
      description: "    Download the PDF for a statement by ID.\n\n    ### Permissions\n    * `statement:read`"
      operationId: Get PDF Statement by ID
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      responses:
        '200':
          description: OK
          content:
            application/pdf:
              schema:
                type: string
                format: binary
        '401':
          description: Unauthorized
          content:
            application/pdf:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: Forbidden
          content:
            application/pdf:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: Not Found
          content:
            application/pdf:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - statement:read
  '/three-d-secure/sessions/{id}':
    get:
      tags:
        - 3D Secure
      description: "    Get a 3DS session by ID for the Account.\n\n    ### Permissions\n    * `payment:read`"
      operationId: 3DS GetById
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ThreeDsSession'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - payment:read
            - payment-method:read
  /transactions:
    get:
      tags:
        - Transactions
      description: "    Get a list of transactions for the Account.\n\n    ### Permissions\n    * `transaction:read`"
      operationId: Get all transactions
      parameters:
        - name: settlement_id
          in: query
          description: Include transactions for the settlement ID
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
            description: Include transactions for the settlement ID
            nullable: true
            example: true
        - name: include_type
          in: query
          description: Include the transaction type entity in the response
          schema:
            type: boolean
            description: Include the transaction type entity in the response
            example: true
        - name: start_dt
          in: query
          description: Inclusive start date to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Inclusive start date to filter records by
            format: date-time
            example: '2024-05-30T12:14:56'
        - name: end_dt
          in: query
          description: Exclusive end date to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Exclusive end date to filter records by
            format: date-time
            nullable: true
            example: '2024-06-04T18:22:41'
        - name: status
          in: query
          description: Filter by transaction statuses
          schema:
            maxItems: 100
            type: array
            items:
              type: string
            description: Filter by transaction statuses
            nullable: true
            example:
              - succeeded
        - name: query
          in: query
          description: Filter by query
          schema:
            maxLength: 500
            type: string
            description: Filter by query
            nullable: true
            example: pmt_2YKewBonG4tgk12MheY3PiHDy
        - name: page
          in: query
          description: Page
          schema:
            maximum: 2147483647
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page
            format: int32
            nullable: true
            example: 8
        - name: size
          in: query
          description: Page size
          schema:
            maximum: 100
            minimum: 0
            exclusiveMinimum: true
            type: integer
            description: Page size
            format: int32
            nullable: true
            example: 20
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionPaginatedList'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - transaction:read
  '/transactions/{id}':
    get:
      tags:
        - Transactions
      description: "    Get a transaction by ID in the Account.\n\n    ### Permissions\n    * `transaction:read`"
      operationId: Get transaction by ID
      parameters:
        - name: id
          in: path
          required: true
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
        - name: include_type
          in: query
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Transaction'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - transaction:read
  /transactions/export:
    get:
      tags:
        - Transactions
      description: "    Export a list of transactions for the Account.\n\n    ### Permissions\n    * `transaction:read`"
      operationId: Export transactions
      parameters:
        - name: start_dt
          in: query
          description: Inclusive start date to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Inclusive start date to filter records by
            format: date-time
            example: '2024-05-30T12:14:56'
        - name: end_dt
          in: query
          description: Exclusive end date to filter records by
          schema:
            maxLength: 40
            pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})?$'
            type: string
            description: Exclusive end date to filter records by
            format: date-time
            nullable: true
            example: '2024-06-04T18:22:41'
        - name: status
          in: query
          description: Filter by transaction statuses
          schema:
            maxItems: 100
            type: array
            items:
              type: string
            description: Filter by transaction statuses
            nullable: true
            example:
              - succeeded
        - name: settlement_id
          in: query
          description: Include transactions for the settlement ID
          schema:
            maxLength: 50
            pattern: '^[a-zA-Z]{2,6}_[1-9A-HJ-NP-Za-km-z]+$'
            type: string
            description: Include transactions for the settlement ID
            nullable: true
            example: stl_BGDLZjBLAgNbyqCzJxchSoh5k
        - name: query
          in: query
          description: Filter by query
          schema:
            maxLength: 500
            type: string
            description: Filter by query
            nullable: true
            example: pmt_2YKewBonG4tgk12MheY3PiHDy
      responses:
        '200':
          description: OK
          content:
            text/csv:
              schema:
                type: string
                format: binary
            application/json:
              schema:
                type: string
                format: binary
        '400':
          description: Bad Request
          content:
            text/csv:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: Unauthorized
          content:
            text/csv:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: Forbidden
          content:
            text/csv:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: Not Found
          content:
            text/csv:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      security:
        - ApiKey:
            - transaction:read
components:
  schemas:
    AccountStatement:
      type: object
      properties:
        id:
          type: string
          description: Statement ID
          nullable: true
          example: stm_12345467
        processor:
          type: string
          description: Payment processor
          nullable: true
          example: moov
        processor_id:
          type: string
          description: Statement ID from the payment processor
          nullable: true
          example: moovid1234
        name:
          type: string
          description: Statement name
          nullable: true
          example: March Monthly Statement
        file_name:
          type: string
          description: Statement file name
          nullable: true
          example: 03-2026-PSQ-STATEMENT.pdf
        file_size:
          type: integer
          description: Statement file size in bytes
          format: int32
          nullable: true
          example: 2048
        start_date:
          type: string
          description: Billing period start date
          format: date-time
          nullable: true
          example: '2019-08-24T14:15:22Z'
        end_date:
          type: string
          description: Billing period end date
          format: date-time
          nullable: true
          example: '2019-08-24T14:15:22Z'
        created_at:
          type: string
          description: Date the statement was created
          format: date-time
          nullable: true
          example: '2019-08-24T14:15:22Z'
        modified_at:
          type: string
          description: Date the statement was last modified
          format: date-time
          nullable: true
          example: '2019-08-24T14:15:22Z'
      additionalProperties: false
    AccountStatementPaginatedList:
      type: object
      properties:
        pagination:
          $ref: '#/components/schemas/Pagination'
        data:
          maxItems: 100
          type: array
          items:
            $ref: '#/components/schemas/AccountStatement'
          nullable: true
      additionalProperties: false
    Address:
      required:
        - address_line_1
        - city
        - country
        - postal_code
        - state
      type: object
      properties:
        address_line_1:
          maxLength: 50
          minLength: 1
          type: string
          description: Street name
          example: 111 Colorado Ave.
        address_line_2:
          maxLength: 50
          type: string
          description: 'Apt, Suite or PO Box'
          nullable: true
          example: Apt 403
        city:
          maxLength: 100
          minLength: 1
          type: string
          description: City
          example: Des Moines
        state:
          maxLength: 3
          minLength: 2
          type: string
          description: 2 or 3 character ISO state code
          example: IA
        postal_code:
          maxLength: 30
          minLength: 1
          type: string
          description: Postal or zip code
          example: '51111'
        country:
          maxLength: 2
          minLength: 1
          type: string
          description: 2 character ISO country code
          example: US
      additionalProperties: false
    Adjustment:
      type: object
      properties:
        id:
          type: string
          description: Adjustment ID
          nullable: true
          example: adj_BGDLZjBLAgNbyqCzJxchSoh5k
        account_id:
          type: string
          description: Account ID
          nullable: true
          example: acc_B518niGwGYKzig6vtrRVZGGGV
        environment:
          type: string
          description: Environment - Can be `test` or `production`
          nullable: true
          example: test
        dispute_case_id:
          type: string
          description: ID of the dispute case associated this adjustment
          nullable: true
          example: dsp_BGDLZjBLAgNbyqCzJxchSoh5k
        transaction_id:
          type: string
          description: ID of the transaction created for this adjustment
          nullable: true
          example: trx_123465689
        amount:
          type: integer
          description: Amount in cents
          format: int64
          example: 50000
        currency:
          type: string
          description: 3 character ISO currency code
          nullable: true
          example: USD
        type:
          type: string
          description: Type of adjustment
          nullable: true
        created_at:
          type: string
          description: When the adjustment was created
          format: date-time
          nullable: true
        modified_at:
          type: string
          description: When the adjustment was last modified
          format: date-time
          nullable: true
        transaction:
          $ref: '#/components/schemas/Transaction'
      additionalProperties: false
    ApplePay:
      type: object
      properties:
        id:
          type: string
          description: Apple Pay ID
          nullable: true
          example: appl_Aw3U2eESBnq6DoYEFn8qaSMrA
        account_id:
          type: string
          description: Account ID
          nullable: true
          example: acc_B518niGwGYKzig6vtrRVZGGGV
        environment:
          type: string
          description: Environment - Can be `test` or `production`
          nullable: true
          example: production
        customer_id:
          type: string
          description: Customer ID
          nullable: true
          example: cus_7Ay5mcUXAxwrN6wQEQUVEHBCJ
        billing_details:
          $ref: '#/components/schemas/Address'
        expires_at:
          type: string
          description: Date Apple Pay token expires
          format: date-time
          nullable: true
          example: 2024-06-31T01:02:29.212Z
        created_at:
          type: string
          description: Date Apple Pay token was created
          format: date-time
          nullable: true
          example: '2024-06-30T01:02:29.212Z'
        modified_at:
          type: string
          description: Date Apple Pay token was modified
          format: date-time
          nullable: true
          example: '2024-06-30T01:02:29.212Z'
        token_type:
          type: string
          description: Apple Pay token type. Can be `dpan` or `mpan`
          nullable: true
          example: dpan
        last4:
          type: string
          description: Last 4 digits of the card
          nullable: true
          example: '4242'
        exp_month:
          type: string
          description: Card expiration month
          nullable: true
          example: '12'
        exp_year:
          type: string
          description: Card expiration year
          nullable: true
          example: '2025'
        brand:
          type: string
          description: Card brand
          nullable: true
          example: visa
        avs_code:
          type: string
          description: AVS code
          nullable: true
          example: Y
        cvv2_reply:
          type: string
          description: CVV2 reply
          nullable: true
          example: M
      additionalProperties: false
    ApplePayBillingContact:
      type: object
      properties:
        phoneNumber:
          type: string
          description: Contact phone number
          nullable: true
          example: '5551234567'
        emailAddress:
          type: string
          description: Contact email address
          nullable: true
          example: johnsmith@email.com
        givenName:
          type: string
          description: Contact given name
          nullable: true
          example: John
        familyName:
          type: string
          description: Contact family name
          nullable: true
          example: John
        phoneticGivenName:
          type: string
          description: Phonetic spelling of the contact's given name
          nullable: true
          example: John
        phoneticFamilyName:
          type: string
          description: Phonetic spelling of the contact's family name
          nullable: true
          example: Smith
        addressLines:
          type: array
          items:
            type: string
          description: Street portion of contact's address
          nullable: true
          example:
            - 111 Test St.
            - Apt 123
        subLocality:
          type: string
          description: 'Additional information associated with the location, typically defined at the city or town level (such as district or neighborhood), in a postal address'
          nullable: true
          example: Historic District
        locality:
          type: string
          description: City for the contact
          nullable: true
          example: San Francisco
        postalCode:
          type: string
          description: Zip code or postal code for the contact
          nullable: true
          example: '12345'
        subAdministrativeArea:
          type: string
          description: Subadministrative area (such as a county or other region) in a postal address
          nullable: true
          example: Clay
        administrativeArea:
          type: string
          description: State for the contact
          nullable: true
          example: CA
        country:
          type: string
          description: Name of the country or region for the contact
          nullable: true
          example: United States
        countryCode:
          type: string
          description: Contact’s two-letter ISO 3166 country code
          nullable: true
          example: US
      additionalProperties: false
    ApplePayDomain:
      type: object
      properties:
        id:
          type: string
          description: Apple Pay domain ID
          nullable: true
          example: apd_7Ay5mcUXAxwrN6wQEQUVEHBCJ
        account_id:
          type: string
          description: Account ID
          nullable: true
          example: acc_B518niGwGYKzig6vtrRVZGGGV
        environment:
          type: string
          description: Environment - Can be `test` or `production`
          nullable: true
          example: production
        domain:
          type: string
          description: URL of Apple Pay domain
          nullable: true
          example: examplewebsite.com
        status:
          type: string
          description: Apple Pay domain status
          nullable: true
          example: verified
        created_at:
          type: string
          description: Date Apple Pay domain was created
          format: date-time
          nullable: true
          example: '2024-06-30T01:02:29.212Z'
        modified_at:
          type: string
          description: Date Apple Pay domain was modified
          format: date-time
          nullable: true
          example: '2024-06-30T01:02:29.212Z'
      additionalProperties: false
    ApplePayDomainPaginatedList:
      type: object
      properties:
        pagination:
          $ref: '#/components/schemas/Pagination'
        data:
          maxItems: 100
          type: array
          items:
            $ref: '#/components/schemas/ApplePayDomain'
          nullable: true
      additionalProperties: false
    ApplePayPaginatedList:
      type: object
      properties:
        pagination:
          $ref: '#/components/schemas/Pagination'
        data:
          maxItems: 100
          type: array
          items:
            $ref: '#/components/schemas/ApplePay'
          nullable: true
      additionalProperties: false
    ApplePayPaymentData:
      type: object
      properties:
        data:
          type: string
          description: Encrypted payment data encoded as base64 string
          nullable: true
          example: OWNhNjMxMWItODJkOC00YTI3LTkyNjgtMzU5MjRlNzJmMzg1
        header:
          $ref: '#/components/schemas/ApplePayPaymentDataHeader'
        signature:
          type: string
          description: 'Base64 encoded PKCS #7 signature of the payment data and headers'
          nullable: true
          example: NTZjZmZhMzctZjU4NS00OWJhLWIxZWQtZTk0MmU4ZjZlYjVk
        version:
          type: string
          description: Version information about the payment token
          nullable: true
          example: EC_v1
      additionalProperties: false
    ApplePayPaymentDataHeader:
      type: object
      properties:
        applicationData:
          type: string
          description: Hex encoded SHA–256 hash of the original payment request
          nullable: true
          example: 33356261316566332D386463342D343865332D396666642D623432633836396433303837
        ephemeralPublicKey:
          type: string
          description: Base64 encoded X.509 public key. Applies only to `EC_v1` version
          nullable: true
          example: YTQyOGM2NWQtYmE3OC00NDMzLTlkOTEtNWQxMmRjOWVmMzg1
        wrappedKey:
          type: string
          description: Base64 encoded RSA public key. Applies only to `RSA_v1` version
          nullable: true
          example: ZWY2ZDUyYzMtMDkxYi00Yzg3LTkxYzEtNzEzM2NkODg5MjBm
        publicKeyHash:
          type: string
          description: 'Base64 encoded SHA–256 hash of [PublicSquare''s CSR](https://portal.publicsquare.com/.well-known/apple-developer-merchantid-domain-association)'
          nullable: true
          example: ZWY2ZDUyYzMtMDkxYi00Yzg3LTkxYzEtNzEzM2NkODg5MjBm
        transactionId:
          type: string
          description: Hexadecimal transaction identifier generated on the device
          nullable: true
          example: 39366432633036302D666530642D343036322D393466352D356136316264613535393533
      additionalProperties: false
    ApplePayPaymentMethod:
      type: object
      properties:
        displayName:
          type: string
          description: Display name of the card
          nullable: true
          example: Visa 4242
        network:
          type: string
          description: 'Payment card network. See [list](https://developer.apple.com/documentation/applepayontheweb/applepaypaymentrequest/supportednetworks) of supported card networks'
          nullable: true
          example: Visa
        type:
          type: string
          description: 'Card type. See [list](https://developer.apple.com/documentation/applepayontheweb/applepaypaymentmethodtype) of supported card types'
          nullable: true
          example: credit
        billingContact:
          $ref: '#/components/schemas/ApplePayBillingContact'
        paymentPass:
          $ref: '#/components/schemas/ApplePayPaymentPass'
      additionalProperties: false
    ApplePayPaymentPass:
      type: object
      properties:
        primaryAccountIdentifier:
          type: string
          description: Unique identifier for the primary account number for the payment card
          nullable: true
          example: 61663865633264392D393936642D346232622D623530342D646638323535363564303938
        primaryAccountNumberSuffix:
          type: string
          description: Version of the primary account number suitable for display in your UI
          nullable: true
          example: '363564303938'
        deviceAccountIdentifier:
          type: string
          description: Unique identifier for the device-specific account number
          nullable: true
          example: 38376231643061302D343936392D343138622D383838622D343135663435336135363931
        deviceAccountNumberSuffix:
          type: string
          description: Version of the device account number suitable for display in your UI
          nullable: true
          example: '336135363931'
        activationState:
          type: string
          description: 'Payment pass activation state. See [list](https://developer.apple.com/documentation/applepayontheweb/applepaypaymentpassactivationstate) of supported states'
          nullable: true
          example: activated
      additionalProperties: false
    ApplePaymentData:
      type: object
      properties:
        transactionIdentifier:
          type: string
          description: Transaction identifier
          nullable: true
          example: 39366432633036302D666530642D343036322D393466352D356136316264613535393533
        paymentData:
          $ref: '#/components/schemas/ApplePayPaymentData'
        paymentMethod:
          $ref: '#/components/schemas/ApplePayPaymentMethod'
      additionalProperties: false
    AttachPaymentMethodRequest:
      required:
        - customer_id
      type: object
      properties:
        customer_id:
          minLength: 1
          type: string
          description: Customer ID
          example: cus_7Ay5mcUXAxwrN6wQEQUVEHBCJ
      additionalProperties: false
    BalanceTransfer:
      type: object
      properties:
        id:
          type: string
          description: Balance Transfer ID
          nullable: true
          example: trnf_2YKewBonG4tgk12MheY3PiHDy
        account_id:
          type: string
          description: Account ID
          nullable: true
          example: acc_B518niGwGYKzig6vtrRVZGGGV
        environment:
          type: string
          description: Environment - Can be `test` or `production`
          nullable: true
          example: production
        external_id:
          type: string
          description: Balance Transfer ID in merchant's system
          nullable: true
          example: e797ef3c-b586-4333-af90-7168d8427d85
        transaction_id:
          type: string
          description: Transaction ID
          nullable: true
          example: trx_95rvMJvAVeG68W4NtLdfkN3LG
        payment_method:
          $ref: '#/components/schemas/PaymentPaymentMethod'
        status:
          type: string
          description: Transfer status
          nullable: true
          example: succeeded
        type:
          type: string
          description: Balance transfer type
          nullable: true
          example: invoice
        amount:
          type: integer
          description: Amount of the transfer in cents
          format: int64
          example: 10000
        currency:
          type: string
          description: 3 character ISO currency code
          nullable: true
          example: USD
        transaction:
          $ref: '#/components/schemas/Transaction'
        created_at:
          type: string
          description: Date balance transfer was created
          format: date-time
          nullable: true
          example: '2024-06-30T01:02:29.212Z'
        modified_at:
          type: string
          description: Date balance transfer was modified
          format: date-time
          nullable: true
          example: '2024-06-30T01:02:29.212Z'
      additionalProperties: false
    BalanceTransferPaginatedList:
      type: object
      properties:
        pagination:
          $ref: '#/components/schemas/Pagination'
        data:
          maxItems: 100
          type: array
          items:
            $ref: '#/components/schemas/BalanceTransfer'
          nullable: true
      additionalProperties: false
    BankAccount:
      type: object
      properties:
        id:
          type: string
          description: Bank Account ID
          nullable: true
          example: ba_7Ay5mcUXAxwrN6wQEQUVEHBCJ
        account_id:
          type: string
          description: Account ID
          nullable: true
          example: acc_B518niGwGYKzig6vtrRVZGGGV
        environment:
          type: string
          description: Environment - Can be `test` or `production`
          nullable: true
          example: production
        customer_id:
          type: string
          description: Customer ID
          nullable: true
          example: cus_7Ay5mcUXAxwrN6wQEQUVEHBCJ
        billing_details:
          $ref: '#/components/schemas/Address'
        created_at:
          type: string
          description: Date bank account was created
          format: date-time
          nullable: true
          example: '2024-06-30T01:02:29.212Z'
        modified_at:
          type: string
          description: Date bank account was modified
          format: date-time
          nullable: true
          example: '2024-06-30T01:02:29.212Z'
        bank_account_verification_id:
          type: string
          description: Bank account verification ID
          nullable: true
          example: bav_2b3c4d5e6f7g8h9i0j1k2l3m4
        status:
          type: string
          description: Bank account verification status
          nullable: true
          example: verified
        account_holder_name:
          type: string
          description: Account Holder Name
          nullable: true
          example: John Doe
        account_holder_type:
          type: string
          description: AccountHolderType - Can be `individual` or `company`
          nullable: true
          example: individual
        account_type:
          type: string
          description: AccountType - Can be `checking` or `savings`
          nullable: true
          example: checking
        routing_number:
          type: string
          description: Routing number
          nullable: true
          example: '110000000'
        account_number_last4:
          type: string
          description: Last 4 digits of the account number
          nullable: true
          example: '1011'
      additionalProperties: false
    BankAccountBalance:
      type: object
      properties:
        id:
          type: string
          description: Bank Account ID
          nullable: true
          example: ba_7Ay5mcUXAxwrN6wQEQUVEHBCJ
        account_id:
          type: string
          description: Account ID
          nullable: true
          example: acc_B518niGwGYKzig6vtrRVZGGGV
        environment:
          type: string
          description: Environment - Can be `test` or `production`
          nullable: true
          example: production
        available_balance:
          type: integer
          description: Available balance in cents. 1000 is $10.00
          format: int64
          nullable: true
          example: 1000
        current_balance:
          type: integer
          description: Current balance in cents. 1000 is $10.00
          format: int64
          nullable: true
          example: 1000
        limit_balance:
          type: integer
          description: Limit balance in cents. 1000 is $10.00
          format: int64
          nullable: true
          example: 1000
        last_refresh:
          type: string
          description: The last time the balance was refreshed
          nullable: true
          example: '2025-01-31T17:40:54.569261'
      additionalProperties: false
    BankAccountPaginatedList:
      type: object
      properties:
        pagination:
          $ref: '#/components/schemas/Pagination'
        data:
          maxItems: 100
          type: array
          items:
            $ref: '#/components/schemas/BankAccount'
          nullable: true
      additionalProperties: false
    BankAccountVerification:
      type: object
      properties:
        bank_account_verification_id:
          type: string
          description: Bank account verification ID
          nullable: true
          example: bav_2b3c4d5e6f7g8h9i0j1k2l3m4
      additionalProperties: false
    BankAccountVerificationIFrame:
      type: object
      properties:
        authorization_url:
          type: string
          description: URL to initiate the bank account verification process
          nullable: true
          example: https://verification.publicsquare.com/?authorizeToken=d65f1adb-8ebc-48dc-be8b-20c773ba1565
      additionalProperties: false
    CancelPaymentRequest:
      required:
        - payment_id
      type: object
      properties:
        payment_id:
          minLength: 1
          type: string
          description: Payment ID to cancel
          example: pmt_2YKewBonG4tgk12MheY3PiHDy
      additionalProperties: false
    CancelPayoutRequest:
      required:
        - payout_id
      type: object
      properties:
        payout_id:
          minLength: 1
          type: string
          description: Payout ID to cancel
          example: pyt_24NFPd3jSZFTxiaH9UwjuqNdP
      additionalProperties: false
    CancelRefundRequest:
      required:
        - refund_id
      type: object
      properties:
        refund_id:
          minLength: 1
          type: string
          description: Refund ID to cancel
          example: rfd_2YKewBonG4tgk12MheY3PiHDy
      additionalProperties: false
    CapturePaymentIntentRequest:
      type: object
      properties:
        amount:
          type: integer
          description: 'Amount to capture in cents. Must be greater than 0 and less than or equal to the authorized amount. If not provided, the full authorized amount will be captured. 1000 is $10.00'
          format: int64
          nullable: true
          example: 1000
      additionalProperties: false
    CapturePaymentRequest:
      required:
        - payment_id
      type: object
      properties:
        payment_id:
          minLength: 1
          type: string
          description: Payment ID to capture
          example: pmt_2YKewBonG4tgk12MheY3PiHDy
        amount:
          type: integer
          description: 'Amount of the payment in cents to capture. Must be less than or equal to the original payment amount. If no amount is provided, amount captured will be the capturable amount. 1000 is $10.00'
          format: int64
          nullable: true
          example: 1000
        external_id:
          maxLength: 100
          type: string
          description: 'Payment ID in merchant''s system. If set, will replace existing external_id for payment.'
          nullable: true
          example: e797ef3c-b586-4333-af90-7168d8427d85
      additionalProperties: false
    Card:
      type: object
      properties:
        id:
          type: string
          description: Card ID
          nullable: true
          example: card_8PajTnDVrviEJ8zYJDALFQm5t
        account_id:
          type: string
          description: Account ID
          nullable: true
          example: acc_B518niGwGYKzig6vtrRVZGGGV
        environment:
          type: string
          description: Environment - Can be `test` or `production`
          nullable: true
          example: production
        customer_id:
          type: string
          description: Customer ID
          nullable: true
          example: cus_7Ay5mcUXAxwrN6wQEQUVEHBCJ
        billing_details:
          $ref: '#/components/schemas/Address'
        created_at:
          type: string
          description: Date card was created
          format: date-time
          nullable: true
          example: '2024-06-30T01:02:29.212Z'
        modified_at:
          type: string
          description: Date card was modified
          format: date-time
          nullable: true
          example: '2024-06-30T01:02:29.212Z'
        cardholder_name:
          type: string
          description: Cardholder name
          nullable: true
          example: John Smith
        last4:
          type: string
          description: Last 4 digits of the card
          nullable: true
          example: '4242'
        exp_month:
          type: string
          description: Card expiration month
          nullable: true
          example: '12'
        exp_year:
          type: string
          description: Card expiration year
          nullable: true
          example: '2025'
        token:
          type: string
          description: Token of the card
          nullable: true
          example: d2cbc1b4-5c3a-45a3-9ee2-392a1c475ab4
        fingerprint:
          type: string
          description: Fingerprint of the card to identify uniqueness
          nullable: true
          example: CC2XvyoohnqecEq4r3FtXv6MdCx4TbaW1UUTdCCN5MNL
        brand:
          type: string
          description: Card brand
          nullable: true
          example: visa
        avs_code:
          type: string
          description: AVS code
          nullable: true
          example: Y
        cvv2_reply:
          type: string
          description: CVV2 reply
          nullable: true
          example: M
      additionalProperties: false
    CardPaginatedList:
      type: object
      properties:
        pagination:
          $ref: '#/components/schemas/Pagination'
        data:
          maxItems: 100
          type: array
          items:
            $ref: '#/components/schemas/Card'
          nullable: true
      additionalProperties: false
    CompletePaymentIntentRequest:
      type: object
      properties:
        three_d_secure:
          $ref: '#/components/schemas/CompleteThreeDsSessionRequest'
      additionalProperties: false
    CompleteThreeDsSessionRequest:
      type: object
      properties:
        session_id:
          type: string
          nullable: true
      additionalProperties: false
    ConfirmPaymentIntentRequest:
      type: object
      properties:
        three_d_secure:
          $ref: '#/components/schemas/ConfirmThreeDsRequest'
      additionalProperties: false
    ConfirmThreeDsRequest:
      required:
        - transport
      type: object
      properties:
        session_id:
          type: string
          nullable: true
        transport:
          minLength: 1
          type: string
        success_url:
          type: string
          nullable: true
        failure_url:
          type: string
          nullable: true
        challenge_preference:
          type: string
          nullable: true
        exemption_request_reason:
          type: string
          nullable: true
      additionalProperties: false
    CreateApplePayDomainRequest:
      required:
        - domain
      type: object
      properties:
        domain:
          maxLength: 250
          minLength: 1
          type: string
          description: 'Apple Pay domain where [PublicSquare CSR](https://portal.publicsquare.com/.well-known/apple-developer-merchantid-domain-association) is registered such as `https://<DOMAIN>/.well-known/apple-developer-merchantid-domain-association`'
          example: merchantsite.com
      additionalProperties: false
    CreateApplePayRequest:
      required:
        - apple_payment_data
      type: object
      properties:
        customer_id:
          type: string
          nullable: true
        apple_payment_data:
          $ref: '#/components/schemas/ApplePaymentData'
        billing_details:
          $ref: '#/components/schemas/Address'
      additionalProperties: false
    CreateApplePaySessionRequest:
      required:
        - display_name
        - domain
        - validation_url
      type: object
      properties:
        validation_url:
          minLength: 1
          type: string
          description: 'Validation URL returned from the [onvalidatemerchant](https://developer.apple.com/documentation/apple_pay_on_the_web/applepaysession/1778021-onvalidatemerchant) event. Default: https://apple-pay-gateway.apple.com/paymentservices/paymentSession'
          example: https://apple-pay-gateway.apple.com/paymentservices/paymentSession
        display_name:
          maxLength: 64
          minLength: 1
          type: string
          description: 'A string of 64 or fewer UTF-8 characters containing the canonical name for your store, suitable for display. A good display name remains a consistent value for the store and doesn''t contain dynamic values such as incrementing order numbers. Don’t localize the name. Use only characters from the supported character sets in the fonts [listed in the table below](https://developer.apple.com/documentation/applepayontheweb/requesting-an-apple-pay-payment-session#Provide-request-parameters).'
          example: My Ecommerce Store
        domain:
          minLength: 1
          type: string
          description: The fully qualified domain name of the website requesting the Apple Pay session.
          example: my-site.example.com
      additionalProperties: false
    CreateBalanceTransferRequest:
      required:
        - amount
        - type
      type: object
      properties:
        source_account_id:
          type: string
          description: Source Account ID. Defaults to merchant's account ID if not set.
          nullable: true
          example: acc_8ooQs32UCdriBvrHnVWbTmJbY
        destination_account_id:
          type: string
          description: Destination Account ID. Defaults to merchant's account ID if not set.
          nullable: true
          example: acc_B518niGwGYKzig6vtrRVZGGGV
        amount:
          minimum: 0
          exclusiveMinimum: true
          type: integer
          description: Amount of the transfer in cents. 1000 is $10.00
          format: int64
          example: 1000
        currency:
          maxLength: 3
          minLength: 3
          type: string
          description: 3 character ISO currency code
          nullable: true
          example: USD
        external_id:
          maxLength: 100
          type: string
          description: Transfer ID in merchant's system
          nullable: true
          example: e797ef3c-b586-4333-af90-7168d8427d85
        type:
          type: string
          description: Transfer type. Defaults to 'invoice'
          example: invoice
      additionalProperties: false
    CreateBankAccountRequest:
      type: object
      properties:
        bank_account_verification_id:
          type: string
          description: Bank account verification ID
          nullable: true
          example: bav_2b3c4d5e6f7g8h9i0j1k2l3m4
        account_holder_name:
          type: string
          description: Account Holder Name
          nullable: true
          example: John Doe
        account_holder_type:
          type: string
          description: AccountHolderType - Can be `individual` or `company`
          nullable: true
          example: individual
        account_type:
          type: string
          description: AccountType - Can be `checking` or `savings`
          nullable: true
          example: checking
        routing_number:
          type: string
          description: Routing Number
          nullable: true
          example: '123456789'
        account_number:
          type: string
          description: Account Number
          nullable: true
          example: '1234567891011'
        customer_id:
          type: string
          description: Customer ID
          nullable: true
          example: cus_7Ay5mcUXAxwrN6wQEQUVEHBCJ
        billing_details:
          $ref: '#/components/schemas/Address'
      additionalProperties: false
    CreateGooglePayRequest:
      required:
        - google_payment_data
      type: object
      properties:
        customer_id:
          type: string
          nullable: true
        google_payment_data:
          $ref: '#/components/schemas/GooglePaymentData'
        billing_details:
          $ref: '#/components/schemas/Address'
      additionalProperties: false
    CreatePaymentIntentRequest:
      required:
        - amount
      type: object
      properties:
        capture_method:
          type: string
          description: Capture method. Can be `Automatic` or `Manual`. Defaults to `Automatic`
          nullable: true
          example: Automatic
        description:
          maxLength: 500
          type: string
          description: An arbitrary string to describe the payment intent
          nullable: true
          example: 'Order #1234'
        metadata:
          type: object
          additionalProperties:
            type: string
          description: Set of key-value pairs for storing additional information
          nullable: true
        external_id:
          maxLength: 100
          type: string
          description: Payment ID in merchant's system
          nullable: true
          example: e797ef3c-b586-4333-af90-7168d8427d85
        amount:
          minimum: 0
          exclusiveMinimum: true
          type: integer
          description: Amount in cents. 1000 is $10.00
          format: int64
          example: 1000
        currency:
          maxLength: 3
          minLength: 3
          type: string
          description: 3 character ISO currency code
          nullable: true
          example: USD
        payment_method:
          $ref: '#/components/schemas/PaymentMethodRequest'
        customer:
          $ref: '#/components/schemas/SaveTransactionCustomerRequest'
        billing_details:
          $ref: '#/components/schemas/Address'
        shipping_address:
          $ref: '#/components/schemas/Address'
        dynamic_descriptor:
          $ref: '#/components/schemas/DynamicDescriptor'
        device_information:
          $ref: '#/components/schemas/SaveDeviceInformationRequest'
      additionalProperties: false
    CreatePaymentRequest:
      required:
        - amount
        - payment_method
      type: object
      properties:
        capture:
          type: boolean
          description: 'Defaults to true. When true, immediately captures the amount of the payment. When false, the amount can be captured later via the capture endpoint.'
          example: true
        recurring:
          $ref: '#/components/schemas/RecurringPaymentRequest'
        verification:
          $ref: '#/components/schemas/VerificationRequest'
        external_id:
          maxLength: 100
          type: string
          description: Payment ID in merchant's system
          nullable: true
          example: e797ef3c-b586-4333-af90-7168d8427d85
        amount:
          type: integer
          description: Amount in cents. 1000 is $10.00
          format: int64
          example: 1000
        currency:
          maxLength: 3
          minLength: 3
          type: string
          description: 3 character ISO currency code
          nullable: true
          example: USD
        payment_method:
          $ref: '#/components/schemas/PaymentMethodRequest'
        customer:
          $ref: '#/components/schemas/SaveTransactionCustomerRequest'
        billing_details:
          $ref: '#/components/schemas/Address'
        shipping_address:
          $ref: '#/components/schemas/Address'
        dynamic_descriptor:
          $ref: '#/components/schemas/DynamicDescriptor'
        device_information:
          $ref: '#/components/schemas/SaveDeviceInformationRequest'
      additionalProperties: false
    CreatePaymentTransferIntentItemRequest:
      required:
        - amount
        - seller_account_id
      type: object
      properties:
        seller_account_id:
          maxLength: 50
          type: string
          description: Seller Account ID
          example: acc_8ooQs32UCdriBvrHnVWbTmJbY
        external_id:
          maxLength: 100
          type: string
          description: Transfer item ID in merchant's system
          nullable: true
          example: e797ef3c-b586-4333-af90-7168d8427d85
        amount:
          minimum: 0
          exclusiveMinimum: true
          type: integer
          description: Amount of the transfer in cents. 1000 is $10.00
          format: int64
          example: 1000
        transfer_fee:
          type: integer
          description: Transfer fee in cents. Must be less than the transfer amount. 1000 is $10.00
          format: int64
          nullable: true
          example: 100
      additionalProperties: false
    CreatePaymentTransferIntentRequest:
      required:
        - items
        - payment_id
      type: object
      properties:
        payment_id:
          type: string
          description: Payment ID to create a transfer intent for
          example: pmt_2YKewBonG4tgk12MheY3PiHDy
        currency:
          maxLength: 3
          minLength: 3
          type: string
          description: 3 character ISO currency code
          nullable: true
          example: USD
        external_id:
          maxLength: 100
          type: string
          description: Transfer ID in merchant's system
          nullable: true
          example: e797ef3c-b586-4333-af90-7168d8427d85
        items:
          minItems: 1
          type: array
          items:
            $ref: '#/components/schemas/CreatePaymentTransferIntentItemRequest'
          description: Payment transfer intent items
      additionalProperties: false
    CreatePaymentTransferItemRequest:
      required:
        - amount
        - seller_account_id
      type: object
      properties:
        seller_account_id:
          minLength: 1
          type: string
          description: Seller Account ID
          example: acc_8ooQs32UCdriBvrHnVWbTmJbY
        external_id:
          maxLength: 100
          type: string
          description: Transfer ID in merchant's system
          nullable: true
          example: e797ef3c-b586-4333-af90-7168d8427d85
        amount:
          minimum: 0
          exclusiveMinimum: true
          type: integer
          description: Amount of the transfer in cents. 1000 is $10.00
          format: int64
          example: 1000
        transfer_fee:
          type: integer
          description: Transfer fee in cents. Must be less than the transfer amount. 1000 is $10.00
          format: int64
          nullable: true
          example: 100
      additionalProperties: false
    CreatePaymentTransferRequest:
      required:
        - items
        - payment_id
      type: object
      properties:
        payment_id:
          type: string
          description: 3 character ISO currency code
          example: USD
        currency:
          maxLength: 3
          minLength: 3
          type: string
          description: 3 character ISO currency code
          nullable: true
          example: USD
        external_id:
          maxLength: 100
          type: string
          description: Transfer ID in merchant's system
          nullable: true
          example: e797ef3c-b586-4333-af90-7168d8427d85
        items:
          minItems: 1
          type: array
          items:
            $ref: '#/components/schemas/CreatePaymentTransferItemRequest'
          description: Payment transfer items
      additionalProperties: false
    CreatePayoutRequest:
      required:
        - amount
        - payment_method
      type: object
      properties:
        external_id:
          maxLength: 100
          type: string
          description: Payout ID in merchant's system
          nullable: true
          example: 1268ce56-a4b5-43fa-8526-a500fc2140bb
        amount:
          minimum: 0
          exclusiveMinimum: true
          type: integer
          description: Amount of the payout in cents. 1000 is $10.00
          format: int64
          example: 1000
        currency:
          maxLength: 3
          minLength: 3
          type: string
          description: 3 character ISO currency code
          nullable: true
          example: USD
        payment_method:
          $ref: '#/components/schemas/PaymentMethodRequest'
        customer:
          $ref: '#/components/schemas/SaveTransactionCustomerRequest'
        billing_details:
          $ref: '#/components/schemas/Address'
        dynamic_descriptor:
          $ref: '#/components/schemas/DynamicDescriptor'
        device_information:
          $ref: '#/components/schemas/SaveDeviceInformationRequest'
        payout_type:
          type: string
          description: 'Payout type - can be `standard`, `same_day`, or `instant`. Defaults to `standard`'
          nullable: true
          example: standard
      additionalProperties: false
    CreateRefundRequest:
      required:
        - amount
        - payment_id
      type: object
      properties:
        external_id:
          maxLength: 100
          type: string
          description: Refund ID in merchant's system
          nullable: true
          example: e797ef3c-b586-4333-af90-7168d8427d85
        payment_id:
          minLength: 1
          type: string
          description: Payment ID to refund
          example: pmt_2YKewBonG4tgk12MheY3PiHDy
        amount:
          minimum: 0
          exclusiveMinimum: true
          type: integer
          description: Amount of the refund in cents. 1000 is $10.00
          format: int64
          example: 500
        currency:
          maxLength: 3
          minLength: 3
          type: string
          description: 3 character ISO currency code
          nullable: true
          example: USD
        reason:
          maxLength: 500
          type: string
          description: Optional reason for the refund
          nullable: true
          example: Refunding shipping
        device_information:
          $ref: '#/components/schemas/SaveDeviceInformationRequest'
      additionalProperties: false
    CreateRefundTransferItemRequest:
      required:
        - amount
        - payment_transfer_item_id
      type: object
      properties:
        payment_transfer_item_id:
          minLength: 1
          type: string
          description: Payment transfer item ID
          example: trnf_7yFLQWACr3DYDSz1xpoEAVfdq
        external_id:
          maxLength: 100
          type: string
          description: Transfer item ID in merchant's system
          nullable: true
          example: e797ef3c-b586-4333-af90-7168d8427d85
        amount:
          minimum: 0
          exclusiveMinimum: true
          type: integer
          description: Amount of the transfer in cents to refund. Must be less than or equal to the remaining payment transfer amount. 1000 is $10.00
          format: int64
          example: 1000
        transfer_fee:
          type: integer
          description: Transfer fee in cents. Must be less than or equal to the remaining payment transfer fee amount. 1000 is $10.00
          format: int64
          nullable: true
          example: 100
      additionalProperties: false
    CreateRefundTransferRequest:
      required:
        - items
        - payment_transfer_id
        - refund_id
      type: object
      properties:
        refund_id:
          minLength: 1
          type: string
          description: Refund ID to cancel
          example: rfd_2YKewBonG4tgk12MheY3PiHDy
        payment_transfer_id:
          minLength: 1
          type: string
          description: Payment transfer ID
          example: trnf_7yFLQWACr3DYDSz1xpoEAVfdq
        currency:
          maxLength: 3
          minLength: 3
          type: string
          description: 3 character ISO currency code
          nullable: true
          example: USD
        external_id:
          maxLength: 100
          type: string
          description: Transfer ID in merchant's system
          nullable: true
          example: e797ef3c-b586-4333-af90-7168d8427d85
        items:
          minItems: 1
          type: array
          items:
            $ref: '#/components/schemas/CreateRefundTransferItemRequest'
          description: Refund transfer items
      additionalProperties: false
    DeviceInformation:
      required:
        - ip_address
      type: object
      properties:
        browser_family:
          type: string
          description: Browser information
          nullable: true
          example: Mobile Safari
        os_family:
          type: string
          description: Operating system information
          nullable: true
          example: iOS
        device_family:
          type: string
          description: Device information
          nullable: true
          example: iPhone
        ip_address:
          maxLength: 40
          minLength: 1
          type: string
          description: IP address of the customer
          example: 192.168.1.1
        user_agent:
          maxLength: 500
          type: string
          description: Customer user agent
          nullable: true
          example: 'Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3'
      additionalProperties: false
    DisputeCase:
      type: object
      properties:
        id:
          type: string
          description: Dispute Case ID
          nullable: true
          example: dsp_BGDLZjBLAgNbyqCzJxchSoh5k
        account_id:
          type: string
          description: Account ID
          nullable: true
          example: acc_B518niGwGYKzig6vtrRVZGGGV
        environment:
          type: string
          description: Environment - Can be `test` or `production`
          nullable: true
          example: test
        status:
          type: string
          description: Status of the dispute
          nullable: true
        evidence_submitted:
          type: boolean
          description: Whether evidence has been submitted for this dispute
        processor:
          type: string
          description: Payment processor name
          nullable: true
          example: nuvei
        processor_id:
          type: string
          description: Processor's dispute ID
          nullable: true
          example: id132456798
        disputed_transaction_id:
          type: string
          description: Transaction ID being disputed
          nullable: true
          example: trx_123465689
        disputed_transaction_type:
          type: string
          description: Type of the transaction being disputed
          nullable: true
          example: payment
        retrieval_reference_number:
          type: string
          description: Retrieval Reference Number
          nullable: true
        acquirer_reference_number:
          type: string
          description: Acquirer Reference Number
          nullable: true
          example: '123456789012'
        amount_disputed:
          type: integer
          description: Amount disputed in cents
          format: int64
          nullable: true
          example: 50000
        currency:
          type: string
          description: 3 character ISO currency code of the disputed amount
          nullable: true
          example: USD
        reason:
          type: string
          description: Reason for the dispute
          nullable: true
        card_brand:
          type: string
          description: Card brand involved in the dispute
          nullable: true
        description:
          type: string
          description: Detailed description of the dispute
          nullable: true
        disputed_at:
          type: string
          description: When the dispute was initiated
          format: date-time
          nullable: true
        due_at:
          type: string
          description: When the dispute response is due
          format: date-time
          nullable: true
        created_at:
          type: string
          description: When the dispute record was created
          format: date-time
          nullable: true
        modified_at:
          type: string
          description: When the dispute record was last modified
          format: date-time
          nullable: true
        adjustments:
          type: array
          items:
            $ref: '#/components/schemas/Adjustment'
          description: Collection of adjustments associated with this dispute
          nullable: true
        disputed_transaction:
          $ref: '#/components/schemas/Transaction'
      additionalProperties: false
    DisputeCasePaginatedList:
      type: object
      properties:
        pagination:
          $ref: '#/components/schemas/Pagination'
        data:
          maxItems: 100
          type: array
          items:
            $ref: '#/components/schemas/DisputeCase'
          nullable: true
      additionalProperties: false
    DisputeCasePaginatedQuery:
      type: object
      properties:
        start_disputed_at:
          type: string
          description: Inclusive lower bound on the `disputed_at` field (when the dispute was created) to filter records by
          nullable: true
          example: '2024-05-30T12:14:56'
        end_disputed_at:
          type: string
          description: Exclusive upper bound on the `disputed_at` field (when the dispute was created) to filter records by
          nullable: true
          example: '2024-06-04T18:22:41'
        start_due_at:
          type: string
          description: Inclusive lower bound on the `due_at` field (the deadline for response) to filter records by
          nullable: true
          example: '2024-05-30T12:14:56'
        end_due_at:
          type: string
          description: Exclusive upper bound on the `due_at` field (the deadline for response) to filter records by
          nullable: true
          example: '2024-06-04T18:22:41'
        query:
          maxLength: 500
          type: string
          description: Search query to filter records by
          nullable: true
          example: query
        page:
          maximum: 2147483647
          minimum: 0
          exclusiveMinimum: true
          type: integer
          description: Page
          format: int32
          nullable: true
          example: 8
        size:
          maximum: 100
          minimum: 0
          exclusiveMinimum: true
          type: integer
          description: Page size
          format: int32
          nullable: true
          example: 20
      additionalProperties: false
    DynamicDescriptor:
      type: object
      properties:
        merchant_name:
          type: string
          description: Merchant name
          nullable: true
          example: Test Corporation
        merchant_contact:
          type: string
          description: Merchant contact information
          nullable: true
          example: '+15552604982'
      additionalProperties: false
    Fee:
      type: object
      properties:
        id:
          maxLength: 36
          pattern: '^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$'
          type: string
          description: Fee ID
          format: uuid
          example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        source:
          type: string
          description: Fee source
          nullable: true
          example: transaction
        category:
          type: string
          description: Fee category
          nullable: true
          example: processing
        transaction_id:
          type: string
          description: Transaction ID associated with the fee
          nullable: true
          example: txn_abc123
        settlement_id:
          type: string
          description: Settlement ID associated with the fee
          nullable: true
          example: stl_abc123
        fee_name:
          type: string
          description: Fee name
          nullable: true
          example: Processing fee
        amount:
          type: integer
          description: Fee amount in cents
          format: int64
          example: 150
        currency:
          type: string
          description: 3 character ISO currency code
          nullable: true
          example: USD
        processor_fee_id:
          type: string
          description: Processor fee ID
          nullable: true
          example: pf_abc123
        description:
          type: string
          description: Fee description
          nullable: true
          example: Credit card processing fee
        created_at:
          type: string
          description: Date the fee was created
          format: date-time
          nullable: true
        modified_at:
          type: string
          description: Date the fee was last modified
          format: date-time
          nullable: true
      additionalProperties: false
    FraudDetails:
      type: object
      properties:
        decision:
          type: string
          description: 'Fraud decision for the payment. Values can be `accept`, `reject`, or `review`'
          nullable: true
          example: accept
        rules:
          type: array
          items:
            $ref: '#/components/schemas/FraudRule'
          description: Triggered fraud rules
          nullable: true
      additionalProperties: false
    FraudRule:
      type: object
      properties:
        rule_engine:
          type: string
          description: Rule engine name
          nullable: true
          example: nuvei
        rule_id:
          type: string
          description: Rule Id
          nullable: true
          example: '1287'
        rule_description:
          type: string
          description: Description
          nullable: true
          example: Stolen card
      additionalProperties: false
    GetPaymentIntentsRequest:
      type: object
      properties:
        start_date:
          maxLength: 40
          type: string
          description: Inclusive start date to filter records by
          nullable: true
          example: '2024-05-30T12:14:56'
        end_dt:
          type: string
          description: Exclusive end date to filter records by
          nullable: true
          example: '2024-06-04T18:22:41'
        status:
          type: array
          items:
            type: string
          description: Filter by transaction statuses
          nullable: true
          example:
            - succeeded
        query:
          maxLength: 500
          type: string
          description: Filter by query
          nullable: true
          example: pmt_2YKewBonG4tgk12MheY3PiHDy
        page:
          maximum: 2147483647
          minimum: 0
          exclusiveMinimum: true
          type: integer
          description: Page
          format: int32
          nullable: true
          example: 8
        size:
          maximum: 100
          minimum: 0
          exclusiveMinimum: true
          type: integer
          description: Page size
          format: int32
          nullable: true
          example: 20
      additionalProperties: false
    GetPaymentsRequest:
      type: object
      properties:
        fraud_details.decision:
          type: array
          items:
            type: string
          description: Filter by fraud decisions
          nullable: true
          example:
            - accept
        start_date:
          maxLength: 40
          type: string
          description: Inclusive start date to filter records by
          nullable: true
          example: '2024-05-30T12:14:56'
        end_dt:
          type: string
          description: Exclusive end date to filter records by
          nullable: true
          example: '2024-06-04T18:22:41'
        status:
          type: array
          items:
            type: string
          description: Filter by transaction statuses
          nullable: true
          example:
            - succeeded
        query:
          maxLength: 500
          type: string
          description: Filter by query
          nullable: true
          example: pmt_2YKewBonG4tgk12MheY3PiHDy
        page:
          maximum: 2147483647
          minimum: 0
          exclusiveMinimum: true
          type: integer
          description: Page
          format: int32
          nullable: true
          example: 8
        size:
          maximum: 100
          minimum: 0
          exclusiveMinimum: true
          type: integer
          description: Page size
          format: int32
          nullable: true
          example: 20
      additionalProperties: false
    GetStatementsRequest:
      type: object
      properties:
        startDate:
          maxLength: 40
          type: string
          nullable: true
        endDate:
          maxLength: 40
          type: string
          nullable: true
        query:
          maxLength: 500
          type: string
          nullable: true
        parsedStartDate:
          type: string
          format: date-time
          nullable: true
          readOnly: true
        parsedEndDate:
          type: string
          format: date-time
          nullable: true
          readOnly: true
        page:
          maximum: 2147483647
          minimum: 0
          exclusiveMinimum: true
          type: integer
          description: Page
          format: int32
          nullable: true
          example: 8
        size:
          maximum: 100
          minimum: 0
          exclusiveMinimum: true
          type: integer
          description: Page size
          format: int32
          nullable: true
          example: 20
      additionalProperties: false
    GetTransactionsRequest:
      type: object
      properties:
        settlement_id:
          maxLength: 50
          type: string
          description: Include transactions for the settlement ID
          nullable: true
          example: true
        include_type:
          type: boolean
          description: Include the transaction type entity in the response
          example: true
        start_date:
          maxLength: 40
          type: string
          description: Inclusive start date to filter records by
          nullable: true
          example: '2024-05-30T12:14:56'
        end_dt:
          type: string
          description: Exclusive end date to filter records by
          nullable: true
          example: '2024-06-04T18:22:41'
        status:
          type: array
          items:
            type: string
          description: Filter by transaction statuses
          nullable: true
          example:
            - succeeded
        query:
          maxLength: 500
          type: string
          description: Filter by query
          nullable: true
          example: pmt_2YKewBonG4tgk12MheY3PiHDy
        page:
          maximum: 2147483647
          minimum: 0
          exclusiveMinimum: true
          type: integer
          description: Page
          format: int32
          nullable: true
          example: 8
        size:
          maximum: 100
          minimum: 0
          exclusiveMinimum: true
          type: integer
          description: Page size
          format: int32
          nullable: true
          example: 20
      additionalProperties: false
    GooglePay:
      type: object
      properties:
        id:
          type: string
          description: Google Pay ID
          nullable: true
          example: ggl_Aw3U2eESBnq6DoYEFn8qaSMrA
        account_id:
          type: string
          description: Account ID
          nullable: true
          example: acc_B518niGwGYKzig6vtrRVZGGGV
        environment:
          type: string
          description: Environment - Can be `test` or `production`
          nullable: true
          example: production
        customer_id:
          type: string
          description: Customer ID
          nullable: true
          example: cus_7Ay5mcUXAxwrN6wQEQUVEHBCJ
        billing_details:
          $ref: '#/components/schemas/Address'
        expires_at:
          type: string
          description: Date Google Pay token expires
          format: date-time
          nullable: true
          example: 2024-06-31T01:02:29.212Z
        created_at:
          type: string
          description: Date Google Pay token was created
          format: date-time
          nullable: true
          example: '2024-06-30T01:02:29.212Z'
        modified_at:
          type: string
          description: Date Google Pay token was modified
          format: date-time
          nullable: true
          example: '2024-06-30T01:02:29.212Z'
        token_type:
          type: string
          description: Google Pay token type. Can be `card` or `network_token`
          nullable: true
          example: card
        last4:
          type: string
          description: Last 4 digits of the card
          nullable: true
          example: '4242'
        exp_month:
          type: string
          description: Card expiration month
          nullable: true
          example: '12'
        exp_year:
          type: string
          description: Card expiration year
          nullable: true
          example: '2025'
        fingerprint:
          type: string
          description: Fingerprint of the Google Pay to identify uniqueness
          nullable: true
          example: 6Bh4Dnq4jrTte3Rp4k9u6HheqSXvhTEDi4qv5M4bNrbH
        brand:
          type: string
          description: Card brand
          nullable: true
          example: visa
        avs_code:
          type: string
          description: AVS code
          nullable: true
          example: Y
        cvv2_reply:
          type: string
          description: CVV2 reply
          nullable: true
          example: M
      additionalProperties: false
    GooglePayPaginatedList:
      type: object
      properties:
        pagination:
          $ref: '#/components/schemas/Pagination'
        data:
          maxItems: 100
          type: array
          items:
            $ref: '#/components/schemas/GooglePay'
          nullable: true
      additionalProperties: false
    GooglePaymentData:
      type: object
      properties:
        protocolVersion:
          type: string
          description: 'Identifies the encryption or signing scheme under which the message is created. It allows the protocol to evolve over time, if needed.'
          nullable: true
          example: ECv2
        signature:
          type: string
          description: 'Verifies that the message came from Google. It''s base64-encoded, and created with ECDSA by the intermediate signing key.'
          nullable: true
          example: MEYCIQCnLMiSD8IPzl6T3K3lYpUkg2DTVvf7U0QdDs7U7JC0kgIhAPZo+yS1C2bxJsd7goN8GSaiZxLHltJ+gge0PCHAPNrR
        intermediateSigningKey:
          $ref: '#/components/schemas/IntermediateSigningKey'
        signedMessage:
          type: string
          description: 'A JSON object serialized as an HTML-safe string that contains the encryptedMessage, ephemeralPublicKey, and tag. It''s serialized to simplify the signature verification process.'
          nullable: true
          example: '{"encryptedMessage":"u6OSvcYe4Op1ev+Ril7ItWsct/bfJX5KjqRj5dthZ5j18Wh2Uw2bpj+flI4QWNwMM0Fc4837XRKWbFEzUptUfYokkVk/z70+tl42H6bb4F0yqBMZZdq7LiHEeMPFpCN5RLqT47ZT3cqTvkHLnW9Op7NsheHLLHvlvbXfl64pDQxJotWcyDEO/OkUVeBDRuGzeD16fHfwuqkfhaJLciLJjqoxKqJpp5EG1QyAgpXlN9lhb6RWGMdzzBwGK/2WLn2MksDSAKbLQj20dgigaXdlJBGllf0JM2V8Nzn0m5+Ayc59txZrGylKNhlTHtf5a2eVbDbk5Gdl95m8ku6BI5BELiD8LXPBm2Is8/OhaGxFI6OQH4l1MrxsM4o7o7aQZYfDOoQfqe86rXraxQkMlxTUIR1I37hPAIS0wuzRfwsldE0ZDVBwuQbjgiYEE1VJ+Gy9k5bfdmmaAz3+y6VVVlEs8lZvr1jyxps2PteI0/atUjaUyRyAIw73Go8HjlghMtzhG4yf7ILV16dvhL+wqxF9WKss7ghELTjPvHU2wY+ZR9nMK8cdmTj4Aac2i3afOe4KMTnvj5+JtJ02iKn8pmg\u003d","ephemeralPublicKey":"BMFmebZ8rbQ0BPtvNSuaUCigbO7h1DUR4Q6lAvDncv0Ihpdvm/XHjLaXur5St+5kjnq/enEs2QsNtu+FgTferNg\u003d","tag":"lmIPzIPABMdOP5S1pnLXw5fXQWlZ4XmbIN7ntQh8EsI\u003d"}'
      additionalProperties: false
    IntermediateSigningKey:
      type: object
      properties:
        signedKey:
          type: string
          description: A base64-encoded message that contains payment description of the key. It's a serialized JSON object that contains keyValue and keyExpiration.
          nullable: true
          example: '{"keyValue":"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZi4q8JRePfO5GvBInkXH3hRkAsnXqqD9IyzO1bKdaHMSr210+UVRUYxfswX5eljfrF/z4vLaLQK7HU/CxHFAxQ\u003d\u003d","keyExpiration":"1755340217594"}'
        signatures:
          type: array
          items:
            type: string
          description: 'Verifies that the intermediate signing key came from Google. It''s base64-encoded, and created with ECDSA.'
          nullable: true
          example:
            - MEYCIQDR6NLHAngFSUXBl1derSYniTolnPwgzgY4BvnndE3m7gIhAJ1zaHSrxfvtsq11Ld4viyELKGcsRyd1VHqXITx4tIxc
      additionalProperties: false
    LastPaymentIntentError:
      type: object
      properties:
        code:
          type: string
          nullable: true
        decline_code:
          type: string
          nullable: true
        message:
          type: string
          nullable: true
      additionalProperties: false
    PaginatedQuery:
      type: object
      properties:
        page:
          maximum: 2147483647
          minimum: 0
          exclusiveMinimum: true
          type: integer
          description: Page
          format: int32
          nullable: true
          example: 8
        size:
          maximum: 100
          minimum: 0
          exclusiveMinimum: true
          type: integer
          description: Page size
          format: int32
          nullable: true
          example: 20
      additionalProperties: false
    Pagination:
      type: object
      properties:
        total_items:
          type: integer
          description: Total number of records
          format: int32
          nullable: true
          example: 1020
        page_number:
          type: integer
          description: Current page number
          format: int32
          nullable: true
          example: 23
        page_size:
          type: integer
          description: Page size
          format: int32
          example: 20
        total_pages:
          type: integer
          description: Total number of pages
          format: int32
          nullable: true
          example: 51
      additionalProperties: false
    Payment:
      type: object
      properties:
        id:
          type: string
          description: Payment ID
          nullable: true
          example: pmt_2YKewBonG4tgk12MheY3PiHDy
        account_id:
          type: string
          description: Account ID
          nullable: true
          example: acc_B518niGwGYKzig6vtrRVZGGGV
        environment:
          type: string
          description: Environment - Can be `test` or `production`
          nullable: true
          example: production
        external_id:
          type: string
          description: Payment ID in merchant's system
          nullable: true
          example: e797ef3c-b586-4333-af90-7168d8427d85
        status:
          type: string
          description: Payment status
          nullable: true
          example: succeeded
        declined_reason:
          type: string
          description: Decline reason
          nullable: true
          example: Card lost/stolen
        transaction_id:
          type: string
          description: Transaction ID
          nullable: true
          example: trx_95rvMJvAVeG68W4NtLdfkN3LG
        amount:
          type: integer
          description: Current amount of the payment in cents
          format: int64
          readOnly: true
          example: 9500
        amount_capturable:
          type: integer
          description: Amount that is capturable by payment in cents. Will be the amount authorized for capture
          format: int64
          example: 10000
        amount_charged:
          type: integer
          description: Amount of the payment charged in cents. Will be 0 if the payment requires capture
          format: int64
          example: 10000
        amount_refunded:
          type: integer
          description: Amount refunded of the payment in cents
          format: int64
          example: 500
        refunded:
          type: boolean
          description: Flag if payment has been fully refunded
          readOnly: true
          example: false
        currency:
          type: string
          description: 3 character ISO currency code
          nullable: true
          example: USD
        payment_method:
          $ref: '#/components/schemas/PaymentPaymentMethod'
        customer:
          $ref: '#/components/schemas/TransactionCustomer'
        billing_details:
          $ref: '#/components/schemas/Address'
        shipping_address:
          $ref: '#/components/schemas/Address'
        fraud_details:
          $ref: '#/components/schemas/FraudDetails'
        fees:
          type: array
          items:
            $ref: '#/components/schemas/Fee'
          description: Fee breakdown for this payment
          nullable: true
        fee_amount:
          type: integer
          description: Fee of the payment in cents
          format: int64
          example: 360
        net_amount:
          type: integer
          description: Net amount of the payment after fees in cents
          format: int64
          example: 9640
        transaction:
          $ref: '#/components/schemas/Transaction'
        dynamic_descriptor:
          $ref: '#/components/schemas/DynamicDescriptor'
        device_information:
          $ref: '#/components/schemas/DeviceInformation'
        recurring:
          $ref: '#/components/schemas/RecurringPayment'
        verification:
          $ref: '#/components/schemas/Verification'
        created_at:
          type: string
          description: Date payment was created
          format: date-time
          nullable: true
          example: '2024-06-30T01:02:29.212Z'
        modified_at:
          type: string
          description: Date payment was modified
          format: date-time
          nullable: true
          example: '2024-06-30T01:02:29.212Z'
      additionalProperties: false
    PaymentAccountBalance:
      type: object
      properties:
        account_id:
          type: string
          description: Account ID
          nullable: true
          example: acc_B518niGwGYKzig6vtrRVZGGGV
        account_name:
          type: string
          description: Account Name
          nullable: true
          example: 'Test Company, LLC'
      additionalProperties: false
    PaymentApplePay:
      type: object
      properties:
        id:
          type: string
          description: Payment Method ID
          nullable: true
          example: appl_Aw3U2eESBnq6DoYEFn8qaSMrA
        token_type:
          type: string
          description: Apple Pay token type. Can be `dpan` or `mpan`
          nullable: true
          example: dpan
        last4:
          type: string
          description: Last 4 digits of the card
          nullable: true
          example: '4242'
        exp_month:
          type: string
          description: Card expiration month
          nullable: true
          example: '12'
        exp_year:
          type: string
          description: Card expiration year
          nullable: true
          example: '2025'
        brand:
          type: string
          description: Card brand
          nullable: true
          example: visa
        avs_code:
          type: string
          description: AVS code
          nullable: true
          example: Y
        cvv2_reply:
          type: string
          description: CVV2 reply
          nullable: true
          example: M
      additionalProperties: false
    PaymentAttempt:
      type: object
      properties:
        id:
          type: string
          description: Payment attempt ID
          nullable: true
          example: pay_att_7yFLQWACr3DYDSz1xpoEAVfdq
        transaction_id:
          type: string
          description: Transaction ID sent to processor
          nullable: true
          example: trx_95rvMJvAVeG68W4NtLdfkN3LG
        idempotency_key:
          type: string
          description: Idempotency key from merchant request
          nullable: true
        status:
          type: string
          description: Payment attempt status
          nullable: true
          example: succeeded
        processor_transaction_id:
          type: string
          description: Processor's internal transaction ID
          nullable: true
        amount_capturable:
          type: integer
          description: Amount capturable in cents
          format: int64
          example: 10000
        amount_charged:
          type: integer
          description: Amount charged in cents
          format: int64
          example: 10000
        currency:
          type: string
          description: 3 character ISO currency code
          nullable: true
          example: USD
        processor:
          type: string
          description: Payment processor used for this attempt
          nullable: true
          example: nuvei
        decline_reason:
          type: string
          description: Decline reason if attempt was declined
          nullable: true
        payment_id:
          type: string
          description: Payment ID if attempt was promoted to a payment
          nullable: true
          example: pmt_2YKewBonG4tgk12MheY3PiHDy
        payment_intent_id:
          type: string
          description: Associated payment intent ID
          nullable: true
          example: pmt_int_7yFLQWACr3DYDSz1xpoEAVfdq
        external_id:
          type: string
          description: Merchant's external reference ID
          nullable: true
        error_details:
          type: string
          description: Error details if attempt failed
          nullable: true
        created_date:
          type: string
          description: Date the attempt was created
          format: date-time
          nullable: true
          example: '2024-06-30T01:02:29.212Z'
        modified_date:
          type: string
          description: Date the attempt was last modified
          format: date-time
          nullable: true
          example: '2024-06-30T01:02:29.212Z'
      additionalProperties: false
    PaymentAttemptPaginatedList:
      type: object
      properties:
        pagination:
          $ref: '#/components/schemas/Pagination'
        data:
          maxItems: 100
          type: array
          items:
            $ref: '#/components/schemas/PaymentAttempt'
          nullable: true
      additionalProperties: false
    PaymentBankAccount:
      type: object
      properties:
        id:
          type: string
          description: Payment Method ID
          nullable: true
          example: ba_7Ay5mcUXAxwrN6wQEQUVEHBCJ
        status:
          type: string
          description: Bank account verification status
          nullable: true
          example: verified
        account_holder_name:
          type: string
          description: Account Holder Name
          nullable: true
          example: John Doe
        account_holder_type:
          type: string
          description: AccountHolderType - Can be `individual` or `company`
          nullable: true
          example: individual
        account_type:
          type: string
          description: AccountType - Can be `checking` or `savings`
          nullable: true
          example: individual
        routing_number:
          type: string
          description: Routing Number
          nullable: true
          example: '123456789'
        account_number_last4:
          type: string
          description: Last 4 digits of the account number
          nullable: true
          example: '1011'
      additionalProperties: false
    PaymentCard:
      type: object
      properties:
        id:
          type: string
          description: Payment Method ID
          nullable: true
          example: card_8PajTnDVrviEJ8zYJDALFQm5t
        cardholder_name:
          type: string
          description: Cardholder name
          nullable: true
          example: John Smith
        last4:
          type: string
          description: Last 4 digits of the card
          nullable: true
          example: '4242'
        exp_month:
          type: string
          description: Card expiration month
          nullable: true
          example: '12'
        exp_year:
          type: string
          description: Card expiration year
          nullable: true
          example: '2025'
        fingerprint:
          type: string
          description: Fingerprint of the card to identify uniqueness
          nullable: true
          example: CC2XvyoohnqecEq4r3FtXv6MdCx4TbaW1UUTdCCN5MNL
        brand:
          type: string
          description: Card brand
          nullable: true
          example: visa
        avs_code:
          type: string
          description: AVS code
          nullable: true
          example: Y
        cvv2_reply:
          type: string
          description: CVV2 reply
          nullable: true
          example: M
      additionalProperties: false
    PaymentGooglePay:
      type: object
      properties:
        id:
          type: string
          description: Payment Method ID
          nullable: true
          example: ggl_Aw3U2eESBnq6DoYEFn8qaSMrA
        token_type:
          type: string
          description: Google Pay token type. Can be `card` or `network_token`
          nullable: true
          example: card
        last4:
          type: string
          description: Last 4 digits of the card
          nullable: true
          example: '4242'
        exp_month:
          type: string
          description: Card expiration month
          nullable: true
          example: '12'
        exp_year:
          type: string
          description: Card expiration year
          nullable: true
          example: '2025'
        fingerprint:
          type: string
          description: Fingerprint of the Google Pay to identify uniqueness
          nullable: true
          example: CC2XvyoohnqecEq4r3FtXv6MdCx4TbaW1UUTdCCN5MNL
        brand:
          type: string
          description: Card brand
          nullable: true
          example: visa
        avs_code:
          type: string
          description: AVS code
          nullable: true
          example: Y
        cvv2_reply:
          type: string
          description: CVV2 reply
          nullable: true
          example: M
      additionalProperties: false
    PaymentIntent:
      type: object
      properties:
        id:
          type: string
          description: Payment intent ID
          nullable: true
          example: pmt_int_7yFLQWACr3DYDSz1xpoEAVfdq
        account_id:
          type: string
          description: Account ID
          nullable: true
          example: acc_B518niGwGYKzig6vtrRVZGGGV
        environment:
          type: string
          description: Environment - Can be `test` or `production`
          nullable: true
          example: production
        external_id:
          type: string
          description: Payment intent ID in merchant's system
          nullable: true
          example: e797ef3c-b586-4333-af90-7168d8427d85
        status:
          type: string
          description: Payment intent status
          nullable: true
          example: requires_payment_method
        amount:
          type: integer
          description: Amount in cents
          format: int64
          example: 1000
        currency:
          type: string
          description: 3 character ISO currency code
          nullable: true
          example: USD
        payment_method:
          $ref: '#/components/schemas/PaymentPaymentMethod'
        customer:
          $ref: '#/components/schemas/TransactionCustomer'
        capture_method:
          type: string
          description: Capture method
          nullable: true
          example: automatic
        billing_details:
          $ref: '#/components/schemas/Address'
        shipping_address:
          $ref: '#/components/schemas/Address'
        description:
          type: string
          description: Description of the payment intent
          nullable: true
        dynamic_descriptor:
          $ref: '#/components/schemas/DynamicDescriptor'
        device_information:
          $ref: '#/components/schemas/DeviceInformation'
        next_action:
          $ref: '#/components/schemas/PaymentIntentNextAction'
        last_payment_error:
          $ref: '#/components/schemas/LastPaymentIntentError'
        payment_id:
          type: string
          description: Payment ID once created
          nullable: true
          example: pmt_2YKewBonG4tgk12MheY3PiHDy
        expires_date:
          type: string
          description: Date the payment intent expires
          format: date-time
          nullable: true
          example: '2024-06-30T01:02:29.212Z'
        cancellation_reason:
          type: string
          description: Reason for cancellation if canceled
          nullable: true
        canceled_date:
          type: string
          description: Date the payment intent was canceled
          format: date-time
          nullable: true
          example: '2024-06-30T01:02:29.212Z'
        confirmed_date:
          type: string
          description: Date the payment intent was confirmed
          format: date-time
          nullable: true
          example: '2024-06-30T01:02:29.212Z'
        succeeded_date:
          type: string
          description: Date the payment intent succeeded
          format: date-time
          nullable: true
          example: '2024-06-30T01:02:29.212Z'
        created_date:
          type: string
          description: Date the payment intent was created
          format: date-time
          nullable: true
          example: '2024-06-30T01:02:29.212Z'
        metadata:
          type: object
          additionalProperties:
            type: string
          description: Key-value pairs of additional information
          nullable: true
        modified_date:
          type: string
          description: Date the payment intent was last modified
          format: date-time
          nullable: true
          example: '2024-06-30T01:02:29.212Z'
        payment:
          $ref: '#/components/schemas/Payment'
      additionalProperties: false
    PaymentIntentNextAction:
      type: object
      properties:
        type:
          type: string
          nullable: true
        missing_fields:
          type: array
          items:
            type: string
          nullable: true
        three_d_secure:
          $ref: '#/components/schemas/ThreeDsNextAction'
      additionalProperties: false
    PaymentIntentPaginatedList:
      type: object
      properties:
        pagination:
          $ref: '#/components/schemas/Pagination'
        data:
          maxItems: 100
          type: array
          items:
            $ref: '#/components/schemas/PaymentIntent'
          nullable: true
      additionalProperties: false
    PaymentMethod:
      type: object
      properties:
        id:
          type: string
          description: Payment Method ID
          nullable: true
          example: card_8PajTnDVrviEJ8zYJDALFQm5t
        account_id:
          type: string
          description: Account ID
          nullable: true
          example: acc_B518niGwGYKzig6vtrRVZGGGV
        environment:
          type: string
          description: Environment - Can be `test` or `production`
          nullable: true
          example: production
        type:
          type: string
          description: Payment method type
          nullable: true
          example: card
        card:
          $ref: '#/components/schemas/PaymentMethodCard'
        bank_account:
          $ref: '#/components/schemas/PaymentMethodBankAccount'
        apple_pay:
          $ref: '#/components/schemas/PaymentMethodApplePay'
        google_pay:
          $ref: '#/components/schemas/PaymentMethodGooglePay'
        customer_id:
          type: string
          description: Customer ID
          nullable: true
          example: cus_7Ay5mcUXAxwrN6wQEQUVEHBCJ
        billing_details:
          $ref: '#/components/schemas/Address'
        created_at:
          type: string
          description: Date card was created
          format: date-time
          nullable: true
          example: '2024-06-30T01:02:29.212Z'
        modified_at:
          type: string
          description: Date card was modified
          format: date-time
          nullable: true
          example: '2024-06-30T01:02:29.212Z'
      additionalProperties: false
    PaymentMethodApplePay:
      type: object
      properties:
        token_type:
          type: string
          description: Apple Pay token type. Can be `dpan` or `mpan`
          nullable: true
          example: dpan
        last4:
          type: string
          description: Last 4 digits of the card
          nullable: true
          example: '4242'
        exp_month:
          type: string
          description: Card expiration month
          nullable: true
          example: '12'
        exp_year:
          type: string
          description: Card expiration year
          nullable: true
          example: '2025'
        brand:
          type: string
          description: Card brand
          nullable: true
          example: visa
        avs_code:
          type: string
          description: AVS code
          nullable: true
          example: Y
        cvv2_reply:
          type: string
          description: CVV2 reply
          nullable: true
          example: M
      additionalProperties: false
    PaymentMethodBankAccount:
      type: object
      properties:
        bank_account_verification_id:
          type: string
          description: Bank account verification ID
          nullable: true
          example: bav_2b3c4d5e6f7g8h9i0j1k2l3m4
        status:
          type: string
          description: Bank account verification status
          nullable: true
          example: verified
        account_holder_name:
          type: string
          description: Account Holder Name
          nullable: true
          example: John Doe
        account_holder_type:
          type: string
          description: AccountHolderType - Can be `individual` or `company`
          nullable: true
          example: individual
        account_type:
          type: string
          description: AccountType - Can be `checking` or `savings`
          nullable: true
          example: checking
        routing_number:
          type: string
          description: Routing number
          nullable: true
          example: '110000000'
        account_number_last4:
          type: string
          description: Last 4 digits of the account number
          nullable: true
          example: '1011'
      additionalProperties: false
    PaymentMethodCard:
      type: object
      properties:
        cardholder_name:
          type: string
          description: Cardholder name
          nullable: true
          example: John Smith
        last4:
          type: string
          description: Last 4 digits of the card
          nullable: true
          example: '4242'
        exp_month:
          type: string
          description: Card expiration month
          nullable: true
          example: '12'
        exp_year:
          type: string
          description: Card expiration year
          nullable: true
          example: '2025'
        token:
          type: string
          description: Token of the card
          nullable: true
          example: d2cbc1b4-5c3a-45a3-9ee2-392a1c475ab4
        fingerprint:
          type: string
          description: Fingerprint of the card to identify uniqueness
          nullable: true
          example: CC2XvyoohnqecEq4r3FtXv6MdCx4TbaW1UUTdCCN5MNL
        brand:
          type: string
          description: Card brand
          nullable: true
          example: visa
        avs_code:
          type: string
          description: AVS code
          nullable: true
          example: Y
        cvv2_reply:
          type: string
          description: CVV2 reply
          nullable: true
          example: M
      additionalProperties: false
    PaymentMethodGooglePay:
      type: object
      properties:
        token_type:
          type: string
          description: Google Pay token type. Can be `card` or `network_token`
          nullable: true
          example: card
        last4:
          type: string
          description: Last 4 digits of the card
          nullable: true
          example: '4242'
        exp_month:
          type: string
          description: Card expiration month
          nullable: true
          example: '12'
        exp_year:
          type: string
          description: Card expiration year
          nullable: true
          example: '2025'
        fingerprint:
          type: string
          description: Fingerprint of the Google Pay to identify uniqueness
          nullable: true
          example: 6Bh4Dnq4jrTte3Rp4k9u6HheqSXvhTEDi4qv5M4bNrbH
        brand:
          type: string
          description: Card brand
          nullable: true
          example: visa
        avs_code:
          type: string
          description: AVS code
          nullable: true
          example: Y
        cvv2_reply:
          type: string
          description: CVV2 reply
          nullable: true
          example: M
      additionalProperties: false
    PaymentMethodPaginatedList:
      type: object
      properties:
        pagination:
          $ref: '#/components/schemas/Pagination'
        data:
          maxItems: 100
          type: array
          items:
            $ref: '#/components/schemas/PaymentMethod'
          nullable: true
      additionalProperties: false
    PaymentMethodRequest:
      type: object
      properties:
        card:
          type: string
          description: Payment card
          nullable: true
        apple_pay:
          type: string
          description: Payment Apple Pay token
          nullable: true
        google_pay:
          type: string
          description: Payment Google Pay token
          nullable: true
        bank_account:
          type: string
          description: Payment bank account
          nullable: true
      additionalProperties: false
    PaymentPaginatedList:
      type: object
      properties:
        pagination:
          $ref: '#/components/schemas/Pagination'
        data:
          maxItems: 100
          type: array
          items:
            $ref: '#/components/schemas/Payment'
          nullable: true
      additionalProperties: false
    PaymentPaymentMethod:
      type: object
      properties:
        card:
          $ref: '#/components/schemas/PaymentCard'
        bank_account:
          $ref: '#/components/schemas/PaymentBankAccount'
        apple_pay:
          $ref: '#/components/schemas/PaymentApplePay'
        google_pay:
          $ref: '#/components/schemas/PaymentGooglePay'
        account_balance:
          $ref: '#/components/schemas/PaymentAccountBalance'
      additionalProperties: false
    PaymentTransfer:
      type: object
      properties:
        id:
          type: string
          description: Payment transfer ID
          nullable: true
          example: trnf_7yFLQWACr3DYDSz1xpoEAVfdq
        account_id:
          type: string
          description: Account ID
          nullable: true
          example: acc_B518niGwGYKzig6vtrRVZGGGV
        environment:
          type: string
          description: Environment - Can be `test` or `production`
          nullable: true
          example: production
        external_id:
          type: string
          description: Transfer ID in merchant's system
          nullable: true
          example: e797ef3c-b586-4333-af90-7168d8427d85
        status:
          type: string
          description: Transfer status
          nullable: true
          example: succeeded
        payment_id:
          type: string
          description: Payment ID
          nullable: true
          example: pmt_2YKewBonG4tgk12MheY3PiHDy
        transaction_id:
          type: string
          description: Transaction ID
          nullable: true
          example: trx_95rvMJvAVeG68W4NtLdfkN3LG
        total_amount:
          type: integer
          description: Total amount of the transfer in cents
          format: int64
          readOnly: true
          example: 10000
        currency:
          type: string
          description: 3 character ISO currency code
          nullable: true
          example: USD
        transaction:
          $ref: '#/components/schemas/Transaction'
        created_at:
          type: string
          description: Date payment transfer was created
          format: date-time
          nullable: true
          example: '2024-06-30T01:02:29.212Z'
        modified_at:
          type: string
          description: Date payment transfer was modified
          format: date-time
          nullable: true
          example: '2024-06-30T01:02:29.212Z'
        items:
          type: array
          items:
            $ref: '#/components/schemas/PaymentTransferItem'
          description: Payment transfer items
          nullable: true
      additionalProperties: false
    PaymentTransferIntent:
      type: object
      properties:
        id:
          type: string
          description: Payment transfer intent ID
          nullable: true
          example: trnf_int_7yFLQWACr3DYDSz1xpoEAVfdq
        account_id:
          type: string
          description: Account ID
          nullable: true
          example: acc_B518niGwGYKzig6vtrRVZGGGV
        environment:
          type: string
          description: Environment - Can be `test` or `production`
          nullable: true
          example: production
        status:
          type: string
          description: Intent status
          nullable: true
          example: pending
        external_id:
          type: string
          description: Transfer ID in merchant's system
          nullable: true
          example: e797ef3c-b586-4333-af90-7168d8427d85
        payment_id:
          type: string
          description: Payment ID
          nullable: true
          example: pmt_2YKewBonG4tgk12MheY3PiHDy
        currency:
          type: string
          description: 3 character ISO currency code
          nullable: true
          example: USD
        payment_transfer_id:
          type: string
          description: Pre-generated payment transfer ID that will be used when the intent is confirmed
          nullable: true
          example: trnf_7yFLQWACr3DYDSz1xpoEAVfdq
        total_amount:
          type: integer
          description: Total amount of the transfer in cents
          format: int64
          readOnly: true
          example: 10000
        items:
          type: array
          items:
            $ref: '#/components/schemas/PaymentTransferIntentItem'
          description: Payment transfer intent items
          nullable: true
        created_at:
          type: string
          description: Date payment transfer intent was created
          format: date-time
          nullable: true
          example: '2024-06-30T01:02:29.212Z'
        modified_at:
          type: string
          description: Date payment transfer intent was modified
          format: date-time
          nullable: true
          example: '2024-06-30T01:02:29.212Z'
      additionalProperties: false
    PaymentTransferIntentItem:
      type: object
      properties:
        id:
          type: string
          description: Payment transfer intent item ID
          nullable: true
          example: trfi_int_7yFLQWACr3DYDSz1xpoEAVfdq
        external_id:
          type: string
          description: Transfer item ID in merchant's system
          nullable: true
          example: e797ef3c-b586-4333-af90-7168d8427d85
        seller_account_id:
          type: string
          description: Seller Account ID
          nullable: true
          example: acc_8ooQs32UCdriBvrHnVWbTmJbY
        payment_transfer_item_id:
          type: string
          description: Payment Transfer Item ID
          nullable: true
          example: trfi_7yFLQWACr3DYDSz1xpoEAVfdq
        amount:
          type: integer
          description: Amount of the transfer in cents
          format: int64
          example: 10000
        transfer_fee:
          type: integer
          description: Transfer fee in cents. 1000 is $10.00
          format: int64
          nullable: true
          example: 100
      additionalProperties: false
    PaymentTransferIntentPaginatedList:
      type: object
      properties:
        pagination:
          $ref: '#/components/schemas/Pagination'
        data:
          maxItems: 100
          type: array
          items:
            $ref: '#/components/schemas/PaymentTransferIntent'
          nullable: true
      additionalProperties: false
    PaymentTransferItem:
      type: object
      properties:
        id:
          type: string
          description: Payment transfer item ID
          nullable: true
          example: trfi_7yFLQWACr3DYDSz1xpoEAVfdq
        external_id:
          type: string
          description: Transfer item ID in merchant's system
          nullable: true
          example: e797ef3c-b586-4333-af90-7168d8427d85
        amount:
          type: integer
          description: Amount of the transfer in cents
          format: int64
          example: 10000
        transfer_fee:
          type: integer
          description: Transfer fee in cents. 1000 is $10.00
          format: int64
          nullable: true
          example: 100
        seller_account_id:
          type: string
          description: Seller Account ID
          nullable: true
          example: acc_8ooQs32UCdriBvrHnVWbTmJbY
      additionalProperties: false
    PaymentTransferPaginatedList:
      type: object
      properties:
        pagination:
          $ref: '#/components/schemas/Pagination'
        data:
          maxItems: 100
          type: array
          items:
            $ref: '#/components/schemas/PaymentTransfer'
          nullable: true
      additionalProperties: false
    Payout:
      type: object
      properties:
        id:
          type: string
          description: Payout ID
          nullable: true
          example: pyt_24NFPd3jSZFTxiaH9UwjuqNdP
        account_id:
          type: string
          description: Account ID
          nullable: true
          example: acc_B518niGwGYKzig6vtrRVZGGGV
        environment:
          type: string
          description: Environment - Can be `test` or `production`
          nullable: true
          example: production
        external_id:
          type: string
          description: Payout ID in merchant's system
          nullable: true
          example: 1268ce56-a4b5-43fa-8526-a500fc2140bb
        status:
          type: string
          description: Payout status
          nullable: true
          example: succeeded
        declined_reason:
          type: string
          description: Decline reason
          nullable: true
          example: Card lost/stolen
        transaction_id:
          type: string
          description: Transaction ID
          nullable: true
          example: trx_6QgmXzQzk3S5K5EsR3DfEiMRj
        fees:
          type: array
          items:
            $ref: '#/components/schemas/Fee'
          description: Fee breakdown for this payout
          nullable: true
        fee_amount:
          type: integer
          description: Fee of the payout in cents
          format: int64
          example: 360
        amount:
          type: integer
          description: Amount of the payout in cents
          format: int64
          example: 9500
        currency:
          type: string
          description: 3 character ISO currency code
          nullable: true
          example: USD
        payment_method:
          $ref: '#/components/schemas/PaymentPaymentMethod'
        customer:
          $ref: '#/components/schemas/TransactionCustomer'
        billing_details:
          $ref: '#/components/schemas/Address'
        transaction:
          $ref: '#/components/schemas/Transaction'
        dynamic_descriptor:
          $ref: '#/components/schemas/DynamicDescriptor'
        device_information:
          $ref: '#/components/schemas/DeviceInformation'
        payout_type:
          type: string
          description: Payout type
          nullable: true
          example: standard
        created_at:
          type: string
          description: Date payment was created
          format: date-time
          nullable: true
          example: '2024-06-30T01:02:29.212Z'
        modified_at:
          type: string
          description: Date payment was modified
          format: date-time
          nullable: true
          example: '2024-06-30T01:02:29.212Z'
      additionalProperties: false
    PayoutPaginatedList:
      type: object
      properties:
        pagination:
          $ref: '#/components/schemas/Pagination'
        data:
          maxItems: 100
          type: array
          items:
            $ref: '#/components/schemas/Payout'
          nullable: true
      additionalProperties: false
    ProblemDetails:
      type: object
      properties:
        type:
          type: string
          nullable: true
        title:
          type: string
          nullable: true
        status:
          type: integer
          format: int32
          nullable: true
        detail:
          type: string
          nullable: true
        instance:
          type: string
          nullable: true
      additionalProperties: { }
    ProcessorTransaction:
      type: object
      properties:
        account_id:
          type: string
          description: Account ID
          nullable: true
          example: acc_B518niGwGYKzig6vtrRVZGGGV
        environment:
          type: string
          description: Environment - Can be `test` or `production`
          nullable: true
          example: production
        transaction_id:
          type: string
          description: Transaction ID
          nullable: true
          example: trx_95rvMJvAVeG68W4NtLdfkN3LG
        response_type:
          type: string
          description: Processor response type
          nullable: true
          example: auth
        processor_id:
          type: string
          description: Processor transaction ID
          nullable: true
          example: '7110000000010554769'
        processor:
          type: string
          description: Payment processor that processed the transaction
          nullable: true
          example: nuvei
        status:
          type: string
          description: Processor transaction status
          nullable: true
          example: succeeded
        response:
          type: string
          description: Processor JSON response
          nullable: true
        error_reason:
          type: string
          description: Processor error reason
          nullable: true
        metadata:
          type: object
          additionalProperties:
            type: string
            nullable: true
          description: Processor specific metadata
          nullable: true
        created_at:
          type: string
          description: Date processor transaction was created
          format: date-time
          nullable: true
          example: '2024-06-30T01:02:29.212Z'
      additionalProperties: false
    ProcessorTransactionPaginatedList:
      type: object
      properties:
        pagination:
          $ref: '#/components/schemas/Pagination'
        data:
          maxItems: 100
          type: array
          items:
            $ref: '#/components/schemas/ProcessorTransaction'
          nullable: true
      additionalProperties: false
    RecurringPayment:
      type: object
      properties:
        initial_payment_id:
          type: string
          description: Payment ID of the initial transaction for recurring payments
          nullable: true
          example: pmt_2YKewBonG4tgk12MheY3PiHDy
      additionalProperties: false
    RecurringPaymentRequest:
      type: object
      properties:
        initial_payment_id:
          type: string
          description: Payment ID of the initial transaction for recurring payments
          nullable: true
          example: pmt_2YKewBonG4tgk12MheY3PiHDy
      additionalProperties: false
    Refund:
      type: object
      properties:
        id:
          type: string
          description: Refund ID
          nullable: true
          example: rfd_2YKewBonG4tgk12MheY3PiHDy
        account_id:
          type: string
          description: Account ID
          nullable: true
          example: acc_B518niGwGYKzig6vtrRVZGGGV
        environment:
          type: string
          description: Environment - Can be `test` or `production`
          nullable: true
          example: production
        external_id:
          type: string
          description: Refund ID in merchant's system
          nullable: true
          example: e797ef3c-b586-4333-af90-7168d8427d85
        status:
          type: string
          description: Refund status
          nullable: true
          example: succeeded
        transaction_id:
          type: string
          description: Transaction ID
          nullable: true
          example: trx_95rvMJvAVeG68W4NtLdfkN3LG
        payment_id:
          type: string
          description: Payment ID
          nullable: true
          example: pmt_2YKewBonG4tgk12MheY3PiHDy
        amount:
          type: integer
          description: Amount of the refund in cents. 1000 is $10.00
          format: int64
          example: 500
        currency:
          type: string
          description: 3 character ISO currency code
          nullable: true
          example: USD
        reason:
          type: string
          description: Reason for the refund
          nullable: true
          example: Refunding shipping
        declined_reason:
          type: string
          description: Decline reason
          nullable: true
          example: Suspected fraud
        transaction:
          $ref: '#/components/schemas/Transaction'
        device_information:
          $ref: '#/components/schemas/DeviceInformation'
        created_at:
          type: string
          description: Date refund was created
          format: date-time
          nullable: true
          example: '2024-06-30T01:02:29.212Z'
        modified_at:
          type: string
          description: Date refund was modified
          format: date-time
          nullable: true
          example: '2024-06-30T01:02:29.212Z'
      additionalProperties: false
    RefundPaginatedList:
      type: object
      properties:
        pagination:
          $ref: '#/components/schemas/Pagination'
        data:
          maxItems: 100
          type: array
          items:
            $ref: '#/components/schemas/Refund'
          nullable: true
      additionalProperties: false
    RefundTransfer:
      type: object
      properties:
        id:
          type: string
          description: Refund transfer ID
          nullable: true
          example: trnf_7yFLQWACr3DYDSz1xpoEAVfdq
        account_id:
          type: string
          description: Account ID
          nullable: true
          example: acc_B518niGwGYKzig6vtrRVZGGGV
        environment:
          type: string
          description: Environment - Can be `test` or `production`
          nullable: true
          example: production
        external_id:
          type: string
          description: Transfer ID in merchant's system
          nullable: true
          example: e797ef3c-b586-4333-af90-7168d8427d85
        status:
          type: string
          description: Transfer status
          nullable: true
          example: succeeded
        refund_id:
          type: string
          description: Refund ID
          nullable: true
          example: rfd_2YKewBonG4tgk12MheY3PiHDy
        payment_transfer_id:
          type: string
          description: Transfer ID for the payment transfer
          nullable: true
          example: trnf_7yFLQWACr3DYDSz1xpoEAVfdq
        transaction_id:
          type: string
          description: Transaction ID
          nullable: true
          example: trx_95rvMJvAVeG68W4NtLdfkN3LG
        total_amount:
          type: integer
          description: Total amount of the transfer in cents
          format: int64
          readOnly: true
          example: 10000
        currency:
          type: string
          description: 3 character ISO currency code
          nullable: true
          example: USD
        transaction:
          $ref: '#/components/schemas/Transaction'
        created_at:
          type: string
          description: Date refund transfer was created
          format: date-time
          nullable: true
          example: '2024-06-30T01:02:29.212Z'
        modified_at:
          type: string
          description: Date refund transfer was modified
          format: date-time
          nullable: true
          example: '2024-06-30T01:02:29.212Z'
        items:
          type: array
          items:
            $ref: '#/components/schemas/RefundTransferItem'
          description: Refund transfer items
          nullable: true
      additionalProperties: false
    RefundTransferItem:
      type: object
      properties:
        id:
          type: string
          description: Payment transfer item ID
          nullable: true
          example: trfi_4iarm41gZ1qyxDoGfEEMXyryJ
        payment_transfer_item_id:
          type: string
          description: Payment transfer item ID
          nullable: true
          example: trfi_7yFLQWACr3DYDSz1xpoEAVfdq
        external_id:
          type: string
          description: Transfer item ID in merchant's system
          nullable: true
          example: e797ef3c-b586-4333-af90-7168d8427d85
        amount:
          type: integer
          description: Amount of the transfer in cents
          format: int64
          example: 10000
        transfer_fee:
          type: integer
          description: Transfer fee in cents. 1000 is $10.00
          format: int64
          nullable: true
          example: 100
        seller_account_id:
          type: string
          description: Seller Account ID
          nullable: true
          example: acc_8ooQs32UCdriBvrHnVWbTmJbY
      additionalProperties: false
    RefundTransferPaginatedList:
      type: object
      properties:
        pagination:
          $ref: '#/components/schemas/Pagination'
        data:
          maxItems: 100
          type: array
          items:
            $ref: '#/components/schemas/RefundTransfer'
          nullable: true
      additionalProperties: false
    SaveBankAccountVerificationRequest:
      required:
        - bank_account_id
        - request_id
        - verification_code
      type: object
      properties:
        verification_code:
          maxLength: 50
          minLength: 1
          type: string
          description: Bank account verification code
          example: 5e115eac-1209-4f19-641c-08d6d484e2fe
        request_id:
          maxLength: 50
          minLength: 1
          type: string
          description: Request ID for bank account verification session
          example: a5b739e0-9448-484d-b553-77d7fb8567e0
        bank_account_id:
          maxLength: 50
          minLength: 1
          type: string
          description: Account ID for bank account verification session
          example: ec3e418b-51c8-4eec-941e-e07230e3e3d8
      additionalProperties: false
    SaveDeviceInformationRequest:
      required:
        - ip_address
      type: object
      properties:
        ip_address:
          maxLength: 40
          minLength: 1
          type: string
          description: IP address of the customer
          example: 192.168.1.1
        user_agent:
          maxLength: 500
          type: string
          description: Customer user agent
          nullable: true
          example: 'Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3'
      additionalProperties: false
    SaveTransactionCustomerRequest:
      type: object
      properties:
        id:
          type: string
          description: Customer ID
          nullable: true
          example: cus_7Ay5mcUXAxwrN6wQEQUVEHBCJ
        external_id:
          type: string
          description: Customer ID in merchant's system
          nullable: true
          example: e797ef3c-b586-4333-af90-7168d8427d85
        business_name:
          type: string
          description: Name of the business if business customer type
          nullable: true
          example: 'Awesome Company, LLC'
        first_name:
          type: string
          description: First name of the person if person customer type
          nullable: true
          example: John
        last_name:
          type: string
          description: Last name of the person if person customer type
          nullable: true
          example: Smith
        government_identifier:
          type: string
          description: SSN or EIN of the customer
          nullable: true
          example: 48-294876839
        email:
          type: string
          description: Email address
          nullable: true
          example: john.smith@email.com
        phone:
          type: string
          description: Phone number
          nullable: true
          example: '+15554829347'
      additionalProperties: false
    Settlement:
      type: object
      properties:
        id:
          type: string
          description: Settlement ID
          nullable: true
          example: stl_BGDLZjBLAgNbyqCzJxchSoh5k
        account_id:
          type: string
          description: Account ID
          nullable: true
          example: acc_B518niGwGYKzig6vtrRVZGGGV
        environment:
          type: string
          description: Environment - Can be `test` or `production`
          nullable: true
          example: production
        status:
          type: string
          description: Settlement status
          nullable: true
          example: succeeded
        transaction_id:
          type: string
          description: Transaction ID
          nullable: true
          example: trx_95rvMJvAVeG68W4NtLdfkN3LG
        batch_id:
          type: string
          description: Batch ID for the settlement
          nullable: true
          example: PAYOUT_ABC123
        debit_amount:
          type: integer
          description: Total debit transactions amount of the settlement in cents. 1000 is $10.00
          format: int64
          example: 1500
        debit_count:
          type: integer
          description: Total number of debit transactions in the settlement
          format: int32
          example: 3
        credit_amount:
          type: integer
          description: Total credit transactions amount of the settlement in cents. 1000 is $10.00
          format: int64
          example: 500
        credit_count:
          type: integer
          description: Total number of credit transactions in the settlement
          format: int32
          example: 1
        fee_amount:
          type: integer
          description: Total fee amount of the settlement in cents. 1000 is $10.00
          format: int64
          example: 0
        fee_count:
          type: integer
          description: Total number of fee line items in the settlement
          format: int32
          example: 0
        total_count:
          type: integer
          description: Total number of transactions in the settlement
          format: int32
          example: 4
        amount:
          type: integer
          description: Total amount of the settlement in cents. 1000 is $10.00
          format: int64
          example: 1000
        currency:
          type: string
          description: 3 character ISO currency code
          nullable: true
          example: USD
        settled_at:
          type: string
          description: Date of the Settlement
          format: date-time
          example: '2024-06-30T00:00:00.000Z'
        transaction:
          $ref: '#/components/schemas/Transaction'
        created_at:
          type: string
          description: Date settlement was created
          format: date-time
          nullable: true
          example: '2024-06-30T01:02:29.212Z'
        modified_at:
          type: string
          description: Date settlement was modified
          format: date-time
          nullable: true
          example: '2024-06-30T01:02:29.212Z'
      additionalProperties: false
    SettlementFeeItem:
      type: object
      properties:
        id:
          maxLength: 36
          pattern: '^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$'
          type: string
          description: Fee ID
          format: uuid
          example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        source:
          type: string
          description: Fee source - Can be `transaction` or `non_transaction`
          nullable: true
          example: transaction
        transaction_id:
          type: string
          description: 'Transaction ID linked to this fee, if applicable'
          nullable: true
          example: trx_95rvMJvAVeG68W4NtLdfkN3LG
        category:
          type: string
          description: Fee category
          nullable: true
          example: processing
        fee_name:
          type: string
          description: Fee name
          nullable: true
          example: Processing fee
        amount:
          type: integer
          description: Fee amount in cents
          format: int64
          example: 25
        currency:
          type: string
          description: 3 character ISO currency code
          nullable: true
          example: USD
      additionalProperties: false
    SettlementFees:
      type: object
      properties:
        fees:
          type: array
          items:
            $ref: '#/components/schemas/SettlementFeeItem'
          description: Merchant-paid fee line items in the settlement. PSQ-internal partner fees are not included.
          nullable: true
        summary:
          $ref: '#/components/schemas/SettlementFeesSummary'
      additionalProperties: false
    SettlementFeesSummary:
      type: object
      properties:
        transaction_fees_total:
          type: integer
          description: Total amount of transaction-linked fees in cents
          format: int64
          example: 5420
        non_transaction_fees_total:
          type: integer
          description: Total amount of non-transaction fees in cents
          format: int64
          example: 100
        total_fees:
          type: integer
          description: Total amount of all fees in cents
          format: int64
          example: 5520
      additionalProperties: false
    SettlementPaginatedList:
      type: object
      properties:
        pagination:
          $ref: '#/components/schemas/Pagination'
        data:
          maxItems: 100
          type: array
          items:
            $ref: '#/components/schemas/Settlement'
          nullable: true
      additionalProperties: false
    ThreeDsNextAction:
      type: object
      properties:
        session_id:
          type: string
          nullable: true
        acs_challenge_url:
          type: string
          nullable: true
        acs_transaction_id:
          type: string
          nullable: true
        three_ds_version:
          type: string
          nullable: true
        transport:
          type: string
          nullable: true
        redirect_url:
          type: string
          nullable: true
      additionalProperties: false
    ThreeDsSession:
      type: object
      properties:
        id:
          type: string
          nullable: true
        bt_session_id:
          type: string
          nullable: true
        card_brand:
          type: string
          nullable: true
        additional_card_brands:
          type: array
          items:
            type: string
          nullable: true
        acs_transaction_id:
          type: string
          nullable: true
      additionalProperties: false
    Transaction:
      type: object
      properties:
        id:
          type: string
          description: Transaction ID
          nullable: true
          example: trx_95rvMJvAVeG68W4NtLdfkN3LG
        account_id:
          type: string
          description: Account ID
          nullable: true
          example: acc_B518niGwGYKzig6vtrRVZGGGV
        environment:
          type: string
          description: Environment - Can be `test` or `production`
          nullable: true
          example: production
        external_id:
          type: string
          description: Payment or Refund ID in merchant's system
          nullable: true
          example: e797ef3c-b586-4333-af90-7168d8427d85
        status:
          type: string
          description: Transaction status
          nullable: true
          example: succeeded
        amount:
          type: integer
          description: Amount of the transaction in cents. 1000 is $10.00
          format: int64
          example: 10000
        fee_amount:
          type: integer
          description: Fee of the transaction in cents
          format: int64
          example: 360
        net_amount:
          type: integer
          description: Net amount of the transaction in cents
          format: int64
          example: 9640
        currency:
          type: string
          description: 3 character ISO currency code
          nullable: true
          example: USD
        fees:
          type: array
          items:
            $ref: '#/components/schemas/Fee'
          description: Fee breakdown for this transaction
          nullable: true
        type_id:
          type: string
          description: ID of the transaction type
          nullable: true
          example: pmt_2YKewBonG4tgk12MheY3PiHDy
        type:
          type: string
          description: Type of the transaction
          nullable: true
          example: payment
        settlement_id:
          type: string
          description: ID of the settlement if the transaction has been settled
          nullable: true
          example: stl_BGDLZjBLAgNbyqCzJxchSoh5k
        processor:
          type: string
          description: Payment processor that processed the transaction
          nullable: true
          example: nuvei
        processor_id:
          type: string
          description: Payment processor transaction ID
          nullable: true
          example: '7110000000010554769'
        acquirer_id:
          type: string
          description: Payment acquirer transaction ID
          nullable: true
          example: '2630000240513800'
        transfer_item_id:
          type: string
          description: Merchant's transfer item ID
          nullable: true
          example: trnf_7yFLQWACr3DYDSz1xpoEAVfdq
        payment:
          $ref: '#/components/schemas/Payment'
        payout:
          $ref: '#/components/schemas/Payout'
        refund:
          $ref: '#/components/schemas/Refund'
        settlement:
          $ref: '#/components/schemas/Settlement'
        payment_transfer:
          $ref: '#/components/schemas/PaymentTransfer'
        refund_transfer:
          $ref: '#/components/schemas/RefundTransfer'
        balance_transfer:
          $ref: '#/components/schemas/BalanceTransfer'
        created_at:
          type: string
          description: Date transaction was created
          format: date-time
          nullable: true
          example: '2024-06-30T01:02:29.212Z'
        modified_at:
          type: string
          description: Date transaction was modified
          format: date-time
          nullable: true
          example: '2024-06-30T01:02:29.212Z'
      additionalProperties: false
    TransactionCustomer:
      type: object
      properties:
        id:
          type: string
          description: Customer ID
          nullable: true
          example: cus_7Ay5mcUXAxwrN6wQEQUVEHBCJ
        external_id:
          type: string
          description: Customer ID in merchant's system
          nullable: true
          example: e797ef3c-b586-4333-af90-7168d8427d85
        business_name:
          type: string
          description: Name of the business if business customer type
          nullable: true
          example: 'Awesome Company, LLC'
        first_name:
          type: string
          description: First name of the person if person customer type
          nullable: true
          example: John
        last_name:
          type: string
          description: Last name of the person if person customer type
          nullable: true
          example: Smith
        government_identifier_last4:
          type: string
          description: Last 4 of the SSN or EIN
          nullable: true
          example: '9642'
        email:
          type: string
          description: Email address
          nullable: true
          example: john.smith@email.com
        phone:
          type: string
          description: Phone number
          nullable: true
          example: '+15554829347'
      additionalProperties: false
    TransactionExportRequest:
      type: object
      properties:
        start_date:
          maxLength: 40
          type: string
          description: Inclusive start date to filter records by
          nullable: true
          example: '2024-05-30T12:14:56'
        end_dt:
          type: string
          description: Exclusive end date to filter records by
          nullable: true
          example: '2024-06-04T18:22:41'
        status:
          type: array
          items:
            type: string
          description: Filter by transaction statuses
          nullable: true
          example:
            - succeeded
        settlement_id:
          maxLength: 50
          type: string
          description: Include transactions for the settlement ID
          nullable: true
          example: stl_BGDLZjBLAgNbyqCzJxchSoh5k
        query:
          maxLength: 500
          type: string
          description: Filter by query
          nullable: true
          example: pmt_2YKewBonG4tgk12MheY3PiHDy
      additionalProperties: false
    TransactionPaginatedList:
      type: object
      properties:
        pagination:
          $ref: '#/components/schemas/Pagination'
        data:
          maxItems: 100
          type: array
          items:
            $ref: '#/components/schemas/Transaction'
          nullable: true
      additionalProperties: false
    TransactionPaginatedQuery:
      type: object
      properties:
        start_date:
          maxLength: 40
          type: string
          description: Inclusive start date to filter records by
          nullable: true
          example: '2024-05-30T12:14:56'
        end_dt:
          type: string
          description: Exclusive end date to filter records by
          nullable: true
          example: '2024-06-04T18:22:41'
        status:
          type: array
          items:
            type: string
          description: Filter by transaction statuses
          nullable: true
          example:
            - succeeded
        query:
          maxLength: 500
          type: string
          description: Filter by query
          nullable: true
          example: pmt_2YKewBonG4tgk12MheY3PiHDy
        page:
          maximum: 2147483647
          minimum: 0
          exclusiveMinimum: true
          type: integer
          description: Page
          format: int32
          nullable: true
          example: 8
        size:
          maximum: 100
          minimum: 0
          exclusiveMinimum: true
          type: integer
          description: Page size
          format: int32
          nullable: true
          example: 20
      additionalProperties: false
    UpdateApplePayRequest:
      type: object
      properties:
        customer_id:
          type: string
          description: Customer ID
          nullable: true
          example: cus_7Ay5mcUXAxwrN6wQEQUVEHBCJ
        billing_details:
          $ref: '#/components/schemas/Address'
      additionalProperties: false
    UpdateBankAccountRequest:
      type: object
      properties:
        customer_id:
          type: string
          description: Customer ID
          nullable: true
          example: cus_7Ay5mcUXAxwrN6wQEQUVEHBCJ
        account_holder_type:
          type: string
          description: AccountHolderType - Can be `individual` or `company`
          nullable: true
          example: individual
        account_type:
          type: string
          description: AccountType - Can be `checking` or `savings`
          nullable: true
          example: individual
        account_holder_name:
          maxLength: 200
          type: string
          description: Account Holder Name
          nullable: true
          example: John Doe
        billing_details:
          $ref: '#/components/schemas/Address'
      additionalProperties: false
    UpdateCardRequest:
      type: object
      properties:
        customer_id:
          type: string
          description: Customer ID
          nullable: true
          example: cus_7Ay5mcUXAxwrN6wQEQUVEHBCJ
        billing_details:
          $ref: '#/components/schemas/Address'
      additionalProperties: false
    UpdateGooglePayRequest:
      type: object
      properties:
        customer_id:
          type: string
          description: Customer ID
          nullable: true
          example: cus_7Ay5mcUXAxwrN6wQEQUVEHBCJ
        billing_details:
          $ref: '#/components/schemas/Address'
      additionalProperties: false
    UpdatePaymentIntentRequest:
      type: object
      properties:
        amount:
          type: integer
          description: Updated amount in cents
          format: int64
          nullable: true
          example: 2000
        payment_method:
          $ref: '#/components/schemas/PaymentMethodRequest'
        metadata:
          type: object
          additionalProperties:
            type: string
          description: Set of key-value pairs for storing additional information
          nullable: true
        customer:
          $ref: '#/components/schemas/SaveTransactionCustomerRequest'
        billing_details:
          $ref: '#/components/schemas/Address'
        shipping_address:
          $ref: '#/components/schemas/Address'
        description:
          maxLength: 500
          type: string
          description: Description of the payment intent
          nullable: true
          example: 'Order #1234'
      additionalProperties: false
    UpdateRefundRequest:
      type: object
      properties:
        reason:
          maxLength: 500
          type: string
          description: Reason for the refund
          nullable: true
          example: Refunding shipping
        external_id:
          maxLength: 100
          type: string
          description: Payment ID in merchant's system
          nullable: true
          example: e797ef3c-b586-4333-af90-7168d8427d85
      additionalProperties: false
    UpdateTransactionRequest:
      type: object
      properties:
        external_id:
          maxLength: 100
          type: string
          description: Payment ID in merchant's system
          nullable: true
          example: e797ef3c-b586-4333-af90-7168d8427d85
      additionalProperties: false
    ValidationProblemDetails:
      type: object
      properties:
        errors:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          nullable: true
        type:
          type: string
          nullable: true
        title:
          type: string
          nullable: true
        status:
          type: integer
          format: int32
          nullable: true
        detail:
          type: string
          nullable: true
        instance:
          type: string
          nullable: true
      additionalProperties: { }
    Verification:
      title: zero-dollar authorization verification
      type: object
      properties:
        type:
          type: string
          description: 'Type of zero-dollar authorization verification, possible values: `add_card`, `recurring`'
          nullable: true
          example: add_card
      additionalProperties: false
    VerificationRequest:
      title: zero-dollar authorization verification
      type: object
      properties:
        type:
          type: string
          description: 'Type of zero-dollar authorization verification, possible values: `add_card`, `recurring`'
          nullable: true
          example: add_card
      additionalProperties: false
  securitySchemes:
    ApiKey:
      type: apiKey
      description: Authorization by API Key inside request's X-API-KEY header
      name: X-API-KEY
      in: header
security:
  - ApiKey: [ ]