GetPaid Payments API

Create and manage payments initiated by the platform on behalf of the buyer. For recurring and unscheduled payments based on a previous standing instruction.

OpenAPI Specification

getpaid-payments-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Getpaid Accounts Payments API
  version: v2
  contact:
    email: support@getpaid.io
  description: '# Getting started


    Our APIs provide programmatic access to the Getpaid solution. This page contains a comprehensive reference for all

    resources of the Getpaid public API. For walkthrough documentation please see [Getpaid guides](/) for step by step usage

    of the Getpaid platform including the API and [Getpaid API integration](/integration/api) for the technical aspects of

    this Getpaid API.


    To get started, book a demo and sign up at <https://getpaid.io>. This will give you access to the [Getpaid

    dashboard](https://dashboard.getpaid.io) where you can configure your account and retrieve your credentials needed to

    authenticate with Getpaid API.


    ## Postman


    Getpaid provides a Postman collection to test the API features in sandbox. You can [download the Postman collection and

    the environments](/integration/api/postman) to start testing the Getpaid API.


    ## Fields formats


    | Type | Format |

    | :- | :- |

    | `amount-minor` | Amount in the minor currency unit (e.g. 100 cents for 1 EUR). |

    | `country` | The country code fields follow the [ISO 3166-1 alpha-2 standard](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) in uppercase. Examples: `DE`, `US`. |

    | `currency` | The currency code fields follow the [ISO 4217 standard](https://en.wikipedia.org/wiki/ISO_4217) in uppercase. Examples: `EUR`, `USD`. |

    | `date` | Dates are formatted using the complete date format according to the [ISO 8601 standard](https://www.w3.org/TR/NOTE-datetime): `YYYY-MM-DD`. Example: `2023-09-30`.                                        |

    | `date-time` | Date-time fields are formatted using the [ISO 8601 standard](https://www.w3.org/TR/NOTE-datetime) for the combined date and time in UTC with 3 seconds fractional digits: `YYYY-MM-DDThh:mm:ss.SSSZ`. Example: `2015-09-01T23:59:59.479Z`. |

    | `date-time-offset` | Date-time fields with time-zone are formatted [ISO 8601 standard](https://www.w3.org/TR/NOTE-datetime) for the combined date and time with the time-zone and no second fractional digits: `YYYY-MM-DDThh:mm:ssTZD`. Example: `2015-09-01T23:59:59+01:00`. |

    | `email` | Email fields should follow the [RFC 5322](https://tools.ietf.org/html/rfc5322) standard. Example: `jon.smith@acme.com` |

    | `hex-color` | Colors are represented as a string starting with `#` followed by six hexadecimal digits. Each pair of digits represents the intensity of red, green, and blue components respectively. Examples: `#FFFFFF`, `#000000`, `#FF5733`. |

    | `id` | Identifiers are formatted as a string of 3 alphabetic characters (which represents the type of the identified object), one underscore and 26 alphanumeric characters. Every identifier generated in our system is globally unique. Examples: `acc_44678r08jtm8zbt227tzhc4nw5`, `doc_473cr1y0ghbyc3m1yfbwvn3nxx`. |

    | `ip-address` | IP fields are formatted using the [Internet Protocol version 4 (IPv4)](https://en.wikipedia.org/wiki/Internet_Protocol_version_4) standard: `x.x.x.x` where `x` must be a decimal value between `0` and `255`. Example: `192.158.1.38`. |

    | `version` | A resource version. For resources that can evolved over time, a unique reference of the snapshot used in other resource. For example, the account information used for a payment, the information used for the statement descriptor or the processing configuration are tighted to the version of the account. |

    '
servers:
- url: https://api.getpaid.io
  description: Live
- url: https://api.sandbox.getpaid.io
  description: Sandbox
tags:
- name: Payments
  description: 'Create and manage payments initiated by the platform on behalf of the buyer.


    For recurring and unscheduled payments based on a previous standing instruction.

    '
paths:
  /v2/payments:
    post:
      tags:
      - Payments
      summary: Create a payment
      description: 'Create a payment initiated by the platform on behalf of a buyer.


        Related webhooks:


        - [`payment_captured`](#tag/Accept-payments-webhooks/operation/payment_captured): sent when the payment funds are captured and secured.

        - [`payment_failed`](#tag/Accept-payments-webhooks/operation/payment_failed): sent when a payment fails due to business (decline) or technical issues.

        '
      operationId: create_payment
      security:
      - OAuth:
        - payments:read_write
      parameters:
      - $ref: '#/components/parameters/GetpaidIdempotencyKey'
        required: true
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreatePaymentRequest'
            examples:
              CreateSubsequentPayment:
                $ref: '#/components/examples/CreateSubsequentPayment'
        required: true
      responses:
        '201':
          description: Created
          headers:
            Getpaid-Trace-Id:
              $ref: '#/components/headers/GetpaidTraceId'
              required: true
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreatePaymentResponse'
              examples:
                PaymentCreated:
                  $ref: '#/components/examples/PaymentCreated'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '422':
          $ref: '#/components/responses/422InvalidParameters'
        '429':
          $ref: '#/components/responses/429TooManyRequests'
        '500':
          $ref: '#/components/responses/500InternalServerError'
  /v2/payments/{payment_id}:
    get:
      tags:
      - Payments
      summary: Get a payment
      description: Retrieve a payment.
      operationId: get_payment
      security:
      - OAuth:
        - payments:read
      - OAuth:
        - payments:read_write
      parameters:
      - name: payment_id
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/PaymentId'
      responses:
        '200':
          description: OK
          headers:
            Getpaid-Trace-Id:
              $ref: '#/components/headers/GetpaidTraceId'
              required: true
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetPaymentResponse'
              examples:
                CompletePayment:
                  $ref: '#/components/examples/CompletePayment'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          $ref: '#/components/responses/404NotFound'
        '422':
          $ref: '#/components/responses/422InvalidParameters'
        '429':
          $ref: '#/components/responses/429TooManyRequests'
        '500':
          $ref: '#/components/responses/500InternalServerError'
  /v2/payments/{payment_id}/refunds:
    post:
      tags:
      - Payments
      summary: Refund a payment
      description: 'Refund a captured payment fully or partially.


        Related webhooks:


        - [`payment_refunded`](#tag/Accept-payments-webhooks/operation/payment_refunded): sent when the funds are returned to the buyer.

        - [`payment_refund_failed`](#tag/Accept-payments-webhooks/operation/payment_refund_failed): sent when a refund process fails due to business or technical issues.

        '
      operationId: refund_payment
      security:
      - OAuth:
        - payments:read_write
      parameters:
      - name: payment_id
        in: path
        description: The ID of the payment to refund.
        required: true
        schema:
          $ref: '#/components/schemas/PaymentId'
      - $ref: '#/components/parameters/GetpaidIdempotencyKey'
        required: true
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RefundPaymentRequest'
            examples:
              CreateFullRefund:
                $ref: '#/components/examples/CreateFullRefund'
              CreatePartialRefund:
                $ref: '#/components/examples/CreatePartialRefund'
        required: true
      responses:
        '201':
          description: Created
          headers:
            Getpaid-Trace-Id:
              $ref: '#/components/headers/GetpaidTraceId'
              required: true
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RefundPaymentResponse'
              examples:
                FullRefundCreated:
                  $ref: '#/components/examples/FullRefundCreated'
                PartialRefundCreated:
                  $ref: '#/components/examples/PartialRefundCreated'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '422':
          $ref: '#/components/responses/422InvalidParameters'
        '429':
          $ref: '#/components/responses/429TooManyRequests'
        '500':
          $ref: '#/components/responses/500InternalServerError'
  /v2/payments/query:
    post:
      tags:
      - Payments
      summary: Query payments
      description: 'Query payments filtering, and sorting and paginating results.


        See [Query resources](#tag/Queries/operation/query_resources) for more examples and details

        about other resources, pagination and everything related to operate the Getpaid solution.

        '
      operationId: query_payments
      security:
      - OAuth:
        - payments:read
      parameters:
      - $ref: '#/components/parameters/GetpaidIdempotencyKey'
        required: true
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryPaymentsRequest'
            examples:
              QueryPayments:
                $ref: '#/components/examples/QueryPayments'
        required: true
      responses:
        '200':
          description: OK
          headers:
            Getpaid-Trace-Id:
              $ref: '#/components/headers/GetpaidTraceId'
              required: true
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QueryPaymentsResponse'
              examples:
                FilteredPayments:
                  $ref: '#/components/examples/FilteredPayments'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '422':
          $ref: '#/components/responses/422InvalidParameters'
        '429':
          $ref: '#/components/responses/429TooManyRequests'
        '500':
          $ref: '#/components/responses/500InternalServerError'
components:
  examples:
    CreateSubsequentPayment:
      summary: Create a subsequent payment
      value:
        reference: ORD-202510-0232
        amount: 10000
        currency: EUR
        method:
          type: card
          dynamic_descriptor: TITAN*202510-0232
        splits:
          type: per_transaction
          accounts:
          - type: seller
            id: acc_4f5zanqzxfg9w9jj5e81bm6bc9
            split:
              type: fixed
              amount: 9000
          - type: platform
            id: acc_4q90qx2kdczs59yqfq34p09qx6
            split:
              type: fixed
              amount: 1000
            processing_fee:
              percentage: 100
        standing_instruction:
          id: sti_4tbftjwzxja1h71nzas1g0g1xm
        webhooks:
          url: https://webhooks.titanauto.com/getpaid
    CreatePartialRefund:
      summary: Create a partial refund
      value:
        type: partial
        reference: RFD-202510-0002
        amount: 500
        splits:
          accounts:
          - id: acc_4f5zanqzxfg9w9jj5e81bm6bc9
            split:
              amount: 450
          - id: acc_4q90qx2kdczs59yqfq34p09qx6
            split:
              amount: 50
        webhooks:
          url: https://webhooks.titanauto.com/getpaid
    FilteredPayments:
      summary: Filtered payments
      value:
        type: payments
        cursor: Q3VyaW9zaXR5IEtpbGxlZCB0aGUgQ2F0Cg==
        data:
        - id: pay_4y7kptsvn11qq6d354g5tx735v
          reference: ORD-202510-0232
          status: captured
          amount: 1000
          currency: EUR
          created_at: '2023-03-15T12:34:56.999Z'
          updated_at: '2023-03-15T12:34:56.999Z'
          method:
            type: card
            scheme: visa
            display_hint: 424242******4242
          seller:
            id: acc_44678r08jtm8zbt227tzhc4nw5
            legal_name: Titan Biking
          parties:
          - id: acc_5y789s19kum9act338uaic5ox6
            type: platform
            legal_name: Titan Auto Parts GmbH
        - id: pay_4y7kptsvn11qq6d354g5tx736w
          reference: ORD-202511-0133
          status: captured
          amount: 1000
          currency: EUR
          created_at: '2023-03-15T12:34:56.999Z'
          updated_at: '2023-03-15T12:34:56.999Z'
          method:
            type: card
            scheme: visa
            display_hint: 411111******1111
          seller:
            id: acc_44678r08jtm8zbt227tzhc4nw5
            legal_name: Titan Biking
          parties:
          - id: acc_5y789s19kum9act338uaic5ox6
            type: platform
            legal_name: Titan Auto Parts GmbH
    CompletePayment:
      summary: Get a payment
      value:
        id: pay_4a4m2pjycdb1jbj68h1rvk9kcz
        status: refunded
        reference: ORD-202510-0232
        created_at: '2025-09-01T22:05:48.479Z'
        updated_at: '2025-10-12T09:06:11.773Z'
        amount: 1000
        currency: EUR
        statement_descriptor: GPD*TITAN*202510-0232
        origin:
          type: api
        method:
          type: card
          display_hint: 424242******4242
          card:
            scheme: visa
            holder_name: Jane Doe
            first_digits: '424242'
            last_digits: '4242'
            expiry_month: 12
            expiry_year: 2030
        splits:
          type: per_transaction
          accounts:
          - type: seller
            id: acc_4f5zanqzxfg9w9jj5e81bm6bc9
            version: '2'
            legal_name: AutoZentrum Düsseldorf GmbH
            split:
              type: fixed
              amount: 900
            processing_fee:
              percentage: 0
          - type: platform
            id: acc_4q90qx2kdczs59yqfq34p09qx6
            version: '0'
            legal_name: Titan Auto Parts GmbH
            split:
              type: fixed
              amount: 100
            processing_fee:
              percentage: 100
        authentication:
          type: 3ds
          status: succeeded
          result:
            code: Y
            eci: '05'
        refunds:
        - id: rfd_4a4m2pjycdb1jbj68h1rvk9kcz
          status: completed
          type: full
          reference: ORD-202510-0232
          created_at: '2025-09-01T22:05:48.479Z'
          updated_at: '2025-09-01T22:05:48.479Z'
          amount: 1000
        standing_instruction:
          id: sti_4tbftjwzxja1h71nzas1g0g1xm
          status: active
          terms:
            type: recurring
          first:
            type: payment
            id: pay_4a4m2pjycdb1jbj68h1rvk9kcz
        totals:
          net: -67
          captured: 1000
          refunded: 1000
          refundable: 0
          processing_fees: 67
          accounts:
          - type: seller
            id: acc_4f5zanqzxfg9w9jj5e81bm6bc9
            version: '0'
            legal_name: Garage Deusthclangen AG
            net: 0
            captured: 900
            refunded: 900
            refundable: 0
            processing_fees: 0
          - type: platform
            id: acc_4q90qx2kdczs59yqfq34p09qx6
            version: '0'
            legal_name: Titan Auto Parts GmbH
            net: -67
            captured: 100
            refunded: 100
            refundable: 0
            processing_fees: 67
        events:
        - index: 6
          type: refund_completed
          occurred_at: '2025-10-12T09:06:11.773Z'
          amount: 1000
          currency: EUR
        - index: 5
          type: refund_initiated
          occurred_at: '2025-10-12T09:00:00.000Z'
          amount: 1000
          currency: EUR
        - index: 4
          type: captured
          occurred_at: '2025-10-01T22:05:48.479Z'
          amount: 1000
          currency: EUR
        - index: 3
          type: authorized
          occurred_at: '2025-09-01T22:05:48.479Z'
          amount: 1000
          currency: EUR
        - index: 2
          type: authenticated
          occurred_at: '2025-09-01T22:05:35.000Z'
          authentication:
            type: 3ds
        - index: 1
          type: authentication_required
          occurred_at: '2025-09-01T22:05:30.000Z'
          authentication:
            type: 3ds
        - index: 0
          type: initiated
          occurred_at: '2025-09-01T22:05:20.000Z'
          amount: 1000
          currency: EUR
    CreateFullRefund:
      summary: Create a full refund
      value:
        type: full
        reference: RFD-202510-0002
        webhooks:
          url: https://webhooks.titanauto.com/getpaid
    QueryPayments:
      summary: Query payments
      value:
        type: payments
        filters:
          seller_legal_name: Titan Biking
          statuses:
          - captured
    FullRefundCreated:
      summary: Full refund created
      value:
        id: rfd_4a4m2pjycdb1jbj68h1rvk9kcz
        type: full
        status: initiated
        reference: RFD-202510-0002
        created_at: '2025-10-25T07:11:57.761Z'
        updated_at: '2025-10-25T07:11:57.761Z'
        amount: 1000
        splits:
          accounts:
          - id: acc_4f5zanqzxfg9w9jj5e81bm6bc9
            split:
              amount: 900
          - id: acc_4q90qx2kdczs59yqfq34p09qx6
            split:
              amount: 100
    PaymentCreated:
      summary: Payment captured successfully
      value:
        id: pay_4tbftjwzxja1h71nzas1g0g1xm
        status: captured
        reference: ORD-202510-0232
        statement_descriptor: GPD*TITAN*202510-0232
        created_at: '2025-10-24T14:45:22.993Z'
        updated_at: '2025-10-24T14:45:22.993Z'
        method:
          type: card
          display_hint: 424242******4242
          card:
            scheme: visa
            holder_name: Jane Doe
            first_digits: '424242'
            last_digits: '4242'
            expiry_month: 12
            expiry_year: 2030
        splits:
          type: per_transaction
          accounts:
          - type: seller
            id: acc_4f5zanqzxfg9w9jj5e81bm6bc9
            version: '2'
            legal_name: Car Garage GmbH
            split:
              type: fixed
              amount: 9000
            processing_fee:
              percentage: 0
          - type: platform
            id: acc_4q90qx2kdczs59yqfq34p09qx6
            version: '0'
            legal_name: Titan Auto Parts GmbH
            split:
              type: fixed
              amount: 1000
            processing_fee:
              percentage: 100
        totals:
          net: 9933
          captured: 1000
          refunded: 0
          refundable: 1000
          processing_fees: 67
          accounts:
          - type: seller
            id: acc_4f5zanqzxfg9w9jj5e81bm6bc9
            version: '0'
            legal_name: Garage Deusthclangen AG
            net: 900
            captured: 900
            refunded: 0
            refundable: 900
            processing_fees: 0
          - type: platform
            id: acc_4q90qx2kdczs59yqfq34p09qx6
            version: '0'
            legal_name: Titan Auto Parts GmbH
            net: 33
            captured: 100
            refunded: 0
            refundable: 100
            processing_fees: 67
    PartialRefundCreated:
      summary: Partial refund created
      value:
        id: rfd_4a4m2pjycdb1jbj68h1rvk9kcz
        type: partial
        status: initiated
        reference: RFD-202510-0002
        created_at: '2025-10-25T07:11:57.761Z'
        updated_at: '2025-10-25T07:11:57.761Z'
  schemas:
    EstimatedUpdateBefore:
      allOf:
      - description: When the payment status is estimated to be updated next.
      - $ref: '#/components/schemas/DateTimeOffset'
    Reference:
      allOf:
      - $ref: '#/components/schemas/ShortString'
      - description: An identifier in your system. It is recommended to make it unique but the uniqueness is not enforced by the solution.
        example: ORD-202510-0232
    SplitsCalculatedAndCalculatingFees:
      description: 'The list of payment splits for the accounts involved in the funds flow.


        The final split amounts and processing fees have been calculated.

        '
      type: object
      required:
      - type
      - accounts
      properties:
        type:
          $ref: '#/components/schemas/SplitsType'
        accounts:
          description: The list of accounts involved in the payment that will receive the funds.
          type: array
          minItems: 1
          uniqueItems: true
          items:
            description: A payment split account.
            type: object
            required:
            - type
            - id
            - version
            - legal_name
            - split
            - processing_fee
            properties:
              type:
                $ref: '#/components/schemas/SplitsAccountType'
              id:
                $ref: '#/components/schemas/AccountId'
              version:
                $ref: '#/components/schemas/AccountVersion'
              legal_name:
                $ref: '#/components/schemas/AccountLegalName'
              split:
                description: The amount in the payment currency to be allocated to this account.
                oneOf:
                - $ref: '#/components/schemas/SplitFixedAmount'
                - $ref: '#/components/schemas/SplitPercentageAmountCalculated'
                - $ref: '#/components/schemas/SplitRemainingAmountCalculated'
                discriminator:
                  propertyName: type
                  mapping:
                    fixed: '#/components/schemas/SplitFixedAmount'
                    percentage: '#/components/schemas/SplitPercentageAmountCalculated'
                    remaining: '#/components/schemas/SplitRemainingAmountCalculated'
              processing_fee:
                $ref: '#/components/schemas/ProcessingFeeCalculating'
    Version:
      description: A resource version.
      type: string
      format: version
      minLength: 1
      maxLength: 50
      example: '2'
    DateTimeOffset:
      description: 'Date-time with time zone offset in ISO 8601 format without second fractions ([RFC 9557](https://www.rfc-editor.org/rfc/rfc9557.html)).

        '
      type: string
      format: date-time-offset
      minLength: 25
      maxLength: 25
      example: '2025-09-01T22:05:48-08:00'
    AccountId:
      allOf:
      - $ref: '#/components/schemas/Id'
      - description: The unique identifier of the account.
        example: acc_44678r08jtm8zbt227tzhc4nw5
    CreatePaymentRequest:
      type: object
      required:
      - reference
      - amount
      - currency
      - splits
      - standing_instruction
      properties:
        reference:
          $ref: '#/components/schemas/Reference'
        amount:
          $ref: '#/components/schemas/AmountMinor'
        currency:
          $ref: '#/components/schemas/Currency'
        method:
          $ref: '#/components/schemas/PaymentMethodRequest'
        splits:
          $ref: '#/components/schemas/SplitsRequest'
        standing_instruction:
          $ref: '#/components/schemas/SubsequentStandingInstructionRequest'
        webhooks:
          $ref: '#/components/schemas/PaymentWebhooksRequest'
    PaymentOriginCheckout:
      allOf:
      - $ref: '#/components/schemas/PaymentOriginBase'
      - required:
        - id
        properties:
          id:
            $ref: '#/components/schemas/CheckoutId'
    PaginationData:
      description: The list of queried elements.
      type: array
      items:
        type: object
    Percentage:
      type: number
      format: float
      minimum: 0
      maximum: 100
      multipleOf: 0.1
      example: 62.5
    PaymentMethodDetails:
      description: The payment method used.
      anyOf:
      - $ref: '#/components/schemas/CardPaymentMethodDetails'
      - $ref: '#/components/schemas/SddPaymentMethodDetails'
      discriminator:
        propertyName: type
        mapping:
          card: '#/components/schemas/CardPaymentMethodDetails'
          sepa_direct_debit: '#/components/schemas/SddPaymentMethodDetails'
    PartialRefundPaymentResponse:
      allOf:
      - $ref: '#/components/schemas/BaseRefundPaymentResponse'
    AmountMinor:
      type: integer
      format: amount-minor
      description: The payment amount in the minor currency unit (e.g. 100 cents for 1 EUR).
      example: 1000
    CreatePaymentResponse:
      type: object
      required:
      - id
      - status
      - reference
      - created_at
      - updated_at
      - method
      - splits
      - totals
      properties:
        id:
          $ref: '#/components/schemas/PaymentId'
        status:
          $ref: '#/components/schemas/PaymentStatus'
        reason:
          $ref: '#/components/schemas/PaymentReason'
        reference:
          $ref: '#/components/schemas/Reference'
        created_at:
          $ref: '#/components/schemas/CreatedAt'
        updated_at:
          $ref: '#/components/schemas/UpdatedAt'
        statement_descriptor:
          $ref: '#/components/schemas/StatementDescriptorResponse'
        method:
          $ref: '#/components/schemas/PaymentMethodDetails'
        splits:
          $ref: '#/components/schemas/SplitsCalculatedAndCalculatingFees'
        authentication:
          $ref: '#/components/schemas/PaymentAuthentication'
        totals:
          $ref: '#/components/schemas/PaymentTotals'
    PaymentWebhooksRequest:
      description: Configuration for webhooks to receive payment status updates.
      type: object
      required:
      - url
      properties:
        url:
          allOf:
          - description: The URL to which webhook events will be sent.
            example: https://webhooks.titanauto.com/getpaid
          - $ref: '#/components/schemas/Url'
    PaymentCheckoutDescription:
      allOf:
      - $ref: '#/components/schemas/MediumString'
      - description: 'A description of the checkout session only if the payment was part of a checkout.

          This will be visible to the buyer in the payment page but not in the bank or card statement.

          '
        example: Order 202510-0232
    SplitBaseAmount:
      type: object
      description: 'The amount in payment currency to be allocated to this account.


        The sum of all split amounts for all accounts must be exactly the total amount of the payment

        or use the `remaining` type for one of the accounts to allocate the remaining amount after all

        other splits have been calculated.

        '
      required:
      - type
      properties:
        type:
          type: string
          description: The type of split amount.
          enum:
          - fixed
          - percentage
          - remaining
    PaymentOriginApi:
      allOf:
      - $ref: '#/components/schemas/PaymentOriginBase'
    BasePaymentMethodDetails:
      allOf:
      - $ref: '#/components/schemas/PaymentMethodBase'
      - required:
        - display_hint
        properties:
          display_hint:
            $ref: '#/components/schemas/PaymentMethodDisplayHint'
    PaginatedResponse:
      type: object
      required:
      - data
      properties:
        cursor:
          $ref: '#/components/schemas/PaginationCursor'
        data:
          $ref: '#/components/schemas/PaginationData'
    QueryPaymentsRequest:
      allOf:
      - $ref: '#/components/schemas/BaseQueryRequest'
      - required:
        - type
        properties:
          type:
            type: string
            enum:
            - payments
          filters:
            $ref: '#/components/schemas/PaymentsFiltersRequest'
          sorts:
            $ref: '#/components/schemas/PaymentsSortsRequest'
    SplitRemainingAmountRequest:
      allOf:
      - $ref: '#/components/schemas/SplitBaseAmount'
    SplitPercentageAmountRequest:
      allOf:
      - $ref: '#/components/schemas/SplitBaseAmount'
      - type: object
        required:
        - percentage
        properties:
          percentage:
            allOf:
            - $ref: '#/components/schemas/Percentage'
            - description: The percentage of the total amount to allocate to this account.
    AccountVersion:
      allOf:
      - description: The account version.
      - $ref: '#/components/schemas/Version'
    PaginationCursor:
      description: The cursor to the last item. If non-empty, can be used to fetch the next page. If not set, there is no more elements.
      type: string
      maxLength: 250
      example: Q3VyaW9zaXR5IEtpbGxlZCB0aGUgQ2F0Cg==
    RefundPaymentResponse:
      oneOf:
      - $ref: '#/components/schemas/FullRefundPaymentResponse'
      - $ref: '#/components/schemas/PartialRefundPaymentResponse'
      discriminator:
        propertyName: type
        mapping:
          full: '#/components/schemas/FullRefundPaymentResponse'
          partial: '#/components/schemas/PartialRefundPaymentResponse'
    CardPaymentMethodRequest:
      allOf:
      - $ref: '#/components/schemas/BasePaymentMethodRequest'
      - type: object
        required:
        - dynamic_descriptor
        properties:
          dynamic_descriptor:
            $ref: '#/components/schemas/CardDynamicDescriptor'
    ProcessingFeeAmount:
      allOf:
      - description: The processing fee amount covered by this account in the minor currency unit (e.g. 100 cents for 1 EUR).
      - $ref: '#/components/schemas/AmountMinor'
    SddPaymentMethodDetails:
      allOf:
      - $ref: '#/components/schemas/BasePaymentMethodDetails'
      - required:
        - bank_account
        properties:
          bank_account:
            description: The bank account details.
            type: object
            required:
            - type
            - number
            properties:
              type:
                description: The type of bank account.
                type: string
                enum:
                - business
                - consumer
              number:
                description: The bank account number details.
                type: object
                required:
                - type
                - value
                properties:
                  type:
                    description: The type of bank account number.
                    type: string
                    enum:
                    - iban
                  value:
                    description: The bank account number value.
                    type: string
                    minLength: 15
                    maxLength: 33
                    example: DE85100100100006992334
    PaymentMethodRequest:
      description: The payment method configuration for this payment.
      anyOf:
      - $ref: '#/components/schemas/CardPaymentMethodRequest'
      - $ref: '#/components/schemas/SddPaymentMethodRequest'
      discriminator:
        propertyName: type
        mapping:
          card: '#/components/schemas/CardPaymentMethodRequest'
          sepa_direct_debit: '#/components/schemas/SddPaymentMethodRequest'
    CheckoutId:
      allOf:
      - $ref: '#/components/schemas/Id'
      - description: The unique identifier of the checkout.
        example: cko_4kf9v6xp00hzc99rdwr5m97wce
    BaseSortsRequest:
      description: Fields to sort the data by. If not set, the data will be sorted by the creation date descending.
      type: array
      minItems: 1
      uniqueItems: true
      items:
        description: Each field to sort by.
        type: object
        required:
        - field
        - direction
        properties:
          field:
            description: The field to sort by. Each field available can only be used once in the list.
            type: string
          direction:
            description: The sort direction
            type: string
            enum:
            - ascending
            - descending
    CardDynamicDescriptor:
      description: 'The card

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