Yapily Payments API (PIS)

Payment Initiation Service Provider (PISP) endpoints for initiating single, scheduled, periodic, bulk, and international payments directly from a customer's bank account. Single-use consent per payment.

Yapily Payments API (PIS) is one of 9 APIs that Yapily publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 1 machine-runnable capability that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko and 2 JSON Schema definitions.

Tagged areas include Payments, PISP, Payment Initiation, Open Banking, and PSD2. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, sample payloads, 1 Naftiko capability spec, and 2 JSON Schemas.

OpenAPI Specification

yapily-payments-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Yapily Payments API (PIS)
  description: Payment Initiation Service Provider (PISP) endpoints for initiating single, scheduled, periodic, bulk, and
    international payments directly from a customer's bank account.
  version: 12.4.0
  contact:
    name: Yapily Support
    url: https://docs.yapily.com/resources/support
    email: [email protected]
servers:
- url: https://api.yapily.com
security:
- basicAuth: []
tags:
- description: In order to make a Payment on behalf of a user, you are required to request an [Authorisation](#tag/Authorisations)
    from the user to authorise the user's account to make the payment from. Once a `consent-token` is obtained, you can call
    the necessary Payments endpoint(s) to execute a payment.
  name: Payments
paths:
  /bulk-payments:
    post:
      description: "Creates a bulk payment after obtaining the user's authorisation. \n\nFeature: `CREATE_BULK_PAYMENT`"
      operationId: createBulkPayment
      parameters:
      - description: __Mandatory__. The `consent-token` containing the user's authorisation to make the request.
        example: '{consentToken}'
        in: header
        name: consent
        required: true
        schema:
          type: string
      - description: "__Conditional__. Represents the user's login ID for the `Institution` to a personal account. \n\nSee\
          \ [PSU identifiers](/open-banking-flow/user-authorisation/psu-identifiers) to see if this header is required."
        in: header
        name: psu-id
        required: false
        schema:
          type: string
      - description: "__Conditional__. Represents the user's login ID for the `Institution` to a business account. \n\nSee\
          \ [PSU identifiers](/open-banking-flow/user-authorisation/psu-identifiers) to see if this header is required."
        in: header
        name: psu-corporate-id
        required: false
        schema:
          type: string
      - description: "__Conditional__. The IP address of the PSU. \n\nSee [PSU identifiers](/open-banking-flow/user-authorisation/psu-identifiers)\
          \ to see if this header is required."
        in: header
        name: psu-ip-address
        required: false
        schema:
          type: string
      requestBody:
        content:
          application/json;charset=UTF-8:
            examples:
              UK Bulk Payment Example Request:
                $ref: '#/components/examples/uk-bulk-payment-example-request'
            schema:
              $ref: '#/components/schemas/SubmitBulkPaymentRequest'
        required: true
      responses:
        '201':
          content:
            application/json;charset=UTF-8:
              examples:
                UK Bulk Payment Example Response:
                  $ref: '#/components/examples/uk-bulk-payment-example-response'
              schema:
                $ref: '#/components/schemas/ApiResponseOfCreateBulkPaymentRequest'
          description: Created
        default:
          content:
            application/json;charset=UTF-8:
              examples:
                Error Response:
                  $ref: '#/components/examples/error-response-code-401'
              schema:
                $ref: '#/components/schemas/ApiResponseError'
          description: Error Response
      summary: Create Bulk Payment
      tags:
      - Payments
      x-mint:
        content: '<Info>Learn more: [Bulk Payments Overview](/payments/bulk-payments/overview)</Info>'
  /bulk-payments/{bulkPaymentId}:
    get:
      description: Returns the bulk file status of the bulk payment for given bulkPaymentId
      summary: Get Bulk Payment File Status
      tags:
      - Payments
      operationId: getBulkPaymentStatus
      parameters:
      - schema:
          type: string
        in: header
        name: consent
        description: __Mandatory__. The `consent token` containing the user's authorisation to make the request.
        required: true
      - schema:
          type: string
        in: path
        name: bulkPaymentId
        description: __Mandatory__. Bulk payment id returned when bulk payment request was submitted.
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  meta:
                    type: object
                    properties:
                      tracingId:
                        type: string
                  data:
                    type: object
                    properties:
                      id:
                        description: Unique identifier of the Bulk Payment
                        type: string
                      consentId:
                        description: Identification of the consent.
                        type: string
                      statusDetails:
                        type: object
                        properties:
                          status:
                            type: string
                            description: 'Bulk file status. Enum: `COMPLETED` `PENDING` `FAILED` `UNKNOWN`

                              These values are subject to change.'
                          updatedAt:
                            type: string
                            format: date-time
                      createdAt:
                        type: string
                        format: date-time
              examples:
                Successful 200 OK:
                  value:
                    meta:
                      tracingId: 27b47dca-fb0f-4448-b470-1cd2d5516d0f
                    data:
                      id: 76ad88c7-6e99-4a16-a277-e428a73d1e86
                      consentId: 5daeb980-5ff5-49db-b7a0-e93dd9c93533
                      statusDetails:
                        status: COMPLETED
                        updatedAt: '2024-07-25T18:14:52.672Z'
                      createdAt: '2024-07-25T18:14:52.672Z'
        '400':
          description: Required parameter missing or invalid
          content:
            application/json;charset=UTF-8:
              schema:
                $ref: '#/components/schemas/ApiErrorResponseV2'
              examples:
                Example-1:
                  $ref: '#/components/examples/400-error-response'
        '401':
          description: Authentication Error
          content:
            application/json;charset=UTF-8:
              schema:
                $ref: '#/components/schemas/ApiErrorResponseV2'
              examples:
                Example-1:
                  $ref: '#/components/examples/401-error-response'
        '404':
          description: Bulk payment not found for provided id
          content:
            application/json;charset=UTF-8:
              schema:
                $ref: '#/components/schemas/ApiErrorResponseV2'
              examples:
                Example-1:
                  $ref: '#/components/examples/404-error-response'
        '500':
          description: An unexpected error occurred.
          content:
            application/json;charset=UTF-8:
              schema:
                $ref: '#/components/schemas/ApiErrorResponseV2'
              examples:
                Example-1:
                  $ref: '#/components/examples/500-error-response'
      x-mint:
        content: '<Info>Learn more: [Bulk Payment Status Monitoring](/payments/bulk-payments/additional-information#bulk-payment-status-and-monitoring)</Info>'
  /bulk-payments/{bulkPaymentId}/details:
    get:
      description: "Retrieve details of each payment submitted for a given bulkPaymentId. \n\nFeature: `EXISTING_BULK_PAYMENT_DETAILS`"
      operationId: getBulkPaymentDetailsById
      summary: Get Bulk Payment Status Details
      tags:
      - Payments
      parameters:
      - schema:
          type: string
        in: header
        name: consent
        description: __Mandatory__. The `consent token` containing the user's authorisation to make the request.
        required: true
      - schema:
          type: string
        in: path
        name: bulkPaymentId
        description: __Mandatory__. Bulk payment id returned when bulk payment request was submitted
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json;charset=UTF-8:
              schema:
                $ref: '#/components/schemas/BulkPaymentDetailsResponse'
              examples:
                Successful 200 OK:
                  $ref: '#/components/examples/bulk-payment-details-by-id-response'
        '400':
          description: Required parameter missing or invalid
          content:
            application/json;charset=UTF-8:
              schema:
                $ref: '#/components/schemas/ApiErrorResponseV2'
              examples:
                Example-1:
                  $ref: '#/components/examples/400-error-response'
        '401':
          description: Authentication Error
          content:
            application/json;charset=UTF-8:
              schema:
                $ref: '#/components/schemas/ApiErrorResponseV2'
              examples:
                Example-1:
                  $ref: '#/components/examples/401-error-response'
        '404':
          description: Bulk payment not found for provided id
          content:
            application/json;charset=UTF-8:
              schema:
                $ref: '#/components/schemas/ApiErrorResponseV2'
              examples:
                Example-1:
                  $ref: '#/components/examples/404-error-response'
        '500':
          description: An unexpected error occurred.
          content:
            application/json;charset=UTF-8:
              schema:
                $ref: '#/components/schemas/ApiErrorResponseV2'
              examples:
                Example-1:
                  $ref: '#/components/examples/500-error-response'
  /payments:
    post:
      description: "Creates a payment after obtaining the user's authorisation. \n\nFeatures:\n\n- `CREATE_DOMESTIC_PERIODIC_PAYMENT`\n\
        - `CREATE_DOMESTIC_SCHEDULED_PAYMENT`\n- `CREATE_DOMESTIC_SINGLE_INSTANT_PAYMENT`\n- `CREATE_DOMESTIC_SINGLE_PAYMENT`\n\
        - `CREATE_INTERNATIONAL_PERIODIC_PAYMENT`\n- `CREATE_INTERNATIONAL_SCHEDULED_PAYMENT`\n- `CREATE_INTERNATIONAL_SINGLE_PAYMENT`"
      operationId: createPayment
      parameters:
      - description: __Mandatory__. The `consent-token` containing the user's authorisation to make the request.
        example: '{consentToken}'
        in: header
        name: consent
        required: true
        schema:
          type: string
      - description: "__Conditional__. Represents the user's login ID for the `Institution` to a personal account. \n\nSee\
          \ [PSU identifiers](/open-banking-flow/user-authorisation/psu-identifiers) to see if this header is required."
        in: header
        name: psu-id
        required: false
        schema:
          title: User Id
          type: string
      - description: "__Conditional__. Represents the user's login ID for the `Institution` to a business account. \n\nSee\
          \ [PSU identifiers](/open-banking-flow/user-authorisation/psu-identifiers) to see if this header is required."
        in: header
        name: psu-corporate-id
        required: false
        schema:
          title: Corporate User Id
          type: string
      - description: "__Conditional__. The IP address of the PSU. \n\nSee [PSU identifiers](/open-banking-flow/user-authorisation/psu-identifiers)\
          \ to see if this header is required."
        in: header
        name: psu-ip-address
        required: false
        schema:
          title: User IP Address
          type: string
      - $ref: '#/components/parameters/SubAppHeader'
      requestBody:
        content:
          application/json;charset=UTF-8:
            examples:
              EUR Domestic Single Payment Example Request:
                $ref: '#/components/examples/eur-domestic-single-payment-example-request'
              GBP Domestic Single Payment Example Request:
                $ref: '#/components/examples/gbp-domestic-single-payment-example-request'
            schema:
              $ref: '#/components/schemas/PaymentRequest'
        required: true
      responses:
        '201':
          content:
            application/json;charset=UTF-8:
              examples:
                EUR Domestic Single Payment Example Response:
                  $ref: '#/components/examples/eur-domestic-single-payment-example-response'
                GBP Domestic Single Payment Example Response:
                  $ref: '#/components/examples/gbp-domestic-single-payment-example-response'
              schema:
                $ref: '#/components/schemas/ApiResponseOfPaymentResponse'
          description: Created
        default:
          content:
            application/json;charset=UTF-8:
              examples:
                Error Response:
                  $ref: '#/components/examples/error-response-code-401'
              schema:
                $ref: '#/components/schemas/ApiResponseError'
          description: Error Response
      summary: Create Payment
      tags:
      - Payments
      x-mint:
        content: '<Info>Learn more: [Payment Types](/payments/payment-resources/intro-to-payment-execution#payment-types)
          - This endpoint supports 7 payment types (single, periodic, scheduled, international)</Info>'
  /payments/{paymentId}/details:
    get:
      description: "Returns the details of a payment. \n\nMost commonly used to check for payment status updates. \n\nFeature:\
        \ `EXISTING_PAYMENTS_DETAILS`"
      operationId: getPayments
      parameters:
      - description: __Mandatory__. The payment Id of the payment.
        in: path
        name: paymentId
        required: true
        schema:
          type: string
      - description: __Mandatory__. The `consent-token` containing the user's authorisation to make the request.
        example: '{consentToken}'
        in: header
        name: consent
        required: true
        schema:
          type: string
      - description: "__Conditional__. Represents the user's login ID for the `Institution` to a personal account. \n\nSee\
          \ [PSU identifiers](/open-banking-flow/user-authorisation/psu-identifiers) to see if this header is required."
        in: header
        name: psu-id
        required: false
        schema:
          title: User Id
          type: string
      - description: "__Conditional__. Represents the user's login ID for the `Institution` to a business account. \n\nSee\
          \ [PSU identifiers](/open-banking-flow/user-authorisation/psu-identifiers) to see if this header is required."
        in: header
        name: psu-corporate-id
        required: false
        schema:
          title: Corporate User Id
          type: string
      - description: "__Conditional__. The IP address of the PSU. \n\nSee [PSU identifiers](/open-banking-flow/user-authorisation/psu-identifiers)\
          \ to see if this header is required."
        in: header
        name: psu-ip-address
        required: false
        schema:
          title: User IP Address
          type: string
      - $ref: '#/components/parameters/SubAppHeader'
      responses:
        '200':
          content:
            application/json;charset=UTF-8:
              examples:
                EUR Single Domestic Payment Example Response:
                  $ref: '#/components/examples/eur-single-domestic-payment-details-example-response'
                GBP Single Domestic Payment Example Response:
                  $ref: '#/components/examples/gbp-single-domestic-payment-details-example-response'
                UK Bulk Payment Example Response:
                  $ref: '#/components/examples/uk-bulk-payment-details-example-response'
              schema:
                $ref: '#/components/schemas/ApiResponseOfPaymentResponses'
          description: Ok
        default:
          content:
            application/json;charset=UTF-8:
              examples:
                Error Response:
                  $ref: '#/components/examples/error-response-code-401'
              schema:
                $ref: '#/components/schemas/ApiResponseError'
          description: Error Response
      summary: Get Payment Details
      tags:
      - Payments
      x-mint:
        content: '<Info>Learn more: [Payment Status Lifecycle](/payments/payment-resources/payment-status) for monitoring
          payment execution</Info>'
components:
  schemas:
    AccountIdentification:
      title: Account Identifications
      required:
      - type
      - identification
      type: object
      properties:
        type:
          $ref: '#/components/schemas/AccountIdentificationType'
        identification:
          title: Account Identification
          type: string
          description: "__Mandatory__. The value associated with the account identification type.\n\n See [Account Identification\
            \ Combinations](/payments/payment-resources/intro-to-payment-execution#account-identifications-combinations) for\
            \ more information on the format of the values."
          example: '401016'
    AccountIdentificationType:
      title: Account Identification Type
      type: string
      description: "__Mandatory__. Used to describe the format of the account.\n\n See [Account Identification Combinations](/payments/payment-resources/intro-to-payment-execution#account-identifications-combinations)\
        \ for more information on when to specify each type."
      example: SORT_CODE
      enum:
      - SORT_CODE
      - ACCOUNT_NUMBER
      - IBAN
      - BBAN
      - BIC
      - PAN
      - MASKED_PAN
      - MSISDN
      - BSB
      - NCC
      - ABA
      - ABA_WIRE
      - ABA_ACH
      - EMAIL
      - ROLL_NUMBER
      - BLZ
      - IFS
      - CLABE
      - CTN
      - BRANCH_CODE
      - VIRTUAL_ACCOUNT_ID
    Address:
      title: Address Details
      type: object
      properties:
        addressLines:
          title: Address Lines
          type: array
          description: __Optional__. The address line of the address
          example:
          - Ardenham Court
          items:
            type: string
        streetName:
          title: Street
          type: string
          description: __Optional__. The street name of the address
          example: Oxford Road
        buildingNumber:
          title: Building Number
          type: string
          description: __Optional__. The building number of the address
          example: '45'
        postCode:
          title: Post Code
          type: string
          description: __Optional__. The post code of the address
          example: HP19 3EQ
        townName:
          title: Town
          type: string
          description: __Optional__. The town name of the address
          example: Aylesbury
        county:
          title: County
          type: array
          description: __Optional__. The list of counties for the address
          example:
          - Buckinghamshire
          items:
            type: string
        country:
          title: Country
          type: string
          description: "__Conditional__. The 2-letter country code for the address. \n\nAn `Institution` may require you to\
            \ specify the `country` when used in the context of the `Payee` to be able to make a payment"
          example: GB
        department:
          title: Department
          type: string
          description: __Optional__. The department for the address
          example: Unit 2
        subDepartment:
          title: Sub-Department
          type: string
          description: __Optional__. The sub-department for the address
          example: Floor 3
        addressType:
          $ref: '#/components/schemas/AddressTypeEnum'
      description: '__Conditional__. The address of the `Payee` or `Payer`.


        - `payee.address` is mandatory when the `paymentType` is an `INTERNATIONAL` payment

        - An `Institution` may require you to specify the `country` when used in the context of the `Payee` to be able to
        make a payment.'
      example:
        country: GB
    AddressTypeEnum:
      title: Address Type
      type: string
      description: __Optional__. The type of address
      enum:
      - BUSINESS
      - CORRESPONDENCE
      - DELIVERY_TO
      - MAIL_TO
      - PO_BOX
      - POSTAL
      - RESIDENTIAL
      - STATEMENT
      - UNKNOWN
    Amount:
      title: Amount Details
      required:
      - amount
      - currency
      type: object
      properties:
        amount:
          title: Amount
          type: number
          description: __Mandatory__. The monetary value
          example: 10
        currency:
          title: Currency
          type: string
          description: __Mandatory__. The [ISO 4217](https://www.xe.com/iso4217.php) currency code
          example: GBP
      description: __Mandatory__. Monetary Amount.
    ApiError:
      type: object
      description: Provides details of the error that has occurred.
      properties:
        code:
          type: integer
          description: __Mandatory__. Numeric `HTTP` status code associated with the error.
          format: int32
        institutionError:
          $ref: '#/components/schemas/InstitutionError'
        message:
          type: string
          description: __Mandatory__. Description of the exact error that has been experienced.
        source:
          type: string
        status:
          type: string
          description: __Mandatory__. Textual description of the `HTTP` error status type.
        tracingId:
          type: string
          description: __Optional__.  A unique identifier assigned by Yapily for the request that can be used for support
            purposes.
    ApiErrorResponseV2:
      type: object
      description: API Error Response
      properties:
        error:
          required:
          - tracingId
          - code
          - status
          - issues
          type: object
          properties:
            tracingId:
              type: string
              description: Unique identifier of the request, used by Yapily for support purposes
            code:
              type: integer
              format: int32
              description: Numeric HTTP status code associated with the error
            status:
              type: string
              description: Textual description of the HTTP status
            supportUrl:
              type: string
              description: Link to where further information regarding the error can be found
            source:
              type: string
              description: Source of the error. This may be YAPILY, the INSTITUTION, or the USER
            issues:
              type: array
              description: List of issues relating to the error
              items:
                required:
                - message
                - code
                type: object
                description: Detailed information regarding the issue that was experienced during processing of the request
                properties:
                  type:
                    type: string
                    description: Category of the issue
                  code:
                    type: string
                    description: 5 digit Error Code that uniquely identifies the type of issue, for full list of error codes
                      pelase check our documentation
                  message:
                    type: string
                    description: Human readable description of the issue that was experienced
    ApiResponseError:
      type: object
      properties:
        error:
          $ref: '#/components/schemas/ApiError'
        raw:
          deprecated: true
          type: array
          items:
            $ref: '#/components/schemas/RawResponse'
      description: 'Used to return errors from the bank from each request


        - `400` - Returned by any `POST` endpoint when the body does not conform to the contract

        - `401` - Returned by any endpoint when an invalid `authToken` is used for authentication

        - `403` - Returned by any [Financial Data](/api-reference#financial-data) and any [Payments](/api-reference#payments)
        endpoint when the `Consent` is no longer authorised to access financial data or to make a payment

        - `404` - Returned by any endpoint where there are path parameters and the path parameters supplied are unable to
        find the desired resource

        - `409` - Returned by any `POST` endpoint when creating a resource that conflicts with any other existing resource
        e.g. [Create User](/api-reference/addUser)

        - `424` - Returned by any [Financial Data](/api-reference#financial-data) and any [Payments](/api-reference#payments)
        endpoint when the feature to be accessed is not supported by the `Institution`.

        - `500` - Returned by any endpoint when Yapily is down. If you encounter any false positives, please [notify us](mailto:[email protected])'
      example:
        error:
          tracingId: 74b13ce8ed51419f92c5d609e04532de
          code: 424
          institutionError:
            errorMessage: '{"Code":"500 Internal Server Error","Id":"5ff8d331-4282-41e0-b5ef-1ac9ac39f009","Message":"Technical
              Error. Please try again later","Errors":[{"ErrorCode":"UK.OBIE.UnexpectedError","Message":"There was a problem
              processing your request. Please try again later"}]}'
            httpStatusCode: 500
          source: INSTITUTION
          status: FAILED_DEPENDENCY
    ApiResponseOfCreateBulkPaymentRequest:
      type: object
      properties:
        meta:
          $ref: '#/components/schemas/ResponseMeta'
        data:
          $ref: '#/components/schemas/BulkPaymentResponse'
        links:
          type: object
          additionalProperties:
            type: string
        forwardedData:
          type: array
          items:
            $ref: '#/components/schemas/ResponseForwardedData'
        raw:
          deprecated: true
          type: array
          items:
            $ref: '#/components/schemas/RawResponse'
        tracingId:
          type: string
          writeOnly: true
    ApiResponseOfPaymentResponse:
      type: object
      properties:
        meta:
          $ref: '#/components/schemas/ResponseMeta'
        data:
          $ref: '#/components/schemas/PaymentResponse'
        links:
          type: object
          additionalProperties:
            type: string
        forwardedData:
          type: array
          items:
            $ref: '#/components/schemas/ResponseForwardedData'
        raw:
          deprecated: true
          type: array
          items:
            $ref: '#/components/schemas/RawResponse'
        tracingId:
          type: string
          writeOnly: true
    ApiResponseOfPaymentResponses:
      type: object
      properties:
        meta:
          $ref: '#/components/schemas/ResponseMeta'
        data:
          $ref: '#/components/schemas/PaymentResponses'
        links:
          type: object
          additionalProperties:
            type: string
        forwardedData:
          type: array
          items:
            $ref: '#/components/schemas/ResponseForwardedData'
        raw:
          deprecated: true
          type: array
          items:
            $ref: '#/components/schemas/RawResponse'
        tracingId:
          type: string
          writeOnly: true
    BulkPaymentDetailsResponse:
      type: object
      properties:
        meta:
          $ref: '#/components/schemas/ResponseMeta'
        data:
          type: object
          title: BulkPaymentDetailsData
          properties:
            id:
              type: string
              description: __Mandatory__. Unique identifier for the bulk payment transaction.
            consentId:
              type: string
              description: __Mandatory__. Unique identifier of the consent related to bulk payment transaction.
            payments:
              type: array
              items:
                $ref: '#/components/schemas/BulkPaymentIndividualStatus'
    BulkPaymentIndividualStatus:
      type: object
      required:
      - id
      - status
      properties:
        id:
          type: string
          description: __Mandatory__. Unique identifier of the individual payment.
        status:
          $ref: '#/components/schemas/PaymentStatus'
        statusDetails:
          type: object
          title: BulkPaymentIndividualStatusDetails
          description: __Conditional__. Details regarding the status of an individual payment within a bulk request. This
            object is conditionally returned, typically when the status is not `COMPLETED`.
          properties:
            code:
              type: string
              description: __Conditional__. The unique 4-digit error code identifying the specific issue. Refer to the official
                documentation for a comprehensive list of error codes
            reason:
              type: string
              description: __Optional__. A human-readable description providing additional context or the specific error message
                encountered.
          required:
          - code
    BulkPaymentResponse:
      type: object
      properties:
        id:
          type: string
          description: The unique ID for this Bulk Payment.
        institutionConsentId:
          type: string
          description: The Institution's Consent ID used for this Bulk Payment.
        institutionInteractionId:
          type: string
          description: The Financial API (FAPI) Interaction ID for this Bulk Payment.
        paymentIdempotencyId:
          type: string
          description: The unique ID provided by you to identify this Bulk Payment.
        paymentLifecycleId:
          type: string
        paymentScheme:
          type: string
          description: The payment scheme (ie. payment rail, local instrument) used to carry out this Bulk Payment.
        status:
          $ref: '#/components/schemas/PaymentStatus'
        statusDetails:
          $ref: '#/components/schemas/BulkPaymentStatusDetails'
        payer:
          $ref: '#/components/schemas/Payer'
        payeeDetails:
          $ref: '#/components/schemas/Payee'
        reference:
          type: string
          description: The reference or description for this Bulk Payment.
        amount:
          type: number
          description: The total monetary amount of this Bulk Payment.
        currency:
          type: string
          description: The currency of the amount, specified as a 3-letter ISO 4217 code.
        amountDetails:
          $ref: '#/components/schemas/Amount'
        createdAt:
          type: string
          description: Date and time of when the payment request was created.
          format: date-time
        firstPaymentAmount:
          $ref: '#/components/schemas/Amount'
        firstPaymentDateTime:
          type: string
          description: Date and time of when the first payment request is to be made.
          format: date-time
        nextPaymentAmount:
          $ref: '#/components/schemas/Amount'
        nextPaymentDateTime:
          type: string
          description: __Conditional__. Defines when the recurring payment is to be made.
          format: date-time
        finalPaymentAmount:
          $ref: '#/components/schemas/Amount'
        finalPaymentDateTime:
          type: string
          description: Date and time of when the final payment is to be made.
          format: date-time
        numberOfPayments:
          type: integer
          description: Number of recurring payment requests to be made as part of the instructed payment schedule.
          format: int32
        previousPaymentAmount:
          $ref: '#/components/schemas/Amount'
        previousPaymentDateTime:
          type: string
          description: Date and time of when the previous payment request was posted.
          format: date-time
        chargeDetails:
          type: array
          items:
            $ref: '#/components/schemas/PaymentChargeDetails'
        scheduledPaymentType:
          type: string
          description: Details the execution type and the payment date between the payer and the payee.
        scheduledPaymentDateTime:
          type: string
          description: Date and time of when the scheduled 

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