openapi: 3.0.2
servers:
  - description: Velo Payments Sandbox for testing
    url: https://api.sandbox.velopayments.com/
  - description: Velo Payments Production URL
    url: https://api.payouts.velopayments.com
info:
  description: |
    ## Terms and Definitions

    Throughout this document and the Velo platform the following terms are used:

    * **Payor.** An entity (typically a corporation) which wishes to pay funds to one or more payees via a payout.
    * **Payee.** The recipient of funds paid out by a payor.
    * **Payment.** A single transfer of funds from a payor to a payee.
    * **Payout.** A batch of Payments, typically used by a payor to logically group payments (e.g. by business day). Technically there need be no relationship between the payments in a payout - a single payout can contain payments to multiple payees and/or multiple payments to a single payee.
    * **Sandbox.** An integration environment provided by Velo Payments which offers a similar API experience to the production environment, but all funding and payment events are simulated, along with many other services such as OFAC sanctions list checking.

    ## Overview

    The Velo Payments API allows a payor to perform a number of operations. The following is a list of the main capabilities in a natural order of execution:

    * Authenticate with the Velo platform
    * Maintain a collection of payees
    * Query the payor’s current balance of funds within the platform and perform additional funding
    * Issue payments to payees
    * Query the platform for a history of those payments

    This document describes the main concepts and APIs required to get up and running with the Velo Payments platform. It is not an exhaustive API reference. For that, please see the separate Velo Payments API Reference.

    ## API Considerations

    The Velo Payments API is REST based and uses the JSON format for requests and responses.

    Most calls are secured using OAuth 2 security and require a valid authentication access token for successful operation. See the Authentication section for details.

    Where a dynamic value is required in the examples below, the {token} format is used, suggesting that the caller needs to supply the appropriate value of the token in question (without including the { or } characters).

    Where curl examples are given, the –d @filename.json approach is used, indicating that the request body should be placed into a file named filename.json in the current directory. Each of the curl examples in this document should be considered a single line on the command-line, regardless of how they appear in print.

    ## Authenticating with the Velo Platform

    Once Velo backoffice staff have added your organization as a payor within the Velo platform sandbox, they will create you a payor Id, an API key and an API secret and share these with you in a secure manner.

    You will need to use these values to authenticate with the Velo platform in order to gain access to the APIs. The steps to take are explained in the following:

    create a string comprising the API key (e.g. 44a9537d-d55d-4b47-8082-14061c2bcdd8) and API secret (e.g. c396b26b-137a-44fd-87f5-34631f8fd529) with a colon between them. E.g. 44a9537d-d55d-4b47-8082-14061c2bcdd8:c396b26b-137a-44fd-87f5-34631f8fd529

    base64 encode this string. E.g.: NDRhOTUzN2QtZDU1ZC00YjQ3LTgwODItMTQwNjFjMmJjZGQ4OmMzOTZiMjZiLTEzN2EtNDRmZC04N2Y1LTM0NjMxZjhmZDUyOQ==

    create an HTTP **Authorization** header with the value set to e.g. Basic NDRhOTUzN2QtZDU1ZC00YjQ3LTgwODItMTQwNjFjMmJjZGQ4OmMzOTZiMjZiLTEzN2EtNDRmZC04N2Y1LTM0NjMxZjhmZDUyOQ==

    perform the Velo authentication REST call using the HTTP header created above e.g. via curl:

    ```
      curl -X POST \
      -H "Content-Type: application/json" \
      -H "Authorization: Basic NDRhOTUzN2QtZDU1ZC00YjQ3LTgwODItMTQwNjFjMmJjZGQ4OmMzOTZiMjZiLTEzN2EtNDRmZC04N2Y1LTM0NjMxZjhmZDUyOQ==" \
      'https://api.sandbox.velopayments.com/v1/authenticate?grant_type=client_credentials'
    ```

    If successful, this call will result in a **200** HTTP status code and a response body such as:

    ```
      {
        "access_token":"19f6bafd-93fd-4747-b229-00507bbc991f",
        "token_type":"bearer",
        "expires_in":1799,
        "scope":"..."
      }
    ```
    ## API access following authentication
    Following successful authentication, the value of the access_token field in the response (indicated in green above) should then be presented with all subsequent API calls to allow the Velo platform to validate that the caller is authenticated.

    This is achieved by setting the HTTP Authorization header with the value set to e.g. Bearer 19f6bafd-93fd-4747-b229-00507bbc991f such as the curl example below:

    ```
      -H "Authorization: Bearer 19f6bafd-93fd-4747-b229-00507bbc991f "
    ```

    If you make other Velo API calls which require authorization but the Authorization header is missing or invalid then you will get a **401** HTTP status response.
  license:
    name: Apache License 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
  title: Velo Payments APIs
  version: 2.35.57
  x-apisguru-categories:
    - ecommerce
  x-logo:
    url: https://avatars1.githubusercontent.com/u/38107746?s=200&v=4
  x-origin:
    - format: openapi
      url: https://raw.githubusercontent.com/velopaymentsapi/VeloOpenApi/master/spec/openapi.yaml
      version: "3.0"
  x-providerName: velopayments.com
security:
  - OAuth2: []
tags:
  - description: |
      A payee is a person you wish to transfer money to. In this section you will find API opertions for working with Payees.
    name: Payees
  - description: Payee invitation is a process of inviting individual payees to the Velo platform. In this sction you will find APIs for working with Payee Invitations.
    name: Payee Invitation
  - description: A Payor is the entity which is sending money. Here you will find the available APIs for working with Payors.
    name: Payors
  - description: |
      <p>Payors that are part of the same organization can be linked together in a hierarchical fashion</p>
      <p>Payors higher up in the tree can read and write data on behalf of payors below them</p>
      <p>For example Payor A can make payouts on behalf of Payor B if Payor B is linked below Payor A</p>
      <p>Payors can not access data of payors above them in the hierarchy</p>
      <p>Contact Velo if you need to link payors in your organization</p>
    name: Payor Hierarchy
  - description: |
      <p>Payout APIs allow you to create and instruct payouts to payees</p>
      <p>There are three phases to a payout:</p>
      <ul>
          <li>Submit - the payments are created within the platform</li>
          <li>Quote - optional step if FX is involved</li>
          <li>Instruct - the payments are sent to the payment rails for processing</li>
      </ul>
      <p>Between 1 and 2000 payments can be created within the platform as part of a Payout</p>
    name: Payouts
  - description: |
      <p>APIs for initiating funding of source accounts from external sources and viewing balance updates</p>
    name: Funding
  - description: |
      <p>Source Accounts are where funds are drawn from for making payouts</p>
    name: Source Accounts
  - description: Payment Audit Service APIs allow you to see the history of fundings, payouts, and payments to payees.
    name: Payment Audit Service
  - description: |
      <p>When a payor creates a payee then an invite token is emailed to the invited payee</p>
      <p>Payees use this token to onboard to the platform</p>
      <p>There are several required tasks that the payee must perform before they are accepted onto the platform</p>
    name: Invites
  - description: |
      <p>Verification tokens allow users to complete authenitcation flows such as user invite, MFA registration and password reset</p>
      <p>Tokens have an expiry and are one-time use only</p>
    name: Tokens
  - description: |
      <p>This document, including all counts herein, and the Velo Payments API are the intellectual property
      of Velo Payments. The Velo Payment API and your use of the Velo Payment API, is goverend by and subject to the
      Velo Payments Terms of Use</p>
      <p>&copy; Velo Payments, Inc.</p>
    name: Legal
paths:
  /v1/authenticate:
    post:
      description: |
        <p>Use this endpoint to obtain an access token for calling Velo Payments APIs. </p>
        <p>You need your API key and API secret issued by Velo</p>
        <p>To login and get an access token the API key and API secret must be Base64 encoded by concatenating them with a colon between them</p>
        <p>e.g. Given an ApiKey: 44a9537d-d55d-4b47-8082-14061c2bcdd8 and ApiSecret: c396b26b-137a-44fd-87f5-34631f8fd529</p>
        <p>Using a Base64 encode function Base64Encoder().encode("44a9537d-d55d-4b47-8082-14061c2bcdd8:c396b26b-137a-44fd-87f5-34631f8fd529")</p>
        <p>Included as a Basic Authorization header: -H "Authorization: Basic NDRhOTUzN2QtZDU1ZC00YjQ3LTgwODItMTQwNjFjMmJjZGQ4OmMzOTZiMjZiLTEzN2EtNDRmZC04N2Y1LTM0NjMxZjhmZDUyOQ==" </p>
      operationId: veloAuth
      parameters:
        - description: OAuth grant type. Should use 'client_credentials'
          in: query
          name: grant_type
          schema:
            default: client_credentials
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AuthResponse"
          description: Valid Authenication response
          headers:
            Cache-Control:
              description: Ensure clients do not cache request
              required: true
              schema:
                default: no-store
                type: string
            Pragma:
              description: Ensure clients do not cache request
              required: true
              schema:
                default: no-cache
                type: string
      security:
        - basicAuth: []
      summary: Authentication endpoint
      tags:
        - Login
  /v1/deltas/fundings:
    get:
      description: Get funding audit deltas for a payor
      operationId: listFundingAuditDeltas
      parameters:
        - in: query
          name: payorId
          required: true
          schema:
            format: uuid
            type: string
        - in: query
          name: updatedSince
          required: true
          schema:
            format: date-time
            type: string
        - description: Page number. Default is 1.
          in: query
          name: page
          required: false
          schema:
            default: 1
            format: int32
            type: integer
        - description: The number of results to return in a page
          in: query
          name: pageSize
          required: false
          schema:
            default: 25
            format: int32
            maximum: 100
            minimum: 1
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PageResourceFundingPayorStatusAuditResponseFundingPayorStatusAuditResponse"
          description: Funding Account Deltas
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
      summary: Get Funding Audit Delta
      tags:
        - Funding
  /v1/deltas/payments:
    get:
      deprecated: true
      description: Deprecated (use /v4/payments/deltas instead)
      operationId: listPaymentChanges
      parameters:
        - description: The Payor ID to find associated Payments
          in: query
          name: payorId
          required: true
          schema:
            format: uuid
            type: string
        - description: The updatedSince filter in the format YYYY-MM-DDThh:mm:ss+hh:mm
          in: query
          name: updatedSince
          required: true
          schema:
            format: date-time
            type: string
        - description: Page number. Default is 1.
          in: query
          name: page
          required: false
          schema:
            default: 1
            format: int32
            type: integer
        - description: The number of results to return in a page
          in: query
          name: pageSize
          required: false
          schema:
            default: 100
            format: int32
            maximum: 1000
            minimum: 1
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PaymentDeltaResponseV1"
          description: Details of Payment Changes
        "400":
          description: Bad Request
      summary: V1 List Payment Changes
      tags:
        - Payment Audit Service (Deprecated)
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v1/deltas/payments?pageSize=2&page=8&payorId=0a818933-087d-47f2-ad83-2f986ed087eb&updatedSince=2019-01-20T09:00:00+00:00' -i -X GET \
                -H 'Authorization: Bearer 6dd5e976-e329-462f-bd6b-25d463cf02fd' \
                -H 'Content-Type: application/json'
  "/v1/fundings/{fundingId}":
    get:
      description: Get Funding by Id
      operationId: getFundingByIdV1
      parameters:
        - in: path
          name: fundingId
          required: true
          schema:
            format: uuid
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FundingResponse"
          description: Funding response
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: Get Funding
      tags:
        - Funding
  /v1/logout:
    post:
      description: |
        <p>Given a valid access token in the header then log out the authenticated user or client </p>
        <p>Will revoke the token</p>
      operationId: logout
      responses:
        "204":
          description: User has been logged out
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
      summary: Logout
      tags:
        - Login
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v1/logout' -i -X POST \
                -H 'Content-Type: application/json' \
                -H 'Authorization: Bearer 93560bbb-5e79-492a-97b5-1ffbdf1cfeb8'
  /v1/password/reset:
    post:
      description: |
        <p>Reset password </p>
        <p>An email with an embedded link will be sent to the receipient of the email address </p>
        <p>The link will contain a token to be used for resetting the password </p>
      operationId: resetPassword
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ResetPasswordRequest"
        description: An Email address to send the reset password link to
        required: true
      responses:
        "204":
          description: the request was accepted
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
      security: []
      summary: Reset password
      tags:
        - Login
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v1/password/reset' -i -X POST \
                  -H 'Content-Type: application/json' \
                  -d '{"email":"foo@example.com"}'
  /v1/paymentChannelRules:
    get:
      deprecated: true
      description: List the country specific payment channel rules.
      operationId: listPaymentChannelRulesV1
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PaymentChannelRulesResponse"
          description: List Payment Channel Country Rules
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
      summary: List Payment Channel Country Rules
      tags:
        - Countries
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v1/paymentChannelRules' -i -X GET \
                -H 'Authorization: Bearer 63fa49a0-1eeb-4756-b4fb-7cdd94ae80c1'
  /v1/paymentaudit/fundings:
    get:
      deprecated: true
      description: Deprecated (use /v4/paymentaudit/fundings)
      operationId: getFundingsV1
      parameters:
        - description: The account owner Payor ID
          in: query
          name: payorId
          required: true
          schema:
            format: uuid
            type: string
        - description: Page number. Default is 1.
          in: query
          name: page
          required: false
          schema:
            default: 1
            format: int32
            type: integer
        - description: The number of results to return in a page
          in: query
          name: pageSize
          required: false
          schema:
            default: 25
            format: int32
            maximum: 100
            minimum: 1
            type: integer
        - description: |
            List of sort fields. Example: ```?sort=destinationCurrency:asc,destinationAmount:asc```
            Default is no sort. The supported sort fields are: dateTime and amount.
          in: query
          name: sort
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetFundingsResponse"
          description: Get Fundings normal response
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: V1 Get Fundings for Payor
      tags:
        - Payment Audit Service (Deprecated)
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v1/paymentaudit/fundings?payorId=2a5d8af2-a1ed-4d7f-b9a7-ebe4b333be5a' -i -X GET \
                -H 'Authorization: Bearer 3667f994-7d41-4d20-990d-b79fa720e56b'
  /v1/paymentaudit/payoutStatistics:
    get:
      deprecated: true
      description: Deprecated (Use /v4/paymentaudit/payoutStatistics)
      operationId: getPayoutStatsV1
      parameters:
        - description: The account owner Payor ID. Required for external users.
          in: query
          name: payorId
          required: false
          schema:
            format: uuid
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetPayoutStatistics"
          description: Payout Statistics response
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: V1 Get Payout Statistics
      tags:
        - Payment Audit Service (Deprecated)
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v1/paymentaudit/payoutStatistics?payorId=c61b32ac-8e50-433e-9372-b5b1c8180742' -i -X GET \
                -H 'Authorization: Bearer e71d3dfe-3587-4df6-9f8d-59d3135d7bf7'
  "/v1/payments/{paymentId}/withdraw":
    post:
      description: |
        <p>withdraw a payment </p>
        <p>There are a variety of reasons why this can fail</p>
        <ul>
            <li>the payment must be in a state of 'accepted' or 'unfunded'</li>
            <li>the payout must not be in a state of 'instructed'</li>
        </ul>
      operationId: withdrawPayment
      parameters:
        - description: Id of the Payment
          in: path
          name: paymentId
          required: true
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/WithdrawPaymentRequest"
        description: details for withdrawal
        required: true
      responses:
        "204":
          description: The payment was withdrawn
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: Withdraw a Payment
      tags:
        - Payouts
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v1/payments/b39264fc-560e-4fa6-b6c3-b12d42e14596/withdraw' -i -X POST \
            -H 'Authorization: Bearer 63e4d691-847b-46b5-893d-fd15c54dd4bf' \
            -H 'Content-Type: application/json' \
            -d '{"reason": "payment submitted in error"}'
  /v1/payorLinks:
    get:
      description: |
        <p>If the payor is set up as part of a hierarchy you can use this API to traverse the hierarchy</p>
      operationId: payorLinksV1
      parameters:
        - description: The Payor ID from which to start the query to show all descendants
          in: query
          name: descendantsOfPayor
          required: false
          schema:
            format: uuid
            type: string
        - description: Query for the parent payor details for this payor id
          in: query
          name: parentOfPayor
          required: false
          schema:
            format: uuid
            type: string
        - description: |
            <p>List of additional Payor fields to include in the response for each Payor</p>
            <p>The values of payorId and payorName are always included for each Payor by default</p>
            <p>You can add fields to the response for each payor by including them in the fields parameter separated by commas</p>
            <p>The supported fields are any combination of: primaryContactEmail,kycState</p>
          in: query
          name: fields
          required: false
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PayorLinksResponse"
          description: Details of Payor Links
          x-contracts:
            - body:
                links:
                  - fromPayorId: 51e93026-2f47-4dfd-a5ff-c0da0954a847
                    linkId: 65514617-d18d-4bb4-8cee-09b3e7625fc9
                    linkType: PARENT_OF
                    toPayorId: b0b09d8a-866c-4703-833e-2ff9106e185b
                  - fromPayorId: b0b09d8a-866c-4703-833e-2ff9106e185b
                    linkId: 6a91b045-6f42-4f9f-a627-f97f66d39bef
                    linkType: PARENT_OF
                    toPayorId: 15486051-aa39-430d-8926-a4bc2fea1d04
                payors:
                  - payorId: 51e93026-2f47-4dfd-a5ff-c0da0954a847
                    payorName: Payor One
                  - payorId: b0b09d8a-866c-4703-833e-2ff9106e185b
                    payorName: Payor Two
                  - payorId: 15486051-aa39-430d-8926-a4bc2fea1d04
                    payorName: Payor Three
              contractId: 1
              headers:
                Content-Type: application/json
              matchers:
                headers:
                  - key: Content-Type
                    regex: application/json.*
            - body:
                links:
                  - fromPayorId: 51e93026-2f47-4dfd-a5ff-c0da0954a847
                    linkId: 65514617-d18d-4bb4-8cee-09b3e7625fc9
                    linkType: PARENT_OF
                    toPayorId: b0b09d8a-866c-4703-833e-2ff9106e185b
                  - fromPayorId: b0b09d8a-866c-4703-833e-2ff9106e185b
                    linkId: 6a91b045-6f42-4f9f-a627-f97f66d39bef
                    linkType: PARENT_OF
                    toPayorId: 15486051-aa39-430d-8926-a4bc2fea1d04
                payors:
                  - kycState: FAILED_KYC
                    payorId: 51e93026-2f47-4dfd-a5ff-c0da0954a847
                    payorName: Payor One
                    primaryContactEmail: payorone@somewhere.com
                  - kycState: PASSED_KYC
                    payorId: b0b09d8a-866c-4703-833e-2ff9106e185b
                    payorName: Payor Two
                    primaryContactEmail: payortwo@anothersite.com
                  - kycState: REQUIRES_KYC
                    payorId: 15486051-aa39-430d-8926-a4bc2fea1d04
                    payorName: Payor Three
                    primaryContactEmail: payorthree@example.com
              contractId: 2
              headers:
                Content-Type: application/json
              matchers:
                headers:
                  - key: Content-Type
                    regex: application/json.*
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: List Payor Links
      tags:
        - Payor Hierarchy
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v1/payorLinks?descendantsOfPayor=0a818933-087d-47f2-ad83-2f986ed087eb' -i -X GET \
                -H 'Authorization: Bearer 3387c417-464c-41a6-b25e-6630f0a06093' \
                -H 'Content-Type: application/json'
      x-contracts:
        - contractId: 1
          ignored: true
          name: Test List Payor Links - default Payor fields
          request:
            queryParameters:
              - key: descendantsOfPayor
                value: 0a818933-087d-47f2-ad83-2f986ed087eb
          serviceName: payor-service
        - contractId: 2
          ignored: true
          name: Test List Payor Links - all Payor fields requested
          request:
            queryParameters:
              - key: descendantsOfPayor
                value: 0a818933-087d-47f2-ad83-2f986ed087eb
              - key: fields
                value: primaryContactEmail,kycState
          serviceName: payor-service
    post:
      description: This endpoint allows you to create a payor link.
      operationId: createPayorLinks
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreatePayorLinkRequest"
        description: Request to create a payor link
        required: true
      responses:
        "201":
          description: HTTP Creeated
          headers:
            Location:
              description: URI to location of created resource
              schema:
                example: http://example.com/resourcepath/123123123
                type: string
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      security:
        - oAuthVeloBackOffice: []
      summary: Create a Payor Link
      tags:
        - Payors Private
  "/v1/payors/{payorId}":
    get:
      deprecated: true
      description: |
        <p>Get a Single Payor by Id.</p>
        <p>deprecated since v2.10 - Use /v2/payors
      operationId: getPayorByIdV1
      parameters:
        - description: The Payor Id
          in: path
          name: payorId
          required: true
          schema:
            format: uuid
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PayorV1"
          description: Get Payor Details
          x-contracts:
            - body:
                address:
                  city: San Francisco
                  country: US
                  line1: 101 California Street
                  zipOrPostcode: "94111"
                allowsLanguageChoice: false
                collectiveAlias: MyAlias
                dbaName: FlyByNight, Inc
                kycState: PASSED_KYC
                language: EN
                manualLockout: false
                maxMasterPayorAdmins: 2
                payeeGracePeriodDays: 90
                payeeGracePeriodProcessingEnabled: true
                payorId: 0a818933-087d-47f2-ad83-2f986ed087eb
                payorName: Joe
                primaryContactEmail: foo@example.com
                primaryContactName: Joe
                primaryContactPhone: 1231231234
                reminderEmailsOptOut: false
                supportContact: support@example.com
              contractId: 1
              headers:
                Content-Type: application/json;charset=UTF-8
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Payor Id Not Found
          x-contracts:
            - contractId: 2
      summary: Get Payor
      tags:
        - Payors
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v1/payors/126969bd-6a18-47ec-96e1-57559afecf32' -i -X GET \
                -H 'Authorization: Bearer 3387c417-464c-41a6-b25e-6630f0a06093' \
                -H 'Content-Type: application/json'
      x-contracts:
        - contractId: 1
          contractPath: /v1/payors/0a818933-087d-47f2-ad83-2f986ed087eb
          name: Test Get Payor
          serviceName: payor-service
        - contractId: 2
          contractPath: /v1/payors/00000000-0000-0000-0000-000000000000
          name: Test Payor Not Found
          serviceName: payor-service
  "/v1/payors/{payorId}/applications":
    post:
      description: |
        <p>Create an application for the given Payor ID.</p>
        <p>Applications provide a means to group your API Keys</p>
        <p>For example you might have an SAP application that you wish to integrate with Velo</p>
        <p>You can create an application and then create one or more API keys for the application</p>
      operationId: payorCreateApplicationV1
      parameters:
        - description: The Payor Id
          in: path
          name: payorId
          required: true
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PayorCreateApplicationRequest"
        description: Details of application to create
        required: true
        x-contracts:
          - body:
              description: a foo application
              name: foo
            contractId: 1
            headers:
              Content-Type: application/json
            matchers:
              body:
                - path: $.name
                  predefined: non_empty
                  type: by_regex
                - path: $.description
                  predefined: non_empty
                  type: by_regex
              headers:
                - key: Content-Type
                  regex: application/json.*
      responses:
        "201":
          description: Success
          headers:
            Location:
              description: location
              schema:
                example: |
                  <p>HTTP/1.1 201 Created</p>
                  <p>Location: https://api.sandbox.velopayments.com/v1/payors/2e144160-e87f-4976-b577-6087e683f419/applications/8701c174-b64a-476a-ab1a-4af27f09f0b8</p>
                type: string
          x-contracts:
            - contractId: 1
              mathers:
                headers:
                  - key: Location
                    predefined: non_blank
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
        "409":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_409"
          description: |
            The request contained data that would result in a duplicate value
      summary: Create Application
      tags:
        - Payors
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v1/payors/79a6fdaa-f4bb-47b7-9c1f-f6fd99c156a0/applications' -i -X POST \
                -H 'Content-Type: application/json' \
                -H 'Authorization: Bearer 93560bbb-5e79-492a-97b5-1ffbdf1cfeb8' \
                -d '{"name":"foo","description":"a foo application"}'
      x-contracts:
        - contractId: 1
          contractPath: /v1/payors/835ac62e-616c-4261-bf38-63366db78c0d/applications
          name: Test Create Application
          serviceName: payor-service
  "/v1/payors/{payorId}/applications/{applicationId}/keys":
    post:
      description: |
        <p>Create an an API key for the given payor Id and application Id</p>
        <p>You can create multiple API Keys for a given application</p>
        <p>API Keys are programmatic users for integrating your application with the Velo platform</p>
      operationId: payorCreateApiKeyV1
      parameters:
        - description: The Payor Id
          in: path
          name: payorId
          required: true
          schema:
            format: uuid
            type: string
        - description: Application ID
          in: path
          name: applicationId
          required: true
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PayorCreateApiKeyRequest"
        description: Details of application API key to create
        required: true
        x-contracts:
          - body:
              description: A key description
              name: Key Name
              roles:
                - velo.payor.admin
            contractId: 4
            headers:
              Content-Type: application/json
            matchers:
              body:
                - path: $.name
                  predefined: non_empty
                  type: by_regex
                - path: $.description
                  predefined: non_empty
                  type: by_regex
                - path: $.roles
                  predefined: non_empty
                  type: by_regex
              headers:
                - key: Content-Type
                  regex: application/json.*
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PayorCreateApiKeyResponse"
          description: HTTP Ok, key created
          x-contracts:
            - body:
                apiKey: 385d4506-e7dd-446e-a092-5f30b98e7b26
                apiSecret: f25767d9-342a-48ac-a788-0a7a38ae6fb3
              contractId: 4
              headers:
                Content-Type: application/json
              matchers:
                body:
                  - path: $.apiKey
                    predefined: non_empty
                    type: by_regex
                  - path: $.apiSecret
                    predefined: non_empty
                    type: by_regex
                headers:
                  - key: Content-Type
                    regex: application/json.*
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: Create API Key
      tags:
        - Payors
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v1/payors/79a6fdaa-f4bb-47b7-9c1f-f6fd99c156a0/applications/ba08877f-9d96-41e4-9c26-44a872d856ae/keys' -i -X POST \
                -H 'Content-Type: application/json' \
                -H 'Authorization: Bearer 698f1609-c616-48f0-b8d5-03373e9fbd40' \
                -d '{"name":"foo","description":"a foo key","roles":["velo.payor.admin"]}'
      x-contracts:
        - contractId: 4
          contractPath: /v1/payors/0a818933-087d-47f2-ad83-2f986ed087eb/applications/ba08877f-9d96-41e4-9c26-44a872d856ae/keys
          name: Create an API key for a payor
          serviceName: payor-service
  "/v1/payors/{payorId}/branding":
    get:
      description: Get the payor branding details.
      operationId: payorGetBranding
      parameters:
        - description: The Payor Id
          in: path
          name: payorId
          required: true
          schema:
            format: uuid
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PayorBrandingResponse"
          description: HTTP Ok, key created
          x-contracts:
            - body:
                collectiveAlias: customer
                dbaName: FlybyNight Inc
                logoUrl: http://example.com
                payorName: Payor1
                supportContact: support@example.com
              contractId: 1
              matchers:
                body:
                  - path: $.payorName
                    predefined: non_empty
                    type: by_regex
                  - path: $.logoUrl
                    predefined: non_empty
                    type: by_regex
                  - path: $.collectiveAlias
                    predefined: non_empty
                    type: by_regex
                  - path: $.supportContact
                    predefined: non_empty
                    type: by_regex
                  - path: $.dbaName
                    predefined: non_empty
                    type: by_regex
                headers:
                  - key: Content_type
                    regex: application/json.*
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Payor Id Not Found
          x-contracts:
            - contractId: 2
      summary: Get Branding
      tags:
        - Payors
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v1/payors/450ecb66-df18-4d0c-b557-f718782775df/branding' -i -X GET \
                -H 'Content-Type: application/json' \
                -H 'Authorization: Bearer d60eef1c-bea6-4f7e-8755-e916268ad4ff'
      x-contracts:
        - contractId: 1
          contractPath: /v1/payors/0a818933-087d-47f2-ad83-2f986ed087eb/branding
          description: Test to get branding details for payor
          ignored: false
          label: Payor_Branding
          name: Get Payor Branding Details
          priority: 10
          serviceName: payor-service
        - contractId: 2
          contractPath: /v1/payors/00000000-0000-0000-0000-000000000000/branding
          description: Test to not found status returned by API
          label: Payor_Branding
          name: Get Payor Brandding Details - not found
          priority: 20
          serviceName: payor-service
  "/v1/payors/{payorId}/branding/logos":
    post:
      description: |
        <p>Add Payor Logo</p>
        <p>Logo file is used in your branding and emails sent to payees</p>
      operationId: payorAddPayorLogoV1
      parameters:
        - description: The Payor Id
          in: path
          name: payorId
          required: true
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: "#/components/schemas/PayorLogoRequest"
        description: Image file to upload
        required: true
      responses:
        "204":
          description: No Content
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: Add Logo
      tags:
        - Payors
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v1/payors/450ecb66-df18-4d0c-b557-f718782775df/branding/logos' -i -X POST \
                -H 'Content-Type: multipart/form-data' \
                -F 'logo=@mylogo.png;type=image/png'
  "/v1/payors/{payorId}/reminderEmailsUpdate":
    post:
      description: |
        Update the emailRemindersOptOut field for a Payor. This API can be used to opt out
        or opt into Payor Reminder emails. These emails are typically around payee events
        such as payees registering and onboarding.
      operationId: payorEmailOptOut
      parameters:
        - description: The Payor Id
          in: path
          name: payorId
          required: true
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PayorEmailOptOutRequest"
        description: Reminder Emails Opt-Out Request
        required: true
        x-contracts:
          - body:
              reminderEmailsOptOut: true
            contractId: 1
            headers:
              Content-Type: application/json
          - body:
              reminderEmailsOptOut: true
            contractId: 2
            headers:
              Content-Type: application/json
      responses:
        "202":
          description: HTTP Accepted
          x-contracts:
            - contractId: 1
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Payor Id Not Found
          x-contracts:
            - contractId: 2
      summary: Reminder Email Opt-Out
      tags:
        - Payors
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v1/payors/d8d49d3a-0712-4ad0-bb14-2e308d240233/reminderEmailsUpdate' -i -X POST \
                -H 'Authorization: Bearer fc825fad-e4a7-49e5-b6d9-9b9aa47a19c8' \
                -H 'Content-Type: application/json' \
                -d '{"reminderEmailsOptOut":true}'
      x-contracts:
        - contractId: 1
          contractPath: /v1/payors/0a818933-087d-47f2-ad83-2f986ed087eb/reminderEmailsUpdate
          name: Test Email Opt-Out
          serviceName: payor-service
        - contractId: 2
          contractPath: /v1/payors/00000000-0000-0000-0000-000000000000/reminderEmailsUpdate
          name: Test Not Found
          serviceName: payor-service
  "/v1/sourceAccounts/{sourceAccountId}/notifications":
    post:
      deprecated: true
      description: |
        <p>Set notifications for a given source account</p>
        <p>deprecated since 2.34 (use v3 version)</p>
      operationId: setNotificationsRequest
      parameters:
        - description: Source account id
          in: path
          name: sourceAccountId
          required: true
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/SetNotificationsRequest"
        description: Body to included minimum balance to set
        required: true
      responses:
        "204":
          description: Request Fulfilled
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: Set notifications
      tags:
        - Source Accounts
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v1/sourceAccounts/533b082b-b3eb-4712-8242-0fd3a307033f/notifications' -i -X POST \
                -H 'Authorization: Bearer 67c1b4fc-29ce-425c-863b-950163a5e971' \
                -H 'Content-Type: application/json' \
                -d '{"minimumBalance":900}'
  /v1/supportedCountries:
    get:
      deprecated: true
      description: |
        <p>List the supported countries.</p>
        <p>This version will be retired in March 2020. Use /v2/supportedCountries</p>
      operationId: listSupportedCountriesV1
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SupportedCountriesResponse"
          description: List of Supported Countries
      security: []
      summary: List Supported Countries
      tags:
        - Countries
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v1/supportedCountries' -i -X GET \
                -H 'Authorization: Bearer 9a7c9010-547f-410e-ac3c-fd6f6701c745'
  /v1/validate:
    post:
      description: |
        <p>The second part of login involves validating using an MFA device</p>
        <p>An access token with PRE_AUTH authorities is required</p>
      operationId: validateAccessToken
      parameters:
        - description: Bearer token authorization leg of validate
          in: header
          name: Authorization
          required: false
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AccessTokenValidationRequest"
        description: |
          An OTP from the user's registered MFA Device
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AccessTokenResponse"
          description: User request has been validated
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
      summary: validate
      tags:
        - Login
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v1/validate' -i -X POST \
                -H 'Content-Type: application/json' \
                -H 'Authorization: Bearer 93560bbb-5e79-492a-97b5-1ffbdf1cfeb8' \
                -d '{"otp":"123456"}'
  /v1/webhooks:
    description: List the details about the webhooks for the given payor.
    get:
      description: List the details about the webhooks for the given payor.
      operationId: listWebhooksV1
      parameters:
        - description: Page number. Default is 1.
          in: query
          name: page
          required: false
          schema:
            default: 1
            format: int32
            type: integer
        - description: The number of results to return in a page
          in: query
          name: pageSize
          required: false
          schema:
            default: 25
            format: int32
            maximum: 100
            minimum: 1
            type: integer
        - description: The Payor ID
          in: query
          name: payorId
          required: true
          schema:
            format: uuid
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebhooksResponse"
          description: Webhook response
        "400":
          description: Invalid Request Parameters
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
      summary: List the details about the webhooks for the given payor.
      tags:
        - Webhooks
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v1/webhooks?payorId=a2967711-df07-41e5-b5ea-f563088911c6' -i -X GET \
                -H 'Authorization: Bearer 757a7dbf-2afb-45ec-877c-2aa3857c8e08'
    post:
      description: Create Webhook
      operationId: createWebhookV1
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateWebhookRequest"
      responses:
        "201":
          description: Webhook Created
          headers:
            Location:
              description: Reference to Webhook object
              schema:
                type: string
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
      summary: Create Webhook
      tags:
        - Webhooks
    summary: List Webhooks
  "/v1/webhooks/{webhookId}":
    description: Get details about the given webhook.
    get:
      description: Get details about the given webhook.
      operationId: getWebhookV1
      parameters:
        - description: Webhook id
          in: path
          name: webhookId
          required: true
          schema:
            format: uuid
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebhookResponse"
          description: Webhook response
        "400":
          description: Bad Request, Invalid path parameter
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: Get details about the given webhook.
      tags:
        - Webhooks
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v1/webhooks/126895a8-ba3d-44e8-9b34-84ee579cee7a' -i -X GET \
                -H 'Authorization: Bearer a016f840-dafc-4b10-95f5-70ecc75a02d1'
    post:
      description: Update Webhook
      operationId: updateWebhookV1
      parameters:
        - description: Webhook id
          in: path
          name: webhookId
          required: true
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UpdateWebhookRequest"
      responses:
        "204":
          description: Webhook Updated
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: Update Webhook
      tags:
        - Webhooks
    summary: Get Webhook
  "/v1/webhooks/{webhookId}/ping":
    description: Trigger an immediate ping notification to the webhook
    post:
      operationId: pingWebhookV1
      parameters:
        - description: Webhook id
          in: path
          name: webhookId
          required: true
          schema:
            format: uuid
            type: string
      responses:
        "202":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PingResponse"
          description: Send ping
        "400":
          description: Bad Request, Invalid path parameter
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      tags:
        - Webhooks
    summary: Ping Webhook
  /v2/currencies:
    get:
      description: List the supported currencies.
      operationId: listSupportedCurrenciesV2
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SupportedCurrencyResponseV2"
          description: List Supported Currencies
      security: []
      summary: List Supported Currencies
      tags:
        - Currencies
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v2/currencies' -i -X GET
  /v2/fundingAccounts:
    get:
      description: Get the funding accounts.
      operationId: getFundingAccountsV2
      parameters:
        - in: query
          name: payorId
          required: false
          schema:
            format: uuid
            type: string
        - description: The descriptive funding account name
          in: query
          name: name
          required: false
          schema:
            type: string
        - description: The 2 letter ISO 3166-1 country code (upper case)
          in: query
          name: country
          required: false
          schema:
            example: US
            type: string
        - description: The ISO 4217 currency code
          in: query
          name: currency
          required: false
          schema:
            example: USD
            type: string
        - description: The type of funding account.
          in: query
          name: type
          required: false
          schema:
            $ref: "#/components/schemas/FundingAccountTypeV2"
        - description: Page number. Default is 1.
          in: query
          name: page
          required: false
          schema:
            default: 1
            format: int32
            type: integer
        - description: The number of results to return in a page
          in: query
          name: pageSize
          required: false
          schema:
            default: 25
            format: int32
            maximum: 100
            minimum: 1
            type: integer
        - description: List of sort fields (e.g. ?sort=accountName:asc,name:asc) Default is accountName:asc The supported sort fields are - accountName, name.
          in: query
          name: sort
          required: false
          schema:
            default: accountName:asc
            pattern: "[a-zA-Z]+[:desc|:asc]"
            type: string
        - in: query
          name: sensitive
          required: false
          schema:
            default: false
            type: boolean
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ListFundingAccountsResponseV2"
          description: Get Funding Accounts Response
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
      summary: Get Funding Accounts
      tags:
        - Funding
    post:
      description: Create Funding Account
      operationId: createFundingAccountV2
      requestBody:
        content:
          application/json:
            examples:
              fbo:
                summary: FBO Example
                value:
                  accountName: My Account Name
                  accountNumber: 1231231234556
                  name: My FBO Account
                  payorId: ee53e01d-c078-43fd-abd4-47e92f4a06cf
                  routingNumber: 123456789
                  type: FBO
              private:
                summary: PRIVATE Example
                value:
                  accountName: My Account Name
                  accountNumber: 1231231234556
                  currency: AUD
                  name: My PRIVATE Account
                  payorId: ee53e01d-c078-43fd-abd4-47e92f4a06cf
                  routingNumber: 123456789
                  type: PRIVATE
              wubs:
                summary: WUBS
                value:
                  currency: USD
                  name: My WUBS Account
                  payorId: ee53e01d-c078-43fd-abd4-47e92f4a06cf
                  type: WUBS_DECOUPLED
            schema:
              $ref: "#/components/schemas/CreateFundingAccountRequestV2"
      responses:
        "202":
          description: Funding Account Creation Request Accepted
          headers:
            Location:
              description: Reference to status object
              schema:
                format: uri
                type: string
            Retry-After:
              description: How long the user agent should wait before making a follow-up request (seconds)
              schema:
                type: integer
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
      summary: Create Funding Account
      tags:
        - Funding Manager Private
  "/v2/fundingAccounts/{fundingAccountId}":
    get:
      description: Get Funding Account by ID
      operationId: getFundingAccountV2
      parameters:
        - in: path
          name: fundingAccountId
          required: true
          schema:
            format: uuid
            type: string
        - in: query
          name: sensitive
          required: false
          schema:
            default: false
            type: boolean
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FundingAccountResponseV2"
          description: Funding Account Response
        "400":
          description: Bad Request
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: Get Funding Account
      tags:
        - Funding
  "/v2/payors/{payorId}":
    get:
      description: |
        Get a Single Payor by Id.
      operationId: getPayorByIdV2
      parameters:
        - description: The Payor Id
          in: path
          name: payorId
          required: true
          schema:
            format: uuid
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PayorV2"
          description: Get Payor Details
          x-contracts:
            - body:
                address:
                  city: San Francisco
                  country: US
                  line1: 101 California Street
                  zipOrPostcode: 94111
                allowsLanguageChoice: false
                collectiveAlias: MyAlias
                dbaName: FlyByNight, Inc
                kycState: PASSED_KYC
                language: EN
                manualLockout: false
                maxMasterPayorAdmins: 2
                payeeGracePeriodDays: 90
                payeeGracePeriodProcessingEnabled: true
                payorId: 0a818933-087d-47f2-ad83-2f986ed087eb
                payorName: Joe
                payorXid: ABC_12345678
                primaryContactEmail: foo@example.com
                primaryContactName: Joe
                primaryContactPhone: 1231231234
                reminderEmailsOptOut: false
                supportContact: support@example.com
              contractId: 1
              headers:
                Content-Type: application/json;charset=UTF-8
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Payor Id Not Found
          x-contracts:
            - contractId: 2
      summary: Get Payor
      tags:
        - Payors
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v2/payors/126969bd-6a18-47ec-96e1-57559afecf32' -i -X GET \
                -H 'Authorization: Bearer 3387c417-464c-41a6-b25e-6630f0a06093' \
                -H 'Content-Type: application/json'
      x-contracts:
        - contractId: 1
          contractPath: /v2/payors/0a818933-087d-47f2-ad83-2f986ed087eb
          name: Test Get Payor V2
          serviceName: payor-service
        - contractId: 2
          contractPath: /v2/payors/00000000-0000-0000-0000-000000000000
          name: Test Payor Not Found V2
          serviceName: payor-service
  /v2/sourceAccounts:
    description: List Source Accounts
    get:
      deprecated: true
      description: List source accounts.
      operationId: getSourceAccountsV2
      parameters:
        - description: Physical Account Name
          in: query
          name: physicalAccountName
          required: false
          schema:
            type: string
        - description: The physical account ID
          in: query
          name: physicalAccountId
          required: false
          schema:
            format: uuid
            type: string
        - description: The account owner Payor ID
          in: query
          name: payorId
          required: false
          schema:
            format: uuid
            type: string
        - description: The funding account ID
          in: query
          name: fundingAccountId
          required: false
          schema:
            format: uuid
            type: string
        - description: Page number. Default is 1.
          in: query
          name: page
          required: false
          schema:
            default: 1
            format: int32
            type: integer
        - description: The number of results to return in a page
          in: query
          name: pageSize
          required: false
          schema:
            default: 25
            format: int32
            maximum: 100
            minimum: 1
            type: integer
        - description: |
            List of sort fields e.g. ?sort=name:asc
            Default is name:asc
            The supported sort fields are - fundingRef, name, balance
          in: query
          name: sort
          required: false
          schema:
            default: fundingRef:asc
            pattern: "[fundingRef|name|balance]+[:desc|:asc]"
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ListSourceAccountResponseV2"
          description: List Source Account response
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: Get list of source accounts
      tags:
        - Source Accounts
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v2/sourceAccounts?payorId=a2967711-df07-41e5-b5ea-f563088911c6' -i -X GET \
                -H 'Authorization: Bearer 757a7dbf-2afb-45ec-877c-2aa3857c8e08'
    summary: List Source Accounts
  "/v2/sourceAccounts/{sourceAccountId}":
    get:
      deprecated: true
      description: Get details about given source account.
      operationId: getSourceAccountV2
      parameters:
        - description: Source account id
          in: path
          name: sourceAccountId
          required: true
          schema:
            format: uuid
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SourceAccountResponseV2"
          description: Source account response
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: Get Source Account
      tags:
        - Source Accounts
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v2/sourceAccounts/126895a8-ba3d-44e8-9b34-84ee579cee7a' -i -X GET \
                -H 'Authorization: Bearer a016f840-dafc-4b10-95f5-70ecc75a02d1'
  "/v2/sourceAccounts/{sourceAccountId}/fundingRequest":
    post:
      deprecated: true
      description: Instruct a funding request to transfer funds from the payor’s funding bank to the payor’s balance held within Velo  (202 - accepted, 400 - invalid request body, 404 - source account not found).
      operationId: createFundingRequestV2
      parameters:
        - description: Source account id
          in: path
          name: sourceAccountId
          required: true
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/FundingRequestV2"
        description: Body to included amount to be funded
        required: true
      responses:
        "202":
          description: Request Accepted
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: Create Funding Request
      tags:
        - Funding
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v2/sourceAccounts/533b082b-b3eb-4712-8242-0fd3a307033f/fundingRequest' -i -X POST \
                -H 'Authorization: Bearer 67c1b4fc-29ce-425c-863b-950163a5e971' \
                -H 'Content-Type: application/json' \
                -d '{"amount":999990}'
  "/v2/sourceAccounts/{sourceAccountId}/transfers":
    post:
      deprecated: true
      description: Transfer funds between source accounts for a Payor. The 'from' source account is identified in the URL, and is the account which will be debited. The 'to' (destination) source account is in the body, and is the account which will be credited. Both source accounts must belong to the same Payor. There must be sufficient balance in the 'from' source account, otherwise the transfer attempt will fail.
      operationId: transferFundsV2
      parameters:
        - description: The 'from' source account id, which will be debited
          in: path
          name: sourceAccountId
          required: true
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TransferRequestV2"
        description: Body
        required: true
      responses:
        "204":
          description: Request Processed
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: Transfer Funds between source accounts
      tags:
        - Source Accounts
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v2/sourceAccounts/533b082b-b3eb-4712-8242-0fd3a307033f/transfers' -i -X POST \
                -H 'Authorization: Bearer 67c1b4fc-29ce-425c-863b-950163a5e971' \
                -H 'Content-Type: application/json' \
                -d '{ "toSourceAccountId": "a99f93f9-6845-451d-a1f5-f3c841599dd7", "amount": 10000, "currency": "USD" }'
  /v2/supportedCountries:
    get:
      deprecated: true
      description: List the supported countries.
      operationId: listSupportedCountriesV2
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SupportedCountriesResponseV2"
          description: List of Supported Countries
      security: []
      summary: List Supported Countries
      tags:
        - Countries
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v2/supportedCountries' -i -X GET
  /v2/users:
    get:
      description: Get a paginated response listing the Users
      operationId: listUsers
      parameters:
        - description: The Type of the User.
          in: query
          name: type
          required: false
          schema:
            $ref: "#/components/schemas/UserType"
        - description: The status of the User.
          in: query
          name: status
          required: false
          schema:
            $ref: "#/components/schemas/UserStatus"
        - description: The entityId of the User.
          in: query
          name: entityId
          required: false
          schema:
            format: uuid
            type: string
        - description: The Type of the Payee entity. Either COMPANY or INDIVIDUAL.
          in: query
          name: payeeType
          required: false
          schema:
            $ref: "#/components/schemas/PayeeType"
        - description: Page number. Default is 1.
          in: query
          name: page
          required: false
          schema:
            default: 1
            format: int32
            type: integer
        - description: The number of results to return in a page
          in: query
          name: pageSize
          required: false
          schema:
            default: 25
            format: int32
            maximum: 100
            minimum: 1
            type: integer
        - description: |
            List of sort fields (e.g. ?sort=email:asc,lastName:asc)
            Default is email:asc 'name'
            The supported sort fields are - email, lastNmae.
          in: query
          name: sort
          required: false
          schema:
            default: email:asc
            pattern: "[a-zA-Z]+[:desc|:asc]"
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PagedUserResponse"
          description: Paginated list of Users filtered by query parameters
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
      summary: List Users
      tags:
        - Users
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v2/users?pageSize=2&page=8&status=DISABLED' -i -X GET \
                -H 'Authorization: Bearer 6dd5e976-e329-462f-bd6b-25d463cf02fd' \
                -H 'Content-Type: application/json'
  /v2/users/invite:
    post:
      description: |
        Create a User and invite them to the system
      operationId: inviteUser
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/InviteUserRequest"
        description: Details of User to invite
        required: true
      responses:
        "204":
          description: No Content. The user was invited successfully
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "409":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_409"
          description: |
            The request contained data that would result in a duplicate value
        "412":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_412"
          description: |
            The request could not be completed as a precondition was not met
      summary: Invite a User
      tags:
        - Users
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v2/users/invite' -i -X POST \
                -H 'Content-Type: application/json' \
                -H 'Authorization: Bearer 93560bbb-5e79-492a-97b5-1ffbdf1cfeb8' \
                -d '{"email":"foo@example.com", \
                    "mfaType":"YUBIKEY", \
                    "smsNumber":"+4411223344556", \
                    "primaryContactNumber":"+4411223344556", \
                    "secondaryContactNumber":null, \
                    "roles":["payor.admin"], \
                    "firstName":"Foo", \
                    "lastName":"Bar", \
                    "entityId":"f84e437a-50a4-4e45-9223-e0601e370a79", \
                    "verificationCode":null \
                    }'
  /v2/users/registration/sms:
    post:
      description: |
        <p>Register an Sms number and send an OTP to it </p>
        <p>Used for manual verification of a user </p>
        <p>The backoffice user initiates the request to send the OTP to the user's sms </p>
        <p>The user then reads back the OTP which the backoffice user enters in the verifactionCode property for requests that require it</p>
      operationId: registerSms
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/RegisterSmsRequest"
        description: a SMS Number to send an OTP to
        required: true
      responses:
        "204":
          description: request completed okay
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
      summary: Register SMS Number
      tags:
        - Users
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v2/users/registration/sms' -i -X POST \
                  -H 'Authorization: Bearer 147c0008-2ec1-4009-9e2e-1f435f02a69b' \
                  -H 'Content-Type: application/json' \
                  -d '{"smsNumber":"+4411223344556"}'
  /v2/users/self:
    get:
      description: |
        Get the user's details
      operationId: getSelf
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UserResponse"
          description: Get User Details
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
      summary: Get Self
      tags:
        - Users
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v2/users/self' -i -X GET \
                -H 'Authorization: Bearer 3387c417-464c-41a6-b25e-6630f0a06093' \
                -H 'Content-Type: application/json'
  /v2/users/self/mfa/unregister:
    post:
      description: |
        <p>Unregister the MFA device for the user </p>
        <p>If the user does not require further verification then a register new MFA device token will be sent to them via their email address</p>
      operationId: unregisterMFAForSelf
      parameters:
        - description: Bearer token authorization leg of validate
          in: header
          name: Authorization
          required: false
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/SelfMFATypeUnregisterRequest"
        description: The MFA Type to unregister
        required: true
      responses:
        "204":
          description: the MFA Type to unregister
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
      summary: Unregister MFA for Self
      tags:
        - Users
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v2/users/self/mfa/unregister' -i -X POST \
                  -H 'Content-Type: application/json' \
                  -d '{"mfaType":"TOTP"}'
  /v2/users/self/password:
    post:
      description: |
        Update password for self
      operationId: updatePasswordSelf
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/SelfUpdatePasswordRequest"
        description: The password
        required: true
      responses:
        "204":
          description: the password was submitted and accepted
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
      summary: Update Password for self
      tags:
        - Users
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v2/users/self/password' -i -X POST \
                  -H 'Content-Type: application/json' \
                  -d '{"oldpassword":"abcd_12345", \
                      "newPassword": "myNewPassword"}'
  /v2/users/self/password/validate:
    post:
      description: |
        validate the password and return a score
      operationId: validatePasswordSelf
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PasswordRequest"
        description: The password
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ValidatePasswordResponse"
          description: the password was checked and a score returned
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
      summary: Validate the proposed password
      tags:
        - Users
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v2/users/self/password/validate' -i -X POST \
                  -H 'Content-Type: application/json' \
                  -d '{"password":"abcd_12345"}'
  /v2/users/self/userDetailsUpdate:
    post:
      description: |
        <p>Update the profile details for the given user</p>
        <p>Only Payee user types are supported</p>
      operationId: userDetailsUpdateForSelf
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PayeeUserSelfUpdateRequest"
        description: The details of the user to update
        required: true
      responses:
        "204":
          description: request completed okay
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "409":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_409"
          description: |
            The request contained data that would result in a duplicate value
      summary: Update User Details for self
      tags:
        - Users
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v2/users/self/userDetailsUpdate' -i -X POST \
                  -H 'Authorization: Bearer 147c0008-2ec1-4009-9e2e-1f435f02a69b' \
                  -H 'Content-Type: application/json' \
                  -d '{"firstName: "Foo", \
                       "lastName": "Bar", \
                       "primaryContactNumber": "+1234567890", \
                       "secondaryContactNumber": "+!234567890", \
                       "email": "foo@example.com", \
                       "smsNumber": "+1234567890", \
                       }'
  "/v2/users/{userId}":
    delete:
      description: |
        Delete User by Id.
      operationId: deleteUserByIdV2
      parameters:
        - description: The UUID of the User.
          in: path
          name: userId
          required: true
          schema:
            format: uuid
            type: string
      responses:
        "204":
          description: request completed okay
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: Delete a User
      tags:
        - Users
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v2/users/d4ca564-f2ee-4725-97c2-7193a093f0f1' -i -X DELETE \
                -H 'Authorization: Bearer 3387c417-464c-41a6-b25e-6630f0a06093' \
                -H 'Content-Type: application/json'
    get:
      description: |
        Get a Single User by Id.
      operationId: getUserByIdV2
      parameters:
        - description: The UUID of the User.
          in: path
          name: userId
          required: true
          schema:
            format: uuid
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UserResponse"
          description: Get User Details
          x-contracts:
            - body:
                email: foo@example.com
                entityId: 93742f58-d584-4527-b187-19a90a70fe89
                firstName: Foo
                id: 5782f21b-03ab-4f4c-a2ca-ca1e1141eeee
                lastName: Bar
                lockedOut: false
                mfaStatus: REGISTERED
                mfaType: TOTP
                primaryContactNumber: 44123555001
                roles:
                  - payor.admin
                secondaryContactNumber: 44123555002
                smsNumber: 44123555000
                status: ENABLED
              contractId: 1
              headers:
                Content-Type: application/json
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: Get User
      tags:
        - Users
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v2/users/d4ca564-f2ee-4725-97c2-7193a093f0f1' -i -X GET \
                -H 'Authorization: Bearer 3387c417-464c-41a6-b25e-6630f0a06093' \
                -H 'Content-Type: application/json'
  "/v2/users/{userId}/disable":
    post:
      description: |
        <p>If a user is enabled this endpoint will disable them </p>
        <p>The invoker must have the appropriate permission </p>
        <p>A user cannot disable themself </p>
        <p>When a user is disabled any active access tokens will be revoked and the user will not be able to log in</p>
      operationId: disableUserV2
      parameters:
        - description: The UUID of the User.
          in: path
          name: userId
          required: true
          schema:
            format: uuid
            type: string
      responses:
        "204":
          description: Success the user was disabled or was already disabled
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: Disable a User
      tags:
        - Users
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v2/users/79a6fdaa-f4bb-47b7-9c1f-f6fd99c156a0/disable' -i -X POST \
                -H 'Content-Type: application/json' \
                -H 'Authorization: Bearer 93560bbb-5e79-492a-97b5-1ffbdf1cfeb8'
  "/v2/users/{userId}/enable":
    post:
      description: |
        <p>If a user has been disabled this endpoints will enable them </p>
        <p>The invoker must have the appropriate permission </p>
        <p>A user cannot enable themself </p>
        <p>If the user is a payor user and the payor is disabled this operation is not allowed</p>
        <p>If enabling a payor user would breach the limit for master admin payor users the request will be rejected </p>
      operationId: enableUserV2
      parameters:
        - description: The UUID of the User.
          in: path
          name: userId
          required: true
          schema:
            format: uuid
            type: string
      responses:
        "204":
          description: Success the user was enabled or was already enabled
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: Enable a User
      tags:
        - Users
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v2/users/79a6fdaa-f4bb-47b7-9c1f-f6fd99c156a0/enable' -i -X POST \
                -H 'Content-Type: application/json' \
                -H 'Authorization: Bearer 93560bbb-5e79-492a-97b5-1ffbdf1cfeb8'
  "/v2/users/{userId}/mfa/unregister":
    post:
      description: |
        <p>Unregister the MFA device for the user </p>
        <p>If the user does not require further verification then a register new MFA device token will be sent to them via their email address</p>
      operationId: unregisterMFA
      parameters:
        - description: The UUID of the User.
          in: path
          name: userId
          required: true
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UnregisterMFARequest"
        description: The MFA Type to unregister
        required: true
      responses:
        "204":
          description: the MFA Type to unregister
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: Unregister MFA for the user
      tags:
        - Users
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v2/users/79a6fdaa-f4bb-47b7-9c1f-f6fd99c156a0/mfa/unregister' -i -X POST \
                  -H 'Content-Type: application/json' \
                  -d '{"mfaType":"TOTP", \
                    "verificationCode":"123456", \
                    }'
  "/v2/users/{userId}/roleUpdate":
    post:
      description: |
        <p>Update the user's Role</p>
      operationId: roleUpdate
      parameters:
        - description: The UUID of the User.
          in: path
          name: userId
          required: true
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/RoleUpdateRequest"
        description: The Role to change to
        required: true
      responses:
        "204":
          description: request completed okay
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: Update User Role
      tags:
        - Users
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v2/users/ad19fc24-0cf6-4c15-a571-754b015b18e0/roleUpdate' -i -X POST \
                  -H 'Authorization: Bearer 147c0008-2ec1-4009-9e2e-1f435f02a69b' \
                  -H 'Content-Type: application/json' \
                  -d '{"role":"payor.admin", \
                      "verificationCode": "123456" \
                      }'
  "/v2/users/{userId}/tokens":
    post:
      description: |
        <p>Resend the specified token </p>
        <p>The token to resend must already exist for the user </p>
        <p>It will be revoked and a new one issued</p>
      operationId: resendToken
      parameters:
        - description: The UUID of the User.
          in: path
          name: userId
          required: true
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ResendTokenRequest"
        description: The type of token to resend
        required: true
      responses:
        "204":
          description: request completed okay
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
      summary: Resend a token
      tags:
        - Tokens
        - Users
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v2/users/79a6fdaa-f4bb-47b7-9c1f-f6fd99c156a0/tokens' -i -X POST \
                  -H 'Authorization: Bearer 147c0008-2ec1-4009-9e2e-1f435f02a69b' \
                  -H 'Content-Type: application/json' \
                  -d '{"tokenType":"MFA_REGISTRATION"}'
  "/v2/users/{userId}/unlock":
    post:
      description: |
        If a user is locked this endpoint will unlock them
      operationId: unlockUserV2
      parameters:
        - description: The UUID of the User.
          in: path
          name: userId
          required: true
          schema:
            format: uuid
            type: string
      responses:
        "204":
          description: Success the user was unlocked or was already unlocked
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: Unlock a User
      tags:
        - Users
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v2/users/79a6fdaa-f4bb-47b7-9c1f-f6fd99c156a0/unlock' -i -X POST \
                -H 'Content-Type: application/json' \
                -H 'Authorization: Bearer 93560bbb-5e79-492a-97b5-1ffbdf1cfeb8'
  "/v2/users/{userId}/userDetailsUpdate":
    post:
      description: |
        <p>Update the profile details for the given user</p>
        <p>When updating Payor users with the role of payor.master_admin a verificationCode is required</p>
      operationId: userDetailsUpdate
      parameters:
        - description: The UUID of the User.
          in: path
          name: userId
          required: true
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UserDetailsUpdateRequest"
        description: The details of the user to update
        required: true
      responses:
        "204":
          description: request completed okay
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
        "409":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_409"
          description: |
            The request contained data that would result in a duplicate value
      summary: Update User Details
      tags:
        - Users
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v2/users/ad19fc24-0cf6-4c15-a571-754b015b18e0/userDetailsUpdate' -i -X POST \
                  -H 'Authorization: Bearer 147c0008-2ec1-4009-9e2e-1f435f02a69b' \
                  -H 'Content-Type: application/json' \
                  -d '{"firstName: "Foo", \
                       "lastName": "Bar", \
                       "primaryContactNumber": "+1234567890", \
                       "secondaryContactNumber": "+!234567890", \
                       "email": "foo@example.com", \
                       "smsNumber": "+1234567890", \
                       "mfaType": "TOTP", \
                       "verificationCode": "123456" \
                       }'
  /v3/payees:
    get:
      deprecated: true
      description: |
        <p>Use v4 instead</p>
        Get a paginated response listing the payees for a payor.
      operationId: listPayeesV3
      parameters:
        - description: The account owner Payor ID
          in: query
          name: payorId
          required: true
          schema:
            format: uuid
            type: string
          x-contracts:
            - contractId: 1
              matchers:
                - type: equal_to
                  value: 0a818933-087d-47f2-ad83-2f986ed087eb
              value: 0a818933-087d-47f2-ad83-2f986ed087eb
        - description: The watchlistStatus of the payees.
          in: query
          name: watchlistStatus
          required: false
          schema:
            $ref: "#/components/schemas/WatchlistStatusV3"
        - description: Payee disabled
          in: query
          name: disabled
          required: false
          schema:
            type: boolean
        - description: The onboarded status of the payees.
          in: query
          name: onboardedStatus
          required: false
          schema:
            $ref: "#/components/schemas/OnboardedStatusV4"
        - description: Email address
          in: query
          name: email
          required: false
          schema:
            example: bob@example.com
            format: email
            type: string
        - description: The display name of the payees.
          in: query
          name: displayName
          required: false
          schema:
            example: Bob Smith
            type: string
        - description: The remote id of the payees.
          in: query
          name: remoteId
          required: false
          schema:
            example: remoteId123
            type: string
        - description: The onboarded status of the payees.
          in: query
          name: payeeType
          required: false
          schema:
            $ref: "#/components/schemas/PayeeType_2"
        - description: The country of the payee - 2 letter ISO 3166-1 country code (upper case)
          in: query
          name: payeeCountry
          required: false
          schema:
            example: US
            type: string
        - description: Page number. Default is 1.
          in: query
          name: page
          required: false
          schema:
            default: 1
            example: 1
            format: int32
            type: integer
        - description: Page size. Default is 25. Max allowable is 100.
          in: query
          name: pageSize
          required: false
          schema:
            default: 25
            example: 25
            format: int32
            type: integer
        - description: |
            List of sort fields (e.g. ?sort=onboardedStatus:asc,name:asc) Default is name:asc 'name' is treated as company name for companies - last name + ',' + firstName for individuals The supported sort fields are - payeeId, displayName, payoutStatus, onboardedStatus.
          in: query
          name: sort
          required: false
          schema:
            default: displayName:asc
            example: displayName:asc
            pattern: "[a-zA-Z]+[:desc|:asc]"
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PagedPayeeResponseV3"
          description: Details of Payee
          x-contracts:
            - body:
                content:
                  - payeeId: ee2cc9a1-34dd-4ab6-91e3-db111d08d995
                links:
                  - href: https://api.sandbox.velopayments.com/v3/payees?payorId=1982b223-73b7-419d-a2e1-e64362b0ee8b&page=1&pageSize=2&sort=displayName:asc
                    rel: first
                page:
                  numberOfElements: 1
                  page: 9,
                  pageSize: 2
                  totalElements: 1
                  totalPages: 23
              contractId: 1
              headers:
                Content-Type: application/json
              matchers:
                body:
                  - path: $.page.numberOfElements
                    predefined: number
                    type: by_regex
                  - path: $.page.totalElements
                    predefined: number
                    type: by_regex
                  - path: $.page.totalPages
                    predefined: number
                    type: by_regex
                  - path: $.page.page
                    predefined: number
                    type: by_regex
                  - path: $.page.pageSize
                    predefined: number
                    type: by_regex
                  - maxOccurrence: 5
                    minOccurrence: 1
                    path: $.links
                    type: by_type
                  - path: $.links[0].href
                    predefined: url
                    type: by_regex
                  - minOccurrence: 1
                    path: $.content
                    type: by_type
                  - path: $.content[0].payeeId
                    predefined: uuid
                    type: by_regex
                  - path: $.content[0].email
                    predefined: email
                    type: by_regex
                  - path: $.content[0].created
                    type: by_regex
                    value: ([\d]{4})-([\d]{2})-([\d]{2})T([\d]{2}):([\d]{2}):([\d]{2})*(.([\d]{1,3}))Z
                  - path: $.content[0].payorRefs[0].payorId
                    predefined: uuid
                    type: by_regex
                headers:
                  - key: Content-Type
                    regex: application/json.*
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: List Payees
      tags:
        - Payees
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v3/payees?pageSize=2&page=8&payorId=9cade13d-0c55-41a7-9e6d-164e8b138b40&watchlistStatus=PASSED&onboardedStatus=INVITED&email=foo@example.com&displayName=Bar&remoteId=remote&payeeCountry=US&payeeType=Individual' -i -X GET \
                -H 'Authorization: Bearer 6dd5e976-e329-462f-bd6b-25d463cf02fd' \
                -H 'Content-Type: application/json'
      x-contracts:
        - contractId: 1
          headers:
            Content-Type: application/json
          name: Test List Payees All params for v3
          request:
            queryParameters:
              - key: page
                value: 1
              - key: pageSize
                value: 30
              - key: watchlistStatus
                value: PASSED
              - key: onboardedStatus
                value: CREATED
              - key: email
                value: testemail@example.com
              - key: displayName
                value: foo
              - key: remoteId
                value: 123123123asdf
              - key: payeeType
                value: Individual
              - key: payeeCountry
                value: US
          serviceName: payee-service
    post:
      deprecated: true
      description: |
        <p>Use v4 instead</p>
        Initiate the process of creating 1 to 2000 payees in a batch Use the response location header to query
        for status (201 - Created, 400 - invalid request body. In addition to standard semantic validations, a
        400 will also result if there is a duplicate remote id within the batch / if there is a duplicate email
        within the batch, i.e. if there is a conflict between the data provided for one payee within the batch and
        that provided for another payee within the same batch). The validation at this stage is intra-batch only.
        Validation against payees who have already been invited occurs subsequently during processing of the batch.
      operationId: createPayeeV3
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreatePayeesRequestV3"
          multipart/form-data:
            schema:
              properties:
                file:
                  description: CSV File of payee data
                  items:
                    $ref: "#/components/schemas/CreatePayeesCSVRequestV3"
                  type: array
                payorId:
                  format: uuid
                  type: string
              type: object
        description: Post payees to create.
        x-contracts:
          - body:
              payees:
                - address:
                    city: San Francisco
                    country: US
                    countyOrProvince: California
                    line1: 100 Battery Street
                    line2: line2
                    line3: line3
                    line4: line4
                    zipOrPostcode: "94018"
                  email: bob@example.com
                  individual:
                    dateOfBirth: 1970-05-20
                    name:
                      firstName: Barney
                      lastName: Cuthbert
                      otherNames: Grubb
                      title: Mr
                    nationalIdentification: "987654321"
                  language: fr
                  paymentChannel:
                    accountName: Foo Account
                    accountNumber: "12345678"
                    countryCode: US
                    currency: USD
                    paymentChannelName: My Payment Channel
                    routingNumber: "123456789"
                  remoteId: remoteId
                  type: Individual
                - address:
                    city: San Francisco
                    country: US
                    countyOrProvince: California
                    line1: 100 Battery Street
                    line2: line2
                    line3: line3
                    line4: line4
                    zipOrPostcode: "94018"
                  company:
                    name: ABC Payee Corp
                    taxId: "223344556"
                  email: bob@example.com
                  language: fr
                  paymentChannel:
                    accountName: Foo Account
                    accountNumber: "12345678"
                    countryCode: US
                    currency: USD
                    paymentChannelName: My Payment Channel
                    routingNumber: "123456789"
                  remoteId: remoteId
                  type: Company
              payorId: 0a818933-087d-47f2-ad83-2f986ed087eb
            contractId: 1
            headers:
              Content-Type: application/json
            matchers:
              body:
                - path: $.payorId
                  predefined: uuid
                  type: by_regex
                - path: $.payees
                  predefined: non_empty
                  type: by_regex
              headers:
                - key: Content-Type
                  regex: application/json.*
          - contractId: 2
            headers:
              Content-Type: multipart/form-data
            multipart:
              named:
                - fileContent: |
                    type,remoteId,email,addressLine1,addressLine2,addressLine3,addressLine4,addressCity,addressCountyOrProvince,addressZipOrPostcode,addressCountry,individualNationalIdentification,individualDateOfBirth,individualTite,individualFirstName,individualOtherNames,individualLastName,companyName,companyEIN,paymentChannelAccountNumber,paymentChannelRoutingNumber,paymentChannelIban,paymentChannelAccountName,paymentChannelCountryCode,paymentChannelCurrency,challengeDescription,challengeValue,payeeLanguage\n Individual,remoteId123,bob@example.com,Address line 1,Address line 2,Address line 3,Address line 4,The City,The County,The Zip,GB,123456789,1970-02-25,Mr,Bob,Hungry,Wiggins,,,12345678,123456789,,Account name,US,USD,Challenge Description,Challenge Value,EN\n Company,remoteId1234,jim@example.com,Address line 1,Address line 2,Address line 3,Address line 4,The City,The County,The Zip,GB,,,,,,,ABC Corp,987654321,,,1234567890123456789012345678901234,Account name,US,USD,,,FR\n
                  fileName: filename.csv
                  paramName: file
              params:
                payorId: 0a818933-087d-47f2-ad83-2f986ed087eb
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CreatePayeesCSVResponseV3"
          description: HTTP Created. Body created only on CSV requests
          x-contracts:
            - contractId: 1
              headers:
                Location: https://api.sandbox.velopayments.com/v3/payees/batch/dbe7df3a-6b75-4bcb-97c5-45d25f828267
              matchers:
                headers:
                  - key: Location
                    predefined: url
                    type: by_regex
            - contractId: 2
              headers:
                Content-Type: application/json
                Location: https://api.sandbox.velopayments.com/v3/payees/batch/dbe7df3a-6b75-4bcb-97c5-45d25f828267
              matchers:
                headers:
                  - key: Location
                    predefined: url
                    type: by_regex
                  - key: Content-Type
                    regex: application/json.*
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: Initiate Payee Creation
      tags:
        - Payee Invitation
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v3/payees' -i -X POST \
                -H 'Content-Type: application/json' \
                -H 'Authorization: Bearer 829d8ec0-00a3-4c95-8234-ad09500bb627' \
                -d '{"payorId":"7ddebfed-0624-4bce-848d-40ffe818a2df","payees":[{"type":"Individual","remoteId":"remoteId",
                "email":"bob@example.com","address":{"line1":"100 Battery Street","line2":"line2","line3":"line3",
                "line4":"line4","city":"San Francisco","countyOrProvince":"California","zipOrPostcode":"94018","country":"US"},
                "paymentChannel":{"paymentChannelName":"My Payment Channel","accountNumber":"12345678","routingNumber":"123456789",
                "countryCode":"US","currency":"USD","accountName":"Foo Account"},"individual":{"name":{"title":"Mr",
                "firstName":"Barney","otherNames":"Grubb","lastName":"Cuthbert"},"nationalIdentification":"987654321",
                "dateOfBirth":"1970-05-20"},"ofacOverride":false,"language":"fr"},{"type":"Company","remoteId":"remoteId",
                "email":"bob@example.com","address":{"line1":"100 Battery Street","line2":"line2","line3":"line3",
                "line4":"line4","city":"San Francisco","countyOrProvince":"California","zipOrPostcode":"94018","country":"US"},
                "paymentChannel":{"paymentChannelName":"My Payment Channel","accountNumber":"12345678","routingNumber":"123456789",
                "countryCode":"US","currency":"USD","accountName":"Foo Account"},"company":{"name":"ABC Payee Corp",
                "taxId":"223344556"},"ofacOverride":false,"language":"fr"}]}'
      x-contracts:
        - contractId: 1
          name: Create Payees by JSON v3
          serviceName: payee-service
        - contractId: 2
          name: Create Payees by CSV v3
          serviceName: payee-service
  "/v3/payees/batch/{batchId}":
    get:
      deprecated: true
      description: |
        <p>Use v4 instead</p>
        Fetch the status of a specific batch of payees. The batch is fully processed when status is ACCEPTED and pendingCount is 0 ( 200 - OK, 404 - batch not found ).
      operationId: queryBatchStatusV3
      parameters:
        - description: Batch Id
          in: path
          name: batchId
          required: true
          schema:
            format: uuid
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/QueryBatchResponseV3"
          description: Get Batch Status
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: Query Batch Status
      tags:
        - Payee Invitation
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v3/payees/batch/cb6ff8c6-85e9-45a6-b7d9-d05305db67f3' -i -X GET \
                -H 'Content-Type: application/json' \
                -H 'Authorization: Bearer f01caad1-5ae5-454d-9467-5053e459fe45'
  /v3/payees/deltas:
    get:
      deprecated: true
      description: |
        <p>Use v4 instead</p>
        <p>Get a paginated response listing payee changes.</p>
      operationId: listPayeeChangesV3
      parameters:
        - description: The Payor ID to find associated Payees
          in: query
          name: payorId
          required: true
          schema:
            format: uuid
            type: string
          x-contracts:
            - contractId: 1
              matchers:
                - type: equal_to
                  value: 0a818933-087d-47f2-ad83-2f986ed087eb
              value: 0a818933-087d-47f2-ad83-2f986ed087eb
        - description: The updatedSince filter in the format YYYY-MM-DDThh:mm:ss+hh:mm
          in: query
          name: updatedSince
          required: true
          schema:
            format: date-time
            type: string
          x-contracts:
            - contractId: 1
              matchers:
                - type: equal_to
                  value: 2019-01-20T09:00:00+00:00
              value: 2019-01-20T09:00:00+00:00
        - description: Page number. Default is 1.
          in: query
          name: page
          required: false
          schema:
            default: 1
            example: 1
            format: int32
            type: integer
        - description: Page size. Default is 100. Max allowable is 1000.
          in: query
          name: pageSize
          required: false
          schema:
            default: 100
            example: 100
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PayeeDeltaResponseV3"
          description: Details of Payee Changes
          x-contracts: null
        "400":
          description: Bad Request
      summary: List Payee Changes
      tags:
        - Payees
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v3/payees/deltas?pageSize=2&page=8&payorId=0a818933-087d-47f2-ad83-2f986ed087eb&updatedSince=2019-01-20T09:00:00+00:00' -i -X GET \
                -H 'Authorization: Bearer 6dd5e976-e329-462f-bd6b-25d463cf02fd' \
                -H 'Content-Type: application/json'
      x-contracts:
        - contractId: 1
          ignored: true
          name: Test List Payee Changes V3
          request:
            queryParameters:
              - key: page
                value: 1
              - key: pageSize
                value: 30
          serviceName: payee-service
  "/v3/payees/payors/{payorId}/invitationStatus":
    get:
      deprecated: true
      description: |
        <p>Use v4 instead</p>
        <p>Returns a filtered, paginated list of payees associated with a payor, along with invitation status and grace period end date.</p>
      operationId: getPayeesInvitationStatusV3
      parameters:
        - description: The account owner Payor ID
          in: path
          name: payorId
          required: true
          schema:
            example: 9ac75325-5dcd-42d5-b992-175d7e0a035e
            format: uuid
            type: string
        - description: The UUID of the payee.
          in: query
          name: payeeId
          required: false
          schema:
            example: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
            format: uuid
            type: string
        - description: The invitation status of the payees.
          in: query
          name: invitationStatus
          required: false
          schema:
            $ref: "#/components/schemas/InvitationStatusV4"
        - description: Page number. Default is 1.
          in: query
          name: page
          required: false
          schema:
            default: 1
            example: 1
            format: int32
            type: integer
        - description: Page size. Default is 25. Max allowable is 100.
          in: query
          name: pageSize
          required: false
          schema:
            default: 25
            example: 25
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PagedPayeeInvitationStatusResponseV3"
          description: Get Payees with Invitaion status - filters of payeeId and invitationStatus
          x-contracts:
            - body:
                content:
                  - payeeId: c3d60e1f-a4d0-4273-b501-bfa81c70d56b
                links:
                  - href: http://localhost:62142/v3/payees/payors/f20b038b-e841-4d80-9175-b47c6cf19bc1/invitationStatus?payeeId=c3d60e1f-a4d0-4273-b501-bfa81c70d56b&invitationStatus=ACCEPTED&page=1&pageSize=25
                    rel: first
                page:
                  numberOfElements: 1
                  page: 1
                  pageSize: 25
                  totalElements: 1
                  totalPages: 1
              contractId: 1
              headers:
                Content-Type: application/json
              matchers:
                body:
                  - minOccurrence: 1
                    path: $.page
                    type: by_type
                  - path: $.page.numberOfElements
                    predefined: number
                    type: by_regex
                  - path: $.page.totalElements
                    predefined: number
                    type: by_regex
                  - path: $.page.totalPages
                    predefined: number
                    type: by_regex
                  - path: $.page.page
                    predefined: number
                    type: by_regex
                  - path: $.page.pageSize
                    predefined: number
                    type: by_regex
                  - maxOccurrence: 5
                    minOccurrence: 1
                    path: $.links
                    type: by_type
                  - path: $.links[0].href
                    predefined: url
                    type: by_regex
                  - minOccurrence: 1
                    path: $.content
                    type: by_type
                  - path: $.content[0].payeeId
                    predefined: uuid
                    type: by_regex
                headers:
                  - key: Content-Type
                    regex: application/json.*
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: Get Payee Invitation Status
      tags:
        - Payee Invitation
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v3/payees/payors/f20b038b-e841-4d80-9175-b47c6cf19bc1/invitationStatus?payeeId=c3d60e1f-a4d0-4273-b501-bfa81c70d56b&invitationStatus=ACCEPTED' -i -X GET \
                -H 'Authorization: Bearer ed73aa9a-b51b-44cb-a8e9-11e2fb85046b'
  "/v3/payees/{payeeId}":
    delete:
      deprecated: true
      description: |
        <p>Use v4 instead</p>
        <p>This API will delete Payee by Id (UUID). Deletion by ID is not allowed if:</p>
        <p>* Payee ID is not found</p>
        <p>* If Payee has not been on-boarded</p>
        <p>* If Payee is in grace period</p>
        <p>* If Payee has existing payments</p>
      operationId: deletePayeeByIdV3
      parameters:
        - description: The UUID of the payee.
          in: path
          name: payeeId
          required: true
          schema:
            example: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
            format: uuid
            type: string
      responses:
        "204":
          description: No content. Payee Id accepted for deletion.
        "400":
          description: Bad Request. Payee Id failed validation for deletion.
        "404":
          description: Payee Id not found
      summary: Delete Payee by Id
      tags:
        - Payees
    get:
      deprecated: true
      description: |
        <p>Use v4 instead</p>
        <p>Get Payee by Id</p>
      operationId: getPayeeByIdV3
      parameters:
        - description: The UUID of the payee.
          in: path
          name: payeeId
          required: true
          schema:
            example: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
            format: uuid
            type: string
        - description: |
            Optional. If omitted or set to false, any Personal Identifiable Information (PII) values are returned masked.
            If set to true, and you have permission, the PII values will be returned as their original unmasked values.
          in: query
          name: sensitive
          required: false
          schema:
            type: boolean
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PayeeDetailResponseV3"
          description: Success response, request completed okay
          x-contracts:
            - body:
                acceptTermsAndConditionsTimestamp: 2018-01-02T00:00:00Z
                address:
                  city: San Francisco
                  country: US
                  countyOrProvince: California
                  line1: 100 Battery Street
                  line2: line2
                  line3: line3
                  line4: line4
                  zipOrPostcode: "94018"
                cellphoneNumber: "0800800800"
                country: US
                created: 2018-01-02T00:00:00Z
                disabled: false
                disabledComment: disabled comment
                disabledUpdatedTimestamp: 2018-02-03T00:00:00Z
                displayName: Cuthbert, Barney
                email: bob@example.com
                enhancedKycCompleted: true
                gracePeriodEndDate: 2019-12-23
                individual:
                  dateOfBirth: XXXX-XX-XX
                  name:
                    firstName: Barney
                    lastName: Cuthbert
                    otherNames: Grubb
                    title: Mr
                  nationalIdentification: XXXXX4321
                kycCompletedTimestamp: 2018-02-04T00:00:00Z
                language: fr
                marketingOptInDecision: true
                marketingOptInTimestamp: 2018-02-03T00:00:00Z
                onboardedStatus: CREATED
                pausePayment: false
                pausePaymentTimestamp: 2018-02-04T00:00:00Z
                payeeId: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
                payeeType: Individual
                payorRefs:
                  - invitationStatus: PENDING
                    payorId: 9ac75325-5dcd-42d5-b992-175d7e0a035e
                    remoteId: remoteId
                watchlistOverrideComment: watchlist override comment
                watchlistOverrideExpiresAtTimestamp: 2019-02-04T00:00:00Z
                watchlistStatus: PENDING
                watchlistStatusUpdatedTimestamp: 2018-02-04T00:00:00Z
              contractId: 1
              headers:
                Content-Type: application/json
            - body:
                acceptTermsAndConditionsTimestamp: 2018-01-02T00:00:00Z
                address:
                  city: San Francisco
                  country: US
                  countyOrProvince: California
                  line1: 100 Battery Street
                  line2: line2
                  line3: line3
                  line4: line4
                  zipOrPostcode: "94018"
                cellphoneNumber: "0800800800"
                company:
                  name: WIDGET CORP
                  operatingName: SAMPLE DBA NAME
                  taxId: "223344556"
                country: US
                created: 2018-01-02T00:00:00Z
                disabled: false
                disabledComment: disabled comment
                disabledUpdatedTimestamp: 2018-02-03T00:00:00Z
                displayName: Cuthbert, Barney
                email: bob@example.com
                enhancedKycCompleted: true
                gracePeriodEndDate: 2019-12-23
                kycCompletedTimestamp: 2018-02-04T00:00:00Z
                language: fr
                marketingOptInDecision: true
                marketingOptInTimestamp: 2018-02-03T00:00:00Z
                onboardedStatus: CREATED
                pausePayment: false
                pausePaymentTimestamp: 2018-02-04T00:00:00Z
                payeeId: 01b51877-2a17-427a-b2b0-d73f2b136315
                payeeType: Company
                payorRefs:
                  - invitationStatus: PENDING
                    payorId: 9ac75325-5dcd-42d5-b992-175d7e0a035e
                    remoteId: remoteId
                watchlistOverrideComment: watchlist override comment
                watchlistOverrideExpiresAtTimestamp: 2019-02-04T00:00:00Z
                watchlistStatus: PENDING
                watchlistStatusUpdatedTimestamp: 2018-02-04T00:00:00Z
              contractId: 2
              headers:
                Content-Type: application/json
            - body:
                acceptTermsAndConditionsTimestamp: 2018-01-02T00:00:00Z
                address:
                  city: San Francisco
                  country: US
                  countyOrProvince: California
                  line1: 100 Battery Street
                  line2: line2
                  line3: line3
                  line4: line4
                  zipOrPostcode: "94018"
                cellphoneNumber: "0800800800"
                country: US
                created: 2018-01-02T00:00:00Z
                disabled: false
                disabledComment: disabled comment
                disabledUpdatedTimestamp: 2018-02-03T00:00:00Z
                displayName: Cuthbert, Barney
                email: bob@example.com
                enhancedKycCompleted: true
                gracePeriodEndDate: 2019-12-23
                individual:
                  dateOfBirth: 1970-05-20
                  name:
                    firstName: Barney
                    lastName: Cuthbert
                    otherNames: Grubb
                    title: Mr
                  nationalIdentification: "987654321"
                kycCompletedTimestamp: 2018-02-04T00:00:00Z
                language: fr
                marketingOptInDecision: true
                marketingOptInTimestamp: 2018-02-03T00:00:00Z
                onboardedStatus: CREATED
                pausePayment: false
                pausePaymentTimestamp: 2018-02-04T00:00:00Z
                payeeId: 026cc3c8-3a0c-4083-a05b-e908048c1b08
                payeeType: Individual
                payorRefs:
                  - invitationStatus: PENDING
                    payorId: 9ac75325-5dcd-42d5-b992-175d7e0a035e
                    remoteId: remoteId
                watchlistOverrideComment: watchlist override comment
                watchlistOverrideExpiresAtTimestamp: 2019-02-04T00:00:00Z
                watchlistStatus: PENDING
                watchlistStatusUpdatedTimestamp: 2018-02-04T00:00:00Z
              contractId: 4
              headers:
                Content-Type: application/json
        "404":
          description: Payee Not found
          x-contracts:
            - contractId: 3
      summary: Get Payee by Id
      tags:
        - Payees
      x-contracts:
        - contractId: 1
          contractPath: /v3/payees/2aa5d7e0-2ecb-403f-8494-1865ed0454e9
          name: Get Individual Payee v3
          serviceName: payee-service
        - contractId: 2
          contractPath: /v3/payees/01b51877-2a17-427a-b2b0-d73f2b136315
          name: Get Company Payee v3
          serviceName: payee-service
        - contractId: 3
          contractPath: /v3/payees/e67cbda6-c031-4aae-8e72-922fe76c7a24
          name: Payee Id Not Found v3
          serviceName: payee-service
        - contractId: 4
          contractPath: /v3/payees/026cc3c8-3a0c-4083-a05b-e908048c1b08
          name: Get Payee sensitive true v3
          serviceName: payee-service
  "/v3/payees/{payeeId}/invite":
    post:
      deprecated: true
      description: |
        <p>Use v4 instead</p>
        <p>Resend an invite to the Payee The payee must have already been invited by the payor and not yet accepted or declined</p>
        <p>Any previous invites to the payee by this Payor will be invalidated</p>
      operationId: resendPayeeInviteV3
      parameters:
        - description: The UUID of the payee.
          in: path
          name: payeeId
          required: true
          schema:
            example: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/InvitePayeeRequestV3"
        description: Provide Payor Id in body of request
        required: true
      responses:
        "200":
          description: the request was accepted
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
        "409":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_409"
          description: |
            The request contained data that would result in a duplicate value
      summary: Resend Payee Invite
      tags:
        - Payee Invitation
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v3/payees/5032e339-2e24-4fca-bfc9-f6a66e3157dd/invite' -i -X POST \
                -H 'Authorization: Bearer 5e40dde3-ff1c-4d69-94b0-3a6e96fd789e' \
                -H 'Content-Type: application/json' \
                -d '{"payorId":"545e29bd-75a8-4354-8192-ae68bab59d7b"}'
  "/v3/payees/{payeeId}/payeeDetailsUpdate":
    post:
      deprecated: true
      description: |
        <p>Use v4 instead</p>
        <p>Update payee details for the given Payee Id.<p>
      operationId: payeeDetailsUpdateV3
      parameters:
        - description: The UUID of the payee.
          in: path
          name: payeeId
          required: true
          schema:
            example: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UpdatePayeeDetailsRequestV3"
        description: Request to update payee details
        required: true
      responses:
        "204":
          description: Request accepted
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: Update Payee Details
      tags:
        - Payees
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v3/payees/77f84ae9-42df-49d7-941b-47360347f86f/payeeDetailsUpdate' -i -X POST \
                -H 'Authorization: Bearer ed73aa9a-b51b-44cb-a8e9-11e2fb85046b' \
                -H 'Content-Type: application/json' \
                -d '{
                        "address": {
                            "line1": "line1",
                            "line2": "line2",
                            "line3": "line3",
                            "line4": "line4",
                            "city": "City",
                            "countyOrProvince": "county",
                            "zipOrPostcode": "BS11AA",
                            "country": "US"
                        },
                        "individual": {
                            "name": {
                                "title": "Mr",
                                "firstName": "A",
                                "otherNames": "P",
                                "lastName": "Smith"
                            },
                            "nationalIdentification": "987654321",
                            "dateOfBirth": "1970-04-03"
                        }
                    }'
  "/v3/payees/{payeeId}/remoteIdUpdate":
    post:
      deprecated: true
      description: |
        <p>Use v4 instead</p>
        <p>Update the remote Id for the given Payee Id.</p>
      parameters:
        - description: The UUID of the payee.
          in: path
          name: payeeId
          required: true
          schema:
            example: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UpdateRemoteIdRequestV3"
        description: Request to update payee remote id v3
        required: true
      responses:
        "204":
          description: Accepted, No Content
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
        "409":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_409"
          description: |
            The request contained data that would result in a duplicate value
      summary: Update Payee Remote Id
      tags:
        - Payees
  /v3/paymentaudit/payments:
    get:
      deprecated: true
      description: Deprecated (use /v4/paymentaudit/payments instead)
      operationId: listPaymentsAuditV3
      parameters:
        - description: The UUID of the payee.
          in: query
          name: payeeId
          required: false
          schema:
            format: uuid
            type: string
        - description: The account owner Payor Id. Required for external users.
          in: query
          name: payorId
          required: false
          schema:
            format: uuid
            type: string
        - description: The payor’s name. This filters via a case insensitive substring match.
          in: query
          name: payorName
          required: false
          schema:
            type: string
        - description: The remote id of the payees.
          in: query
          name: remoteId
          required: false
          schema:
            type: string
        - description: Payment Status
          in: query
          name: status
          required: false
          schema:
            enum:
              - ACCEPTED
              - AWAITING_FUNDS
              - FUNDED
              - UNFUNDED
              - BANK_PAYMENT_REQUESTED
              - REJECTED
              - ACCEPTED_BY_RAILS
              - CONFIRMED
              - FAILED
              - RETURNED
              - WITHDRAWN
            type: string
        - description: The source account name filter. This filters via a case insensitive substring match.
          in: query
          name: sourceAccountName
          required: false
          schema:
            type: string
        - description: The source amount from range filter. Filters for sourceAmount >= sourceAmountFrom
          in: query
          name: sourceAmountFrom
          required: false
          schema:
            format: int32
            type: integer
        - description: The source amount to range filter. Filters for sourceAmount ⇐ sourceAmountTo
          in: query
          name: sourceAmountTo
          required: false
          schema:
            format: int32
            type: integer
        - description: The source currency filter. Filters based on an exact match on the currency.
          in: query
          name: sourceCurrency
          required: false
          schema:
            type: string
        - description: The payment amount from range filter. Filters for paymentAmount >= paymentAmountFrom
          in: query
          name: paymentAmountFrom
          required: false
          schema:
            format: int32
            type: integer
        - description: The payment amount to range filter. Filters for paymentAmount ⇐ paymentAmountTo
          in: query
          name: paymentAmountTo
          required: false
          schema:
            format: int32
            type: integer
        - description: The payment currency filter. Filters based on an exact match on the currency.
          in: query
          name: paymentCurrency
          required: false
          schema:
            type: string
        - description: The submitted date from range filter. Format is yyyy-MM-dd.
          in: query
          name: submittedDateFrom
          required: false
          schema:
            format: date
            type: string
        - description: The submitted date to range filter. Format is yyyy-MM-dd.
          in: query
          name: submittedDateTo
          required: false
          schema:
            format: date
            type: string
        - description: The payment memo filter. This filters via a case insensitive substring match.
          in: query
          name: paymentMemo
          required: false
          schema:
            type: string
        - description: Page number. Default is 1.
          in: query
          name: page
          required: false
          schema:
            default: 1
            format: int32
            type: integer
        - description: The number of results to return in a page
          in: query
          name: pageSize
          required: false
          schema:
            default: 25
            format: int32
            maximum: 100
            minimum: 1
            type: integer
        - description: |
            List of sort fields (e.g. ?sort=submittedDateTime:asc,status:asc). Default is sort by remoteId
            The supported sort fields are: sourceAmount, sourceCurrency, paymentAmount, paymentCurrency,
            routingNumber, accountNumber, remoteId, submittedDateTime and status
          in: query
          name: sort
          required: false
          schema:
            type: string
        - description: |
            Optional. If omitted or set to false, any Personal Identifiable Information (PII) values are returned masked.
            If set to true, and you have permission, the PII values will be returned as their original unmasked values.
          in: query
          name: sensitive
          required: false
          schema:
            type: boolean
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ListPaymentsResponseV3"
          description: Paginated list of payments
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
      summary: V3 Get List of Payments
      tags:
        - Payment Audit Service (Deprecated)
  "/v3/paymentaudit/payments/{paymentId}":
    get:
      deprecated: true
      description: Deprecated (use /v4/paymentaudit/payments/<paymentId> instead)
      operationId: getPaymentDetailsV3
      parameters:
        - description: Payment Id
          in: path
          name: paymentId
          required: true
          schema:
            format: uuid
            type: string
        - description: |
            Optional. If omitted or set to false, any Personal Identifiable Information (PII) values are returned masked.
            If set to true, and you have permission, the PII values will be returned as their original unmasked values.
          in: query
          name: sensitive
          required: false
          schema:
            type: boolean
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PaymentResponseV3"
          description: 200 response, request completed okay
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: V3 Get Payment
      tags:
        - Payment Audit Service (Deprecated)
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v3/paymentaudit/payments/c3a422c2-12ac-4416-84fe-964221bd9815' -i \
                -H 'Authorization: Bearer 67a1b299-69b1-4fdf-a576-96b81199a2b9'
  /v3/paymentaudit/payouts:
    get:
      deprecated: true
      description: Deprecated (use /v4/paymentaudit/payouts instead)
      operationId: getPayoutsForPayorV3
      parameters:
        - description: The account owner Payor ID
          in: query
          name: payorId
          required: true
          schema:
            format: uuid
            type: string
        - description: Payout Memo filter - case insensitive sub-string match
          in: query
          name: payoutMemo
          required: false
          schema:
            type: string
        - description: Payout Status
          in: query
          name: status
          required: false
          schema:
            enum:
              - ACCEPTED
              - REJECTED
              - SUBMITTED
              - QUOTED
              - INSTRUCTED
              - COMPLETED
              - INCOMPLETE
              - CONFIRMED
              - WITHDRAWN
            type: string
        - description: The submitted date from range filter. Format is yyyy-MM-dd.
          in: query
          name: submittedDateFrom
          required: false
          schema:
            format: date
            type: string
        - description: The submitted date to range filter. Format is yyyy-MM-dd.
          in: query
          name: submittedDateTo
          required: false
          schema:
            format: date
            type: string
        - description: Page number. Default is 1.
          in: query
          name: page
          required: false
          schema:
            default: 1
            format: int32
            type: integer
        - description: The number of results to return in a page
          in: query
          name: pageSize
          required: false
          schema:
            default: 25
            format: int32
            maximum: 100
            minimum: 1
            type: integer
        - description: |
            List of sort fields (e.g. ?sort=submittedDateTime:asc,instructedDateTime:asc,status:asc)
            Default is submittedDateTime:asc
            The supported sort fields are: submittedDateTime, instructedDateTime, status.
          in: query
          name: sort
          required: false
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetPayoutsResponseV3"
          description: Payor data found
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: V3 Get Payouts for Payor
      tags:
        - Payment Audit Service (Deprecated)
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v4/paymentaudit/payouts?payorId=449aa6c3-0569-47f6-a430-a470040da67c' -i -X GET \
                -H 'Authorization: Bearer a9d9247d-5e30-4cea-a6e1-0898534ce768'
  "/v3/paymentaudit/payouts/{payoutId}":
    get:
      deprecated: true
      description: Deprecated (use /v4/paymentaudit/payouts/<payoutId> instead)
      operationId: getPaymentsForPayout_PA_V3
      parameters:
        - description: The id (UUID) of the payout.
          in: path
          name: payoutId
          required: true
          schema:
            format: uuid
            type: string
        - description: The remote id of the payees.
          in: query
          name: remoteId
          required: false
          schema:
            type: string
        - description: Payment Status
          in: query
          name: status
          required: false
          schema:
            enum:
              - ACCEPTED
              - AWAITING_FUNDS
              - FUNDED
              - UNFUNDED
              - BANK_PAYMENT_REQUESTED
              - REJECTED
              - ACCEPTED_BY_RAILS
              - CONFIRMED
              - FAILED
              - RETURNED
              - WITHDRAWN
            type: string
        - description: The source amount from range filter. Filters for sourceAmount >= sourceAmountFrom
          in: query
          name: sourceAmountFrom
          required: false
          schema:
            format: int32
            type: integer
        - description: The source amount to range filter. Filters for sourceAmount ⇐ sourceAmountTo
          in: query
          name: sourceAmountTo
          required: false
          schema:
            format: int32
            type: integer
        - description: The payment amount from range filter. Filters for paymentAmount >= paymentAmountFrom
          in: query
          name: paymentAmountFrom
          required: false
          schema:
            format: int32
            type: integer
        - description: The payment amount to range filter. Filters for paymentAmount ⇐ paymentAmountTo
          in: query
          name: paymentAmountTo
          required: false
          schema:
            format: int32
            type: integer
        - description: The submitted date from range filter. Format is yyyy-MM-dd.
          in: query
          name: submittedDateFrom
          required: false
          schema:
            format: date
            type: string
        - description: The submitted date to range filter. Format is yyyy-MM-dd.
          in: query
          name: submittedDateTo
          required: false
          schema:
            format: date
            type: string
        - description: Page number. Default is 1.
          in: query
          name: page
          required: false
          schema:
            default: 1
            format: int32
            type: integer
        - description: The number of results to return in a page
          in: query
          name: pageSize
          required: false
          schema:
            default: 25
            format: int32
            maximum: 100
            minimum: 1
            type: integer
        - description: |
            <p>List of sort fields (e.g. ?sort=submittedDateTime:asc,status:asc). Default is sort by remoteId</p>
            <p>The supported sort fields are: sourceAmount, sourceCurrency, paymentAmount, paymentCurrency,
            routingNumber, accountNumber, remoteId, submittedDateTime and status</p>
          in: query
          name: sort
          required: false
          schema:
            type: string
        - description: |
            Optional. If omitted or set to false, any Personal Identifiable Information (PII) values are returned masked.
            If set to true, and you have permission, the PII values will be returned as their original unmasked values.
          in: query
          name: sensitive
          required: false
          schema:
            type: boolean
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetPaymentsForPayoutResponseV3"
          description: 200 response, data found okay
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: V3 Get Payments for Payout
      tags:
        - Payment Audit Service (Deprecated)
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v3/paymentaudit/payouts/7b524212-6fd7-4699-983d-cac082022a2e' -i -X GET \
                -H 'Authorization: Bearer f7a9a696-e528-487b-8734-e0a22e41ef7a'
  /v3/paymentaudit/transactions:
    get:
      deprecated: true
      description: Deprecated (use /v4/paymentaudit/transactions instead)
      operationId: exportTransactionsCSVV3
      parameters:
        - description: |
            The Payor ID for whom you wish to run the report.
            For a Payor requesting the report, this could be their exact Payor, or it could be a child/descendant Payor.
          in: query
          name: payorId
          required: false
          schema:
            format: uuid
            type: string
        - description: Start date, inclusive. Format is YYYY-MM-DD
          in: query
          name: startDate
          required: false
          schema:
            format: date
            type: string
        - description: End date, inclusive. Format is YYYY-MM-DD
          in: query
          name: endDate
          required: false
          schema:
            format: date
            type: string
      responses:
        "200":
          content:
            application/csv:
              schema:
                $ref: "#/components/schemas/PayorAmlTransactionV3"
          description: Export Transactions response
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
      summary: V3 Export Transactions
      tags:
        - Payment Audit Service (Deprecated)
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v4/paymentaudit/transactions?startDate=2018-05-01&endDate=2018-05-31' -i -X GET \
                -H 'Authorization: Bearer 76748e09-775d-4e2d-b889-f0555901d8eb'
  /v3/payouts:
    post:
      description: |
        <p>Create a new payout and return a location header with a link to the payout</p>
        <p>Basic validation of the payout is performed before returning but more comprehensive validation is done asynchronously</p>
        <p>The results can be obtained by issuing a HTTP GET to the URL returned in the location header</p>
        <p>**NOTE:** amount values in payments must be in 'minor units' format. E.g. cents for USD, pence for GBP etc with no decimal places</p>
      operationId: submitPayoutV3
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreatePayoutRequestV3"
          multipart/form-data:
            example: |
              remoteId,currency,amount,paymentMemo,sourceAccountName,payorPaymentId
              remoteId1,USD,12345,ref1,myAccountUSD,1234567abc
              remoteId2,USD,23456,ref2,myAccountUSD,1234567def
            schema:
              properties:
                file:
                  description: Create a new payout from a CSV source file and return a location header with a link to get the payout
                  items:
                    $ref: "#/components/schemas/PaymentInstructionV3"
                  type: array
                payorId:
                  deprecated: true
                  description: Deprecated in v2.16. Any value supplied here will be ignored.
                  format: uuid
                  type: string
                payoutFromPayorId:
                  description: The id of the payor whose source account(s) will be debited. payoutFromPayorId and payoutToPayorId must be both supplied or both omitted.
                  format: uuid
                  type: string
                payoutToPayorId:
                  description: The id of the payor whose payees will be paid. payoutFromPayorId and payoutToPayorId must be both supplied or both omitted.
                  format: uuid
                  type: string
              type: object
        description: Post amount to transfer using stored funding account details.
        required: true
      responses:
        "202":
          description: Successful submission of the payout
          headers:
            Location:
              description: Reference to created payout
              example: |
                <p>HTTP/1.1 202 Accepted</p>
                <p>Location: https://api.sandbox.velopayments.com/v3/payouts/04a3299d-afcf-42fb-a8b2-76097daf2b1b</p>
              schema:
                format: uri
                type: string
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
      summary: Submit Payout
      tags:
        - Payouts
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v3/payouts' -i -X POST \
            -H 'Authorization: Bearer 63e4d691-847b-46b5-893d-fd15c54dd4bf' \
            -H 'Content-Type: application/json' \
            -d '{"payments":[{"remoteId":"myRemoteId01","currency":"USD","amount":12345,"sourceAccountName":"PAYOR_SRC_ACCT","payorPaymentId":"1111"},{"remoteId":"myRemoteId02","currency":"USD","amount":23456,"sourceAccountName":"PAYOR_SRC_ACCT","payorPaymentId":"2222"},{"remoteId":"myRemoteId01","currency":"USD","amount":1020,"sourceAccountName":"PAYOR_SRC_ACCT","payorPaymentId":"3333"},{"remoteId":"myRemoteId03","currency":"USD","amount":3456,"sourceAccountName":"PAYOR_SRC_ACCT","payorPaymentId":"4444"},{"remoteId":"myRemoteId04","currency":"USD","amount":8765,"sourceAccountName":"PAYOR_SRC_ACCT","payorPaymentId":"5555"}]}'
  "/v3/payouts/{payoutId}":
    delete:
      description: Withdraw Payout will remove the payout details from the rails but the payout will still be accessible in payout service in WITHDRAWN status.
      operationId: withdrawPayoutV3
      parameters:
        - description: Id of the payout
          in: path
          name: payoutId
          required: true
          schema:
            format: uuid
            type: string
      responses:
        "202":
          description: HTTP 202 Accepted
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: Withdraw Payout
      tags:
        - Payouts
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v3/payouts/240c2341-8ddb-4764-9768-f1e0a498158c' -i -X DELETE \
                -H 'Authorization: Bearer 1681d963-f971-4b82-8376-b3e86834de78' \
                -H 'Content-Type: application/json'
    get:
      description: Get payout summary - returns the current state of the payout.
      operationId: getPayoutSummaryV3
      parameters:
        - description: Id of the payout
          in: path
          name: payoutId
          required: true
          schema:
            format: uuid
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PayoutSummaryResponseV3"
          description: Details of Payout
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: Get Payout Summary
      tags:
        - Payouts
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v3/payouts/cc2e1a8d-39ae-461c-bde3-ce78525f89ac' -i -X POST \
                -H 'Authorization: Bearer f081303c-7fcc-4204-8530-02e8ec2ef73f' \
                -H 'Content-Type: application/json'
    post:
      description: Instruct a payout to be made for the specified payoutId.
      operationId: instructPayoutV3
      parameters:
        - description: Id of the payout
          in: path
          name: payoutId
          required: true
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/InstructPayoutRequestV3"
        description: Additional instruct payout parameters
        required: false
      responses:
        "202":
          description: HTTP 202 Accepted
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
        "409":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_409"
          description: |
            The request contained data that would result in a duplicate value
      summary: Instruct Payout
      tags:
        - Payouts
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v3/payouts/0627380c-2330-4fcd-a2a2-02b12152e62e' -i -X POST \
                -H 'Content-Type: application/json' \
                -H 'Authorization: Bearer d1963608-6612-4aa0-bf7d-cf18ce540cdc'
  "/v3/payouts/{payoutId}/payments":
    get:
      description: Retrieve payments for a payout
      operationId: getPaymentsForPayoutV3
      parameters:
        - description: Id of the payout
          in: path
          name: payoutId
          required: true
          schema:
            format: uuid
            type: string
        - description: |
            Payment Status
            * ACCEPTED: any payment which was accepted at submission time (status may have changed since)
            * REJECTED: any payment rejected by initial submission processing
            * WITHDRAWN: any payment which has been withdrawn
            * WITHDRAWABLE: any payment eligible for withdrawal
          in: query
          name: status
          required: false
          schema:
            enum:
              - ACCEPTED
              - REJECTED
              - WITHDRAWN
              - WITHDRAWABLE
            type: string
        - description: The remote id of the payees.
          in: query
          name: remoteId
          required: false
          schema:
            type: string
        - description: Payor's Id of the Payment
          in: query
          name: payorPaymentId
          required: false
          schema:
            type: string
        - description: Physical Account Name
          in: query
          name: sourceAccountName
          required: false
          schema:
            type: string
        - description: |
            Transmission Type
            * ACH
            * SAME_DAY_ACH
            * WIRE
          in: query
          name: transmissionType
          required: false
          schema:
            enum:
              - ACH
              - SAME_DAY_ACH
              - WIRE
            type: string
        - description: Payment Memo of the Payment
          in: query
          name: paymentMemo
          required: false
          schema:
            type: string
        - description: The number of results to return in a page
          in: query
          name: pageSize
          required: false
          schema:
            default: 25
            format: int32
            maximum: 100
            minimum: 1
            type: integer
        - description: Page number. Default is 1.
          in: query
          name: page
          required: false
          schema:
            default: 1
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PagedPaymentsResponseV3"
          description: Payments for payout
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: Retrieve payments for a payout
      tags:
        - Payouts
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v3/payouts/cc2e1a8d-39ae-461c-bde3-ce78525f89ac/payments?payoutId=fb2c5dd0-3573-11eb-a2c2-f2189898ab4d' -i -X GET \
                -H 'Authorization: Bearer f081303c-7fcc-4204-8530-02e8ec2ef73f' \
                -H 'Content-Type: application/json'
  "/v3/payouts/{payoutId}/quote":
    post:
      description: Create quote for a payout
      operationId: createQuoteForPayoutV3
      parameters:
        - description: Id of the payout
          in: path
          name: payoutId
          required: true
          schema:
            format: uuid
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/QuoteResponseV3"
          description: Quote for payout
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
        "409":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_409"
          description: |
            The request contained data that would result in a duplicate value
      summary: Create a quote for the payout
      tags:
        - Payouts
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v3/payouts/cc2e1a8d-39ae-461c-bde3-ce78525f89ac/quote' -i -X POST \
                -H 'Authorization: Bearer f081303c-7fcc-4204-8530-02e8ec2ef73f' \
                -H 'Content-Type: application/json'
  "/v3/payouts/{payoutId}/schedule":
    delete:
      description: Remove the schedule for a scheduled payout
      operationId: deschedulePayout
      parameters:
        - description: Id of the payout
          in: path
          name: payoutId
          required: true
          schema:
            format: uuid
            type: string
      responses:
        "204":
          description: Descheduled payout successfully
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
        "409":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_409"
          description: |
            The request contained data that would result in a duplicate value
      summary: Deschedule a payout
      tags:
        - Payouts
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v3/payouts/cc2e1a8d-39ae-461c-bde3-ce78525f89ac/schedule' -i -X DELETE \
                -H 'Authorization: Bearer f081303c-7fcc-4204-8530-02e8ec2ef73f'
    post:
      description: |
        <p>Schedule a payout for auto-instruction in the future
        or update existing payout schedule if the payout has been scheduled before.</p>
      operationId: scheduleForPayout
      parameters:
        - description: Id of the payout
          in: path
          name: payoutId
          required: true
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/SchedulePayoutRequestV3"
        description: schedule payout parameters
      responses:
        "204":
          description: Payout is scheduled successfully
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
        "409":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_409"
          description: |
            The request contained data that would result in a duplicate value
      summary: Schedule a payout
      tags:
        - Payouts
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v3/payouts/cc2e1a8d-39ae-461c-bde3-ce78525f89ac/schedule' -i -X POST \
                -H 'Authorization: Bearer f081303c-7fcc-4204-8530-02e8ec2ef73f' \
                -H 'Content-Type: application/json'
                -d '{"scheduledFor": "2025-01-01T12:00:00Z", "notificationsEnabled": "true"}'
  /v3/sourceAccounts:
    description: List Source Accounts
    get:
      description: List source accounts.
      operationId: getSourceAccountsV3
      parameters:
        - description: Physical Account Name
          in: query
          name: physicalAccountName
          required: false
          schema:
            type: string
        - description: The physical account ID
          in: query
          name: physicalAccountId
          required: false
          schema:
            format: uuid
            type: string
        - description: The account owner Payor ID
          in: query
          name: payorId
          required: false
          schema:
            format: uuid
            type: string
        - description: The funding account ID
          in: query
          name: fundingAccountId
          required: false
          schema:
            format: uuid
            type: string
        - description: A filter for retrieving both active accounts and user deleted ones
          in: query
          name: includeUserDeleted
          required: false
          schema:
            format: boolean
            type: string
        - description: The type of source account.
          in: query
          name: type
          required: false
          schema:
            $ref: "#/components/schemas/SourceAccountTypeV3"
        - description: Page number. Default is 1.
          in: query
          name: page
          required: false
          schema:
            default: 1
            format: int32
            type: integer
        - description: The number of results to return in a page
          in: query
          name: pageSize
          required: false
          schema:
            default: 25
            format: int32
            maximum: 100
            minimum: 1
            type: integer
        - description: |
            List of sort fields e.g. ?sort=name:asc
            Default is name:asc
            The supported sort fields are - fundingRef, name, balance
          in: query
          name: sort
          required: false
          schema:
            default: fundingRef:asc
            pattern: "[fundingRef|name|balance]+[:desc|:asc]"
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ListSourceAccountResponseV3"
          description: List Source Account response
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: Get list of source accounts
      tags:
        - Source Accounts
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v3/sourceAccounts?payorId=a2967711-df07-41e5-b5ea-f563088911c6' -i -X GET \
                -H 'Authorization: Bearer 757a7dbf-2afb-45ec-877c-2aa3857c8e08'
    summary: List Source Accounts
  "/v3/sourceAccounts/{sourceAccountId}":
    delete:
      description: Mark a source account as deleted by ID
      operationId: deleteSourceAccountV3
      parameters:
        - description: Source account id
          in: path
          name: sourceAccountId
          required: true
          schema:
            format: uuid
            type: string
      responses:
        "204":
          description: No Content - Source account is deleted
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
        "409":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_409"
          description: |
            The request contained data that would result in a duplicate value
      summary: Delete a source account by ID
      tags:
        - Funding Manager Private
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v3/sourceAccounts/126895a8-ba3d-44e8-9b34-84ee579cee7a' -i -X DELETE \
                -H 'Authorization: Bearer a016f840-dafc-4b10-95f5-70ecc75a02d1'
    get:
      description: Get details about given source account.
      operationId: getSourceAccountV3
      parameters:
        - description: Source account id
          in: path
          name: sourceAccountId
          required: true
          schema:
            format: uuid
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SourceAccountResponseV3"
          description: Source account response
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: Get details about given source account.
      tags:
        - Source Accounts
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v3/sourceAccounts/126895a8-ba3d-44e8-9b34-84ee579cee7a' -i -X GET \
                -H 'Authorization: Bearer a016f840-dafc-4b10-95f5-70ecc75a02d1'
  "/v3/sourceAccounts/{sourceAccountId}/fundingRequest":
    post:
      description: |
        <p>Instruct a funding request to transfer funds from the payor’s funding bank to the payor’s balance held within Velo</p>
      operationId: createFundingRequestV3
      parameters:
        - description: Source account id
          in: path
          name: sourceAccountId
          required: true
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/FundingRequestV3"
        description: Body to included amount to be funded
        required: true
      responses:
        "202":
          description: Request Accepted
          headers:
            Location:
              description: Reference to created Funding Request
              schema:
                example: https://api.sandbox.velopayments.com/v1/fundings/8c1a8e1c-0147-4d8c-9f92-b696e1515750
                type: string
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: Create Funding Request
      tags:
        - Funding
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v3/sourceAccounts/533b082b-b3eb-4712-8242-0fd3a307033f/fundingRequest' -i -X POST \
                -H 'Authorization: Bearer 67c1b4fc-29ce-425c-863b-950163a5e971' \
                -H 'Content-Type: application/json' \
                -d '{"amount":999990}'
  "/v3/sourceAccounts/{sourceAccountId}/notifications":
    post:
      description: |
        <p>Set notifications for a given source account</p>
        <p>If the balance falls below the amount set in the request an email notification will be sent to the email address registered in the payor profile</p>
      operationId: setNotificationsRequestV3
      parameters:
        - description: Source account id
          in: path
          name: sourceAccountId
          required: true
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/SetNotificationsRequest_2"
        description: Body to included minimum balance to set
        required: true
      responses:
        "204":
          description: Request Fulfilled
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: Set notifications
      tags:
        - Source Accounts
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v3/sourceAccounts/533b082b-b3eb-4712-8242-0fd3a307033f/notifications' -i -X POST \
                -H 'Authorization: Bearer 67c1b4fc-29ce-425c-863b-950163a5e971' \
                -H 'Content-Type: application/json' \
                -d '{"minimumBalance":900}'
  "/v3/sourceAccounts/{sourceAccountId}/transfers":
    post:
      description: Transfer funds between source accounts for a Payor. The 'from' source account is identified in the URL, and is the account which will be debited. The 'to' (destination) source account is in the body, and is the account which will be credited. Both source accounts must belong to the same Payor. There must be sufficient balance in the 'from' source account, otherwise the transfer attempt will fail.
      operationId: transferFundsV3
      parameters:
        - description: The 'from' source account id, which will be debited
          in: path
          name: sourceAccountId
          required: true
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TransferRequestV3"
        description: Body
        required: true
      responses:
        "204":
          description: Request Processed
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: Transfer Funds between source accounts
      tags:
        - Source Accounts
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v3/sourceAccounts/533b082b-b3eb-4712-8242-0fd3a307033f/transfers' -i -X POST \
                -H 'Authorization: Bearer 67c1b4fc-29ce-425c-863b-950163a5e971' \
                -H 'Content-Type: application/json' \
                -d '{ "toSourceAccountId": "a99f93f9-6845-451d-a1f5-f3c841599dd7", "amount": 10000, "currency": "USD" }'
  /v4/payees:
    get:
      description: Get a paginated response listing the payees for a payor.
      operationId: listPayeesV4
      parameters:
        - description: The account owner Payor ID
          in: query
          name: payorId
          required: true
          schema:
            format: uuid
            type: string
          x-contracts:
            - contractId: 1
              matchers:
                - type: equal_to
                  value: 0a818933-087d-47f2-ad83-2f986ed087eb
              value: 0a818933-087d-47f2-ad83-2f986ed087eb
        - description: The watchlistStatus of the payees.
          in: query
          name: watchlistStatus
          required: false
          schema:
            $ref: "#/components/schemas/WatchlistStatusV3"
        - description: Payee disabled
          in: query
          name: disabled
          required: false
          schema:
            type: boolean
        - description: The onboarded status of the payees.
          in: query
          name: onboardedStatus
          required: false
          schema:
            $ref: "#/components/schemas/OnboardedStatusV4"
        - description: Email address
          in: query
          name: email
          required: false
          schema:
            example: bob@example.com
            format: email
            type: string
        - description: The display name of the payees.
          in: query
          name: displayName
          required: false
          schema:
            example: Bob Smith
            type: string
        - description: The remote id of the payees.
          in: query
          name: remoteId
          required: false
          schema:
            example: remoteId123
            type: string
        - description: The onboarded status of the payees.
          in: query
          name: payeeType
          required: false
          schema:
            $ref: "#/components/schemas/PayeeType_2"
        - description: The country of the payee - 2 letter ISO 3166-1 country code (upper case)
          in: query
          name: payeeCountry
          required: false
          schema:
            example: US
            type: string
        - description: The ofacStatus of the payees.
          in: query
          name: ofacStatus
          required: false
          schema:
            $ref: "#/components/schemas/OfacStatusV4"
        - description: Page number. Default is 1.
          in: query
          name: page
          required: false
          schema:
            default: 1
            example: 1
            format: int32
            type: integer
        - description: Page size. Default is 25. Max allowable is 100.
          in: query
          name: pageSize
          required: false
          schema:
            default: 25
            example: 25
            format: int32
            type: integer
        - description: |
            List of sort fields (e.g. ?sort=onboardedStatus:asc,name:asc) Default is name:asc 'name' is treated as company name for companies - last name + ',' + firstName for individuals The supported sort fields are - payeeId, displayName, payoutStatus, onboardedStatus.
          in: query
          name: sort
          required: false
          schema:
            default: displayName:asc
            example: displayName:asc
            pattern: "[a-zA-Z]+[:desc|:asc]"
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PagedPayeeResponseV4"
          description: Details of Payee
          x-contracts:
            - body:
                content:
                  - payeeId: ee2cc9a1-34dd-4ab6-91e3-db111d08d995
                links:
                  - href: https://api.sandbox.velopayments.com/v4/payees?payorId=1982b223-73b7-419d-a2e1-e64362b0ee8b&page=1&pageSize=2&sort=displayName:asc
                    rel: first
                page:
                  numberOfElements: 1
                  page: 9,
                  pageSize: 2
                  totalElements: 1
                  totalPages: 23
              contractId: 1
              headers:
                Content-Type: application/json
              matchers:
                body:
                  - path: $.page.numberOfElements
                    predefined: number
                    type: by_regex
                  - path: $.page.totalElements
                    predefined: number
                    type: by_regex
                  - path: $.page.totalPages
                    predefined: number
                    type: by_regex
                  - path: $.page.page
                    predefined: number
                    type: by_regex
                  - path: $.page.pageSize
                    predefined: number
                    type: by_regex
                  - maxOccurrence: 5
                    minOccurrence: 1
                    path: $.links
                    type: by_type
                  - path: $.links[0].href
                    predefined: url
                    type: by_regex
                  - minOccurrence: 1
                    path: $.content
                    type: by_type
                  - path: $.content[0].payeeId
                    predefined: uuid
                    type: by_regex
                  - path: $.content[0].email
                    predefined: email
                    type: by_regex
                  - path: $.content[0].created
                    type: by_regex
                    value: ([\d]{4})-([\d]{2})-([\d]{2})T([\d]{2}):([\d]{2}):([\d]{2})*(.([\d]{1,3}))Z
                  - path: $.content[0].payorRefs[0].payorId
                    predefined: uuid
                    type: by_regex
                headers:
                  - key: Content-Type
                    regex: application/json.*
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: List Payees
      tags:
        - Payees
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v4/payees?pageSize=2&page=8&payorId=9cade13d-0c55-41a7-9e6d-164e8b138b40&watchlistStatus=PASSED&onboardedStatus=INVITED&email=foo@example.com&displayName=Bar&remoteId=remote&payeeCountry=US&payeeType=Individual' -i -X GET \
                -H 'Authorization: Bearer 6dd5e976-e329-462f-bd6b-25d463cf02fd' \
                -H 'Content-Type: application/json'
      x-contracts:
        - contractId: 1
          headers:
            Content-Type: application/json
          name: Test List Payees All params for v4
          request:
            queryParameters:
              - key: page
                value: 1
              - key: pageSize
                value: 30
              - key: watchlistStatus
                value: PASSED
              - key: onboardedStatus
                value: CREATED
              - key: email
                value: testemail@example.com
              - key: displayName
                value: foo
              - key: remoteId
                value: 123123123asdf
              - key: payeeType
                value: Individual
              - key: payeeCountry
                value: US
          serviceName: payee-service
    post:
      description: |
        <p>Initiate the process of creating 1 to 2000 payees in a batch</p>
        <p>Use the batchId in the response to query for status.</p>
        <p>In addition to standard semantic validations, a 400 will also result if: </p>
        <ul>
        <li>there is a duplicate remote id within the batch</li>
        <li>there is a duplicate email within the batch, i.e. if there is a conflict between the data provided for one payee within the batch and
        that provided for another payee within the same batch).</li>
        </ul>
        <p>The validation at this stage is intra-batch only.</p>
        <p>Validation against payees who have already been invited occurs subsequently during processing of the batch.</p>
      operationId: v4CreatePayee
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreatePayeesRequestV4"
          multipart/form-data:
            schema:
              properties:
                file:
                  description: CSV File of payee data
                  items:
                    $ref: "#/components/schemas/CreatePayeesCSVRequestV4"
                  type: array
                payorId:
                  format: uuid
                  type: string
              type: object
        description: Post payees to create.
        x-contracts:
          - body:
              payees:
                - address:
                    city: San Francisco
                    country: US
                    countyOrProvince: California
                    line1: 100 Battery Street
                    line2: line2
                    line3: line3
                    line4: line4
                    zipOrPostcode: "94018"
                  email: bob@example.com
                  individual:
                    dateOfBirth: 1970-05-20
                    name:
                      firstName: Barney
                      lastName: Cuthbert
                      otherNames: Grubb
                      title: Mr
                    nationalIdentification: "987654321"
                  language: fr
                  paymentChannel:
                    accountName: Foo Account
                    accountNumber: "12345678"
                    countryCode: US
                    currency: USD
                    paymentChannelName: My Payment Channel
                    routingNumber: "123456789"
                  remoteId: remoteId
                  type: Individual
                - address:
                    city: San Francisco
                    country: US
                    countyOrProvince: California
                    line1: 100 Battery Street
                    line2: line2
                    line3: line3
                    line4: line4
                    zipOrPostcode: "94018"
                  company:
                    name: ABC Payee Corp
                    taxId: "223344556"
                  email: bob@example.com
                  language: fr
                  paymentChannel:
                    accountName: Foo Account
                    accountNumber: "12345678"
                    countryCode: US
                    currency: USD
                    paymentChannelName: My Payment Channel
                    routingNumber: "123456789"
                  remoteId: remoteId
                  type: Company
              payorId: 0a818933-087d-47f2-ad83-2f986ed087eb
            contractId: 1
            headers:
              Content-Type: application/json
            matchers:
              body:
                - path: $.payorId
                  predefined: uuid
                  type: by_regex
                - path: $.payees
                  predefined: non_empty
                  type: by_regex
              headers:
                - key: Content-Type
                  regex: application/json.*
          - contractId: 2
            headers:
              Content-Type: multipart/form-data
            multipart:
              named:
                - fileContent: |
                    type,remoteId,email,addressLine1,addressLine2,addressLine3,addressLine4,addressCity,addressCountyOrProvince,addressZipOrPostcode,addressCountry,individualNationalIdentification,individualDateOfBirth,individualTitle,individualFirstName,individualOtherNames,individualLastName,companyName,companyEIN,paymentChannelAccountNumber,paymentChannelRoutingNumber,paymentChannelIban,paymentChannelAccountName,paymentChannelCountryCode,paymentChannelCurrency,challengeDescription,challengeValue,payeeLanguage\n Individual,remoteId123,bob@example.com,Address line 1,Address line 2,Address line 3,Address line 4,The City,The County,The Zip,GB,123456789,1970-02-25,Mr,Bob,Hungry,Wiggins,,,12345678,123456789,,Account name,US,USD,Challenge Description,Challenge Value,EN\n Company,remoteId1234,jim@example.com,Address line 1,Address line 2,Address line 3,Address line 4,The City,The County,The Zip,GB,,,,,,,ABC Corp,987654321,,,1234567890123456789012345678901234,Account name,US,USD,,,FR\n
                  fileName: filename.csv
                  paramName: file
              params:
                payorId: 0a818933-087d-47f2-ad83-2f986ed087eb
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CreatePayeesCSVResponseV4"
          description: HTTP Created. Body created only on CSV requests
          headers:
            Location:
              schema:
                description: A url pointing to the location of the batch. This can be used to get the status of the batch
                example: https://api.sandbox.velopayments.com/v4/payees/batch/dbe7df3a-6b75-4bcb-97c5-45d25f828267
                type: string
          x-contracts:
            - contractId: 1
              headers:
                Location: https://api.sandbox.velopayments.com/v4/payees/batch/dbe7df3a-6b75-4bcb-97c5-45d25f828267
              matchers:
                headers:
                  - key: Location
                    predefined: url
                    type: by_regex
            - contractId: 2
              headers:
                Content-Type: application/json
                Location: https://api.sandbox.velopayments.com/v4/payees/batch/dbe7df3a-6b75-4bcb-97c5-45d25f828267
              matchers:
                headers:
                  - key: Location
                    predefined: url
                    type: by_regex
                  - key: Content-Type
                    regex: application/json.*
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: Initiate Payee Creation
      tags:
        - Payee Invitation
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v4/payees' -i -X POST \
                -H 'Content-Type: application/json' \
                -H 'Authorization: Bearer 829d8ec0-00a3-4c95-8234-ad09500bb627' \
                -d '{"payorId":"7ddebfed-0624-4bce-848d-40ffe818a2df","payees":[{"type":"Individual","remoteId":"remoteId",
                "email":"bob@example.com","address":{"line1":"100 Battery Street","line2":"line2","line3":"line3",
                "line4":"line4","city":"San Francisco","countyOrProvince":"California","zipOrPostcode":"94018","country":"US"},
                "paymentChannel":{"paymentChannelName":"My Payment Channel","accountNumber":"12345678","routingNumber":"123456789",
                "countryCode":"US","currency":"USD","accountName":"Foo Account"},"individual":{"name":{"title":"Mr",
                "firstName":"Barney","otherNames":"Grubb","lastName":"Cuthbert"},"nationalIdentification":"987654321",
                "dateOfBirth":"1970-05-20"},"ofacOverride":false,"language":"fr"},{"type":"Company","remoteId":"remoteId",
                "email":"bob@example.com","address":{"line1":"100 Battery Street","line2":"line2","line3":"line3",
                "line4":"line4","city":"San Francisco","countyOrProvince":"California","zipOrPostcode":"94018","country":"US"},
                "paymentChannel":{"paymentChannelName":"My Payment Channel","accountNumber":"12345678","routingNumber":"123456789",
                "countryCode":"US","currency":"USD","accountName":"Foo Account"},"company":{"name":"ABC Payee Corp",
                "taxId":"223344556"},"ofacOverride":false,"language":"fr"}]}'
      x-contracts:
        - contractId: 1
          name: Create Payees by JSON v4
          serviceName: payee-service
        - contractId: 2
          name: Create Payees by CSV v4
          serviceName: payee-service
  "/v4/payees/batch/{batchId}":
    get:
      description: |
        Fetch the status of a specific batch of payees. The batch is fully processed when status is ACCEPTED and pendingCount is 0 ( 200 - OK, 404 - batch not found ).
      operationId: queryBatchStatusV4
      parameters:
        - description: Batch Id
          in: path
          name: batchId
          required: true
          schema:
            format: uuid
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/QueryBatchResponseV4"
          description: Get Batch Status
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: Query Batch Status
      tags:
        - Payee Invitation
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v4/payees/batch/cb6ff8c6-85e9-45a6-b7d9-d05305db67f3' -i -X GET \
                -H 'Content-Type: application/json' \
                -H 'Authorization: Bearer f01caad1-5ae5-454d-9467-5053e459fe45'
  /v4/payees/deltas:
    get:
      description: |
        Get a paginated response listing payee changes (updated since a particular time) to a limited set of fields:
        - dbaName
        - displayName
        - email
        - onboardedStatus
        - payeeCountry
        - payeeId
        - remoteId
      operationId: listPayeeChangesV4
      parameters:
        - description: The Payor ID to find associated Payees
          in: query
          name: payorId
          required: true
          schema:
            format: uuid
            type: string
          x-contracts:
            - contractId: 1
              matchers:
                - type: equal_to
                  value: 0a818933-087d-47f2-ad83-2f986ed087eb
              value: 0a818933-087d-47f2-ad83-2f986ed087eb
        - description: The updatedSince filter in the format YYYY-MM-DDThh:mm:ss+hh:mm
          in: query
          name: updatedSince
          required: true
          schema:
            format: date-time
            type: string
          x-contracts:
            - contractId: 1
              matchers:
                - type: equal_to
                  value: 2019-01-20T09:00:00+00:00
              value: 2019-01-20T09:00:00+00:00
        - description: Page number. Default is 1.
          in: query
          name: page
          required: false
          schema:
            default: 1
            example: 1
            format: int32
            type: integer
        - description: Page size. Default is 100. Max allowable is 1000.
          in: query
          name: pageSize
          required: false
          schema:
            default: 100
            example: 100
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PayeeDeltaResponseV4"
          description: Details of Payee Changes
          x-contracts: null
        "400":
          description: Bad Request
      summary: List Payee Changes
      tags:
        - Payees
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v4/payees/deltas?pageSize=2&page=8&payorId=0a818933-087d-47f2-ad83-2f986ed087eb&updatedSince=2019-01-20T09:00:00+00:00' -i -X GET \
                -H 'Authorization: Bearer 6dd5e976-e329-462f-bd6b-25d463cf02fd' \
                -H 'Content-Type: application/json'
      x-contracts:
        - contractId: 1
          ignored: true
          name: Test List Payee Changes V4
          request:
            queryParameters:
              - key: page
                value: 1
              - key: pageSize
                value: 30
          serviceName: payee-service
  "/v4/payees/payors/{payorId}/invitationStatus":
    get:
      description: |
        Returns a filtered, paginated list of payees associated with a payor, along with invitation status and grace period end date.
      operationId: getPayeesInvitationStatusV4
      parameters:
        - description: The account owner Payor ID
          in: path
          name: payorId
          required: true
          schema:
            example: 9ac75325-5dcd-42d5-b992-175d7e0a035e
            format: uuid
            type: string
        - description: The UUID of the payee.
          in: query
          name: payeeId
          required: false
          schema:
            example: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
            format: uuid
            type: string
        - description: The invitation status of the payees.
          in: query
          name: invitationStatus
          required: false
          schema:
            $ref: "#/components/schemas/InvitationStatusV4"
        - description: Page number. Default is 1.
          in: query
          name: page
          required: false
          schema:
            default: 1
            example: 1
            format: int32
            type: integer
        - description: Page size. Default is 25. Max allowable is 100.
          in: query
          name: pageSize
          required: false
          schema:
            default: 25
            example: 25
            format: int32
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PagedPayeeInvitationStatusResponseV4"
          description: Get Payees with Invitaion status - filters of payeeId and invitationStatus
          x-contracts:
            - body:
                content:
                  - payeeId: c3d60e1f-a4d0-4273-b501-bfa81c70d56b
                links:
                  - href: http://localhost:62142/v4/payees/payors/f20b038b-e841-4d80-9175-b47c6cf19bc1/invitationStatus?payeeId=c3d60e1f-a4d0-4273-b501-bfa81c70d56b&invitationStatus=ACCEPTED&page=1&pageSize=25
                    rel: first
                page:
                  numberOfElements: 1
                  page: 1
                  pageSize: 25
                  totalElements: 1
                  totalPages: 1
              contractId: 1
              headers:
                Content-Type: application/json
              matchers:
                body:
                  - minOccurrence: 1
                    path: $.page
                    type: by_type
                  - path: $.page.numberOfElements
                    predefined: number
                    type: by_regex
                  - path: $.page.totalElements
                    predefined: number
                    type: by_regex
                  - path: $.page.totalPages
                    predefined: number
                    type: by_regex
                  - path: $.page.page
                    predefined: number
                    type: by_regex
                  - path: $.page.pageSize
                    predefined: number
                    type: by_regex
                  - maxOccurrence: 5
                    minOccurrence: 1
                    path: $.links
                    type: by_type
                  - path: $.links[0].href
                    predefined: url
                    type: by_regex
                  - minOccurrence: 1
                    path: $.content
                    type: by_type
                  - path: $.content[0].payeeId
                    predefined: uuid
                    type: by_regex
                headers:
                  - key: Content-Type
                    regex: application/json.*
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: Get Payee Invitation Status
      tags:
        - Payee Invitation
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v4/payees/payors/f20b038b-e841-4d80-9175-b47c6cf19bc1/invitationStatus?payeeId=c3d60e1f-a4d0-4273-b501-bfa81c70d56b&invitationStatus=ACCEPTED' -i -X GET \
                -H 'Authorization: Bearer ed73aa9a-b51b-44cb-a8e9-11e2fb85046b'
  "/v4/payees/{payeeId}":
    delete:
      description: |
        <p>This API will delete Payee by Id (UUID). Deletion by ID is not allowed if:</p>
        <p>* Payee ID is not found</p>
        <p>* If Payee has not been on-boarded</p>
        <p>* If Payee is in grace period</p>
        <p>* If Payee has existing payments</p>
      operationId: deletePayeeByIdV4
      parameters:
        - description: The UUID of the payee.
          in: path
          name: payeeId
          required: true
          schema:
            example: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
            format: uuid
            type: string
      responses:
        "204":
          description: No content. Payee Id accepted for deletion.
        "400":
          description: Bad Request. Payee Id failed validation for deletion.
        "404":
          description: Payee Id not found
      summary: Delete Payee by Id
      tags:
        - Payees
    get:
      description: Get Payee by Id
      operationId: getPayeeByIdV4
      parameters:
        - description: The UUID of the payee.
          in: path
          name: payeeId
          required: true
          schema:
            example: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
            format: uuid
            type: string
        - description: |
            Optional. If omitted or set to false, any Personal Identifiable Information (PII) values are returned masked.
            If set to true, and you have permission, the PII values will be returned as their original unmasked values.
          in: query
          name: sensitive
          required: false
          schema:
            type: boolean
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PayeeDetailResponseV4"
          description: Success response, request completed okay
          x-contracts:
            - body:
                acceptTermsAndConditionsTimestamp: 2018-01-02T00:00:00Z
                address:
                  city: San Francisco
                  country: US
                  countyOrProvince: California
                  line1: 100 Battery Street
                  line2: line2
                  line3: line3
                  line4: line4
                  zipOrPostcode: "94018"
                cellphoneNumber: "0800800800"
                country: US
                created: 2018-01-02T00:00:00Z
                disabled: false
                disabledComment: disabled comment
                disabledUpdatedTimestamp: 2018-02-03T00:00:00Z
                displayName: Cuthbert, Barney
                email: bob@example.com
                enhancedKycCompleted: true
                gracePeriodEndDate: 2019-12-23
                individual:
                  dateOfBirth: XXXX-XX-XX
                  name:
                    firstName: Barney
                    lastName: Cuthbert
                    otherNames: Grubb
                    title: Mr
                  nationalIdentification: XXXXX4321
                kycCompletedTimestamp: 2018-02-04T00:00:00Z
                language: fr
                marketingOptInDecision: true
                marketingOptInTimestamp: 2018-02-03T00:00:00Z
                onboardedStatus: CREATED
                pausePayment: false
                pausePaymentTimestamp: 2018-02-04T00:00:00Z
                payeeId: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
                payeeType: Individual
                payorRefs:
                  - invitationStatus: PENDING
                    payorId: 9ac75325-5dcd-42d5-b992-175d7e0a035e
                    remoteId: remoteId
                watchlistOverrideComment: watchlist override comment
                watchlistOverrideExpiresAtTimestamp: 2019-02-04T00:00:00Z
                watchlistStatus: PENDING
                watchlistStatusUpdatedTimestamp: 2018-02-04T00:00:00Z
              contractId: 1
              headers:
                Content-Type: application/json
            - body:
                acceptTermsAndConditionsTimestamp: 2018-01-02T00:00:00Z
                address:
                  city: San Francisco
                  country: US
                  countyOrProvince: California
                  line1: 100 Battery Street
                  line2: line2
                  line3: line3
                  line4: line4
                  zipOrPostcode: "94018"
                cellphoneNumber: "0800800800"
                company:
                  name: WIDGET CORP
                  operatingName: SAMPLE DBA NAME
                  taxId: "223344556"
                country: US
                created: 2018-01-02T00:00:00Z
                disabled: false
                disabledComment: disabled comment
                disabledUpdatedTimestamp: 2018-02-03T00:00:00Z
                displayName: Cuthbert, Barney
                email: bob@example.com
                enhancedKycCompleted: true
                gracePeriodEndDate: 2019-12-23
                kycCompletedTimestamp: 2018-02-04T00:00:00Z
                language: fr
                marketingOptInDecision: true
                marketingOptInTimestamp: 2018-02-03T00:00:00Z
                onboardedStatus: CREATED
                pausePayment: false
                pausePaymentTimestamp: 2018-02-04T00:00:00Z
                payeeId: 01b51877-2a17-427a-b2b0-d73f2b136315
                payeeType: Company
                payorRefs:
                  - invitationStatus: PENDING
                    payorId: 9ac75325-5dcd-42d5-b992-175d7e0a035e
                    remoteId: remoteId
                watchlistOverrideComment: watchlist override comment
                watchlistOverrideExpiresAtTimestamp: 2019-02-04T00:00:00Z
                watchlistStatus: PENDING
                watchlistStatusUpdatedTimestamp: 2018-02-04T00:00:00Z
              contractId: 2
              headers:
                Content-Type: application/json
            - body:
                acceptTermsAndConditionsTimestamp: 2018-01-02T00:00:00Z
                address:
                  city: San Francisco
                  country: US
                  countyOrProvince: California
                  line1: 100 Battery Street
                  line2: line2
                  line3: line3
                  line4: line4
                  zipOrPostcode: "94018"
                cellphoneNumber: "0800800800"
                country: US
                created: 2018-01-02T00:00:00Z
                disabled: false
                disabledComment: disabled comment
                disabledUpdatedTimestamp: 2018-02-03T00:00:00Z
                displayName: Cuthbert, Barney
                email: bob@example.com
                enhancedKycCompleted: true
                gracePeriodEndDate: 2019-12-23
                individual:
                  dateOfBirth: 1970-05-20
                  name:
                    firstName: Barney
                    lastName: Cuthbert
                    otherNames: Grubb
                    title: Mr
                  nationalIdentification: "987654321"
                kycCompletedTimestamp: 2018-02-04T00:00:00Z
                language: fr
                marketingOptInDecision: true
                marketingOptInTimestamp: 2018-02-03T00:00:00Z
                onboardedStatus: CREATED
                pausePayment: false
                pausePaymentTimestamp: 2018-02-04T00:00:00Z
                payeeId: 026cc3c8-3a0c-4083-a05b-e908048c1b08
                payeeType: Individual
                payorRefs:
                  - invitationStatus: PENDING
                    payorId: 9ac75325-5dcd-42d5-b992-175d7e0a035e
                    remoteId: remoteId
                watchlistOverrideComment: watchlist override comment
                watchlistOverrideExpiresAtTimestamp: 2019-02-04T00:00:00Z
                watchlistStatus: PENDING
                watchlistStatusUpdatedTimestamp: 2018-02-04T00:00:00Z
              contractId: 4
              headers:
                Content-Type: application/json
        "404":
          description: Payee Not found
          x-contracts:
            - contractId: 3
      summary: Get Payee by Id
      tags:
        - Payees
      x-contracts:
        - contractId: 1
          contractPath: /v4/payees/2aa5d7e0-2ecb-403f-8494-1865ed0454e9
          name: Get Individual Payee v4
          serviceName: payee-service
        - contractId: 2
          contractPath: /v4/payees/01b51877-2a17-427a-b2b0-d73f2b136315
          name: Get Company Payee v4
          serviceName: payee-service
        - contractId: 3
          contractPath: /v4/payees/e67cbda6-c031-4aae-8e72-922fe76c7a24
          name: Payee Id Not Found v4
          serviceName: payee-service
        - contractId: 4
          contractPath: /v4/payees/026cc3c8-3a0c-4083-a05b-e908048c1b08
          name: Get Payee sensitive true v4
          serviceName: payee-service
  "/v4/payees/{payeeId}/invite":
    post:
      description: |
        <p>Resend an invite to the Payee The payee must have already been invited by the payor and not yet accepted or declined</p>
        <p>Any previous invites to the payee by this Payor will be invalidated</p>
      operationId: resendPayeeInviteV4
      parameters:
        - description: The UUID of the payee.
          in: path
          name: payeeId
          required: true
          schema:
            example: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/InvitePayeeRequestV4"
        description: Provide Payor Id in body of request
        required: true
      responses:
        "200":
          description: the request was accepted
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
        "409":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_409"
          description: |
            The request contained data that would result in a duplicate value
      summary: Resend Payee Invite
      tags:
        - Payee Invitation
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v4/payees/5032e339-2e24-4fca-bfc9-f6a66e3157dd/invite' -i -X POST \
                -H 'Authorization: Bearer 5e40dde3-ff1c-4d69-94b0-3a6e96fd789e' \
                -H 'Content-Type: application/json' \
                -d '{"payorId":"545e29bd-75a8-4354-8192-ae68bab59d7b"}'
  "/v4/payees/{payeeId}/payeeDetailsUpdate":
    post:
      description: |
        <p>Update payee details for the given Payee Id.</p>
        <p>Payors may only update the payee details if the payee has not yet onboarded</p>
      operationId: payeeDetailsUpdateV4
      parameters:
        - description: The UUID of the payee.
          in: path
          name: payeeId
          required: true
          schema:
            example: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UpdatePayeeDetailsRequestV4"
        description: Request to update payee details
        required: true
      responses:
        "204":
          description: Request accepted
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: Update Payee Details
      tags:
        - Payees
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v4/payees/77f84ae9-42df-49d7-941b-47360347f86f/payeeDetailsUpdate' -i -X POST \
                -H 'Authorization: Bearer ed73aa9a-b51b-44cb-a8e9-11e2fb85046b' \
                -H 'Content-Type: application/json' \
                -d '{
                        "address": {
                            "line1": "line1",
                            "line2": "line2",
                            "line3": "line3",
                            "line4": "line4",
                            "city": "City",
                            "countyOrProvince": "county",
                            "zipOrPostcode": "BS11AA",
                            "country": "US"
                        },
                        "individual": {
                            "name": {
                                "title": "Mr",
                                "firstName": "A",
                                "otherNames": "P",
                                "lastName": "Smith"
                            },
                            "nationalIdentification": "987654321",
                            "dateOfBirth": "1970-04-03"
                        }
                    }'
  "/v4/payees/{payeeId}/remoteIdUpdate":
    post:
      description: |
        <p>Update the remote Id for the given Payee Id.</p>
      parameters:
        - description: The UUID of the payee.
          in: path
          name: payeeId
          required: true
          schema:
            example: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UpdateRemoteIdRequestV4"
        description: Request to update payee remote id v4
        required: true
      responses:
        "204":
          description: Accepted, No Content
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
        "409":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_409"
          description: |
            The request contained data that would result in a duplicate value
      summary: Update Payee Remote Id
      tags:
        - Payees
  /v4/paymentaudit/fundings:
    get:
      description: |
        <p>Get a list of Fundings for a payor.</p>
      operationId: getFundingsV4
      parameters:
        - description: The account owner Payor ID
          in: query
          name: payorId
          required: true
          schema:
            format: uuid
            type: string
        - description: The source account name
          in: query
          name: sourceAccountName
          required: false
          schema:
            type: string
        - description: Page number. Default is 1.
          in: query
          name: page
          required: false
          schema:
            default: 1
            format: int32
            type: integer
        - description: The number of results to return in a page
          in: query
          name: pageSize
          required: false
          schema:
            default: 25
            format: int32
            maximum: 100
            minimum: 1
            type: integer
        - description: |
            List of sort fields. Example: ```?sort=destinationCurrency:asc,destinationAmount:asc```
            Default is no sort. The supported sort fields are: dateTime and amount.
          in: query
          name: sort
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetFundingsResponse"
          description: Get Fundings normal response
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: Get Fundings for Payor
      tags:
        - Payment Audit Service
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v4/paymentaudit/fundings?payorId=2a5d8af2-a1ed-4d7f-b9a7-ebe4b333be5a' -i -X GET \
                -H 'Authorization: Bearer 3667f994-7d41-4d20-990d-b79fa720e56b'
  /v4/paymentaudit/payments:
    get:
      description: Get payments for the given payor Id
      operationId: listPaymentsAuditV4
      parameters:
        - description: The UUID of the payee.
          in: query
          name: payeeId
          required: false
          schema:
            format: uuid
            type: string
        - description: The account owner Payor Id. Required for external users.
          in: query
          name: payorId
          required: false
          schema:
            format: uuid
            type: string
        - description: The payor’s name. This filters via a case insensitive substring match.
          in: query
          name: payorName
          required: false
          schema:
            type: string
        - description: The remote id of the payees.
          in: query
          name: remoteId
          required: false
          schema:
            type: string
        - description: The id of the remote system that is orchestrating payments
          in: query
          name: remoteSystemId
          required: false
          schema:
            type: string
        - description: Payment Status
          in: query
          name: status
          required: false
          schema:
            enum:
              - ACCEPTED
              - AWAITING_FUNDS
              - FUNDED
              - UNFUNDED
              - BANK_PAYMENT_REQUESTED
              - REJECTED
              - ACCEPTED_BY_RAILS
              - CONFIRMED
              - FAILED
              - RETURNED
              - WITHDRAWN
            type: string
        - description: |
            Transmission Type
            * ACH
            * SAME_DAY_ACH
            * WIRE
            * GACHO
          in: query
          name: transmissionType
          required: false
          schema:
            enum:
              - ACH
              - SAME_DAY_ACH
              - WIRE
              - LOCAL
              - GACHO
            type: string
        - description: The source account name filter. This filters via a case insensitive substring match.
          in: query
          name: sourceAccountName
          required: false
          schema:
            type: string
        - description: The source amount from range filter. Filters for sourceAmount >= sourceAmountFrom
          in: query
          name: sourceAmountFrom
          required: false
          schema:
            format: int32
            type: integer
        - description: The source amount to range filter. Filters for sourceAmount ⇐ sourceAmountTo
          in: query
          name: sourceAmountTo
          required: false
          schema:
            format: int32
            type: integer
        - description: The source currency filter. Filters based on an exact match on the currency.
          in: query
          name: sourceCurrency
          required: false
          schema:
            type: string
        - description: The payment amount from range filter. Filters for paymentAmount >= paymentAmountFrom
          in: query
          name: paymentAmountFrom
          required: false
          schema:
            format: int32
            type: integer
        - description: The payment amount to range filter. Filters for paymentAmount ⇐ paymentAmountTo
          in: query
          name: paymentAmountTo
          required: false
          schema:
            format: int32
            type: integer
        - description: The payment currency filter. Filters based on an exact match on the currency.
          in: query
          name: paymentCurrency
          required: false
          schema:
            type: string
        - description: The submitted date from range filter. Format is yyyy-MM-dd.
          in: query
          name: submittedDateFrom
          required: false
          schema:
            format: date
            type: string
        - description: The submitted date to range filter. Format is yyyy-MM-dd.
          in: query
          name: submittedDateTo
          required: false
          schema:
            format: date
            type: string
        - description: The payment memo filter. This filters via a case insensitive substring match.
          in: query
          name: paymentMemo
          required: false
          schema:
            type: string
        - description: |
            Payout Rails ID filter - case insensitive match.
            Any value is allowed, but you should use one of the supported railsId values.
            To get this list of values, you should call the 'Get Supported Rails' endpoint.
          in: query
          name: railsId
          required: false
          schema:
            type: string
        - description: Filter payouts scheduled to run on or after the given date. Format is yyyy-MM-dd.
          in: query
          name: scheduledForDateFrom
          required: false
          schema:
            format: date
            type: string
        - description: Filter payouts scheduled to run on or before the given date. Format is yyyy-MM-dd.
          in: query
          name: scheduledForDateTo
          required: false
          schema:
            format: date
            type: string
        - description: Payout Schedule Status
          in: query
          name: scheduleStatus
          required: false
          schema:
            enum:
              - ANY
              - SCHEDULED
              - EXECUTED
              - FAILED
            type: string
        - description: The status of the post instruct FX step if one was required for the payment
          in: query
          name: postInstructFxStatus
          required: false
          schema:
            enum:
              - ANY
              - INITIATED
              - CANCELLED
              - EXECUTED
              - COMPLETED
              - RETURNED
              - RESUBMITTED
              - REFUNDED
            type: string
        - description: Page number. Default is 1.
          in: query
          name: page
          required: false
          schema:
            default: 1
            format: int32
            type: integer
        - description: The number of results to return in a page
          in: query
          name: pageSize
          required: false
          schema:
            default: 25
            format: int32
            maximum: 100
            minimum: 1
            type: integer
        - description: |
            List of sort fields (e.g. ?sort=submittedDateTime:asc,status:asc). Default is sort by submittedDateTime:desc,paymentId:asc
            The supported sort fields are: sourceAmount, sourceCurrency, paymentAmount, paymentCurrency,
            routingNumber, accountNumber, remoteId, submittedDateTime, status and paymentId
          in: query
          name: sort
          required: false
          schema:
            type: string
        - description: |
            Optional. If omitted or set to false, any Personal Identifiable Information (PII) values are returned masked.
            If set to true, and you have permission, the PII values will be returned as their original unmasked values.
          in: query
          name: sensitive
          required: false
          schema:
            type: boolean
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ListPaymentsResponseV4"
          description: Paginated list of payments
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
      summary: Get List of Payments
      tags:
        - Payment Audit Service
  "/v4/paymentaudit/payments/{paymentId}":
    get:
      description: |
        Get the payment with the given id. This contains the payment history.
      operationId: getPaymentDetailsV4
      parameters:
        - description: Payment Id
          in: path
          name: paymentId
          required: true
          schema:
            format: uuid
            type: string
        - description: |
            Optional. If omitted or set to false, any Personal Identifiable Information (PII) values are returned masked.
            If set to true, and you have permission, the PII values will be returned as their original unmasked values.
          in: query
          name: sensitive
          required: false
          schema:
            type: boolean
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PaymentResponseV4"
          description: 200 response, request completed okay
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: Get Payment
      tags:
        - Payment Audit Service
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v4/paymentaudit/payments/c3a422c2-12ac-4416-84fe-964221bd9815' -i \
                -H 'Authorization: Bearer 67a1b299-69b1-4fdf-a576-96b81199a2b9'
  /v4/paymentaudit/payoutStatistics:
    get:
      description: |
        <p>Get payout statistics for a payor.</p>
      operationId: getPayoutStatsV4
      parameters:
        - description: The account owner Payor ID. Required for external users.
          in: query
          name: payorId
          required: false
          schema:
            format: uuid
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetPayoutStatistics"
          description: Payout Statistics response
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: Get Payout Statistics
      tags:
        - Payment Audit Service
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v4/paymentaudit/payoutStatistics?payorId=c61b32ac-8e50-433e-9372-b5b1c8180742' -i -X GET \
                -H 'Authorization: Bearer e71d3dfe-3587-4df6-9f8d-59d3135d7bf7'
  /v4/paymentaudit/payouts:
    get:
      description: |
        Get List of payouts for payor
      operationId: getPayoutsForPayorV4
      parameters:
        - description: The id (UUID) of the payor funding the payout or the payor whose payees are being paid.
          in: query
          name: payorId
          required: false
          schema:
            format: uuid
            type: string
        - description: Payout Memo filter - case insensitive sub-string match
          in: query
          name: payoutMemo
          required: false
          schema:
            type: string
        - description: Payout Status
          in: query
          name: status
          required: false
          schema:
            enum:
              - ACCEPTED
              - REJECTED
              - SUBMITTED
              - QUOTED
              - INSTRUCTED
              - COMPLETED
              - INCOMPLETE
              - CONFIRMED
              - WITHDRAWN
            type: string
        - description: The submitted date from range filter. Format is yyyy-MM-dd.
          in: query
          name: submittedDateFrom
          required: false
          schema:
            format: date
            type: string
        - description: The submitted date to range filter. Format is yyyy-MM-dd.
          in: query
          name: submittedDateTo
          required: false
          schema:
            format: date
            type: string
        - description: The name of the payor whose payees are being paid. This filters via a case insensitive substring match.
          in: query
          name: fromPayorName
          required: false
          schema:
            type: string
        - description: Filter payouts scheduled to run on or after the given date. Format is yyyy-MM-dd.
          in: query
          name: scheduledForDateFrom
          required: false
          schema:
            format: date
            type: string
        - description: Filter payouts scheduled to run on or before the given date. Format is yyyy-MM-dd.
          in: query
          name: scheduledForDateTo
          required: false
          schema:
            format: date
            type: string
        - description: Payout Schedule Status
          in: query
          name: scheduleStatus
          required: false
          schema:
            enum:
              - ANY
              - SCHEDULED
              - EXECUTED
              - FAILED
            type: string
        - description: Page number. Default is 1.
          in: query
          name: page
          required: false
          schema:
            default: 1
            format: int32
            type: integer
        - description: The number of results to return in a page
          in: query
          name: pageSize
          required: false
          schema:
            default: 25
            format: int32
            maximum: 100
            minimum: 1
            type: integer
        - description: |
            List of sort fields (e.g. ?sort=submittedDateTime:asc,instructedDateTime:asc,status:asc)
            Default is submittedDateTime:asc
            The supported sort fields are: submittedDateTime, instructedDateTime, status, totalPayments, payoutId, scheduledFor
          in: query
          name: sort
          required: false
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetPayoutsResponse"
          description: Payor data found
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: Get Payouts for Payor
      tags:
        - Payment Audit Service
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v4/paymentaudit/payouts?payorId=449aa6c3-0569-47f6-a430-a470040da67c' -i -X GET \
                -H 'Authorization: Bearer a9d9247d-5e30-4cea-a6e1-0898534ce768'
  "/v4/paymentaudit/payouts/{payoutId}":
    get:
      description: |
        Get List of payments for Payout, allowing for RETURNED status
      operationId: getPaymentsForPayoutV4
      parameters:
        - description: |
            Payout Rails ID filter - case insensitive match.
            Any value is allowed, but you should use one of the supported railsId values.
            To get this list of values, you should call the 'Get Supported Rails' endpoint.
          in: query
          name: railsId
          required: false
          schema:
            type: string
        - description: The id (UUID) of the payout.
          in: path
          name: payoutId
          required: true
          schema:
            format: uuid
            type: string
        - description: The remote id of the payees.
          in: query
          name: remoteId
          required: false
          schema:
            type: string
        - description: The id of the remote system that is orchestrating payments
          in: query
          name: remoteSystemId
          required: false
          schema:
            type: string
        - description: Payment Status
          in: query
          name: status
          required: false
          schema:
            enum:
              - ACCEPTED
              - AWAITING_FUNDS
              - FUNDED
              - UNFUNDED
              - BANK_PAYMENT_REQUESTED
              - REJECTED
              - ACCEPTED_BY_RAILS
              - CONFIRMED
              - FAILED
              - RETURNED
              - WITHDRAWN
            type: string
        - description: The source amount from range filter. Filters for sourceAmount >= sourceAmountFrom
          in: query
          name: sourceAmountFrom
          required: false
          schema:
            format: int32
            type: integer
        - description: The source amount to range filter. Filters for sourceAmount ⇐ sourceAmountTo
          in: query
          name: sourceAmountTo
          required: false
          schema:
            format: int32
            type: integer
        - description: The payment amount from range filter. Filters for paymentAmount >= paymentAmountFrom
          in: query
          name: paymentAmountFrom
          required: false
          schema:
            format: int32
            type: integer
        - description: The payment amount to range filter. Filters for paymentAmount ⇐ paymentAmountTo
          in: query
          name: paymentAmountTo
          required: false
          schema:
            format: int32
            type: integer
        - description: The submitted date from range filter. Format is yyyy-MM-dd.
          in: query
          name: submittedDateFrom
          required: false
          schema:
            format: date
            type: string
        - description: The submitted date to range filter. Format is yyyy-MM-dd.
          in: query
          name: submittedDateTo
          required: false
          schema:
            format: date
            type: string
        - description: |
            Transmission Type
            * ACH
            * SAME_DAY_ACH
            * WIRE
            * GACHO
          in: query
          name: transmissionType
          required: false
          schema:
            enum:
              - ACH
              - SAME_DAY_ACH
              - WIRE
              - LOCAL
              - GACHO
            type: string
        - description: Page number. Default is 1.
          in: query
          name: page
          required: false
          schema:
            default: 1
            format: int32
            type: integer
        - description: The number of results to return in a page
          in: query
          name: pageSize
          required: false
          schema:
            default: 25
            format: int32
            maximum: 100
            minimum: 1
            type: integer
        - description: |
            List of sort fields (e.g. ?sort=submittedDateTime:asc,status:asc). Default is sort by remoteId
            The supported sort fields are: sourceAmount, sourceCurrency, paymentAmount, paymentCurrency,
            routingNumber, accountNumber, remoteId, submittedDateTime and status
          in: query
          name: sort
          required: false
          schema:
            type: string
        - description: |
            Optional. If omitted or set to false, any Personal Identifiable Information (PII) values are returned masked.
            If set to true, and you have permission, the PII values will be returned as their original unmasked values.
          in: query
          name: sensitive
          required: false
          schema:
            type: boolean
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetPaymentsForPayoutResponseV4"
          description: 200 response, data found okay
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_400"
          description: Invalid request. See Error message payload for details of failure
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_401"
          description: Invalid access token. May be expired or invalid
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_403"
          description: |
            The authentication does not have permissions to access the resource
            This usually occurs when there is a valid authentication instance (client or user) but they do not have the required permissions
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/inline_response_404"
          description: |
            The resource was not found or is no longer available
      summary: Get Payments for Payout
      tags:
        - Payment Audit Service
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v4/paymentaudit/payouts/7b524212-6fd7-4699-983d-cac082022a2e' -i -X GET \
                -H 'Authorization: Bearer f7a9a696-e528-487b-8734-e0a22e41ef7a'
  /v4/paymentaudit/transactions:
    get:
      description: Download a CSV file containing payments in a date range. Uses Transfer-Encoding - chunked to stream to the client. Date range is inclusive of both the start and end dates.
      operationId: exportTransactionsCSVV4
      parameters:
        - description: |
            <p>The Payor ID for whom you wish to run the report.</p>
            <p>For a Payor requesting the report, this could be their exact Payor, or it could be a child/descendant Payor.</p>
          in: query
          name: payorId
          required: false
          schema:
            format: uuid
            type: string
        - description: Start date, inclusive. Format is YYYY-MM-DD
          in: query
          name: startDate
          required: false
          schema:
            format: date
            type: string
        - description: End date, inclusive. Format is YYYY-MM-DD
          in: query
          name: endDate
          required: false
          schema:
            format: date
            type: string
        - description: |
            <p>Mode to determine whether to include other Payor's data in the results.</p>
            <p>May only be used if payorId is specified.</p>
            <p>Can be omitted or set to 'payorOnly' or 'payorAndDescendants'.</p>
            <p>payorOnly: Only include results for the specified Payor. This is the default if 'include' is omitted.</p>
            <p>payorAndDescendants: Aggregate results for all descendant Payors of the specified Payor. Should only be used if the Payor with the specified payorId has at least one child Payor.</p>
            <p>Note when a Payor requests the report and include=payorAndDescendants is used, the following additional columns are included in the CSV: Payor Name, Payor Id</p>
          in: query
          name: include
          required: false
          schema:
            enum:
              - payorOnly
              - payorAndDescendants
            type: string
      responses:
        "200":
          content:
            application/csv:
              schema:
                $ref: "#/components/schemas/PayorAmlTransaction"
          description: Export Transactions response
        "400":
          description: invalid Request
        "401":
          description: Not Authorized
        "403":
          description: Forbidden
      summary: Export Transactions
      tags:
        - Payment Audit Service
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v4/paymentaudit/transactions?startDate=2018-05-01&endDate=2018-05-31' -i -X GET \
                -H 'Authorization: Bearer 76748e09-775d-4e2d-b889-f0555901d8eb'
  /v4/payments/deltas:
    get:
      description: Get a paginated response listing payment changes.
      operationId: listPaymentChangesV4
      parameters:
        - description: The Payor ID to find associated Payments
          in: query
          name: payorId
          required: true
          schema:
            format: uuid
            type: string
        - description: The updatedSince filter in the format YYYY-MM-DDThh:mm:ss+hh:mm
          in: query
          name: updatedSince
          required: true
          schema:
            format: date-time
            type: string
        - description: Page number. Default is 1.
          in: query
          name: page
          required: false
          schema:
            default: 1
            format: int32
            type: integer
        - description: The number of results to return in a page
          in: query
          name: pageSize
          required: false
          schema:
            default: 100
            format: int32
            maximum: 1000
            minimum: 1
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PaymentDeltaResponse"
          description: Details of Payment Changes
        "400":
          description: Bad Request
      summary: List Payment Changes
      tags:
        - Payment Audit Service
      x-code-samples:
        - lang: shell
          source: |
            $ curl 'https://api.sandbox.velopayments.com/v4/payments/deltas?pageSize=2&page=8&payorId=0a818933-087d-47f2-ad83-2f986ed087eb&updatedSince=2019-01-20T09:00:00+00:00' -i -X GET \
                -H 'Authorization: Bearer 6dd5e976-e329-462f-bd6b-25d463cf02fd' \
                -H 'Content-Type: application/json'
components:
  schemas:
    AcceptedPaymentV3:
      example:
        amount: 10000
        currencyType: USD
        paymentMemo: INV00112
        paymentMetadata: invoiceeId_123|abc001:12345|xyz002:4567
        payorPaymentId: 123211321ABSD
        railsId: SVB
        remoteId: remoteId1234
        remoteSystemId: OB012
        sourceAccountName: Chase Bank Account
      properties:
        amount:
          description: The amount of the payment in minor units
          example: 10000
          type: integer
        currencyType:
          description: Valid ISO 4217 3 letter currency code. See the <a href="https://www.iso.org/iso-4217-currency-codes.html" target="_blank" a>ISO specification</a> for details.
          example: USD
          maxLength: 3
          minLength: 3
          pattern: ^[A-Z]{3}$
          title: ISO Currency Code
          type: string
        paymentMemo:
          description: |
            <p>Any value here will override the memo value in the parent payout</p>
            <p>This should be the reference field on the statement seen by the payee (but not via ACH)</p>
          example: INV00112
          maxLength: 40
          minLength: 0
          type: string
        paymentMetadata:
          description: |
            <p>Metadata about the payment that may be relevant to the specific rails or remote system making the payout</p>
            <p>The structure of the data will be dictated by the requirements of the payment rails</p>
          example: invoiceeId_123|abc001:12345|xyz002:4567
          maxLength: 512
          minLength: 0
          type: string
        payorPaymentId:
          description: A reference identifier for the payor for the given payee payment
          example: 123211321ABSD
          maxLength: 40
          minLength: 0
          type: string
        railsId:
          description: Indicates the 3rd party system involved in making this payment
          example: SVB
          type: string
        remoteId:
          description: Your identifier for the payee
          example: remoteId1234
          maxLength: 100
          minLength: 1
          type: string
        remoteSystemId:
          description: |
            <p>The identifier for the remote payments system if not Velo</p>
          example: OB012
          maxLength: 100
          minLength: 1
          type: string
        sourceAccountName:
          description: The identifier of the source account to debit the payment from
          example: Chase Bank Account
          type: string
      required:
        - amount
        - currencyType
        - payorPaymentId
        - railsId
        - remoteId
        - sourceAccountName
      type: object
    AccessTokenResponse:
      example:
        access_token: 9b58410b-e1b7-4f90-bebb-7e09c5427020
        entityIds:
          - ed89eaa0-4450-4916-a4ff-62a328d60bd6
        expires_in: 1800
        refresh_token: c3d0f771-0997-4814-84e3-09690208545a
        scope: https://api.velopayments.com/scopes/auth/users
        token_type: bearer
        user_info:
          mfa_details:
            mfa_type: TOTP
            verified: true
          userType: PAYOR
          user_id: 39976ee5-dc4c-4b21-a966-a04fa71ef9e1
      properties:
        access_token:
          description: |
            Bearer token used in headers to access secure endpoints
          example: 9b58410b-e1b7-4f90-bebb-7e09c5427020
          type: string
        entityIds:
          description: |
            If the user is a payee then the payeeId<P>
            If the user is a payor then the payorId
          example:
            - ed89eaa0-4450-4916-a4ff-62a328d60bd6
          items:
            type: string
          type: array
        expires_in:
          description: The lifetime in seconds of the access token
          example: 1800
          type: integer
        refresh_token:
          description: can be used to obtain a new access token
          example: c3d0f771-0997-4814-84e3-09690208545a
          type: string
        scope:
          description: the scope of the access token
          example: https://api.velopayments.com/scopes/auth/users
          type: string
        token_type:
          default: bearer
          description: the type of the token
          example: bearer
          type: string
        user_info:
          $ref: "#/components/schemas/UserInfo"
      type: object
    AccessTokenValidationRequest:
      example:
        otp: "123456"
      properties:
        otp:
          description: an OTP either sent via sms or generated by a registered MFA device
          example: "123456"
          maxLength: 64
          minLength: 6
          type: string
      required:
        - otp
      type: object
    AllocationType:
      description: "Funding Allocation Type. One of the following values: AUTOMATIC, MANUAL"
      type: string
    AuthResponse:
      example:
        access_token: IwOGYzYTlmM2YxOTQ5MGE3YmNmMDFkNTVk
        entityIds:
          - entityIds
          - entityIds
        expires_in: 1799
        refresh_token: IwOGYzYTlmM2YxOTQ5MGE3YmNmMDFkNTVk
        scope: example_scope
        token_type: bearer
      properties:
        access_token:
          example: IwOGYzYTlmM2YxOTQ5MGE3YmNmMDFkNTVk
          type: string
        entityIds:
          items:
            type: string
          type: array
        expires_in:
          example: 1799
          type: number
        refresh_token:
          example: IwOGYzYTlmM2YxOTQ5MGE3YmNmMDFkNTVk
          type: string
        scope:
          example: example_scope
          type: string
        token_type:
          example: bearer
          type: string
      required:
        - access_token
        - token_type
      type: object
    AutoTopUpConfigV2:
      example:
        enabled: true
        minBalance: 10000
        targetBalance: 300000
      properties:
        enabled:
          description: Is auto top-up enabled? automatically trigger funding to top-up the source account balance when the balance falls below the configured minimum level.
          example: true
          type: boolean
        minBalance:
          description: When the payor balance falls below this level then auto top-up will be triggered. Note - This is in minor units.
          example: 10000
          format: int64
          nullable: true
          type: integer
        targetBalance:
          description: When the payor balance falls below the min balance then auto top-up will request funds bring the balance to this level. Note - this is in minor units.
          example: 300000
          format: int64
          nullable: true
          type: integer
      required:
        - enabled
      type: object
    AutoTopUpConfigV3:
      example:
        enabled: true
        fundingAccountId: 640ab1bd-8a6a-4603-a83a-1edbc3ed5689
        minBalance: 10000
        targetBalance: 300000
      properties:
        enabled:
          description: Is auto top-up enabled? automatically trigger funding to top-up the source account balance when the balance falls below the configured minimum level.
          example: true
          type: boolean
        fundingAccountId:
          description: Id of funding account from which to pull funds when auto top-up is triggered.  Note - if this is not set then auto top-up is effectively disabled.
          example: 640ab1bd-8a6a-4603-a83a-1edbc3ed5689
          format: uuid
          type: string
        minBalance:
          description: When the payor balance falls below this level then auto top-up will be triggered. Note - This is in minor units.
          example: 10000
          format: int64
          nullable: true
          type: integer
        targetBalance:
          description: When the payor balance falls below the min balance then auto top-up will request funds bring the balance to this level. Note - this is in minor units.
          example: 300000
          format: int64
          nullable: true
          type: integer
      required:
        - enabled
      type: object
    Category:
      description: The notification category.  One of "payment", "payee", "debit".
      enum:
        - payment
        - payee
        - debit
      type: string
    ChallengeV3:
      example:
        description: challenge description
        value: challenge test
      properties:
        description:
          example: challenge description
          maxLength: 255
          minLength: 1
          type: string
        value:
          example: challenge test
          maxLength: 20
          minLength: 3
          type: string
      required:
        - description
        - value
      type: object
    ChallengeV4:
      description: |
        <p>Used to override the default challenge presented to the payee when they onboard</p>
        <p>Not used after the payee has onboarded</p>
      example:
        description: challenge description
        value: "11984567"
      properties:
        description:
          example: challenge description
          maxLength: 255
          minLength: 1
          type: string
        value:
          description: The value that the user will be asked to verify when they onboard
          example: "11984567"
          maxLength: 20
          minLength: 3
          type: string
      required:
        - description
        - value
      type: object
    CompanyV3:
      example:
        name: ABC Group Plc
        operatingName: ABC Co
        taxId: "123123123"
      nullable: true
      properties:
        name:
          example: ABC Group Plc
          maxLength: 40
          minLength: 3
          type: string
        operatingName:
          example: ABC Co
          maxLength: 100
          minLength: 1
          nullable: true
          type: string
        taxId:
          description: Company Tax Id must be between 6 and 30 characters long
          example: "123123123"
          maxLength: 30
          minLength: 6
          nullable: true
          type: string
      required:
        - name
      type: object
    CompanyV4:
      example:
        name: ABC Group Plc
        operatingName: ABC Co
        taxId: "123123123"
      nullable: true
      properties:
        name:
          example: ABC Group Plc
          maxLength: 40
          minLength: 3
          type: string
        operatingName:
          example: ABC Co
          maxLength: 100
          minLength: 1
          nullable: true
          type: string
        taxId:
          description: Company Tax Id must be between 6 and 30 characters long
          example: "123123123"
          maxLength: 30
          minLength: 6
          nullable: true
          type: string
      required:
        - name
      type: object
    CreateFundingAccountRequestV2:
      example:
        accountName: accountName
        accountNumber: accountNumber
        currency: USD
        name: name
        payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        routingNumber: routingNumber
        type: FBO
      properties:
        accountName:
          description: Required if type is either FBO or PRIVATE
          maxLength: 22
          minLength: 1
          type: string
        accountNumber:
          description: Required if type is either FBO or PRIVATE
          maxLength: 17
          minLength: 4
          type: string
        currency:
          description: ISO 4217 currency code, Required if type is either WUBS_DECOUPLED or PRIVATE
          example: USD
          maxLength: 3
          minLength: 3
          type: string
        name:
          maxLength: 30
          minLength: 3
          type: string
        payorId:
          format: uuid
          type: string
        routingNumber:
          description: Required if type is either FBO or PRIVATE
          maxLength: 9
          minLength: 6
          type: string
        type:
          enum:
            - FBO
            - WUBS_DECOUPLED
            - PRIVATE
          type: string
      required:
        - name
        - payorId
        - type
      type: object
    CreateIndividualV3:
      example:
        dateOfBirth: 1970-05-20T00:00:00.000+0000
        name:
          firstName: Bob
          lastName: Smith
          otherNames: H
          title: Mr
        nationalIdentification: SA211123K
      properties:
        dateOfBirth:
          description: Must not be date in future. Example - 1970-05-20
          example: 1970-05-20
          format: date
          type: string
        name:
          $ref: "#/components/schemas/CreateIndividualV3_name"
        nationalIdentification:
          example: SA211123K
          maxLength: 30
          minLength: 6
          type: string
      required:
        - dateOfBirth
        - name
      type: object
    CreateIndividualV3_name:
      example:
        firstName: Bob
        lastName: Smith
        otherNames: H
        title: Mr
      properties:
        firstName:
          example: Bob
          maxLength: 40
          minLength: 1
          type: string
        lastName:
          example: Smith
          maxLength: 40
          minLength: 1
          type: string
        otherNames:
          example: H
          maxLength: 40
          minLength: 1
          type: string
        title:
          example: Mr
          maxLength: 10
          minLength: 1
          type: string
      required:
        - firstName
        - lastName
    CreateIndividualV4:
      example:
        dateOfBirth: 1970-05-20T00:00:00.000+0000
        name:
          firstName: Bob
          lastName: Smith
          otherNames: H
          title: Mr
        nationalIdentification: SA211123K
      properties:
        dateOfBirth:
          description: Must not be date in future. Example - 1970-05-20
          example: 1970-05-20
          format: date
          type: string
        name:
          $ref: "#/components/schemas/CreateIndividualV3_name"
        nationalIdentification:
          example: SA211123K
          maxLength: 30
          minLength: 6
          type: string
      required:
        - dateOfBirth
        - name
      type: object
    CreatePayeeAddressV3:
      example:
        city: Key West
        country: US
        countyOrProvince: FL
        line1: 500 Duval St
        line2: line2
        line3: line3
        line4: line4
        zipOrPostcode: "33945"
      properties:
        city:
          example: Key West
          maxLength: 50
          minLength: 2
          nullable: false
          type: string
        country:
          description: 2 letter ISO 3166-1 country code
          example: US
          maxLength: 2
          minLength: 2
          nullable: false
          type: string
        countyOrProvince:
          example: FL
          maxLength: 50
          minLength: 2
          nullable: true
          type: string
        line1:
          example: 500 Duval St
          maxLength: 100
          minLength: 1
          nullable: false
          type: string
        line2:
          maxLength: 100
          minLength: 0
          nullable: true
          type: string
        line3:
          maxLength: 100
          minLength: 0
          nullable: true
          type: string
        line4:
          maxLength: 100
          minLength: 0
          nullable: true
          type: string
        zipOrPostcode:
          example: "33945"
          maxLength: 60
          minLength: 2
          nullable: true
          type: string
      required:
        - city
        - country
        - line1
      type: object
    CreatePayeeAddressV4:
      example:
        city: Key West
        country: US
        countyOrProvince: FL
        line1: 500 Duval St
        line2: line2
        line3: line3
        line4: line4
        zipOrPostcode: "33945"
      properties:
        city:
          example: Key West
          maxLength: 50
          minLength: 2
          nullable: false
          type: string
        country:
          description: Valid ISO 3166 2 character country code. See the <a href="https://www.iso.org/iso-3166-country-codes.html" target="_blank" a>ISO specification</a> for details.
          example: US
          maxLength: 2
          minLength: 2
          pattern: ^[A-Z]{2}$
          title: ISO 3166 2 Character Country Code
          type: string
        countyOrProvince:
          example: FL
          maxLength: 50
          minLength: 2
          nullable: true
          type: string
        line1:
          example: 500 Duval St
          maxLength: 100
          minLength: 1
          nullable: false
          type: string
        line2:
          maxLength: 100
          minLength: 0
          nullable: true
          type: string
        line3:
          maxLength: 100
          minLength: 0
          nullable: true
          type: string
        line4:
          maxLength: 100
          minLength: 0
          nullable: true
          type: string
        zipOrPostcode:
          example: "33945"
          maxLength: 60
          minLength: 2
          nullable: true
          type: string
      required:
        - city
        - country
        - line1
      type: object
    CreatePayeeV3:
      example:
        address:
          city: Key West
          country: US
          countyOrProvince: FL
          line1: 500 Duval St
          line2: line2
          line3: line3
          line4: line4
          zipOrPostcode: "33945"
        challenge:
          description: challenge description
          value: challenge test
        company:
          name: ABC Group Plc
          operatingName: ABC Co
          taxId: "123123123"
        email: bob@example.com
        individual:
          dateOfBirth: 1970-05-20T00:00:00.000+0000
          name:
            firstName: Bob
            lastName: Smith
            otherNames: H
            title: Mr
          nationalIdentification: SA211123K
        language: en-US
        payeeId: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
        paymentChannel:
          accountName: My account
          accountNumber: XXXXXX5678
          countryCode: US
          currency: USD
          iban: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1234
          paymentChannelName: My Payment Channel
          routingNumber: XXXXX6789
        payorRefs:
          - invitationStatus: invitationStatus
            invitationStatusTimestamp: 2019-01-20T09:00:00Z
            payableIssues:
              - code: "3"
                message: payee-disabled
              - code: "3"
                message: payee-disabled
            payableStatus: true
            paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
            payorId: ba08877f-9d96-41e4-9c26-44a872d856ae
            remoteId: uniqueIdForRemoteEntity
          - invitationStatus: invitationStatus
            invitationStatusTimestamp: 2019-01-20T09:00:00Z
            payableIssues:
              - code: "3"
                message: payee-disabled
              - code: "3"
                message: payee-disabled
            payableStatus: true
            paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
            payorId: ba08877f-9d96-41e4-9c26-44a872d856ae
            remoteId: uniqueIdForRemoteEntity
        remoteId: Remote ID
        type: type
      properties:
        address:
          $ref: "#/components/schemas/CreatePayeeAddressV3"
        challenge:
          $ref: "#/components/schemas/ChallengeV3"
        company:
          $ref: "#/components/schemas/CompanyV3"
        email:
          example: bob@example.com
          format: email
          maxLength: 255
          minLength: 3
          type: string
        individual:
          $ref: "#/components/schemas/CreateIndividualV3"
        language:
          description: |
            An IETF BCP 47 language code which has been configured for use within this Velo environment.<BR>
            See the /v1/supportedLanguages endpoint to list the available codes for an environment.
          example: en-US
          type: string
        payeeId:
          example: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
          format: uuid
          readOnly: true
          type: string
        paymentChannel:
          $ref: "#/components/schemas/CreatePaymentChannelV3"
        payorRefs:
          items:
            $ref: "#/components/schemas/PayeePayorRefV3"
          nullable: true
          readOnly: true
          type: array
        remoteId:
          example: Remote ID
          maxLength: 100
          minLength: 1
          type: string
        type:
          description: "Type of Payee. One of the following values: Individual, Company"
          type: string
      required:
        - address
        - email
        - remoteId
        - type
      type: object
    CreatePayeeV4:
      example:
        address:
          city: Key West
          country: US
          countyOrProvince: FL
          line1: 500 Duval St
          line2: line2
          line3: line3
          line4: line4
          zipOrPostcode: "33945"
        challenge:
          description: challenge description
          value: "11984567"
        company:
          name: ABC Group Plc
          operatingName: ABC Co
          taxId: "123123123"
        email: bob@example.com
        individual:
          dateOfBirth: 1970-05-20T00:00:00.000+0000
          name:
            firstName: Bob
            lastName: Smith
            otherNames: H
            title: Mr
          nationalIdentification: SA211123K
        language: en-US
        paymentChannel:
          accountName: My account
          accountNumber: XXXXXX5678
          countryCode: US
          currency: USD
          iban: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1234
          paymentChannelName: My Payment Channel
          routingNumber: XXXXX6789
        remoteId: Remote ID
      properties:
        address:
          $ref: "#/components/schemas/CreatePayeeAddressV4"
        challenge:
          $ref: "#/components/schemas/ChallengeV4"
        company:
          $ref: "#/components/schemas/CompanyV4"
        email:
          example: bob@example.com
          format: email
          maxLength: 255
          minLength: 3
          type: string
        individual:
          $ref: "#/components/schemas/CreateIndividualV4"
        language:
          description: |
            An IETF BCP 47 language code which has been configured for use within this Velo environment.<BR>
            See the /v1/supportedLanguages endpoint to list the available codes for an environment.
          example: en-US
          type: string
        paymentChannel:
          $ref: "#/components/schemas/CreatePaymentChannelV4"
        remoteId:
          example: Remote ID
          maxLength: 100
          minLength: 1
          type: string
        type:
          $ref: "#/components/schemas/PayeeTypeEnum"
      required:
        - address
        - email
        - remoteId
        - type
      type: object
    CreatePayeesCSVRequestV3:
      properties:
        addressCity:
          example: Key West
          maxLength: 50
          minLength: 2
          type: string
        addressCountry:
          description: Valid ISO 3166 2 character country code. See the <a href="https://www.iso.org/iso-3166-country-codes.html" target="_blank" a>ISO specification</a> for details.
          example: US
          maxLength: 2
          minLength: 2
          pattern: ^[A-Z]{2}$
          title: ISO 3166 2 Character Country Code
          type: string
        addressCountyOrProvince:
          example: FL
          maxLength: 50
          minLength: 1
          type: string
        addressLine1:
          example: 500 Duval St
          maxLength: 100
          minLength: 2
          type: string
        addressLine2:
          maxLength: 100
          minLength: 0
          type: string
        addressLine3:
          maxLength: 100
          minLength: 0
          type: string
        addressLine4:
          maxLength: 100
          minLength: 0
          type: string
        addressZipOrPostcode:
          example: "33945"
          maxLength: 60
          minLength: 1
          type: string
        challengeDescription:
          example: challenge description
          maxLength: 255
          minLength: 1
          type: string
        challengeValue:
          example: challenge value
          maxLength: 20
          minLength: 3
          type: string
        companyEIN:
          example: "123456789"
          maxLength: 30
          minLength: 6
          type: string
        companyName:
          example: ABC Ltd
          maxLength: 40
          minLength: 1
          type: string
        companyOperatingName:
          example: ABC
          maxLength: 100
          minLength: 1
          type: string
        email:
          example: bob@example.com
          format: email
          maxLength: 255
          minLength: 3
          type: string
        individualDateOfBirth:
          description: Must not be date in future. Example - 1970-05-20
          example: 1985-01-01
          format: date
          type: string
        individualFirstName:
          maxLength: 40
          minLength: 1
          type: string
        individualLastName:
          example: Smith
          maxLength: 40
          minLength: 1
          type: string
        individualNationalIdentification:
          example: AB123456C
          maxLength: 30
          minLength: 6
          type: string
        individualOtherNames:
          example: Bob
          maxLength: 40
          minLength: 1
          type: string
        individualTitle:
          example: Mr
          maxLength: 40
          minLength: 1
          type: string
        payeeLanguage:
          description: |
            An IETF BCP 47 language code which has been configured for use within this Velo environment.<BR>
            See the /v1/supportedLanguages endpoint to list the available codes for an environment.
          example: en-US
          type: string
        paymentChannelAccountName:
          example: My Account
          type: string
        paymentChannelAccountNumber:
          description: Either routing number and account number or only iban must be set
          example: XXXXXX5678
          maxLength: 17
          minLength: 6
          type: string
        paymentChannelCountryCode:
          description: Valid ISO 3166 2 character country code. See the <a href="https://www.iso.org/iso-3166-country-codes.html" target="_blank" a>ISO specification</a> for details.
          example: US
          maxLength: 2
          minLength: 2
          pattern: ^[A-Z]{2}$
          title: ISO 3166 2 Character Country Code
          type: string
        paymentChannelCurrency:
          example: USD
          maxLength: 3
          minLength: 3
          type: string
        paymentChannelIban:
          description: Must match the regular expression ```^[A-Za-z0-9]+$```.
          example: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1234
          maxLength: 34
          minLength: 15
          pattern: ^[A-Za-z0-9]+$
          title: IBAN - International Bank Account Number
          type: string
        paymentChannelRoutingNumber:
          description: Either routing number and account number or only iban must be set
          example: XXXXX6789
          maxLength: 9
          minLength: 9
          type: string
        remoteId:
          example: remoteId123
          maxLength: 100
          minLength: 1
          type: string
        type:
          $ref: "#/components/schemas/PayeeTypeEnum"
      required:
        - addressCity
        - addressCountry
        - addressLine1
        - addressZipOrPostcode
        - email
        - remoteId
        - type
      type: object
    CreatePayeesCSVRequestV4:
      properties:
        addressCity:
          example: Key West
          maxLength: 50
          minLength: 2
          type: string
        addressCountry:
          description: Valid ISO 3166 2 character country code. See the <a href="https://www.iso.org/iso-3166-country-codes.html" target="_blank" a>ISO specification</a> for details.
          example: US
          maxLength: 2
          minLength: 2
          pattern: ^[A-Z]{2}$
          title: ISO 3166 2 Character Country Code
          type: string
        addressCountyOrProvince:
          example: FL
          maxLength: 50
          minLength: 1
          type: string
        addressLine1:
          example: 500 Duval St
          maxLength: 100
          minLength: 2
          type: string
        addressLine2:
          maxLength: 100
          minLength: 0
          type: string
        addressLine3:
          maxLength: 100
          minLength: 0
          type: string
        addressLine4:
          maxLength: 100
          minLength: 0
          type: string
        addressZipOrPostcode:
          example: "33945"
          maxLength: 60
          minLength: 1
          type: string
        challengeDescription:
          example: challenge description
          maxLength: 255
          minLength: 1
          type: string
        challengeValue:
          example: challenge value
          maxLength: 20
          minLength: 3
          type: string
        companyEIN:
          example: "123456789"
          maxLength: 30
          minLength: 6
          type: string
        companyName:
          example: ABC Ltd
          maxLength: 40
          minLength: 1
          type: string
        companyOperatingName:
          example: ABC
          maxLength: 100
          minLength: 1
          type: string
        email:
          example: bob@example.com
          format: email
          maxLength: 255
          minLength: 3
          type: string
        individualDateOfBirth:
          description: Must not be date in future. Example - 1970-05-20
          example: 1985-01-01
          format: date
          type: string
        individualFirstName:
          maxLength: 40
          minLength: 1
          type: string
        individualLastName:
          example: Smith
          maxLength: 40
          minLength: 1
          type: string
        individualNationalIdentification:
          example: AB123456C
          maxLength: 30
          minLength: 6
          type: string
        individualOtherNames:
          example: Bob
          maxLength: 40
          minLength: 1
          type: string
        individualTitle:
          example: Mr
          maxLength: 40
          minLength: 1
          type: string
        payeeLanguage:
          description: |
            An IETF BCP 47 language code which has been configured for use within this Velo environment.<BR>
            See the /v1/supportedLanguages endpoint to list the available codes for an environment.
          example: en-US
          type: string
        paymentChannelAccountName:
          example: My Account
          type: string
        paymentChannelAccountNumber:
          description: Either routing number and account number or only iban must be set
          example: XXXXXX5678
          maxLength: 17
          minLength: 6
          type: string
        paymentChannelCountryCode:
          description: Valid ISO 3166 2 character country code. See the <a href="https://www.iso.org/iso-3166-country-codes.html" target="_blank" a>ISO specification</a> for details.
          example: US
          maxLength: 2
          minLength: 2
          pattern: ^[A-Z]{2}$
          title: ISO 3166 2 Character Country Code
          type: string
        paymentChannelCurrency:
          example: USD
          maxLength: 3
          minLength: 3
          type: string
        paymentChannelIban:
          description: Must match the regular expression ```^[A-Za-z0-9]+$```.
          example: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1234
          maxLength: 34
          minLength: 15
          pattern: ^[A-Za-z0-9]+$
          title: IBAN - International Bank Account Number
          type: string
        paymentChannelRoutingNumber:
          description: Either routing number and account number or only iban must be set
          example: XXXXX6789
          maxLength: 9
          minLength: 9
          type: string
        remoteId:
          example: remoteId123
          maxLength: 100
          minLength: 1
          type: string
        type:
          $ref: "#/components/schemas/PayeeTypeEnum"
      required:
        - addressCity
        - addressCountry
        - addressLine1
        - addressZipOrPostcode
        - email
        - remoteId
        - type
      type: object
    CreatePayeesCSVResponseV3:
      example:
        batchId: cb6ff8c6-85e9-45a6-b7d9-d05305db67f3
        rejectedCsvRows:
          - lineNumber: 3
            message: rejected message 1
            rejectedContent: unable,to,process,csv,line
          - lineNumber: 3
            message: rejected message 1
            rejectedContent: unable,to,process,csv,line
      properties:
        batchId:
          example: cb6ff8c6-85e9-45a6-b7d9-d05305db67f3
          format: uuid
          type: string
        rejectedCsvRows:
          items:
            $ref: "#/components/schemas/CreatePayeesCSVResponseV3_rejectedCsvRows"
          type: array
      type: object
    CreatePayeesCSVResponseV3_rejectedCsvRows:
      example:
        lineNumber: 3
        message: rejected message 1
        rejectedContent: unable,to,process,csv,line
      properties:
        lineNumber:
          example: 3
          type: integer
        message:
          example: rejected message 1
          type: string
        rejectedContent:
          example: unable,to,process,csv,line
          type: string
    CreatePayeesCSVResponseV4:
      example:
        batchId: cb6ff8c6-85e9-45a6-b7d9-d05305db67f3
        rejectedCsvRows:
          - lineNumber: 3
            message: rejected message 1
            rejectedContent: unable,to,process,csv,line
          - lineNumber: 3
            message: rejected message 1
            rejectedContent: unable,to,process,csv,line
      properties:
        batchId:
          example: cb6ff8c6-85e9-45a6-b7d9-d05305db67f3
          format: uuid
          type: string
        rejectedCsvRows:
          items:
            $ref: "#/components/schemas/CreatePayeesCSVResponseV3_rejectedCsvRows"
          type: array
      type: object
    CreatePayeesRequestV3:
      example:
        payees:
          - address:
              city: Key West
              country: US
              countyOrProvince: FL
              line1: 500 Duval St
              line2: line2
              line3: line3
              line4: line4
              zipOrPostcode: "33945"
            challenge:
              description: challenge description
              value: challenge test
            company:
              name: ABC Group Plc
              operatingName: ABC Co
              taxId: "123123123"
            email: bob@example.com
            individual:
              dateOfBirth: 1970-05-20T00:00:00.000+0000
              name:
                firstName: Bob
                lastName: Smith
                otherNames: H
                title: Mr
              nationalIdentification: SA211123K
            language: en-US
            payeeId: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
            paymentChannel:
              accountName: My account
              accountNumber: XXXXXX5678
              countryCode: US
              currency: USD
              iban: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1234
              paymentChannelName: My Payment Channel
              routingNumber: XXXXX6789
            payorRefs:
              - invitationStatus: invitationStatus
                invitationStatusTimestamp: 2019-01-20T09:00:00Z
                payableIssues:
                  - code: "3"
                    message: payee-disabled
                  - code: "3"
                    message: payee-disabled
                payableStatus: true
                paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
                payorId: ba08877f-9d96-41e4-9c26-44a872d856ae
                remoteId: uniqueIdForRemoteEntity
              - invitationStatus: invitationStatus
                invitationStatusTimestamp: 2019-01-20T09:00:00Z
                payableIssues:
                  - code: "3"
                    message: payee-disabled
                  - code: "3"
                    message: payee-disabled
                payableStatus: true
                paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
                payorId: ba08877f-9d96-41e4-9c26-44a872d856ae
                remoteId: uniqueIdForRemoteEntity
            remoteId: Remote ID
            type: type
          - address:
              city: Key West
              country: US
              countyOrProvince: FL
              line1: 500 Duval St
              line2: line2
              line3: line3
              line4: line4
              zipOrPostcode: "33945"
            challenge:
              description: challenge description
              value: challenge test
            company:
              name: ABC Group Plc
              operatingName: ABC Co
              taxId: "123123123"
            email: bob@example.com
            individual:
              dateOfBirth: 1970-05-20T00:00:00.000+0000
              name:
                firstName: Bob
                lastName: Smith
                otherNames: H
                title: Mr
              nationalIdentification: SA211123K
            language: en-US
            payeeId: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
            paymentChannel:
              accountName: My account
              accountNumber: XXXXXX5678
              countryCode: US
              currency: USD
              iban: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1234
              paymentChannelName: My Payment Channel
              routingNumber: XXXXX6789
            payorRefs:
              - invitationStatus: invitationStatus
                invitationStatusTimestamp: 2019-01-20T09:00:00Z
                payableIssues:
                  - code: "3"
                    message: payee-disabled
                  - code: "3"
                    message: payee-disabled
                payableStatus: true
                paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
                payorId: ba08877f-9d96-41e4-9c26-44a872d856ae
                remoteId: uniqueIdForRemoteEntity
              - invitationStatus: invitationStatus
                invitationStatusTimestamp: 2019-01-20T09:00:00Z
                payableIssues:
                  - code: "3"
                    message: payee-disabled
                  - code: "3"
                    message: payee-disabled
                payableStatus: true
                paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
                payorId: ba08877f-9d96-41e4-9c26-44a872d856ae
                remoteId: uniqueIdForRemoteEntity
            remoteId: Remote ID
            type: type
        payorId: 9ac75325-5dcd-42d5-b992-175d7e0a035e
      properties:
        payees:
          items:
            $ref: "#/components/schemas/CreatePayeeV3"
          type: array
        payorId:
          example: 9ac75325-5dcd-42d5-b992-175d7e0a035e
          type: string
      required:
        - payees
        - payorId
      type: object
    CreatePayeesRequestV4:
      example:
        payees:
          - address:
              city: Key West
              country: US
              countyOrProvince: FL
              line1: 500 Duval St
              line2: line2
              line3: line3
              line4: line4
              zipOrPostcode: "33945"
            challenge:
              description: challenge description
              value: "11984567"
            company:
              name: ABC Group Plc
              operatingName: ABC Co
              taxId: "123123123"
            email: bob@example.com
            individual:
              dateOfBirth: 1970-05-20T00:00:00.000+0000
              name:
                firstName: Bob
                lastName: Smith
                otherNames: H
                title: Mr
              nationalIdentification: SA211123K
            language: en-US
            paymentChannel:
              accountName: My account
              accountNumber: XXXXXX5678
              countryCode: US
              currency: USD
              iban: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1234
              paymentChannelName: My Payment Channel
              routingNumber: XXXXX6789
            remoteId: Remote ID
          - address:
              city: Key West
              country: US
              countyOrProvince: FL
              line1: 500 Duval St
              line2: line2
              line3: line3
              line4: line4
              zipOrPostcode: "33945"
            challenge:
              description: challenge description
              value: "11984567"
            company:
              name: ABC Group Plc
              operatingName: ABC Co
              taxId: "123123123"
            email: bob@example.com
            individual:
              dateOfBirth: 1970-05-20T00:00:00.000+0000
              name:
                firstName: Bob
                lastName: Smith
                otherNames: H
                title: Mr
              nationalIdentification: SA211123K
            language: en-US
            paymentChannel:
              accountName: My account
              accountNumber: XXXXXX5678
              countryCode: US
              currency: USD
              iban: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1234
              paymentChannelName: My Payment Channel
              routingNumber: XXXXX6789
            remoteId: Remote ID
        payorId: 9ac75325-5dcd-42d5-b992-175d7e0a035e
      properties:
        payees:
          items:
            $ref: "#/components/schemas/CreatePayeeV4"
          type: array
        payorId:
          example: 9ac75325-5dcd-42d5-b992-175d7e0a035e
          type: string
      required:
        - payees
        - payorId
      type: object
    CreatePaymentChannelV3:
      example:
        accountName: My account
        accountNumber: XXXXXX5678
        countryCode: US
        currency: USD
        iban: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1234
        paymentChannelName: My Payment Channel
        routingNumber: XXXXX6789
      properties:
        accountName:
          example: My account
          type: string
        accountNumber:
          description: Either routing number and account number or only iban must be set
          example: XXXXXX5678
          maxLength: 17
          minLength: 6
          type: string
        countryCode:
          description: Valid ISO 3166 2 character country code. See the <a href="https://www.iso.org/iso-3166-country-codes.html" target="_blank" a>ISO specification</a> for details.
          example: US
          maxLength: 2
          minLength: 2
          pattern: ^[A-Z]{2}$
          title: ISO 3166 2 Character Country Code
          type: string
        currency:
          description: Valid ISO 4217 3 letter currency code. See the <a href="https://www.iso.org/iso-4217-currency-codes.html" target="_blank" a>ISO specification</a> for details.
          example: USD
          maxLength: 3
          minLength: 3
          pattern: ^[A-Z]{3}$
          title: ISO Currency Code
          type: string
        iban:
          description: Must match the regular expression ```^[A-Za-z0-9]+$```.
          example: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1234
          maxLength: 34
          minLength: 15
          pattern: ^[A-Za-z0-9]+$
          title: IBAN - International Bank Account Number
          type: string
        paymentChannelName:
          example: My Payment Channel
          type: string
        routingNumber:
          description: Either routing number and account number or only iban must be set
          example: XXXXX6789
          maxLength: 9
          minLength: 9
          type: string
      required:
        - accountName
        - countryCode
        - currency
      type: object
    CreatePaymentChannelV4:
      example:
        accountName: My account
        accountNumber: XXXXXX5678
        countryCode: US
        currency: USD
        iban: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1234
        paymentChannelName: My Payment Channel
        routingNumber: XXXXX6789
      properties:
        accountName:
          example: My account
          type: string
        accountNumber:
          description: Either routing number and account number or only iban must be set
          example: XXXXXX5678
          maxLength: 17
          minLength: 6
          type: string
        countryCode:
          description: Valid ISO 3166 2 character country code. See the <a href="https://www.iso.org/iso-3166-country-codes.html" target="_blank" a>ISO specification</a> for details.
          example: US
          maxLength: 2
          minLength: 2
          pattern: ^[A-Z]{2}$
          title: ISO 3166 2 Character Country Code
          type: string
        currency:
          description: Valid ISO 4217 3 letter currency code. See the <a href="https://www.iso.org/iso-4217-currency-codes.html" target="_blank" a>ISO specification</a> for details.
          example: USD
          maxLength: 3
          minLength: 3
          pattern: ^[A-Z]{3}$
          title: ISO Currency Code
          type: string
        iban:
          description: Must match the regular expression ```^[A-Za-z0-9]+$```.
          example: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1234
          maxLength: 34
          minLength: 15
          pattern: ^[A-Za-z0-9]+$
          title: IBAN - International Bank Account Number
          type: string
        paymentChannelName:
          example: My Payment Channel
          type: string
        routingNumber:
          description: Either routing number and account number or only iban must be set
          example: XXXXX6789
          maxLength: 9
          minLength: 9
          type: string
      required:
        - accountName
        - countryCode
        - currency
      type: object
    CreatePayorLinkRequest:
      example:
        fromPayorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        linkType: PARENT_OF
        toPayorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
      properties:
        fromPayorId:
          format: uuid
          type: string
        linkType:
          enum:
            - PARENT_OF
          type: string
        toPayorId:
          format: uuid
          type: string
      required:
        - fromPayorId
        - linkType
        - toPayorId
      type: object
    CreatePayoutRequestV3:
      example:
        payments:
          - amount: 1299
            currency: USD
            paymentMemo: my memo
            paymentMetadata: invoiceeId_123|abc001:12345|xyz002:4567
            payorPaymentId: 123211321ABSD
            remoteId: remoteId1234
            remoteSystemId: remoteSystemId
            sourceAccountName: MyAccountName
            transmissionType: ACH
          - amount: 1299
            currency: USD
            paymentMemo: my memo
            paymentMetadata: invoiceeId_123|abc001:12345|xyz002:4567
            payorPaymentId: 123211321ABSD
            remoteId: remoteId1234
            remoteSystemId: remoteSystemId
            sourceAccountName: MyAccountName
            transmissionType: ACH
          - amount: 1299
            currency: USD
            paymentMemo: my memo
            paymentMetadata: invoiceeId_123|abc001:12345|xyz002:4567
            payorPaymentId: 123211321ABSD
            remoteId: remoteId1234
            remoteSystemId: remoteSystemId
            sourceAccountName: MyAccountName
            transmissionType: ACH
          - amount: 1299
            currency: USD
            paymentMemo: my memo
            paymentMetadata: invoiceeId_123|abc001:12345|xyz002:4567
            payorPaymentId: 123211321ABSD
            remoteId: remoteId1234
            remoteSystemId: remoteSystemId
            sourceAccountName: MyAccountName
            transmissionType: ACH
          - amount: 1299
            currency: USD
            paymentMemo: my memo
            paymentMetadata: invoiceeId_123|abc001:12345|xyz002:4567
            payorPaymentId: 123211321ABSD
            remoteId: remoteId1234
            remoteSystemId: remoteSystemId
            sourceAccountName: MyAccountName
            transmissionType: ACH
        payoutFromPayorId: c4261044-13df-4a6c-b1d4-fa8be2b46f5a
        payoutMemo: Monthly Payment
        payoutToPayorId: 9afc6b39-de12-466a-a9ca-07c7a23b312d
      properties:
        payments:
          items:
            $ref: "#/components/schemas/PaymentInstructionV3"
          maxItems: 2000
          minItems: 1
          type: array
        payoutFromPayorId:
          description: |
            <p>The id of the payor whose source account(s) will be debited</p>
            <p>payoutFromPayorId and payoutToPayorId must be both supplied or both omitted</p>
          example: c4261044-13df-4a6c-b1d4-fa8be2b46f5a
          format: uuid
          type: string
        payoutMemo:
          description: |
            <p>Text applied to all payment memos unless specified explicitly on a payment</p>
            <p>This should be the reference field on the statement seen by the payee (but not via ACH)</p>
          example: Monthly Payment
          maxLength: 40
          type: string
        payoutToPayorId:
          description: |
            <p>The id of the payor whose payees will be paid</p>
            <p>payoutFromPayorId and payoutToPayorId must be both supplied or both omitted</p>
          example: 9afc6b39-de12-466a-a9ca-07c7a23b312d
          format: uuid
          type: string
      required:
        - payments
      type: object
    CreateWebhookRequest:
      example:
        authorizationHeader: authorizationHeader
        categories:
          - null
          - null
        enabled: true
        payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        webhookUrl: webhookUrl
      properties:
        authorizationHeader:
          description: the authorization header to include with the notification.
          maxLength: 1000
          minLength: 4
          pattern: .*
          type: string
        categories:
          description: the categories to enable.
          items:
            $ref: "#/components/schemas/Category"
          type: array
        enabled:
          description: whether the webhook is enabled.
          type: boolean
        payorId:
          format: uuid
          type: string
        webhookUrl:
          description: the webhook URL to use.
          maxLength: 2000
          minLength: 6
          type: string
      required:
        - enabled
        - payorId
        - webhookUrl
      type: object
    DebitEvent:
      allOf:
        - $ref: "#/components/schemas/SourceEvent"
        - $ref: "#/components/schemas/DebitEvent_allOf"
      description: Base type for all Debit Events
    DebitEvent_allOf:
      properties:
        debitTransactionId:
          description: ID of this debit transaction within the Velo platform
          example: cbd9280f-8fde-4190-b014-979d88f3ec54
          format: uuid
          type: string
      required:
        - debitTransactionId
    DebitStatusChanged:
      allOf:
        - $ref: "#/components/schemas/DebitEvent"
        - $ref: "#/components/schemas/DebitStatusChanged_allOf"
      description: Base type for all debit status changed events
    DebitStatusChanged_allOf:
      properties:
        status:
          description: The new status of the debit. One of "PENDING" "PROCESSING" "REJECTED" "RELEASED"
          example: PENDING
          type: string
      required:
        - status
    Error:
      properties:
        errorCode:
          description: Unique numeric code that can be used for switching client behavior or to drive translated or customised error messages
          example: "20110003"
          type: string
        errorData:
          $ref: "#/components/schemas/ErrorData"
        errorMessage:
          description: English language message indicating the nature of the error
          example: size must be between 0 and 10
          type: string
        localisationDetails:
          $ref: "#/components/schemas/LocalisationDetails"
        location:
          description: the property or object that caused the error
          example: firstName
          type: string
        locationType:
          deprecated: true
          description: |
            the location type in the request that was the cause of the error
          enum:
            - requestBody
            - queryParam
            - requestParam
            - header
            - pathParam
          example: requestBody
          type: string
        reasonCode:
          deprecated: true
          description: a camel-cased string that can be used by clients to localise client error messages (deprecated)
          example: validationError
          type: string
      type: object
    ErrorData:
      properties:
        content:
          description: Object containing typed error data specific to the API
          type: object
        description:
          description: The description of the error data content
          example: The rejected CSV rows
          type: string
      type: object
    ErrorResponse:
      description: Error response returned by all error conditions in Velo Services
      properties:
        correlationId:
          description: a unique identifier to track a request or related sequence of requests
          example: ee53e01d-c078-43fd-abd4-47e92f4a06cf
          format: uuid
          type: string
        errors:
          description: one or more errors
          items:
            $ref: "#/components/schemas/Error"
          minItems: 1
          type: array
        httpStatusCode:
          description: this will mirror the Status-Code part of the Status-Line http response header and is included for extra clarity
          example: 400
          type: integer
      type: object
    FailedPayeeV3:
      example:
        address:
          city: Key West
          country: US
          countyOrProvince: FL
          line1: 500 Duval St
          line2: line2
          line3: line3
          line4: line4
          zipOrPostcode: "33945"
        challenge:
          description: challenge description
          value: challenge test
        company:
          name: ABC Group Plc
          operatingName: ABC Co
          taxId: "123123123"
        email: bob@example.com
        individual:
          dateOfBirth: 1970-05-20T00:00:00.000+0000
          name:
            firstName: Bob
            lastName: Smith
            otherNames: H
            title: Mr
          nationalIdentification: SA211123K
        language: en-US
        payeeId: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
        paymentChannel:
          accountName: My account
          accountNumber: XXXXXX5678
          countryCode: US
          currency: USD
          iban: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1234
          paymentChannelName: My Payment Channel
          routingNumber: XXXXX6789
        payorRefs:
          - invitationStatus: invitationStatus
            invitationStatusTimestamp: 2019-01-20T09:00:00Z
            payableIssues:
              - code: "3"
                message: payee-disabled
              - code: "3"
                message: payee-disabled
            payableStatus: true
            paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
            payorId: ba08877f-9d96-41e4-9c26-44a872d856ae
            remoteId: uniqueIdForRemoteEntity
          - invitationStatus: invitationStatus
            invitationStatusTimestamp: 2019-01-20T09:00:00Z
            payableIssues:
              - code: "3"
                message: payee-disabled
              - code: "3"
                message: payee-disabled
            payableStatus: true
            paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
            payorId: ba08877f-9d96-41e4-9c26-44a872d856ae
            remoteId: uniqueIdForRemoteEntity
        remoteId: Remote ID
        type: type
      properties:
        address:
          $ref: "#/components/schemas/CreatePayeeAddressV3"
        challenge:
          $ref: "#/components/schemas/ChallengeV3"
        company:
          $ref: "#/components/schemas/CompanyV3"
        email:
          example: bob@example.com
          format: email
          type: string
        individual:
          $ref: "#/components/schemas/CreateIndividualV3"
        language:
          description: |
            An IETF BCP 47 language code which has been configured for use within this Velo environment.<BR>
            See the /v1/supportedLanguages endpoint to list the available codes for an environment.
          example: en-US
          type: string
        payeeId:
          example: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
          format: uuid
          readOnly: true
          type: string
        paymentChannel:
          $ref: "#/components/schemas/CreatePaymentChannelV3"
        payorRefs:
          items:
            $ref: "#/components/schemas/PayeePayorRefV3"
          nullable: true
          readOnly: true
          type: array
        remoteId:
          example: Remote ID
          type: string
        type:
          description: "Type of Payee. One of the following values: Individual, Company"
          type: string
      type: object
    FailedPayeeV4:
      example:
        address:
          city: Key West
          country: US
          countyOrProvince: FL
          line1: 500 Duval St
          line2: line2
          line3: line3
          line4: line4
          zipOrPostcode: "33945"
        challenge:
          description: challenge description
          value: "11984567"
        company:
          name: ABC Group Plc
          operatingName: ABC Co
          taxId: "123123123"
        email: bob@example.com
        individual:
          dateOfBirth: 1970-05-20T00:00:00.000+0000
          name:
            firstName: Bob
            lastName: Smith
            otherNames: H
            title: Mr
          nationalIdentification: SA211123K
        language: en-US
        payeeId: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
        paymentChannel:
          accountName: My account
          accountNumber: XXXXXX5678
          countryCode: US
          currency: USD
          iban: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1234
          paymentChannelName: My Payment Channel
          routingNumber: XXXXX6789
        payorRefs:
          - invitationStatus: invitationStatus
            invitationStatusTimestamp: 2019-01-20T09:00:00Z
            payableIssues:
              - code: "3"
                message: payee-disabled
              - code: "3"
                message: payee-disabled
            payableStatus: true
            paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
            payorId: ba08877f-9d96-41e4-9c26-44a872d856ae
            remoteId: uniqueIdForRemoteEntity
          - invitationStatus: invitationStatus
            invitationStatusTimestamp: 2019-01-20T09:00:00Z
            payableIssues:
              - code: "3"
                message: payee-disabled
              - code: "3"
                message: payee-disabled
            payableStatus: true
            paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
            payorId: ba08877f-9d96-41e4-9c26-44a872d856ae
            remoteId: uniqueIdForRemoteEntity
        remoteId: Remote ID
        type: type
      properties:
        address:
          $ref: "#/components/schemas/CreatePayeeAddressV4"
        challenge:
          $ref: "#/components/schemas/ChallengeV4"
        company:
          $ref: "#/components/schemas/CompanyV4"
        email:
          example: bob@example.com
          format: email
          type: string
        individual:
          $ref: "#/components/schemas/CreateIndividualV4"
        language:
          description: |
            An IETF BCP 47 language code which has been configured for use within this Velo environment.<BR>
            See the /v1/supportedLanguages endpoint to list the available codes for an environment.
          example: en-US
          type: string
        payeeId:
          example: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
          format: uuid
          readOnly: true
          type: string
        paymentChannel:
          $ref: "#/components/schemas/CreatePaymentChannelV4"
        payorRefs:
          items:
            $ref: "#/components/schemas/PayeePayorRefV4"
          nullable: true
          readOnly: true
          type: array
        remoteId:
          example: Remote ID
          type: string
        type:
          description: "Type of Payee. One of the following values: Individual, Company"
          type: string
      type: object
    FailedSubmissionV3:
      example:
        failedSubmission:
          address:
            city: Key West
            country: US
            countyOrProvince: FL
            line1: 500 Duval St
            line2: line2
            line3: line3
            line4: line4
            zipOrPostcode: "33945"
          challenge:
            description: challenge description
            value: challenge test
          company:
            name: ABC Group Plc
            operatingName: ABC Co
            taxId: "123123123"
          email: bob@example.com
          individual:
            dateOfBirth: 1970-05-20T00:00:00.000+0000
            name:
              firstName: Bob
              lastName: Smith
              otherNames: H
              title: Mr
            nationalIdentification: SA211123K
          language: en-US
          payeeId: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
          paymentChannel:
            accountName: My account
            accountNumber: XXXXXX5678
            countryCode: US
            currency: USD
            iban: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1234
            paymentChannelName: My Payment Channel
            routingNumber: XXXXX6789
          payorRefs:
            - invitationStatus: invitationStatus
              invitationStatusTimestamp: 2019-01-20T09:00:00Z
              payableIssues:
                - code: "3"
                  message: payee-disabled
                - code: "3"
                  message: payee-disabled
              payableStatus: true
              paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
              payorId: ba08877f-9d96-41e4-9c26-44a872d856ae
              remoteId: uniqueIdForRemoteEntity
            - invitationStatus: invitationStatus
              invitationStatusTimestamp: 2019-01-20T09:00:00Z
              payableIssues:
                - code: "3"
                  message: payee-disabled
                - code: "3"
                  message: payee-disabled
              payableStatus: true
              paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
              payorId: ba08877f-9d96-41e4-9c26-44a872d856ae
              remoteId: uniqueIdForRemoteEntity
          remoteId: Remote ID
          type: type
        failureMessage: failure reason
      properties:
        failedSubmission:
          $ref: "#/components/schemas/FailedPayeeV3"
        failureMessage:
          example: failure reason
          type: string
      type: object
    FailedSubmissionV4:
      example:
        failedSubmission:
          address:
            city: Key West
            country: US
            countyOrProvince: FL
            line1: 500 Duval St
            line2: line2
            line3: line3
            line4: line4
            zipOrPostcode: "33945"
          challenge:
            description: challenge description
            value: "11984567"
          company:
            name: ABC Group Plc
            operatingName: ABC Co
            taxId: "123123123"
          email: bob@example.com
          individual:
            dateOfBirth: 1970-05-20T00:00:00.000+0000
            name:
              firstName: Bob
              lastName: Smith
              otherNames: H
              title: Mr
            nationalIdentification: SA211123K
          language: en-US
          payeeId: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
          paymentChannel:
            accountName: My account
            accountNumber: XXXXXX5678
            countryCode: US
            currency: USD
            iban: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1234
            paymentChannelName: My Payment Channel
            routingNumber: XXXXX6789
          payorRefs:
            - invitationStatus: invitationStatus
              invitationStatusTimestamp: 2019-01-20T09:00:00Z
              payableIssues:
                - code: "3"
                  message: payee-disabled
                - code: "3"
                  message: payee-disabled
              payableStatus: true
              paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
              payorId: ba08877f-9d96-41e4-9c26-44a872d856ae
              remoteId: uniqueIdForRemoteEntity
            - invitationStatus: invitationStatus
              invitationStatusTimestamp: 2019-01-20T09:00:00Z
              payableIssues:
                - code: "3"
                  message: payee-disabled
                - code: "3"
                  message: payee-disabled
              payableStatus: true
              paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
              payorId: ba08877f-9d96-41e4-9c26-44a872d856ae
              remoteId: uniqueIdForRemoteEntity
          remoteId: Remote ID
          type: type
        failureMessage: failure reason
      properties:
        failedSubmission:
          $ref: "#/components/schemas/FailedPayeeV4"
        failureMessage:
          example: failure reason
          type: string
      type: object
    FundingAccountResponseV2:
      example:
        accountName: Payor Corp
        accountNumber: "7001001234"
        archived: true
        country: US
        currency: USD
        id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        name: My Funding Account
        payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        routingNumber: 12345678
        type: FBO
      properties:
        accountName:
          description: name on the bank account
          example: Payor Corp
          type: string
        accountNumber:
          description: bank account number
          example: "7001001234"
          type: string
        archived:
          description: A flag for whether the funding account has been archived.  Only present in the response if true.
          type: boolean
        country:
          description: ISO 3166-1 2 letter country code (upper case)
          example: US
          maxLength: 2
          minLength: 2
          type: string
        currency:
          description: Valid ISO 4217 3 letter currency code. See the <a href="https://www.iso.org/iso-4217-currency-codes.html" target="_blank" a>ISO specification</a> for details.
          example: USD
          maxLength: 3
          minLength: 3
          pattern: ^[A-Z]{3}$
          title: ISO Currency Code
          type: string
        id:
          description: Funding Account Id
          format: uuid
          type: string
        name:
          description: name of funding account
          example: My Funding Account
          type: string
        payorId:
          format: uuid
          type: string
        routingNumber:
          description: bank account routing number
          example: 12345678
          type: string
        type:
          description: "Funding account type. One of the following values: FBO, WUBS_DECOUPLED, PRIVATE"
          example: FBO
          type: string
      type: object
    FundingAccountType:
      description: "Funding Account Type. One of the following values: FBO, WUBS_DECOUPLED, PRIVATE"
      example: FBO
      type: string
    FundingAccountTypeV2:
      description: "Funding account type. One of the following values: FBO, WUBS_DECOUPLED, PRIVATE"
      example: FBO
      type: string
    FundingAudit:
      example:
        amount: 120000
        currency: USD
        dateTime: 2000-01-23T04:56:07.000+00:00
        events:
          - eventDateTime: 2000-01-23T04:56:07.000+00:00
            eventId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            fundingEventType: fundingEventType
            principal: principal
          - eventDateTime: 2000-01-23T04:56:07.000+00:00
            eventId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            fundingEventType: fundingEventType
            principal: principal
        fundingAccountName: fundingAccountName
        fundingType: fundingType
        sourceAccountName: sourceAccountName
        status: status
        topupType: topupType
      properties:
        amount:
          description: The amount funded
          example: 120000
          format: double
          type: number
        currency:
          description: The currency of the funding
          example: USD
          type: string
        dateTime:
          format: date-time
          type: string
        events:
          items:
            $ref: "#/components/schemas/FundingEvent"
          type: array
        fundingAccountName:
          type: string
        fundingType:
          description: "Funding type. One of the following values: ACH, WIRE, EMBEDDED, BANK_TRANSFER"
          type: string
        sourceAccountName:
          type: string
        status:
          description: "Status of the funding. One of the following values: PENDING, FAILED, CREDIT, DEBIT"
          type: string
        topupType:
          description: "Type of top up. One of the following values: AUTOMATIC, MANUAL"
          type: string
      type: object
    FundingEvent:
      example:
        eventDateTime: 2000-01-23T04:56:07.000+00:00
        eventId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        fundingEventType: fundingEventType
        principal: principal
      properties:
        eventDateTime:
          format: date-time
          type: string
        eventId:
          format: uuid
          type: string
        fundingEventType:
          description: "Funding event type. One of the following values: PAYOR_FUNDING_DETECTED, PAYOR_FUNDING_REQUESTED, PAYOR_FUNDING_RETURN_RECEIVED, FUNDING_RETURN_DETECTED, PAYOR_FUNDING_REQUEST_SUBMITTED, PAYOR_FUNDING_ENTRY_DETAIL_RECEIVED, FUNDING_DEALLOCATED"
          type: string
        principal:
          type: string
      type: object
    FundingEventType:
      description: "Funding event type. One of the following values: PAYOR_FUNDING_DETECTED, PAYOR_FUNDING_REQUESTED, PAYOR_FUNDING_RETURN_RECEIVED, FUNDING_RETURN_DETECTED, PAYOR_FUNDING_REQUEST_SUBMITTED, PAYOR_FUNDING_ENTRY_DETAIL_RECEIVED, FUNDING_DEALLOCATED"
      type: string
    FundingPayorStatusAuditResponse:
      example:
        amount: 2
        currency: USD
        fundingId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        status: status
      properties:
        amount:
          format: int64
          type: integer
        currency:
          description: Valid ISO 4217 3 letter currency code. See the <a href="https://www.iso.org/iso-4217-currency-codes.html" target="_blank" a>ISO specification</a> for details.
          example: USD
          maxLength: 3
          minLength: 3
          pattern: ^[A-Z]{3}$
          title: ISO Currency Code
          type: string
        fundingId:
          format: uuid
          type: string
        status:
          type: string
      type: object
    FundingRequestV2:
      example:
        amount: 800828191
      properties:
        amount:
          description: Amount to fund, decimal implied
          format: int64
          maximum: 9999999999
          minimum: 1
          type: integer
      required:
        - amount
      type: object
    FundingRequestV3:
      example:
        amount: 800828191
        fundingAccountId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
      properties:
        amount:
          description: Amount to fund in minor units
          format: int64
          maximum: 9999999999
          minimum: 1
          type: integer
        fundingAccountId:
          description: The funding account id
          format: uuid
          type: string
      required:
        - amount
        - fundingAccountId
      type: object
    FundingResponse:
      example:
        allocationDate: 2000-01-23T04:56:07.000+00:00
        allocationType: allocationType
        amount: 0
        currency: USD
        detectedFundingRef: detectedFundingRef
        fundingAccountType: FBO
        fundingId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        hiddenDate: 2000-01-23T04:56:07.000+00:00
        payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        physicalAccountName: physicalAccountName
        reason: reason
        sourceAccountId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        status: ALLOCATED
        text: text
      properties:
        allocationDate:
          format: date-time
          type: string
        allocationType:
          description: "Funding Allocation Type. One of the following values: AUTOMATIC, MANUAL"
          type: string
        amount:
          format: int64
          type: integer
        currency:
          description: Valid ISO 4217 3 letter currency code. See the <a href="https://www.iso.org/iso-4217-currency-codes.html" target="_blank" a>ISO specification</a> for details.
          example: USD
          maxLength: 3
          minLength: 3
          pattern: ^[A-Z]{3}$
          title: ISO Currency Code
          type: string
        detectedFundingRef:
          type: string
        fundingAccountType:
          description: "Funding Account Type. One of the following values: FBO, WUBS_DECOUPLED, PRIVATE"
          example: FBO
          type: string
        fundingId:
          format: uuid
          type: string
        hiddenDate:
          format: date-time
          type: string
        payorId:
          format: uuid
          type: string
        physicalAccountName:
          type: string
        reason:
          type: string
        sourceAccountId:
          format: uuid
          type: string
        status:
          description: "Current status of the funding. One of the follwing values: PENDING, UNALLOCATED, ALLOCATED, HIDDEN, RETURNED, RETURNING, BULK_RETURN, OTHER"
          example: ALLOCATED
          type: string
        text:
          type: string
      required:
        - allocationDate
        - amount
        - currency
        - fundingAccountType
        - fundingId
        - payorId
        - status
      type: object
    FundingStatus:
      description: "Current status of the funding. One of the follwing values: PENDING, UNALLOCATED, ALLOCATED, HIDDEN, RETURNED, RETURNING, BULK_RETURN, OTHER"
      example: ALLOCATED
      type: string
    FxSummary:
      example:
        creationDateTime: 2000-01-23T04:56:07.000+00:00
        fundingStatus: fundingStatus
        invertedRate: 123.23
        paymentCurrency: EUR
        quoteId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        rate: 123.23
        sourceCurrency: EUR
        status: status
        totalCost: 5
        totalPaymentAmount: 34235
      properties:
        creationDateTime:
          format: date-time
          type: string
        fundingStatus:
          description: "Current status of the funding. One of the following values: FUNDED, INSTRUCTED, UNFUNDED"
          type: string
        invertedRate:
          example: 123.23
          format: double
          type: number
        paymentCurrency:
          description: ISO-4217 3 character currency code
          example: EUR
          maxLength: 3
          minLength: 3
          type: string
        quoteId:
          format: uuid
          type: string
        rate:
          example: 123.23
          format: double
          type: number
        sourceCurrency:
          description: ISO-4217 3 character currency code
          example: EUR
          maxLength: 3
          minLength: 3
          type: string
        status:
          description: "Current status of the FX Summary. One of the following values: UNQUOTED, QUOTED, EXPIRED, EXECUTED"
          type: string
        totalCost:
          type: integer
        totalPaymentAmount:
          example: 34235
          type: integer
      required:
        - creationDateTime
        - fundingStatus
        - invertedRate
        - quoteId
        - rate
        - status
        - totalCost
        - totalPaymentAmount
      type: object
    FxSummaryV3:
      example:
        creationDateTime: 2000-01-23T04:56:07.000+00:00
        fundingStatus: fundingStatus
        invertedRate: 1.12
        paymentCurrency: paymentCurrency
        quoteId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        rate: 1.12
        sourceCurrency: sourceCurrency
        status: status
        totalCost: 1234
        totalPaymentAmount: 1234
      properties:
        creationDateTime:
          format: date-time
          type: string
        fundingStatus:
          description: "Current status of the funding. One of the following values: FUNDED, INSTRUCTED, UNFUNDED"
          type: string
        invertedRate:
          example: 1.12
          format: float
          type: number
        paymentCurrency:
          description: ISO 3 character currency code
          maxLength: 3
          minLength: 3
          type: string
        quoteId:
          format: uuid
          type: string
        rate:
          example: 1.12
          format: float
          type: number
        sourceCurrency:
          description: ISO 3 character currency code
          maxLength: 3
          minLength: 3
          type: string
        status:
          description: "Current status of the FX Summary. One of the following values: UNQUOTED, QUOTED, EXPIRED, EXECUTED"
          type: string
        totalCost:
          example: 1234
          type: integer
        totalPaymentAmount:
          example: 1234
          type: integer
      required:
        - creationDateTime
        - fundingStatus
        - invertedRate
        - quoteId
        - rate
        - status
        - totalCost
        - totalPaymentAmount
      type: object
    GetFundingsResponse:
      description: List Users Response Object
      example:
        content:
          - amount: 120000
            currency: USD
            dateTime: 2000-01-23T04:56:07.000+00:00
            events:
              - eventDateTime: 2000-01-23T04:56:07.000+00:00
                eventId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                fundingEventType: fundingEventType
                principal: principal
              - eventDateTime: 2000-01-23T04:56:07.000+00:00
                eventId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                fundingEventType: fundingEventType
                principal: principal
            fundingAccountName: fundingAccountName
            fundingType: fundingType
            sourceAccountName: sourceAccountName
            status: status
            topupType: topupType
          - amount: 120000
            currency: USD
            dateTime: 2000-01-23T04:56:07.000+00:00
            events:
              - eventDateTime: 2000-01-23T04:56:07.000+00:00
                eventId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                fundingEventType: fundingEventType
                principal: principal
              - eventDateTime: 2000-01-23T04:56:07.000+00:00
                eventId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                fundingEventType: fundingEventType
                principal: principal
            fundingAccountName: fundingAccountName
            fundingType: fundingType
            sourceAccountName: sourceAccountName
            status: status
            topupType: topupType
        links:
          - href: https://api.sandbox.velopayments.com/v1/paymentaudit/fundings?payorId=2a5d8af2-a1ed-4d7f-b9a7-ebe4b333be5a&page=1&pageSize=10
            rel: first
          - href: https://api.sandbox.velopayments.com/v1/paymentaudit/fundings?payorId=2a5d8af2-a1ed-4d7f-b9a7-ebe4b333be5a&page=1&pageSize=10
            rel: first
        page:
          numberOfElements: 12
          page: 1
          pageSize: 25
          totalElements: 33
          totalPages: 2
      properties:
        content:
          items:
            $ref: "#/components/schemas/FundingAudit"
          type: array
        links:
          items:
            $ref: "#/components/schemas/GetFundingsResponse_links"
          type: array
        page:
          $ref: "#/components/schemas/PagedUserResponse_page"
      type: object
    GetFundingsResponse_links:
      example:
        href: https://api.sandbox.velopayments.com/v1/paymentaudit/fundings?payorId=2a5d8af2-a1ed-4d7f-b9a7-ebe4b333be5a&page=1&pageSize=10
        rel: first
      properties:
        href:
          example: https://api.sandbox.velopayments.com/v1/paymentaudit/fundings?payorId=2a5d8af2-a1ed-4d7f-b9a7-ebe4b333be5a&page=1&pageSize=10
          type: string
        rel:
          example: first
          type: string
    GetPayeeListResponseCompanyV3:
      example:
        name: ABC Group Plc
        operatingName: ABC Co
      properties:
        name:
          example: ABC Group Plc
          maxLength: 40
          minLength: 1
          type: string
        operatingName:
          example: ABC Co
          maxLength: 100
          minLength: 1
          nullable: true
          type: string
      type: object
    GetPayeeListResponseCompanyV4:
      example:
        name: ABC Group Plc
        operatingName: ABC Co
      properties:
        name:
          example: ABC Group Plc
          maxLength: 40
          minLength: 1
          type: string
        operatingName:
          example: ABC Co
          maxLength: 100
          minLength: 1
          nullable: true
          type: string
      type: object
    GetPayeeListResponseIndividualV3:
      example:
        name:
          firstName: Bob
          lastName: Smith
          otherNames: H
          title: Mr
      properties:
        name:
          $ref: "#/components/schemas/NameV3"
      type: object
    GetPayeeListResponseIndividualV4:
      example:
        name:
          firstName: Bob
          lastName: Smith
          otherNames: H
          title: Mr
      properties:
        name:
          $ref: "#/components/schemas/NameV4"
      type: object
    GetPayeeListResponseV3:
      example:
        company:
          name: ABC Group Plc
          operatingName: ABC Co
        country: US
        created: 2019-01-20T09:00:00Z
        disabled: true
        disabledComment: reason for disabled
        disabledUpdatedTimestamp: 2019-01-20T09:00:00Z
        displayName: ABC
        email: bob@example.com
        individual:
          name:
            firstName: Bob
            lastName: Smith
            otherNames: H
            title: Mr
        language: en-US
        onboardedStatus: onboardedStatus
        payeeId: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
        payeeType: payeeType
        payorRefs:
          - invitationStatus: invitationStatus
            invitationStatusTimestamp: 2019-01-20T09:00:00Z
            payableIssues:
              - code: "3"
                message: payee-disabled
              - code: "3"
                message: payee-disabled
            payableStatus: true
            paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
            payorId: ba08877f-9d96-41e4-9c26-44a872d856ae
            remoteId: uniqueIdForRemoteEntity
          - invitationStatus: invitationStatus
            invitationStatusTimestamp: 2019-01-20T09:00:00Z
            payableIssues:
              - code: "3"
                message: payee-disabled
              - code: "3"
                message: payee-disabled
            payableStatus: true
            paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
            payorId: ba08877f-9d96-41e4-9c26-44a872d856ae
            remoteId: uniqueIdForRemoteEntity
        watchlistOverrideComment: Example reason for the watchlist status being overridden
        watchlistStatus: watchlistStatus
        watchlistStatusUpdatedTimestamp: 2019-01-20T09:00:00+00:00
      properties:
        company:
          $ref: "#/components/schemas/GetPayeeListResponseCompanyV3"
        country:
          description: Valid ISO 3166 2 character country code. See the <a href="https://www.iso.org/iso-3166-country-codes.html" target="_blank" a>ISO specification</a> for details.
          example: US
          maxLength: 2
          minLength: 2
          pattern: ^[A-Z]{2}$
          title: ISO 3166 2 Character Country Code
          type: string
        created:
          example: 2019-01-20T09:00:00Z
          format: date-time
          type: string
        disabled:
          type: boolean
        disabledComment:
          example: reason for disabled
          type: string
        disabledUpdatedTimestamp:
          example: 2019-01-20T09:00:00Z
          format: date-time
          type: string
        displayName:
          example: ABC
          type: string
        email:
          example: bob@example.com
          format: email
          nullable: true
          type: string
        individual:
          $ref: "#/components/schemas/GetPayeeListResponseIndividualV3"
        language:
          description: |
            An IETF BCP 47 language code which has been configured for use within this Velo environment.<BR>
            See the /v1/supportedLanguages endpoint to list the available codes for an environment.
          example: en-US
          type: string
        onboardedStatus:
          description: "Onboarded status. One of the following values: CREATED, INVITED, REGISTERED, ONBOARDED"
          type: string
        payeeId:
          example: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
          format: uuid
          readOnly: true
          type: string
        payeeType:
          description: "Type of Payee. One of the following values: Individual, Company"
          type: string
        payorRefs:
          items:
            $ref: "#/components/schemas/PayeePayorRefV3"
          nullable: true
          readOnly: true
          type: array
        watchlistOverrideComment:
          example: Example reason for the watchlist status being overridden
          nullable: true
          type: string
        watchlistStatus:
          description: "Current watchlist status. One of the following values: NONE, PENDING, REVIEW, PASSED, FAILED"
          type: string
        watchlistStatusUpdatedTimestamp:
          example: 2019-01-20T09:00:00+00:00
          format: date_time
          nullable: true
          readOnly: true
          type: string
      type: object
    GetPayeeListResponseV4:
      example:
        company:
          name: ABC Group Plc
          operatingName: ABC Co
        country: US
        created: 2019-01-20T09:00:00Z
        disabled: true
        disabledComment: reason for disabled
        disabledUpdatedTimestamp: 2019-01-20T09:00:00Z
        displayName: ABC
        email: bob@example.com
        individual:
          name:
            firstName: Bob
            lastName: Smith
            otherNames: H
            title: Mr
        language: en-US
        onboardedStatus: onboardedStatus
        payeeId: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
        payeeType: payeeType
        payorRefs:
          - invitationStatus: invitationStatus
            invitationStatusTimestamp: 2019-01-20T09:00:00Z
            payableIssues:
              - code: "3"
                message: payee-disabled
              - code: "3"
                message: payee-disabled
            payableStatus: true
            paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
            payorId: ba08877f-9d96-41e4-9c26-44a872d856ae
            remoteId: uniqueIdForRemoteEntity
          - invitationStatus: invitationStatus
            invitationStatusTimestamp: 2019-01-20T09:00:00Z
            payableIssues:
              - code: "3"
                message: payee-disabled
              - code: "3"
                message: payee-disabled
            payableStatus: true
            paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
            payorId: ba08877f-9d96-41e4-9c26-44a872d856ae
            remoteId: uniqueIdForRemoteEntity
        watchlistOverrideComment: Example reason for the watchlist status being overridden
        watchlistStatus: watchlistStatus
        watchlistStatusUpdatedTimestamp: 2019-01-20T09:00:00+00:00
      properties:
        company:
          $ref: "#/components/schemas/GetPayeeListResponseCompanyV4"
        country:
          description: Valid ISO 3166 2 character country code. See the <a href="https://www.iso.org/iso-3166-country-codes.html" target="_blank" a>ISO specification</a> for details.
          example: US
          maxLength: 2
          minLength: 2
          pattern: ^[A-Z]{2}$
          title: ISO 3166 2 Character Country Code
          type: string
        created:
          example: 2019-01-20T09:00:00Z
          format: date-time
          type: string
        disabled:
          type: boolean
        disabledComment:
          example: reason for disabled
          type: string
        disabledUpdatedTimestamp:
          example: 2019-01-20T09:00:00Z
          format: date-time
          type: string
        displayName:
          example: ABC
          type: string
        email:
          example: bob@example.com
          format: email
          nullable: true
          type: string
        individual:
          $ref: "#/components/schemas/GetPayeeListResponseIndividualV4"
        language:
          description: |
            An IETF BCP 47 language code which has been configured for use within this Velo environment.<BR>
            See the /v1/supportedLanguages endpoint to list the available codes for an environment.
          example: en-US
          type: string
        onboardedStatus:
          description: "Payee onboarded status. One of the following values: CREATED, INVITED, REGISTERED, ONBOARDED"
          type: string
        payeeId:
          example: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
          format: uuid
          readOnly: true
          type: string
        payeeType:
          description: "Type of Payee. One of the following values: Individual, Company"
          type: string
        payorRefs:
          items:
            $ref: "#/components/schemas/PayeePayorRefV4"
          nullable: true
          readOnly: true
          type: array
        watchlistOverrideComment:
          example: Example reason for the watchlist status being overridden
          nullable: true
          type: string
        watchlistStatus:
          description: "Current watchlist status. One of the following values: NONE, PENDING, REVIEW, PASSED, FAILED"
          type: string
        watchlistStatusUpdatedTimestamp:
          example: 2019-01-20T09:00:00+00:00
          format: date_time
          nullable: true
          readOnly: true
          type: string
      type: object
    GetPaymentsForPayoutResponseV3:
      description: List Payments for payout
      example:
        content:
          - accountName: My Account Name
            accountNumber: "123123232323"
            countryCode: US
            events:
              - accountName: My account
                accountNumber: "123123123"
                eventDateTime: 2000-01-23T04:56:07.000+00:00
                eventId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                eventType: eventType
                iban: DE89 3704 0044 0532 0130 00
                paymentAmount: 1299
                paymentCurrency: paymentCurrency
                principal: Prinicple example
                routingNumber: "123123123"
                sourceAmount: 1299
                sourceCurrency: sourceCurrency
              - accountName: My account
                accountNumber: "123123123"
                eventDateTime: 2000-01-23T04:56:07.000+00:00
                eventId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                eventType: eventType
                iban: DE89 3704 0044 0532 0130 00
                paymentAmount: 1299
                paymentCurrency: paymentCurrency
                principal: Prinicple example
                routingNumber: "123123123"
                sourceAmount: 1299
                sourceCurrency: sourceCurrency
            filenameReference: file ref
            fundingStatus: fundingStatus
            iban: DE89 3704 0044 0532 0130 00
            individualIdentificationNumber: 1231231adf
            invertedRate: 1.4658129
            payeeId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            paymentAmount: 0
            paymentChannelId: 123asdf
            paymentChannelName: My Payment Channel
            paymentCurrency: paymentCurrency
            paymentId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            paymentMemo: Payment memo
            paymentScheme: paymentScheme
            payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            payorName: payorName
            payorPaymentId: 123123asdf
            quoteId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            railsBatchId: railsBatchId
            railsId: asdf123
            railsPaymentId: railsPaymentId
            rate: 6.0274563
            rejectionReason: rejectionReason
            remoteId: aasdf123
            returnCost: 1232
            returnReason: Some Reason Value
            routingNumber: "123123123123"
            sourceAccountId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            sourceAccountName: My Account
            sourceAmount: 12345
            sourceCurrency: sourceCurrency
            status: status
            submittedDateTime: 2000-01-23T04:56:07.000+00:00
            traceNumber: abodu123
          - accountName: My Account Name
            accountNumber: "123123232323"
            countryCode: US
            events:
              - accountName: My account
                accountNumber: "123123123"
                eventDateTime: 2000-01-23T04:56:07.000+00:00
                eventId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                eventType: eventType
                iban: DE89 3704 0044 0532 0130 00
                paymentAmount: 1299
                paymentCurrency: paymentCurrency
                principal: Prinicple example
                routingNumber: "123123123"
                sourceAmount: 1299
                sourceCurrency: sourceCurrency
              - accountName: My account
                accountNumber: "123123123"
                eventDateTime: 2000-01-23T04:56:07.000+00:00
                eventId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                eventType: eventType
                iban: DE89 3704 0044 0532 0130 00
                paymentAmount: 1299
                paymentCurrency: paymentCurrency
                principal: Prinicple example
                routingNumber: "123123123"
                sourceAmount: 1299
                sourceCurrency: sourceCurrency
            filenameReference: file ref
            fundingStatus: fundingStatus
            iban: DE89 3704 0044 0532 0130 00
            individualIdentificationNumber: 1231231adf
            invertedRate: 1.4658129
            payeeId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            paymentAmount: 0
            paymentChannelId: 123asdf
            paymentChannelName: My Payment Channel
            paymentCurrency: paymentCurrency
            paymentId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            paymentMemo: Payment memo
            paymentScheme: paymentScheme
            payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            payorName: payorName
            payorPaymentId: 123123asdf
            quoteId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            railsBatchId: railsBatchId
            railsId: asdf123
            railsPaymentId: railsPaymentId
            rate: 6.0274563
            rejectionReason: rejectionReason
            remoteId: aasdf123
            returnCost: 1232
            returnReason: Some Reason Value
            routingNumber: "123123123123"
            sourceAccountId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            sourceAccountName: My Account
            sourceAmount: 12345
            sourceCurrency: sourceCurrency
            status: status
            submittedDateTime: 2000-01-23T04:56:07.000+00:00
            traceNumber: abodu123
        links:
          - href: https://example.com
            rel: first
          - href: https://example.com
            rel: first
        page:
          numberOfElements: 12
          page: 1
          pageSize: 25
          totalElements: 12
          totalPages: 10
        summary:
          confirmedPayments: 123
          failedPayments: 0
          incompletePayments: 123
          instructedDateTime: 2000-01-23T04:56:07.000+00:00
          payoutMemo: Payment Memo value
          payoutStatus: payoutStatus
          releasedPayments: 123
          submittedDateTime: 2000-01-23T04:56:07.000+00:00
          totalPayments: 123
          withdrawnDateTime: 2000-01-23T04:56:07.000+00:00
      properties:
        content:
          items:
            $ref: "#/components/schemas/PaymentResponseV3"
          type: array
        links:
          items:
            $ref: "#/components/schemas/GetPayoutsResponseV3_links"
          type: array
        page:
          $ref: "#/components/schemas/GetPaymentsForPayoutResponseV3_page"
        summary:
          $ref: "#/components/schemas/GetPaymentsForPayoutResponseV3_summary"
      type: object
    GetPaymentsForPayoutResponseV3_page:
      example:
        numberOfElements: 12
        page: 1
        pageSize: 25
        totalElements: 12
        totalPages: 10
      properties:
        numberOfElements:
          example: 12
          type: integer
        page:
          example: 1
          type: integer
        pageSize:
          example: 25
          type: integer
        totalElements:
          example: 12
          type: integer
        totalPages:
          example: 10
          type: integer
    GetPaymentsForPayoutResponseV3_summary:
      example:
        confirmedPayments: 123
        failedPayments: 0
        incompletePayments: 123
        instructedDateTime: 2000-01-23T04:56:07.000+00:00
        payoutMemo: Payment Memo value
        payoutStatus: payoutStatus
        releasedPayments: 123
        submittedDateTime: 2000-01-23T04:56:07.000+00:00
        totalPayments: 123
        withdrawnDateTime: 2000-01-23T04:56:07.000+00:00
      properties:
        confirmedPayments:
          description: The count of payments within the payout which have been confirmed.
          example: 123
          type: integer
        failedPayments:
          description: The count of payments within the payout which have failed or been returned.
          example: 0
          type: integer
        incompletePayments:
          description: The count of payments within the payout which are incomplete.
          example: 123
          type: integer
        instructedDateTime:
          description: The date/time at which the payout was instructed.
          format: date-time
          type: string
        payoutMemo:
          description: The memo attached to the payout.
          example: Payment Memo value
          type: string
        payoutStatus:
          description: "The current status of the payout. One of the following values: ACCEPTED, REJECTED, SUBMITTED, QUOTED, INSTRUCTED, COMPLETED, INCOMPLETE, CONFIRMED, WITHDRAWN"
          type: string
        releasedPayments:
          description: The count of payments within the payout which have been released.
          example: 123
          type: integer
        submittedDateTime:
          description: The date/time at which the payout was submitted.
          format: date-time
          type: string
        totalPayments:
          description: The count of payments within the payout.
          example: 123
          type: integer
        withdrawnDateTime:
          description: The date/time at which the payout was withdrawn.
          format: date-time
          type: string
    GetPaymentsForPayoutResponseV4:
      description: List Payments for payout
      example:
        content:
          - accountName: My Account Name
            accountNumber: "123123232323"
            autoWithdrawnReasonCode: autoWithdrawnReasonCode
            countryCode: US
            events:
              - accountName: accountName
                accountNumber: accountNumber
                eventDateTime: 2000-01-23T04:56:07.000+00:00
                eventId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                eventType: eventType
                iban: iban
                paymentAmount: 1299
                paymentCurrency: EUR
                principal: principal
                routingNumber: routingNumber
                scheduledAt: 2000-01-23T04:56:07.000+00:00
                scheduledBy: Aphra Behn
                scheduledFor: 2000-01-23T04:56:07.000+00:00
                sourceAmount: 1299
                sourceCurrency: EUR
              - accountName: accountName
                accountNumber: accountNumber
                eventDateTime: 2000-01-23T04:56:07.000+00:00
                eventId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                eventType: eventType
                iban: iban
                paymentAmount: 1299
                paymentCurrency: EUR
                principal: principal
                routingNumber: routingNumber
                scheduledAt: 2000-01-23T04:56:07.000+00:00
                scheduledBy: Aphra Behn
                scheduledFor: 2000-01-23T04:56:07.000+00:00
                sourceAmount: 1299
                sourceCurrency: EUR
            filenameReference: file ref
            fundingStatus: fundingStatus
            iban: DE89 3704 0044 0532 0130 00
            individualIdentificationNumber: 1231231adf
            invertedRate: 3.616076749251911
            isPaymentCcyBaseCcy: true
            payeeAddressCountryCode: US
            payeeId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            paymentAmount: 7
            paymentChannelId: 123asdf
            paymentChannelName: My Payment Channel
            paymentCurrency: EUR
            paymentId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            paymentMemo: Payment memo
            paymentMetadata: sample metadata
            paymentScheme: paymentScheme
            paymentTrackingReference: paymentTrackingReference
            payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            payorName: payorName
            payorPaymentId: 123123asdf
            payout:
              payoutFrom:
                dbaName: dbaName
                payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                payorName: payorName
                principal: principal
                principalId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
              payoutId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
              payoutTo:
                dbaName: dbaName
                payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                payorName: payorName
                principal: principal
                principalId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            postInstructFxInfo:
              fxMode: MANUAL
              fxStatus: INITIATED
              fxStatusUpdatedAt: 2000-01-23T04:56:07.000+00:00
              fxTransactionReference: AB123GHI
            quoteId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            railsBatchId: railsBatchId
            railsId: asdf123
            railsPaymentId: railsPaymentId
            rate: 9.301444243932576
            rejectionReason: rejectionReason
            remoteId: aasdf123
            remoteSystemId: REMOTE_SYSTEM_ID
            remoteSystemPaymentId: remoteSystemPaymentId
            returnCost: 1232
            returnReason: Some Reason Value
            routingNumber: "123123123123"
            schedule:
              notificationsEnabled: true
              scheduleStatus: SCHEDULED
              scheduledAt: 2000-01-23T04:56:07.000+00:00
              scheduledBy: Aphra Behn
              scheduledByPrincipalId: 8946953b-1e3b-49cf-9da4-b704cbb78f3e
              scheduledFor: 2000-01-23T04:56:07.000+00:00
            sourceAccountId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            sourceAccountName: My Account
            sourceAmount: 12345
            sourceCurrency: EUR
            status: status
            submittedDateTime: 2000-01-23T04:56:07.000+00:00
            traceNumber: abodu123
            transmissionType: transmissionType
            withdrawable: true
            withdrawnReason: withdrawnReason
          - accountName: My Account Name
            accountNumber: "123123232323"
            autoWithdrawnReasonCode: autoWithdrawnReasonCode
            countryCode: US
            events:
              - accountName: accountName
                accountNumber: accountNumber
                eventDateTime: 2000-01-23T04:56:07.000+00:00
                eventId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                eventType: eventType
                iban: iban
                paymentAmount: 1299
                paymentCurrency: EUR
                principal: principal
                routingNumber: routingNumber
                scheduledAt: 2000-01-23T04:56:07.000+00:00
                scheduledBy: Aphra Behn
                scheduledFor: 2000-01-23T04:56:07.000+00:00
                sourceAmount: 1299
                sourceCurrency: EUR
              - accountName: accountName
                accountNumber: accountNumber
                eventDateTime: 2000-01-23T04:56:07.000+00:00
                eventId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                eventType: eventType
                iban: iban
                paymentAmount: 1299
                paymentCurrency: EUR
                principal: principal
                routingNumber: routingNumber
                scheduledAt: 2000-01-23T04:56:07.000+00:00
                scheduledBy: Aphra Behn
                scheduledFor: 2000-01-23T04:56:07.000+00:00
                sourceAmount: 1299
                sourceCurrency: EUR
            filenameReference: file ref
            fundingStatus: fundingStatus
            iban: DE89 3704 0044 0532 0130 00
            individualIdentificationNumber: 1231231adf
            invertedRate: 3.616076749251911
            isPaymentCcyBaseCcy: true
            payeeAddressCountryCode: US
            payeeId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            paymentAmount: 7
            paymentChannelId: 123asdf
            paymentChannelName: My Payment Channel
            paymentCurrency: EUR
            paymentId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            paymentMemo: Payment memo
            paymentMetadata: sample metadata
            paymentScheme: paymentScheme
            paymentTrackingReference: paymentTrackingReference
            payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            payorName: payorName
            payorPaymentId: 123123asdf
            payout:
              payoutFrom:
                dbaName: dbaName
                payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                payorName: payorName
                principal: principal
                principalId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
              payoutId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
              payoutTo:
                dbaName: dbaName
                payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                payorName: payorName
                principal: principal
                principalId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            postInstructFxInfo:
              fxMode: MANUAL
              fxStatus: INITIATED
              fxStatusUpdatedAt: 2000-01-23T04:56:07.000+00:00
              fxTransactionReference: AB123GHI
            quoteId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            railsBatchId: railsBatchId
            railsId: asdf123
            railsPaymentId: railsPaymentId
            rate: 9.301444243932576
            rejectionReason: rejectionReason
            remoteId: aasdf123
            remoteSystemId: REMOTE_SYSTEM_ID
            remoteSystemPaymentId: remoteSystemPaymentId
            returnCost: 1232
            returnReason: Some Reason Value
            routingNumber: "123123123123"
            schedule:
              notificationsEnabled: true
              scheduleStatus: SCHEDULED
              scheduledAt: 2000-01-23T04:56:07.000+00:00
              scheduledBy: Aphra Behn
              scheduledByPrincipalId: 8946953b-1e3b-49cf-9da4-b704cbb78f3e
              scheduledFor: 2000-01-23T04:56:07.000+00:00
            sourceAccountId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            sourceAccountName: My Account
            sourceAmount: 12345
            sourceCurrency: EUR
            status: status
            submittedDateTime: 2000-01-23T04:56:07.000+00:00
            traceNumber: abodu123
            transmissionType: transmissionType
            withdrawable: true
            withdrawnReason: withdrawnReason
        links:
          - href: href
            rel: rel
          - href: href
            rel: rel
        page:
          numberOfElements: 0
          page: 5
          pageSize: 5
          totalElements: 6
          totalPages: 1
        summary:
          confirmedPayments: 6
          incompletePayments: 5
          instructed:
            principal: principal
            principalId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
          instructedDateTime: 2000-01-23T04:56:07.000+00:00
          payoutFrom:
            dbaName: dbaName
            payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            payorName: payorName
            principal: principal
            principalId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
          payoutMemo: payoutMemo
          payoutStatus: payoutStatus
          payoutTo:
            dbaName: dbaName
            payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            payorName: payorName
            principal: principal
            principalId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
          payoutType: payoutType
          quoted:
            principal: principal
            principalId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
          quotedDateTime: 2000-01-23T04:56:07.000+00:00
          releasedPayments: 1
          returnedPayments: 5
          schedule:
            notificationsEnabled: true
            scheduleStatus: SCHEDULED
            scheduledAt: 2000-01-23T04:56:07.000+00:00
            scheduledBy: Aphra Behn
            scheduledByPrincipalId: 8946953b-1e3b-49cf-9da4-b704cbb78f3e
            scheduledFor: 2000-01-23T04:56:07.000+00:00
          submittedDateTime: 2000-01-23T04:56:07.000+00:00
          submitting:
            dbaName: dbaName
            payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            payorName: payorName
            principal: principal
            principalId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
          totalPayments: 0
          withdrawn:
            principal: principal
            principalId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
          withdrawnDateTime: 2000-01-23T04:56:07.000+00:00
          withdrawnPayments: 2
      properties:
        content:
          items:
            $ref: "#/components/schemas/PaymentResponseV4"
          type: array
        links:
          items:
            $ref: "#/components/schemas/PagedPayeeResponseV3_links"
          type: array
        page:
          $ref: "#/components/schemas/PagedPayeeInvitationStatusResponseV3_page"
        summary:
          $ref: "#/components/schemas/GetPaymentsForPayoutResponseV4_summary"
      type: object
    GetPaymentsForPayoutResponseV4_summary:
      example:
        confirmedPayments: 6
        incompletePayments: 5
        instructed:
          principal: principal
          principalId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        instructedDateTime: 2000-01-23T04:56:07.000+00:00
        payoutFrom:
          dbaName: dbaName
          payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
          payorName: payorName
          principal: principal
          principalId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        payoutMemo: payoutMemo
        payoutStatus: payoutStatus
        payoutTo:
          dbaName: dbaName
          payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
          payorName: payorName
          principal: principal
          principalId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        payoutType: payoutType
        quoted:
          principal: principal
          principalId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        quotedDateTime: 2000-01-23T04:56:07.000+00:00
        releasedPayments: 1
        returnedPayments: 5
        schedule:
          notificationsEnabled: true
          scheduleStatus: SCHEDULED
          scheduledAt: 2000-01-23T04:56:07.000+00:00
          scheduledBy: Aphra Behn
          scheduledByPrincipalId: 8946953b-1e3b-49cf-9da4-b704cbb78f3e
          scheduledFor: 2000-01-23T04:56:07.000+00:00
        submittedDateTime: 2000-01-23T04:56:07.000+00:00
        submitting:
          dbaName: dbaName
          payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
          payorName: payorName
          principal: principal
          principalId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        totalPayments: 0
        withdrawn:
          principal: principal
          principalId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        withdrawnDateTime: 2000-01-23T04:56:07.000+00:00
        withdrawnPayments: 2
      properties:
        confirmedPayments:
          description: The count of payments within the payout which have been confirmed.
          type: integer
        incompletePayments:
          description: The count of payments within the payout which are incomplete.
          type: integer
        instructed:
          $ref: "#/components/schemas/PayoutPrincipal"
        instructedDateTime:
          description: The date/time at which the payout was instructed.
          format: date-time
          type: string
        payoutFrom:
          $ref: "#/components/schemas/PayoutPayor"
        payoutMemo:
          description: The memo attached to the payout.
          type: string
        payoutStatus:
          description: "Current status of the Payout. One of the following values: ACCEPTED, REJECTED, SUBMITTED, QUOTED, INSTRUCTED, COMPLETED, INCOMPLETE, CONFIRMED, WITHDRAWN"
          type: string
        payoutTo:
          $ref: "#/components/schemas/PayoutPayor"
        payoutType:
          description: "The type of payout. One of the following values: STANDARD, AS, ON_BEHALF_OF"
          type: string
        quoted:
          $ref: "#/components/schemas/PayoutPrincipal"
        quotedDateTime:
          description: The date/time at which the payout was quoted.
          format: date-time
          type: string
        releasedPayments:
          description: The count of payments within the payout which have been released.
          type: integer
        returnedPayments:
          description: The count of payments within the payout which have been returned.
          type: integer
        schedule:
          $ref: "#/components/schemas/PayoutSchedule"
        submittedDateTime:
          description: The date/time at which the payout was submitted.
          format: date-time
          type: string
        submitting:
          $ref: "#/components/schemas/PayoutPayor"
        totalPayments:
          description: The count of payments within the payout.
          type: integer
        withdrawn:
          $ref: "#/components/schemas/PayoutPrincipal"
        withdrawnDateTime:
          format: date-time
          type: string
        withdrawnPayments:
          description: The count of payments within the payout which have been withdrawn.
          type: integer
    GetPayoutStatistics:
      example:
        thisMonthFailedPaymentsCount: 6
        thisMonthPayoutsCount: 0
      properties:
        thisMonthFailedPaymentsCount:
          type: integer
        thisMonthPayoutsCount:
          type: integer
      required:
        - thisMonthFailedPaymentsCount
        - thisMonthPayoutsCount
      type: object
    GetPayoutsResponse:
      description: List Payouts Response
      example:
        content:
          - dateTime: 2000-01-23T04:56:07.000+00:00
            fxSummaries:
              - creationDateTime: 2000-01-23T04:56:07.000+00:00
                fundingStatus: fundingStatus
                invertedRate: 123.23
                paymentCurrency: EUR
                quoteId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                rate: 123.23
                sourceCurrency: EUR
                status: status
                totalCost: 5
                totalPaymentAmount: 34235
              - creationDateTime: 2000-01-23T04:56:07.000+00:00
                fundingStatus: fundingStatus
                invertedRate: 123.23
                paymentCurrency: EUR
                quoteId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                rate: 123.23
                sourceCurrency: EUR
                status: status
                totalCost: 5
                totalPaymentAmount: 34235
            instructedDateTime: instructedDateTime
            payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            payorName: payorName
            payoutId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            payoutMemo: payoutMemo
            payoutType: payoutType
            schedule:
              notificationsEnabled: true
              scheduleStatus: SCHEDULED
              scheduledAt: 2000-01-23T04:56:07.000+00:00
              scheduledBy: Aphra Behn
              scheduledByPrincipalId: 8946953b-1e3b-49cf-9da4-b704cbb78f3e
              scheduledFor: 2000-01-23T04:56:07.000+00:00
            sourceAccountSummary:
              - currency: EUR
                sourceAccountId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                totalCost: 3344
              - currency: EUR
                sourceAccountId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                totalCost: 3344
            status: status
            submittedDateTime: submittedDateTime
            totalIncompletePayments: 6
            totalPayments: 0
            totalReturnedPayments: 1
            totalWithdrawnPayments: 5
            withdrawnDateTime: 2000-01-23T04:56:07.000+00:00
          - dateTime: 2000-01-23T04:56:07.000+00:00
            fxSummaries:
              - creationDateTime: 2000-01-23T04:56:07.000+00:00
                fundingStatus: fundingStatus
                invertedRate: 123.23
                paymentCurrency: EUR
                quoteId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                rate: 123.23
                sourceCurrency: EUR
                status: status
                totalCost: 5
                totalPaymentAmount: 34235
              - creationDateTime: 2000-01-23T04:56:07.000+00:00
                fundingStatus: fundingStatus
                invertedRate: 123.23
                paymentCurrency: EUR
                quoteId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                rate: 123.23
                sourceCurrency: EUR
                status: status
                totalCost: 5
                totalPaymentAmount: 34235
            instructedDateTime: instructedDateTime
            payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            payorName: payorName
            payoutId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            payoutMemo: payoutMemo
            payoutType: payoutType
            schedule:
              notificationsEnabled: true
              scheduleStatus: SCHEDULED
              scheduledAt: 2000-01-23T04:56:07.000+00:00
              scheduledBy: Aphra Behn
              scheduledByPrincipalId: 8946953b-1e3b-49cf-9da4-b704cbb78f3e
              scheduledFor: 2000-01-23T04:56:07.000+00:00
            sourceAccountSummary:
              - currency: EUR
                sourceAccountId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                totalCost: 3344
              - currency: EUR
                sourceAccountId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                totalCost: 3344
            status: status
            submittedDateTime: submittedDateTime
            totalIncompletePayments: 6
            totalPayments: 0
            totalReturnedPayments: 1
            totalWithdrawnPayments: 5
            withdrawnDateTime: 2000-01-23T04:56:07.000+00:00
        links:
          - href: href
            rel: rel
          - href: href
            rel: rel
        page:
          numberOfElements: 0
          page: 5
          pageSize: 5
          totalElements: 6
          totalPages: 1
      properties:
        content:
          items:
            $ref: "#/components/schemas/PayoutSummaryAudit"
          type: array
        links:
          items:
            $ref: "#/components/schemas/PagedPayeeResponseV3_links"
          type: array
        page:
          $ref: "#/components/schemas/PagedPayeeInvitationStatusResponseV3_page"
      type: object
    GetPayoutsResponseV3:
      description: List Payouts Response
      example:
        content:
          - fxSummaries:
              - creationDateTime: 2000-01-23T04:56:07.000+00:00
                fundingStatus: fundingStatus
                invertedRate: 1.12
                paymentCurrency: paymentCurrency
                quoteId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                rate: 1.12
                sourceCurrency: sourceCurrency
                status: status
                totalCost: 1234
                totalPaymentAmount: 1234
              - creationDateTime: 2000-01-23T04:56:07.000+00:00
                fundingStatus: fundingStatus
                invertedRate: 1.12
                paymentCurrency: paymentCurrency
                quoteId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                rate: 1.12
                sourceCurrency: sourceCurrency
                status: status
                totalCost: 1234
                totalPaymentAmount: 1234
            instructedDateTime: instructedDateTime
            payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            payoutId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            payoutMemo: payoutMemo
            sourceAccountSummary:
              - currency: currency
                sourceAccountId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                totalCost: 3434
              - currency: currency
                sourceAccountId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                totalCost: 3434
            status: status
            submittedDateTime: submittedDateTime
            totalFailedPayments: 123
            totalIncompletePayments: 123
            totalPayments: 123
            withdrawnDateTime: withdrawnDateTime
          - fxSummaries:
              - creationDateTime: 2000-01-23T04:56:07.000+00:00
                fundingStatus: fundingStatus
                invertedRate: 1.12
                paymentCurrency: paymentCurrency
                quoteId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                rate: 1.12
                sourceCurrency: sourceCurrency
                status: status
                totalCost: 1234
                totalPaymentAmount: 1234
              - creationDateTime: 2000-01-23T04:56:07.000+00:00
                fundingStatus: fundingStatus
                invertedRate: 1.12
                paymentCurrency: paymentCurrency
                quoteId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                rate: 1.12
                sourceCurrency: sourceCurrency
                status: status
                totalCost: 1234
                totalPaymentAmount: 1234
            instructedDateTime: instructedDateTime
            payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            payoutId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            payoutMemo: payoutMemo
            sourceAccountSummary:
              - currency: currency
                sourceAccountId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                totalCost: 3434
              - currency: currency
                sourceAccountId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                totalCost: 3434
            status: status
            submittedDateTime: submittedDateTime
            totalFailedPayments: 123
            totalIncompletePayments: 123
            totalPayments: 123
            withdrawnDateTime: withdrawnDateTime
        links:
          - href: https://example.com
            rel: first
          - href: https://example.com
            rel: first
        page:
          numberOfElements: 12
          page: 1
          pageSize: 25
          totalElements: 123
          totalPages: 123
      properties:
        content:
          items:
            $ref: "#/components/schemas/PayoutSummaryAuditV3"
          type: array
        links:
          items:
            $ref: "#/components/schemas/GetPayoutsResponseV3_links"
          type: array
        page:
          $ref: "#/components/schemas/GetPayoutsResponseV3_page"
      type: object
    GetPayoutsResponseV3_links:
      example:
        href: https://example.com
        rel: first
      properties:
        href:
          example: https://example.com
          type: string
        rel:
          example: first
          type: string
    GetPayoutsResponseV3_page:
      example:
        numberOfElements: 12
        page: 1
        pageSize: 25
        totalElements: 123
        totalPages: 123
      properties:
        numberOfElements:
          example: 12
          type: integer
        page:
          example: 1
          type: integer
        pageSize:
          example: 25
          type: integer
        totalElements:
          example: 123
          type: integer
        totalPages:
          example: 123
          type: integer
    Iban:
      description: Must match the regular expression ```^[A-Za-z0-9]+$```.
      example: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1234
      maxLength: 34
      minLength: 15
      pattern: ^[A-Za-z0-9]+$
      title: IBAN - International Bank Account Number
      type: string
    IndividualV3:
      example:
        dateOfBirth: 1985-01-01
        name:
          firstName: Bob
          lastName: Smith
          otherNames: A
          title: Mr
        nationalIdentification: AB123456C
      properties:
        dateOfBirth:
          description: "If not authorized to view, value will be masked. Example: - XXXX-XX-XX"
          example: 1985-01-01
          readOnly: true
          type: string
        name:
          $ref: "#/components/schemas/IndividualV3_name"
        nationalIdentification:
          description: "If not authorized to view, value will be masked. Example: XXXXX1234"
          example: AB123456C
          maxLength: 30
          minLength: 6
          readOnly: true
          type: string
      required:
        - dateOfBirth
        - name
      type: object
    IndividualV3_name:
      example:
        firstName: Bob
        lastName: Smith
        otherNames: A
        title: Mr
      properties:
        firstName:
          example: Bob
          maxLength: 40
          minLength: 1
          type: string
        lastName:
          example: Smith
          maxLength: 40
          minLength: 1
          type: string
        otherNames:
          example: A
          maxLength: 40
          minLength: 1
          type: string
        title:
          example: Mr
          maxLength: 10
          minLength: 1
          type: string
      required:
        - firstName
        - lastName
    IndividualV4:
      example:
        dateOfBirth: 1985-01-01
        name:
          firstName: Bob
          lastName: Smith
          otherNames: A
          title: Mr
        nationalIdentification: AB123456C
      properties:
        dateOfBirth:
          description: "If not authorized to view, value will be masked. Example: - XXXX-XX-XX"
          example: 1985-01-01
          readOnly: true
          type: string
        name:
          $ref: "#/components/schemas/IndividualV3_name"
        nationalIdentification:
          description: "If not authorized to view, value will be masked. Example: XXXXX1234"
          example: AB123456C
          maxLength: 30
          minLength: 6
          readOnly: true
          type: string
      required:
        - dateOfBirth
        - name
      type: object
    InstructPayoutRequestV3:
      example:
        fxRateDegredationThresholdPercentage: 0.8008282
      properties:
        fxRateDegredationThresholdPercentage:
          description: Halt instruction if the FX rates have become worse since the last quote
          format: float
          type: number
      type: object
    InvitationStatusV3:
      type: string
    InvitationStatusV4:
      type: string
    InvitePayeeRequestV3:
      example:
        payorId: 9ac75325-5dcd-42d5-b992-175d7e0a035e
      properties:
        payorId:
          example: 9ac75325-5dcd-42d5-b992-175d7e0a035e
          format: uuid
          type: string
      required:
        - payorId
      type: object
    InvitePayeeRequestV4:
      example:
        payorId: 9ac75325-5dcd-42d5-b992-175d7e0a035e
      properties:
        payorId:
          example: 9ac75325-5dcd-42d5-b992-175d7e0a035e
          format: uuid
          type: string
      required:
        - payorId
      type: object
    InviteUserRequest:
      example:
        email: foo@example.com
        entityId: 7fffa261-ac68-49e6-b605-d24a444d9206
        firstName: John
        lastName: Doe
        mfaType: TOTP
        primaryContactNumber: "11235555555"
        roles:
          - velo.payor.admin
        secondaryContactNumber: "11235555550"
        smsNumber: "11235555555"
        userType: PAYEE
        verificationCode: "123456"
      properties:
        email:
          description: the email address of the invited user
          example: foo@example.com
          format: email
          type: string
        entityId:
          description: |
            The payorId or payeeId or null if the user is a backoffice admin
          example: 7fffa261-ac68-49e6-b605-d24a444d9206
          format: uuid
          nullable: true
          type: string
        firstName:
          example: John
          maxLength: 128
          minLength: 1
          type: string
        lastName:
          example: Doe
          maxLength: 128
          minLength: 1
          type: string
        mfaType:
          description: |
            <p>The MFA type that the user will use</p>
            <p>The type may be conditional on the role(s) the user has</p>
          enum:
            - SMS
            - YUBIKEY
            - TOTP
          example: TOTP
          type: string
        primaryContactNumber:
          description: |
            The main contact number for the user
          example: "11235555555"
          pattern: ^\+[1-9]\d{1,14}$
          type: string
        roles:
          description: |
            The role(s) for the user
            The role must exist
            The role can be a custom role or a system role but the invoker must have the permissions to assign the role
            System roles are: velo.backoffice.admin, velo.payor.master_admin, velo.payor.admin, velo.payor.support, velo.payee.admin, velo.payee.support
          example:
            - velo.payor.admin
          items:
            type: string
          type: array
        secondaryContactNumber:
          description: |
            The secondary contact number for the user
          example: "11235555550"
          nullable: true
          pattern: ^\+[1-9]\d{1,14}$
          type: string
        smsNumber:
          description: |
            The phone number of a device that the user can receive sms messages on
          example: "11235555555"
          pattern: ^\+[1-9]\d{1,14}$
          type: string
        userType:
          description: Will default to PAYOR if not provided but entityId is provided
          enum:
            - BACKOFFICE
            - PAYOR
            - PAYEE
          example: PAYEE
          type: string
        verificationCode:
          description: |
            Optional property that MUST be suppied when manually verifying a user
            The user's smsNumber is registered via a separate endpoint and an OTP sent to them
          example: "123456"
          maxLength: 6
          minLength: 6
          nullable: true
          type: string
      required:
        - email
        - mfaType
        - primaryContactNumber
        - roles
        - smsNumber
      type: object
    IsoCountryCode:
      description: Valid ISO 3166 2 character country code. See the <a href="https://www.iso.org/iso-3166-country-codes.html" target="_blank" a>ISO specification</a> for details.
      example: US
      maxLength: 2
      minLength: 2
      pattern: ^[A-Z]{2}$
      title: ISO 3166 2 Character Country Code
      type: string
    IsoCurrency:
      description: Valid ISO 4217 3 letter currency code. See the <a href="https://www.iso.org/iso-4217-currency-codes.html" target="_blank" a>ISO specification</a> for details.
      example: USD
      maxLength: 3
      minLength: 3
      pattern: ^[A-Z]{3}$
      title: ISO Currency Code
      type: string
    KycState:
      description: "The kyc state of the payor. One of the following values: FAILED_KYC, PASSED_KYC, REQUIRES_KYC"
      example: PASSED_KYC
      readOnly: true
      type: string
    LanguageV3:
      description: |
        An IETF BCP 47 language code which has been configured for use within this Velo environment.<BR>
        See the /v1/supportedLanguages endpoint to list the available codes for an environment.
      example: en-US
      type: string
    LanguageV4:
      description: |
        An IETF BCP 47 language code which has been configured for use within this Velo environment.<BR>
        See the /v1/supportedLanguages endpoint to list the available codes for an environment.
      example: en-US
      type: string
    LinkForResponse:
      example:
        href: href
        rel: rel
      properties:
        href:
          type: string
        rel:
          type: string
      type: object
    ListFundingAccountsResponseV2:
      description: List Funding Accounts Response Object
      example:
        content:
          - accountName: Payor Corp
            accountNumber: "7001001234"
            archived: true
            country: US
            currency: USD
            id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            name: My Funding Account
            payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            routingNumber: 12345678
            type: FBO
          - accountName: Payor Corp
            accountNumber: "7001001234"
            archived: true
            country: US
            currency: USD
            id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            name: My Funding Account
            payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            routingNumber: 12345678
            type: FBO
        links:
          - href: https://api.sandbox.velopayments.com/v1/sourceAccounts?payorId=a2967711-df07-41e5-b5ea-f563088911c6&page=1&pageSize=0&sort=fundingRef:asc
            rel: first
          - href: https://api.sandbox.velopayments.com/v1/sourceAccounts?payorId=a2967711-df07-41e5-b5ea-f563088911c6&page=1&pageSize=0&sort=fundingRef:asc
            rel: first
        page:
          numberOfElements: 1
          page: 1
          pageSize: 25
          totalElements: 1
          totalPages: 2
      properties:
        content:
          items:
            $ref: "#/components/schemas/FundingAccountResponseV2"
          type: array
        links:
          items:
            $ref: "#/components/schemas/ListFundingAccountsResponseV2_links"
          type: array
        page:
          $ref: "#/components/schemas/ListFundingAccountsResponseV2_page"
      type: object
    ListFundingAccountsResponseV2_links:
      example:
        href: https://api.sandbox.velopayments.com/v1/sourceAccounts?payorId=a2967711-df07-41e5-b5ea-f563088911c6&page=1&pageSize=0&sort=fundingRef:asc
        rel: first
      properties:
        href:
          example: https://api.sandbox.velopayments.com/v1/sourceAccounts?payorId=a2967711-df07-41e5-b5ea-f563088911c6&page=1&pageSize=0&sort=fundingRef:asc
          type: string
        rel:
          example: first
          type: string
    ListFundingAccountsResponseV2_page:
      example:
        numberOfElements: 1
        page: 1
        pageSize: 25
        totalElements: 1
        totalPages: 2
      properties:
        numberOfElements:
          example: 1
          type: integer
        page:
          example: 1
          type: integer
        pageSize:
          example: 25
          type: integer
        totalElements:
          example: 1
          type: integer
        totalPages:
          example: 2
          type: integer
    ListPaymentsResponseV3:
      description: List Payments Response Object
      example:
        content:
          - accountName: My Account Name
            accountNumber: "123123232323"
            countryCode: US
            events:
              - accountName: My account
                accountNumber: "123123123"
                eventDateTime: 2000-01-23T04:56:07.000+00:00
                eventId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                eventType: eventType
                iban: DE89 3704 0044 0532 0130 00
                paymentAmount: 1299
                paymentCurrency: paymentCurrency
                principal: Prinicple example
                routingNumber: "123123123"
                sourceAmount: 1299
                sourceCurrency: sourceCurrency
              - accountName: My account
                accountNumber: "123123123"
                eventDateTime: 2000-01-23T04:56:07.000+00:00
                eventId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                eventType: eventType
                iban: DE89 3704 0044 0532 0130 00
                paymentAmount: 1299
                paymentCurrency: paymentCurrency
                principal: Prinicple example
                routingNumber: "123123123"
                sourceAmount: 1299
                sourceCurrency: sourceCurrency
            filenameReference: file ref
            fundingStatus: fundingStatus
            iban: DE89 3704 0044 0532 0130 00
            individualIdentificationNumber: 1231231adf
            invertedRate: 1.4658129
            payeeId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            paymentAmount: 0
            paymentChannelId: 123asdf
            paymentChannelName: My Payment Channel
            paymentCurrency: paymentCurrency
            paymentId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            paymentMemo: Payment memo
            paymentScheme: paymentScheme
            payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            payorName: payorName
            payorPaymentId: 123123asdf
            quoteId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            railsBatchId: railsBatchId
            railsId: asdf123
            railsPaymentId: railsPaymentId
            rate: 6.0274563
            rejectionReason: rejectionReason
            remoteId: aasdf123
            returnCost: 1232
            returnReason: Some Reason Value
            routingNumber: "123123123123"
            sourceAccountId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            sourceAccountName: My Account
            sourceAmount: 12345
            sourceCurrency: sourceCurrency
            status: status
            submittedDateTime: 2000-01-23T04:56:07.000+00:00
            traceNumber: abodu123
          - accountName: My Account Name
            accountNumber: "123123232323"
            countryCode: US
            events:
              - accountName: My account
                accountNumber: "123123123"
                eventDateTime: 2000-01-23T04:56:07.000+00:00
                eventId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                eventType: eventType
                iban: DE89 3704 0044 0532 0130 00
                paymentAmount: 1299
                paymentCurrency: paymentCurrency
                principal: Prinicple example
                routingNumber: "123123123"
                sourceAmount: 1299
                sourceCurrency: sourceCurrency
              - accountName: My account
                accountNumber: "123123123"
                eventDateTime: 2000-01-23T04:56:07.000+00:00
                eventId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                eventType: eventType
                iban: DE89 3704 0044 0532 0130 00
                paymentAmount: 1299
                paymentCurrency: paymentCurrency
                principal: Prinicple example
                routingNumber: "123123123"
                sourceAmount: 1299
                sourceCurrency: sourceCurrency
            filenameReference: file ref
            fundingStatus: fundingStatus
            iban: DE89 3704 0044 0532 0130 00
            individualIdentificationNumber: 1231231adf
            invertedRate: 1.4658129
            payeeId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            paymentAmount: 0
            paymentChannelId: 123asdf
            paymentChannelName: My Payment Channel
            paymentCurrency: paymentCurrency
            paymentId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            paymentMemo: Payment memo
            paymentScheme: paymentScheme
            payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            payorName: payorName
            payorPaymentId: 123123asdf
            quoteId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            railsBatchId: railsBatchId
            railsId: asdf123
            railsPaymentId: railsPaymentId
            rate: 6.0274563
            rejectionReason: rejectionReason
            remoteId: aasdf123
            returnCost: 1232
            returnReason: Some Reason Value
            routingNumber: "123123123123"
            sourceAccountId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            sourceAccountName: My Account
            sourceAmount: 12345
            sourceCurrency: sourceCurrency
            status: status
            submittedDateTime: 2000-01-23T04:56:07.000+00:00
            traceNumber: abodu123
        links:
          - href: https://example.com
            rel: first
          - href: https://example.com
            rel: first
        page:
          numberOfElements: 12
          page: 1
          pageSize: 25
          totalElements: 12
          totalPages: 12
      properties:
        content:
          items:
            $ref: "#/components/schemas/PaymentResponseV3"
          type: array
        links:
          items:
            $ref: "#/components/schemas/GetPayoutsResponseV3_links"
          type: array
        page:
          $ref: "#/components/schemas/ListPaymentsResponseV3_page"
      type: object
    ListPaymentsResponseV3_page:
      example:
        numberOfElements: 12
        page: 1
        pageSize: 25
        totalElements: 12
        totalPages: 12
      properties:
        numberOfElements:
          example: 12
          type: integer
        page:
          example: 1
          type: integer
        pageSize:
          example: 25
          type: integer
        totalElements:
          example: 12
          type: integer
        totalPages:
          example: 12
          type: integer
    ListPaymentsResponseV4:
      description: List Payments Response Object
      example:
        content:
          - accountName: My Account Name
            accountNumber: "123123232323"
            autoWithdrawnReasonCode: autoWithdrawnReasonCode
            countryCode: US
            events:
              - accountName: accountName
                accountNumber: accountNumber
                eventDateTime: 2000-01-23T04:56:07.000+00:00
                eventId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                eventType: eventType
                iban: iban
                paymentAmount: 1299
                paymentCurrency: EUR
                principal: principal
                routingNumber: routingNumber
                scheduledAt: 2000-01-23T04:56:07.000+00:00
                scheduledBy: Aphra Behn
                scheduledFor: 2000-01-23T04:56:07.000+00:00
                sourceAmount: 1299
                sourceCurrency: EUR
              - accountName: accountName
                accountNumber: accountNumber
                eventDateTime: 2000-01-23T04:56:07.000+00:00
                eventId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                eventType: eventType
                iban: iban
                paymentAmount: 1299
                paymentCurrency: EUR
                principal: principal
                routingNumber: routingNumber
                scheduledAt: 2000-01-23T04:56:07.000+00:00
                scheduledBy: Aphra Behn
                scheduledFor: 2000-01-23T04:56:07.000+00:00
                sourceAmount: 1299
                sourceCurrency: EUR
            filenameReference: file ref
            fundingStatus: fundingStatus
            iban: DE89 3704 0044 0532 0130 00
            individualIdentificationNumber: 1231231adf
            invertedRate: 3.616076749251911
            isPaymentCcyBaseCcy: true
            payeeAddressCountryCode: US
            payeeId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            paymentAmount: 7
            paymentChannelId: 123asdf
            paymentChannelName: My Payment Channel
            paymentCurrency: EUR
            paymentId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            paymentMemo: Payment memo
            paymentMetadata: sample metadata
            paymentScheme: paymentScheme
            paymentTrackingReference: paymentTrackingReference
            payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            payorName: payorName
            payorPaymentId: 123123asdf
            payout:
              payoutFrom:
                dbaName: dbaName
                payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                payorName: payorName
                principal: principal
                principalId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
              payoutId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
              payoutTo:
                dbaName: dbaName
                payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                payorName: payorName
                principal: principal
                principalId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            postInstructFxInfo:
              fxMode: MANUAL
              fxStatus: INITIATED
              fxStatusUpdatedAt: 2000-01-23T04:56:07.000+00:00
              fxTransactionReference: AB123GHI
            quoteId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            railsBatchId: railsBatchId
            railsId: asdf123
            railsPaymentId: railsPaymentId
            rate: 9.301444243932576
            rejectionReason: rejectionReason
            remoteId: aasdf123
            remoteSystemId: REMOTE_SYSTEM_ID
            remoteSystemPaymentId: remoteSystemPaymentId
            returnCost: 1232
            returnReason: Some Reason Value
            routingNumber: "123123123123"
            schedule:
              notificationsEnabled: true
              scheduleStatus: SCHEDULED
              scheduledAt: 2000-01-23T04:56:07.000+00:00
              scheduledBy: Aphra Behn
              scheduledByPrincipalId: 8946953b-1e3b-49cf-9da4-b704cbb78f3e
              scheduledFor: 2000-01-23T04:56:07.000+00:00
            sourceAccountId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            sourceAccountName: My Account
            sourceAmount: 12345
            sourceCurrency: EUR
            status: status
            submittedDateTime: 2000-01-23T04:56:07.000+00:00
            traceNumber: abodu123
            transmissionType: transmissionType
            withdrawable: true
            withdrawnReason: withdrawnReason
          - accountName: My Account Name
            accountNumber: "123123232323"
            autoWithdrawnReasonCode: autoWithdrawnReasonCode
            countryCode: US
            events:
              - accountName: accountName
                accountNumber: accountNumber
                eventDateTime: 2000-01-23T04:56:07.000+00:00
                eventId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                eventType: eventType
                iban: iban
                paymentAmount: 1299
                paymentCurrency: EUR
                principal: principal
                routingNumber: routingNumber
                scheduledAt: 2000-01-23T04:56:07.000+00:00
                scheduledBy: Aphra Behn
                scheduledFor: 2000-01-23T04:56:07.000+00:00
                sourceAmount: 1299
                sourceCurrency: EUR
              - accountName: accountName
                accountNumber: accountNumber
                eventDateTime: 2000-01-23T04:56:07.000+00:00
                eventId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                eventType: eventType
                iban: iban
                paymentAmount: 1299
                paymentCurrency: EUR
                principal: principal
                routingNumber: routingNumber
                scheduledAt: 2000-01-23T04:56:07.000+00:00
                scheduledBy: Aphra Behn
                scheduledFor: 2000-01-23T04:56:07.000+00:00
                sourceAmount: 1299
                sourceCurrency: EUR
            filenameReference: file ref
            fundingStatus: fundingStatus
            iban: DE89 3704 0044 0532 0130 00
            individualIdentificationNumber: 1231231adf
            invertedRate: 3.616076749251911
            isPaymentCcyBaseCcy: true
            payeeAddressCountryCode: US
            payeeId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            paymentAmount: 7
            paymentChannelId: 123asdf
            paymentChannelName: My Payment Channel
            paymentCurrency: EUR
            paymentId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            paymentMemo: Payment memo
            paymentMetadata: sample metadata
            paymentScheme: paymentScheme
            paymentTrackingReference: paymentTrackingReference
            payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            payorName: payorName
            payorPaymentId: 123123asdf
            payout:
              payoutFrom:
                dbaName: dbaName
                payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                payorName: payorName
                principal: principal
                principalId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
              payoutId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
              payoutTo:
                dbaName: dbaName
                payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
                payorName: payorName
                principal: principal
                principalId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            postInstructFxInfo:
              fxMode: MANUAL
              fxStatus: INITIATED
              fxStatusUpdatedAt: 2000-01-23T04:56:07.000+00:00
              fxTransactionReference: AB123GHI
            quoteId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            railsBatchId: railsBatchId
            railsId: asdf123
            railsPaymentId: railsPaymentId
            rate: 9.301444243932576
            rejectionReason: rejectionReason
            remoteId: aasdf123
            remoteSystemId: REMOTE_SYSTEM_ID
            remoteSystemPaymentId: remoteSystemPaymentId
            returnCost: 1232
            returnReason: Some Reason Value
            routingNumber: "123123123123"
            schedule:
              notificationsEnabled: true
              scheduleStatus: SCHEDULED
              scheduledAt: 2000-01-23T04:56:07.000+00:00
              scheduledBy: Aphra Behn
              scheduledByPrincipalId: 8946953b-1e3b-49cf-9da4-b704cbb78f3e
              scheduledFor: 2000-01-23T04:56:07.000+00:00
            sourceAccountId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            sourceAccountName: My Account
            sourceAmount: 12345
            sourceCurrency: EUR
            status: status
            submittedDateTime: 2000-01-23T04:56:07.000+00:00
            traceNumber: abodu123
            transmissionType: transmissionType
            withdrawable: true
            withdrawnReason: withdrawnReason
        links:
          - href: https://example.com
            rel: first
          - href: https://example.com
            rel: first
        page:
          numberOfElements: 12
          page: 1
          pageSize: 25
          totalElements: 12
          totalPages: 12
      properties:
        content:
          items:
            $ref: "#/components/schemas/PaymentResponseV4"
          type: array
        links:
          items:
            $ref: "#/components/schemas/GetPayoutsResponseV3_links"
          type: array
        page:
          $ref: "#/components/schemas/ListPaymentsResponseV3_page"
      type: object
    ListSourceAccountResponseV2:
      description: List Source Accounts Response Object
      example:
        content:
          - accountType: FBO
            autoTopUpConfig:
              enabled: true
              minBalance: 10000
              targetBalance: 300000
            balance: 1203489
            balanceVisible: true
            currency: USD
            customerId: Joe Customer
            fundingAccountId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            fundingRef: a1b2c3d4
            id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            name: MyAccountName
            notifications:
              minimumBalance: 120000
            payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            physicalAccountId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            physicalAccountName: VELO_FBO_MYBANKA_USD
            pooled: true
            railsId: BOA_RAIL
          - accountType: FBO
            autoTopUpConfig:
              enabled: true
              minBalance: 10000
              targetBalance: 300000
            balance: 1203489
            balanceVisible: true
            currency: USD
            customerId: Joe Customer
            fundingAccountId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            fundingRef: a1b2c3d4
            id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            name: MyAccountName
            notifications:
              minimumBalance: 120000
            payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            physicalAccountId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            physicalAccountName: VELO_FBO_MYBANKA_USD
            pooled: true
            railsId: BOA_RAIL
        links:
          - href: https://api.sandbox.velopayments.com/v2/sourceAccounts?payorId=a2967711-df07-41e5-b5ea-f563088911c6&page=1&pageSize=0&sort=fundingRef:asc
            rel: first
          - href: https://api.sandbox.velopayments.com/v2/sourceAccounts?payorId=a2967711-df07-41e5-b5ea-f563088911c6&page=1&pageSize=0&sort=fundingRef:asc
            rel: first
        page:
          numberOfElements: 12
          page: 1
          pageSize: 25
          totalElements: 33
          totalPages: 2
      properties:
        content:
          items:
            $ref: "#/components/schemas/SourceAccountResponseV2"
          type: array
        links:
          items:
            $ref: "#/components/schemas/ListSourceAccountResponseV2_links"
          type: array
        page:
          $ref: "#/components/schemas/PagedUserResponse_page"
      type: object
    ListSourceAccountResponseV2_links:
      example:
        href: https://api.sandbox.velopayments.com/v2/sourceAccounts?payorId=a2967711-df07-41e5-b5ea-f563088911c6&page=1&pageSize=0&sort=fundingRef:asc
        rel: first
      properties:
        href:
          example: https://api.sandbox.velopayments.com/v2/sourceAccounts?payorId=a2967711-df07-41e5-b5ea-f563088911c6&page=1&pageSize=0&sort=fundingRef:asc
          type: string
        rel:
          example: first
          type: string
    ListSourceAccountResponseV3:
      description: List Source Accounts Response Object
      example:
        content:
          - autoTopUpConfig:
              enabled: true
              fundingAccountId: 640ab1bd-8a6a-4603-a83a-1edbc3ed5689
              minBalance: 10000
              targetBalance: 300000
            balance: 1203489
            country: US
            currency: USD
            customerId: Joe Customer
            deleted: true
            deletedAt: 2021-01-27T10:08:25.701Z
            fundingRef: a1b2c3d4
            id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            name: MyAccountName
            notifications:
              minimumBalance: 120000
            payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            physicalAccountId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            physicalAccountName: VELO_FBO_MYBANKA_USD
            pooled: true
            railsId: BOA_RAIL
            type: FBO
            userDeleted: true
          - autoTopUpConfig:
              enabled: true
              fundingAccountId: 640ab1bd-8a6a-4603-a83a-1edbc3ed5689
              minBalance: 10000
              targetBalance: 300000
            balance: 1203489
            country: US
            currency: USD
            customerId: Joe Customer
            deleted: true
            deletedAt: 2021-01-27T10:08:25.701Z
            fundingRef: a1b2c3d4
            id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            name: MyAccountName
            notifications:
              minimumBalance: 120000
            payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            physicalAccountId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            physicalAccountName: VELO_FBO_MYBANKA_USD
            pooled: true
            railsId: BOA_RAIL
            type: FBO
            userDeleted: true
        links:
          - href: https://api.sandbox.velopayments.com/v3/sourceAccounts?payorId=a2967711-df07-41e5-b5ea-f563088911c6&page=1&pageSize=0&sort=fundingRef:asc
            rel: first
          - href: https://api.sandbox.velopayments.com/v3/sourceAccounts?payorId=a2967711-df07-41e5-b5ea-f563088911c6&page=1&pageSize=0&sort=fundingRef:asc
            rel: first
        page:
          numberOfElements: 12
          page: 1
          pageSize: 25
          totalElements: 33
          totalPages: 2
      properties:
        content:
          items:
            $ref: "#/components/schemas/SourceAccountResponseV3"
          type: array
        links:
          items:
            $ref: "#/components/schemas/ListSourceAccountResponseV3_links"
          type: array
        page:
          $ref: "#/components/schemas/PagedUserResponse_page"
      type: object
    ListSourceAccountResponseV3_links:
      example:
        href: https://api.sandbox.velopayments.com/v3/sourceAccounts?payorId=a2967711-df07-41e5-b5ea-f563088911c6&page=1&pageSize=0&sort=fundingRef:asc
        rel: first
      properties:
        href:
          example: https://api.sandbox.velopayments.com/v3/sourceAccounts?payorId=a2967711-df07-41e5-b5ea-f563088911c6&page=1&pageSize=0&sort=fundingRef:asc
          type: string
        rel:
          example: first
          type: string
    LocalisationDetails:
      properties:
        parameters:
          additionalProperties:
            type: string
          description: name to value map containing any named parameters that appear in the message template
          example:
            max: "10"
            min: "0"
          type: object
        template:
          description: the English language message template used to construct the error message
          example: size must be between {min} and {max}
          type: string
      type: object
    MFADetails:
      example:
        mfa_type: TOTP
        verified: true
      properties:
        mfa_type:
          $ref: "#/components/schemas/MFAType"
        verified:
          description: true if the user has used the MFA device for login
          example: true
          type: boolean
      type: object
    MFAType:
      description: The type of the MFA device
      enum:
        - SMS
        - YUBIKEY
        - TOTP
      example: TOTP
      nullable: true
      type: string
    NameV3:
      example:
        firstName: Bob
        lastName: Smith
        otherNames: H
        title: Mr
      properties:
        firstName:
          example: Bob
          maxLength: 40
          minLength: 1
          type: string
        lastName:
          example: Smith
          maxLength: 40
          minLength: 1
          type: string
        otherNames:
          example: H
          maxLength: 40
          minLength: 1
          type: string
        title:
          example: Mr
          maxLength: 10
          minLength: 1
          type: string
      type: object
    NameV4:
      example:
        firstName: Bob
        lastName: Smith
        otherNames: H
        title: Mr
      properties:
        firstName:
          example: Bob
          maxLength: 40
          minLength: 1
          type: string
        lastName:
          example: Smith
          maxLength: 40
          minLength: 1
          type: string
        otherNames:
          example: H
          maxLength: 40
          minLength: 1
          type: string
        title:
          example: Mr
          maxLength: 10
          minLength: 1
          type: string
      type: object
    Notification:
      properties:
        apiVersion:
          description: The API version of the notification schema
          example: "1"
          type: string
        category:
          description: The category that the notification relates to. One of "payment", "payee", "debit" or "system"
          example: payment
          type: string
        eventName:
          description: The name of event that led to this notification
          example: payment.accepted
          type: string
        sequenceNumber:
          description: This is a payor specific sequence number starting at 1 for the first notification sent
          example: 1234
          format: int64
          type: integer
        source:
          description: One of the available set of source event payloads
          discriminator:
            mapping:
              debit_status_changed: "#/components/schemas/DebitStatusChanged"
              onboarding_status_changed: "#/components/schemas/OnboardingStatusChanged"
              payable_status_changed: "#/components/schemas/PayableStatusChanged"
              payee_details_changed: "#/components/schemas/PayeeDetailsChanged"
              payment_rejected_or_returned: "#/components/schemas/PaymentRejectedOrReturned"
              payment_status_changed: "#/components/schemas/PaymentStatusChanged"
              ping: "#/components/schemas/Ping"
            propertyName: sourceType
          example:
            createdAt: 2020-06-18T15:09:42Z
            eventId: 270ab907-27ec-4b83-8028-0ff432bbdec4
            paymentId: cbd9280f-8fde-4190-b014-979d88f3ec54
            payorPaymentId: ourpayment-id12345
            payoutPayorIds:
              payoutFromPayorId: ac207f97-663c-4429-9d57-ba5b35d6672d
              payoutToPayorId: ac207f97-663c-4429-9d57-ba5b35d6672d
              submittingPayorId: ac207f97-663c-4429-9d57-ba5b35d6672d
            status: ACCEPTED
            type: payment_status_changed
          oneOf:
            - $ref: "#/components/schemas/Ping"
            - $ref: "#/components/schemas/PaymentStatusChanged"
            - $ref: "#/components/schemas/PaymentRejectedOrReturned"
            - $ref: "#/components/schemas/OnboardingStatusChanged"
            - $ref: "#/components/schemas/PayableStatusChanged"
            - $ref: "#/components/schemas/PayeeDetailsChanged"
            - $ref: "#/components/schemas/DebitStatusChanged"
      required:
        - apiVersion
        - category
        - eventName
        - sequenceNumber
      type: object
    NotificationsV2:
      example:
        minimumBalance: 120000
      properties:
        minimumBalance:
          example: 120000
          type: integer
      type: object
    NotificationsV3:
      example:
        minimumBalance: 120000
      properties:
        minimumBalance:
          example: 120000
          type: integer
      type: object
    OfacStatusV4:
      description: "OFAC status. One of the following values: PENDING, PASSED, FAILED"
      type: string
    OnboardedStatusV3:
      description: "Onboarded status. One of the following values: CREATED, INVITED, REGISTERED, ONBOARDED"
      type: string
    OnboardedStatusV3_2:
      description: "Onboarded status. One of the following values: CREATED, INVITED, REGISTERED, ONBOARDED"
      type: string
    OnboardedStatusV4:
      description: "Payee onboarded status. One of the following values: CREATED, INVITED, REGISTERED, ONBOARDED"
      type: string
    OnboardedStatusV4_2:
      description: "Payee onboarded status. One of the following value: CREATED, INVITED, REGISTERED, ONBOARDED"
      type: string
    OnboardingStatusChanged:
      allOf:
        - $ref: "#/components/schemas/PayeeEvent"
        - type: object
      description: Base type for all onboarding status changed events
    PageForResponse:
      example:
        numberOfElements: 0
        page: 5
        pageSize: 5
        totalElements: 6
        totalPages: 1
      properties:
        numberOfElements:
          format: int32
          type: integer
        page:
          format: int32
          type: integer
        pageSize:
          format: int32
          type: integer
        totalElements:
          format: int64
          type: integer
        totalPages:
          format: int32
          type: integer
      type: object
    PageResourceFundingPayorStatusAuditResponseFundingPayorStatusAuditResponse:
      example:
        content:
          - amount: 2
            currency: USD
            fundingId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            status: status
          - amount: 2
            currency: USD
            fundingId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            status: status
        links:
          - href: href
            rel: rel
          - href: href
            rel: rel
        page:
          numberOfElements: 0
          page: 5
          pageSize: 5
          totalElements: 6
          totalPages: 1
      properties:
        content:
          items:
            $ref: "#/components/schemas/FundingPayorStatusAuditResponse"
          type: array
        links:
          items:
            $ref: "#/components/schemas/LinkForResponse"
          type: array
          xml:
            name: link
            namespace: http://www.w3.org/2005/Atom
        page:
          $ref: "#/components/schemas/PageForResponse"
      type: object
    PagedPayeeInvitationStatusResponseV3:
      description: List Payees Invitation Status Object
      example:
        content:
          - gracePeriodEndDate: 2019-01-20T00:00:00.000+0000
            invitationStatus: invitationStatus
            payeeId: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
          - gracePeriodEndDate: 2019-01-20T00:00:00.000+0000
            invitationStatus: invitationStatus
            payeeId: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
        links:
          - href: href
            rel: rel
          - href: href
            rel: rel
        page:
          numberOfElements: 0
          page: 5
          pageSize: 5
          totalElements: 6
          totalPages: 1
      properties:
        content:
          items:
            $ref: "#/components/schemas/PayeeInvitationStatusResponseV3"
          type: array
        links:
          items:
            $ref: "#/components/schemas/PagedPayeeResponseV3_links"
          type: array
        page:
          $ref: "#/components/schemas/PagedPayeeInvitationStatusResponseV3_page"
      type: object
    PagedPayeeInvitationStatusResponseV3_page:
      example:
        numberOfElements: 0
        page: 5
        pageSize: 5
        totalElements: 6
        totalPages: 1
      properties:
        numberOfElements:
          type: integer
        page:
          type: integer
        pageSize:
          type: integer
        totalElements:
          type: integer
        totalPages:
          type: integer
    PagedPayeeInvitationStatusResponseV4:
      description: List Payees Invitation Status Object
      example:
        content:
          - gracePeriodEndDate: 2019-01-20T00:00:00.000+0000
            invitationStatus: invitationStatus
            payeeId: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
          - gracePeriodEndDate: 2019-01-20T00:00:00.000+0000
            invitationStatus: invitationStatus
            payeeId: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
        links:
          - href: href
            rel: rel
          - href: href
            rel: rel
        page:
          numberOfElements: 0
          page: 5
          pageSize: 5
          totalElements: 6
          totalPages: 1
      properties:
        content:
          items:
            $ref: "#/components/schemas/PayeeInvitationStatusResponseV4"
          type: array
        links:
          items:
            $ref: "#/components/schemas/PagedPayeeResponseV3_links"
          type: array
        page:
          $ref: "#/components/schemas/PagedPayeeInvitationStatusResponseV3_page"
      type: object
    PagedPayeeResponseV3:
      description: List Payees Response Object
      example:
        content:
          - company:
              name: ABC Group Plc
              operatingName: ABC Co
            country: US
            created: 2019-01-20T09:00:00Z
            disabled: true
            disabledComment: reason for disabled
            disabledUpdatedTimestamp: 2019-01-20T09:00:00Z
            displayName: ABC
            email: bob@example.com
            individual:
              name:
                firstName: Bob
                lastName: Smith
                otherNames: H
                title: Mr
            language: en-US
            onboardedStatus: onboardedStatus
            payeeId: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
            payeeType: payeeType
            payorRefs:
              - invitationStatus: invitationStatus
                invitationStatusTimestamp: 2019-01-20T09:00:00Z
                payableIssues:
                  - code: "3"
                    message: payee-disabled
                  - code: "3"
                    message: payee-disabled
                payableStatus: true
                paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
                payorId: ba08877f-9d96-41e4-9c26-44a872d856ae
                remoteId: uniqueIdForRemoteEntity
              - invitationStatus: invitationStatus
                invitationStatusTimestamp: 2019-01-20T09:00:00Z
                payableIssues:
                  - code: "3"
                    message: payee-disabled
                  - code: "3"
                    message: payee-disabled
                payableStatus: true
                paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
                payorId: ba08877f-9d96-41e4-9c26-44a872d856ae
                remoteId: uniqueIdForRemoteEntity
            watchlistOverrideComment: Example reason for the watchlist status being overridden
            watchlistStatus: watchlistStatus
            watchlistStatusUpdatedTimestamp: 2019-01-20T09:00:00+00:00
          - company:
              name: ABC Group Plc
              operatingName: ABC Co
            country: US
            created: 2019-01-20T09:00:00Z
            disabled: true
            disabledComment: reason for disabled
            disabledUpdatedTimestamp: 2019-01-20T09:00:00Z
            displayName: ABC
            email: bob@example.com
            individual:
              name:
                firstName: Bob
                lastName: Smith
                otherNames: H
                title: Mr
            language: en-US
            onboardedStatus: onboardedStatus
            payeeId: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
            payeeType: payeeType
            payorRefs:
              - invitationStatus: invitationStatus
                invitationStatusTimestamp: 2019-01-20T09:00:00Z
                payableIssues:
                  - code: "3"
                    message: payee-disabled
                  - code: "3"
                    message: payee-disabled
                payableStatus: true
                paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
                payorId: ba08877f-9d96-41e4-9c26-44a872d856ae
                remoteId: uniqueIdForRemoteEntity
              - invitationStatus: invitationStatus
                invitationStatusTimestamp: 2019-01-20T09:00:00Z
                payableIssues:
                  - code: "3"
                    message: payee-disabled
                  - code: "3"
                    message: payee-disabled
                payableStatus: true
                paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
                payorId: ba08877f-9d96-41e4-9c26-44a872d856ae
                remoteId: uniqueIdForRemoteEntity
            watchlistOverrideComment: Example reason for the watchlist status being overridden
            watchlistStatus: watchlistStatus
            watchlistStatusUpdatedTimestamp: 2019-01-20T09:00:00+00:00
        links:
          - href: href
            rel: rel
          - href: href
            rel: rel
        page:
          numberOfElements: 10
          page: 10
          pageSize: 10
          totalElements: 10
          totalPages: 10
        summary:
          totalInvitedCount: 10
          totalOnboardedCount: 10
          totalPayeesCount: 10
          totalRegisteredCount: 10
          totalWatchlistFailedCount: 0
      properties:
        content:
          items:
            $ref: "#/components/schemas/GetPayeeListResponseV3"
          type: array
        links:
          items:
            $ref: "#/components/schemas/PagedPayeeResponseV3_links"
          type: array
        page:
          $ref: "#/components/schemas/PagedPayeeResponseV3_page"
        summary:
          $ref: "#/components/schemas/PagedPayeeResponseV3_summary"
      type: object
    PagedPayeeResponseV3_links:
      example:
        href: href
        rel: rel
      properties:
        href:
          type: string
        rel:
          type: string
    PagedPayeeResponseV3_page:
      example:
        numberOfElements: 10
        page: 10
        pageSize: 10
        totalElements: 10
        totalPages: 10
      properties:
        numberOfElements:
          example: 10
          type: integer
        page:
          example: 10
          type: integer
        pageSize:
          example: 10
          type: integer
        totalElements:
          example: 10
          type: integer
        totalPages:
          example: 10
          type: integer
    PagedPayeeResponseV3_summary:
      example:
        totalInvitedCount: 10
        totalOnboardedCount: 10
        totalPayeesCount: 10
        totalRegisteredCount: 10
        totalWatchlistFailedCount: 0
      properties:
        totalInvitedCount:
          example: 10
          type: integer
        totalOnboardedCount:
          example: 10
          type: integer
        totalPayeesCount:
          example: 10
          type: integer
        totalRegisteredCount:
          example: 10
          type: integer
        totalWatchlistFailedCount:
          example: 0
          type: integer
    PagedPayeeResponseV4:
      description: List Payees Response Object
      example:
        content:
          - company:
              name: ABC Group Plc
              operatingName: ABC Co
            country: US
            created: 2019-01-20T09:00:00Z
            disabled: true
            disabledComment: reason for disabled
            disabledUpdatedTimestamp: 2019-01-20T09:00:00Z
            displayName: ABC
            email: bob@example.com
            individual:
              name:
                firstName: Bob
                lastName: Smith
                otherNames: H
                title: Mr
            language: en-US
            onboardedStatus: onboardedStatus
            payeeId: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
            payeeType: payeeType
            payorRefs:
              - invitationStatus: invitationStatus
                invitationStatusTimestamp: 2019-01-20T09:00:00Z
                payableIssues:
                  - code: "3"
                    message: payee-disabled
                  - code: "3"
                    message: payee-disabled
                payableStatus: true
                paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
                payorId: ba08877f-9d96-41e4-9c26-44a872d856ae
                remoteId: uniqueIdForRemoteEntity
              - invitationStatus: invitationStatus
                invitationStatusTimestamp: 2019-01-20T09:00:00Z
                payableIssues:
                  - code: "3"
                    message: payee-disabled
                  - code: "3"
                    message: payee-disabled
                payableStatus: true
                paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
                payorId: ba08877f-9d96-41e4-9c26-44a872d856ae
                remoteId: uniqueIdForRemoteEntity
            watchlistOverrideComment: Example reason for the watchlist status being overridden
            watchlistStatus: watchlistStatus
            watchlistStatusUpdatedTimestamp: 2019-01-20T09:00:00+00:00
          - company:
              name: ABC Group Plc
              operatingName: ABC Co
            country: US
            created: 2019-01-20T09:00:00Z
            disabled: true
            disabledComment: reason for disabled
            disabledUpdatedTimestamp: 2019-01-20T09:00:00Z
            displayName: ABC
            email: bob@example.com
            individual:
              name:
                firstName: Bob
                lastName: Smith
                otherNames: H
                title: Mr
            language: en-US
            onboardedStatus: onboardedStatus
            payeeId: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
            payeeType: payeeType
            payorRefs:
              - invitationStatus: invitationStatus
                invitationStatusTimestamp: 2019-01-20T09:00:00Z
                payableIssues:
                  - code: "3"
                    message: payee-disabled
                  - code: "3"
                    message: payee-disabled
                payableStatus: true
                paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
                payorId: ba08877f-9d96-41e4-9c26-44a872d856ae
                remoteId: uniqueIdForRemoteEntity
              - invitationStatus: invitationStatus
                invitationStatusTimestamp: 2019-01-20T09:00:00Z
                payableIssues:
                  - code: "3"
                    message: payee-disabled
                  - code: "3"
                    message: payee-disabled
                payableStatus: true
                paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
                payorId: ba08877f-9d96-41e4-9c26-44a872d856ae
                remoteId: uniqueIdForRemoteEntity
            watchlistOverrideComment: Example reason for the watchlist status being overridden
            watchlistStatus: watchlistStatus
            watchlistStatusUpdatedTimestamp: 2019-01-20T09:00:00+00:00
        links:
          - href: href
            rel: rel
          - href: href
            rel: rel
        page:
          numberOfElements: 10
          page: 10
          pageSize: 10
          totalElements: 10
          totalPages: 10
        summary:
          totalInvitedCount: 10
          totalOnboardedCount: 10
          totalPayeesCount: 10
          totalRegisteredCount: 10
          totalWatchlistFailedCount: 0
      properties:
        content:
          items:
            $ref: "#/components/schemas/GetPayeeListResponseV4"
          type: array
        links:
          items:
            $ref: "#/components/schemas/PagedPayeeResponseV3_links"
          type: array
        page:
          $ref: "#/components/schemas/PagedPayeeResponseV3_page"
        summary:
          $ref: "#/components/schemas/PagedPayeeResponseV3_summary"
      type: object
    PagedPaymentsResponseV3:
      description: List Payees Response Object
      example:
        content:
          - amount: 10000
            autoWithdrawnReasonCode: VE0003
            currency: USD
            payee:
              company:
                companyName: ACME Anvils PLC
              individual:
                name:
                  firstName: Fred
                  lastName: Flintstone
              payeeId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            paymentId: 859af785-223b-4d5b-a708-5fa57f006dbb
            paymentMemo: INV00112
            paymentMetadata: invoiceeId_123|abc001:12345|xyz002:4567
            payorPaymentId: 123211321ABSD
            railsId: SVB
            remoteId: remoteIdVal123
            remoteSystemId: OB012
            sourceAccountName: Chase Bank Account
            status: AWAITING_FUNDS
            transmissionType: LOCAL
            withdrawable: false
          - amount: 10000
            autoWithdrawnReasonCode: VE0003
            currency: USD
            payee:
              company:
                companyName: ACME Anvils PLC
              individual:
                name:
                  firstName: Fred
                  lastName: Flintstone
              payeeId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            paymentId: 859af785-223b-4d5b-a708-5fa57f006dbb
            paymentMemo: INV00112
            paymentMetadata: invoiceeId_123|abc001:12345|xyz002:4567
            payorPaymentId: 123211321ABSD
            railsId: SVB
            remoteId: remoteIdVal123
            remoteSystemId: OB012
            sourceAccountName: Chase Bank Account
            status: AWAITING_FUNDS
            transmissionType: LOCAL
            withdrawable: false
        links:
          - href: href
            rel: rel
          - href: href
            rel: rel
        page:
          numberOfElements: 0
          page: 5
          pageSize: 5
          totalElements: 6
          totalPages: 1
      properties:
        content:
          items:
            $ref: "#/components/schemas/PaymentV3"
          type: array
        links:
          items:
            $ref: "#/components/schemas/PagedPayeeResponseV3_links"
          type: array
        page:
          $ref: "#/components/schemas/PagedPayeeInvitationStatusResponseV3_page"
      type: object
    PagedUserResponse:
      description: List Users Response Object
      example:
        content:
          - companyName: Acme Corp
            email: foo@example.com
            entityId: 7fffa261-ac68-49e6-b605-d24a444d9206
            firstName: John
            id: 8bbf301c-948f-4445-b411-357eec53e441
            lastName: Doe
            lockedOut: true
            lockedOutTimestamp: 2000-01-23T04:56:07.000+00:00
            mfaStatus: REGISTERED
            mfaType: TOTP
            primaryContactNumber: "11235555555"
            roles:
              - payor.admin
            secondaryContactNumber: "11235555550"
            smsNumber: "11235555555"
            status: ENABLED
            userType: PAYOR
          - companyName: Acme Corp
            email: foo@example.com
            entityId: 7fffa261-ac68-49e6-b605-d24a444d9206
            firstName: John
            id: 8bbf301c-948f-4445-b411-357eec53e441
            lastName: Doe
            lockedOut: true
            lockedOutTimestamp: 2000-01-23T04:56:07.000+00:00
            mfaStatus: REGISTERED
            mfaType: TOTP
            primaryContactNumber: "11235555555"
            roles:
              - payor.admin
            secondaryContactNumber: "11235555550"
            smsNumber: "11235555555"
            status: ENABLED
            userType: PAYOR
        links:
          - href: https://api.sandbox.velopayments.com/v2/users??type=PAYOR&page=1&pageSize=10
            rel: first
          - href: https://api.sandbox.velopayments.com/v2/users??type=PAYOR&page=1&pageSize=10
            rel: first
        page:
          numberOfElements: 12
          page: 1
          pageSize: 25
          totalElements: 33
          totalPages: 2
      properties:
        content:
          items:
            $ref: "#/components/schemas/UserResponse"
          type: array
        links:
          items:
            $ref: "#/components/schemas/PagedUserResponse_links"
          type: array
        page:
          $ref: "#/components/schemas/PagedUserResponse_page"
      type: object
    PagedUserResponse_links:
      example:
        href: https://api.sandbox.velopayments.com/v2/users??type=PAYOR&page=1&pageSize=10
        rel: first
      properties:
        href:
          example: https://api.sandbox.velopayments.com/v2/users??type=PAYOR&page=1&pageSize=10
          type: string
        rel:
          example: first
          type: string
    PagedUserResponse_page:
      example:
        numberOfElements: 12
        page: 1
        pageSize: 25
        totalElements: 33
        totalPages: 2
      properties:
        numberOfElements:
          example: 12
          type: integer
        page:
          example: 1
          type: integer
        pageSize:
          example: 25
          type: integer
        totalElements:
          example: 33
          type: integer
        totalPages:
          example: 2
          type: integer
    PasswordRequest:
      example:
        password: My_strong_password
      properties:
        password:
          description: a password that passes validation
          example: My_strong_password
          maxLength: 128
          minLength: 8
          type: string
      required:
        - password
      type: object
    PayableIssueV3:
      description: payable issues for the payee and payor combination
      example:
        code: "3"
        message: payee-disabled
      properties:
        code:
          example: "3"
          type: string
        message:
          example: payee-disabled
          type: string
      required:
        - code
        - message
      type: object
    PayableIssueV4:
      description: payable issues for the payee and payor combination
      example:
        code: "3"
        message: payee-disabled
      properties:
        code:
          example: "3"
          type: string
        message:
          example: payee-disabled
          type: string
      required:
        - code
        - message
      type: object
    PayableStatusChanged:
      allOf:
        - $ref: "#/components/schemas/PayeeEvent"
        - type: object
      description: Base type for all payable status changed events
    PayeeAddressV3:
      example:
        city: Key West
        country: US
        countyOrProvince: FL
        line1: 500 Duval St
        line2: line2
        line3: line3
        line4: line4
        zipOrPostcode: "33945"
      properties:
        city:
          example: Key West
          maxLength: 100
          minLength: 2
          nullable: false
          type: string
        country:
          description: Valid ISO 3166 2 character country code. See the <a href="https://www.iso.org/iso-3166-country-codes.html" target="_blank" a>ISO specification</a> for details.
          example: US
          maxLength: 2
          minLength: 2
          pattern: ^[A-Z]{2}$
          title: ISO 3166 2 Character Country Code
          type: string
        countyOrProvince:
          example: FL
          maxLength: 100
          minLength: 2
          nullable: true
          type: string
        line1:
          example: 500 Duval St
          maxLength: 255
          minLength: 2
          nullable: false
          type: string
        line2:
          maxLength: 255
          minLength: 0
          nullable: true
          type: string
        line3:
          maxLength: 255
          minLength: 0
          nullable: true
          type: string
        line4:
          maxLength: 255
          minLength: 0
          nullable: true
          type: string
        zipOrPostcode:
          example: "33945"
          maxLength: 30
          minLength: 2
          nullable: true
          type: string
      required:
        - city
        - country
        - line1
      type: object
    PayeeAddressV4:
      example:
        city: Key West
        country: US
        countyOrProvince: FL
        line1: 500 Duval St
        line2: line2
        line3: line3
        line4: line4
        zipOrPostcode: "33945"
      properties:
        city:
          example: Key West
          maxLength: 100
          minLength: 2
          nullable: false
          type: string
        country:
          example: US
          maxLength: 50
          minLength: 2
          nullable: false
          type: string
        countyOrProvince:
          example: FL
          maxLength: 100
          minLength: 2
          nullable: true
          type: string
        line1:
          example: 500 Duval St
          maxLength: 255
          minLength: 2
          nullable: false
          type: string
        line2:
          maxLength: 255
          minLength: 0
          nullable: true
          type: string
        line3:
          maxLength: 255
          minLength: 0
          nullable: true
          type: string
        line4:
          maxLength: 255
          minLength: 0
          nullable: true
          type: string
        zipOrPostcode:
          example: "33945"
          maxLength: 30
          minLength: 2
          nullable: true
          type: string
      required:
        - city
        - country
        - line1
      type: object
    PayeeDeltaResponseV3:
      description: List Payee Changes Response Object
      example:
        content:
          - dbaName: Payee DBA Name
            displayName: Payee1
            email: payee1@example.com
            onboardedStatus: onboardedStatus
            payeeCountry: US
            payeeId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            remoteId: payee_1
          - dbaName: Payee DBA Name
            displayName: Payee1
            email: payee1@example.com
            onboardedStatus: onboardedStatus
            payeeCountry: US
            payeeId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            remoteId: payee_1
        links:
          - href: http://api.sandbox.velopayments.com/v3/payees/deltas?payorId=0a818933-087d-47f2-ad83-2f986ed087eb&updatedSince=2019-01-20T09:00:00+00:00&page=1&pageSize=1000
            rel: first
          - href: http://api.sandbox.velopayments.com/v3/payees/deltas?payorId=0a818933-087d-47f2-ad83-2f986ed087eb&updatedSince=2019-01-20T09:00:00+00:00&page=1&pageSize=1000
            rel: first
        page:
          numberOfElements: 2
          page: 1
          pageSize: 25
          totalElements: 2
          totalPages: 1
      properties:
        content:
          items:
            $ref: "#/components/schemas/PayeeDeltaV3"
          type: array
        links:
          items:
            $ref: "#/components/schemas/PayeeDeltaResponseV3_links"
          type: array
        page:
          $ref: "#/components/schemas/PayeeDeltaResponseV3_page"
      type: object
    PayeeDeltaResponseV3_links:
      example:
        href: http://api.sandbox.velopayments.com/v3/payees/deltas?payorId=0a818933-087d-47f2-ad83-2f986ed087eb&updatedSince=2019-01-20T09:00:00+00:00&page=1&pageSize=1000
        rel: first
      properties:
        href:
          example: http://api.sandbox.velopayments.com/v3/payees/deltas?payorId=0a818933-087d-47f2-ad83-2f986ed087eb&updatedSince=2019-01-20T09:00:00+00:00&page=1&pageSize=1000
          type: string
        rel:
          example: first
          type: string
    PayeeDeltaResponseV3_page:
      example:
        numberOfElements: 2
        page: 1
        pageSize: 25
        totalElements: 2
        totalPages: 1
      properties:
        numberOfElements:
          example: 2
          type: integer
        page:
          example: 1
          type: integer
        pageSize:
          example: 25
          type: integer
        totalElements:
          example: 2
          type: integer
        totalPages:
          example: 1
          type: integer
    PayeeDeltaResponseV4:
      description: List Payee Changes Response Object
      example:
        content:
          - dbaName: Payee DBA Name
            displayName: Payee1
            email: payee1@example.com
            onboardedStatus: onboardedStatus
            payeeCountry: US
            payeeId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            remoteId: payee_1
          - dbaName: Payee DBA Name
            displayName: Payee1
            email: payee1@example.com
            onboardedStatus: onboardedStatus
            payeeCountry: US
            payeeId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            remoteId: payee_1
        links:
          - href: http://api.sandbox.velopayments.com/v4/payees/deltas?payorId=0a818933-087d-47f2-ad83-2f986ed087eb&updatedSince=2019-01-20T09:00:00+00:00&page=1&pageSize=1000
            rel: first
          - href: http://api.sandbox.velopayments.com/v4/payees/deltas?payorId=0a818933-087d-47f2-ad83-2f986ed087eb&updatedSince=2019-01-20T09:00:00+00:00&page=1&pageSize=1000
            rel: first
        page:
          numberOfElements: 2
          page: 1
          pageSize: 25
          totalElements: 2
          totalPages: 1
      properties:
        content:
          items:
            $ref: "#/components/schemas/PayeeDeltaV4"
          type: array
        links:
          items:
            $ref: "#/components/schemas/PayeeDeltaResponseV4_links"
          type: array
        page:
          $ref: "#/components/schemas/PayeeDeltaResponseV3_page"
      type: object
    PayeeDeltaResponseV4_links:
      example:
        href: http://api.sandbox.velopayments.com/v4/payees/deltas?payorId=0a818933-087d-47f2-ad83-2f986ed087eb&updatedSince=2019-01-20T09:00:00+00:00&page=1&pageSize=1000
        rel: first
      properties:
        href:
          example: http://api.sandbox.velopayments.com/v4/payees/deltas?payorId=0a818933-087d-47f2-ad83-2f986ed087eb&updatedSince=2019-01-20T09:00:00+00:00&page=1&pageSize=1000
          type: string
        rel:
          example: first
          type: string
    PayeeDeltaV3:
      example:
        dbaName: Payee DBA Name
        displayName: Payee1
        email: payee1@example.com
        onboardedStatus: onboardedStatus
        payeeCountry: US
        payeeId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        remoteId: payee_1
      properties:
        dbaName:
          example: Payee DBA Name
          type: string
        displayName:
          example: Payee1
          type: string
        email:
          example: payee1@example.com
          format: email
          nullable: true
          type: string
        onboardedStatus:
          description: "Onboarded status. One of the following values: CREATED, INVITED, REGISTERED, ONBOARDED"
          type: string
        payeeCountry:
          example: US
          type: string
        payeeId:
          format: uuid
          readOnly: true
          type: string
        remoteId:
          example: payee_1
          maxLength: 100
          minLength: 1
          type: string
      required:
        - payeeId
        - remoteId
      type: object
    PayeeDeltaV4:
      example:
        dbaName: Payee DBA Name
        displayName: Payee1
        email: payee1@example.com
        onboardedStatus: onboardedStatus
        payeeCountry: US
        payeeId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        remoteId: payee_1
      properties:
        dbaName:
          example: Payee DBA Name
          type: string
        displayName:
          example: Payee1
          type: string
        email:
          example: payee1@example.com
          format: email
          nullable: true
          type: string
        onboardedStatus:
          description: "Payee onboarded status. One of the following value: CREATED, INVITED, REGISTERED, ONBOARDED"
          type: string
        payeeCountry:
          description: Valid ISO 3166 2 character country code. See the <a href="https://www.iso.org/iso-3166-country-codes.html" target="_blank" a>ISO specification</a> for details.
          example: US
          maxLength: 2
          minLength: 2
          pattern: ^[A-Z]{2}$
          title: ISO 3166 2 Character Country Code
          type: string
        payeeId:
          format: uuid
          readOnly: true
          type: string
        remoteId:
          example: payee_1
          maxLength: 100
          minLength: 1
          type: string
      required:
        - payeeId
        - remoteId
      type: object
    PayeeDetailResponseV3:
      example:
        acceptTermsAndConditionsTimestamp: 2019-01-20T09:00:00Z
        address:
          city: Key West
          country: US
          countyOrProvince: FL
          line1: 500 Duval St
          line2: line2
          line3: line3
          line4: line4
          zipOrPostcode: "33945"
        cellphoneNumber: "1234567890"
        challenge:
          description: challenge description
          value: challenge test
        company:
          name: ABC Group Plc
          operatingName: ABC Co
          taxId: "123123123"
        country: US
        created: 2019-01-20T09:00:00Z
        disabled: true
        disabledComment: reason for disabled
        disabledUpdatedTimestamp: 2019-01-20T09:00:00Z
        displayName: Bob
        email: bob@example.com
        enhancedKycCompleted: true
        gracePeriodEndDate: 2019-01-20T00:00:00.000+0000
        individual:
          dateOfBirth: 1985-01-01
          name:
            firstName: Bob
            lastName: Smith
            otherNames: A
            title: Mr
          nationalIdentification: AB123456C
        kycCompletedTimestamp: 2019-01-20T09:00:00+00:00
        language: en-US
        marketingOptInDecision: true
        marketingOptInTimestamp: 2019-01-20T09:00:00+00:00
        onboardedStatus: onboardedStatus
        pausePayment: true
        pausePaymentTimestamp: 2019-01-20T09:00:00+00:00
        payeeId: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
        payeeType: payeeType
        payorRefs:
          - invitationStatus: invitationStatus
            invitationStatusTimestamp: 2019-01-20T09:00:00Z
            payableIssues:
              - code: "3"
                message: payee-disabled
              - code: "3"
                message: payee-disabled
            payableStatus: true
            paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
            payorId: ba08877f-9d96-41e4-9c26-44a872d856ae
            remoteId: uniqueIdForRemoteEntity
          - invitationStatus: invitationStatus
            invitationStatusTimestamp: 2019-01-20T09:00:00Z
            payableIssues:
              - code: "3"
                message: payee-disabled
              - code: "3"
                message: payee-disabled
            payableStatus: true
            paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
            payorId: ba08877f-9d96-41e4-9c26-44a872d856ae
            remoteId: uniqueIdForRemoteEntity
        watchlistOverrideComment: watchlist override comment
        watchlistOverrideExpiresAtTimestamp: 2019-01-20T09:00:00Z
        watchlistStatus: watchlistStatus
        watchlistStatusUpdatedTimestamp: 2019-01-20T09:00:00+00:00
      properties:
        acceptTermsAndConditionsTimestamp:
          description: The timestamp when the payee last accepted T&Cs
          example: 2019-01-20T09:00:00Z
          format: date-time
          nullable: true
          readOnly: true
          type: string
        address:
          $ref: "#/components/schemas/PayeeAddressV3"
        cellphoneNumber:
          example: "1234567890"
          type: string
        challenge:
          $ref: "#/components/schemas/ChallengeV3"
        company:
          $ref: "#/components/schemas/CompanyV3"
        country:
          description: Valid ISO 3166 2 character country code. See the <a href="https://www.iso.org/iso-3166-country-codes.html" target="_blank" a>ISO specification</a> for details.
          example: US
          maxLength: 2
          minLength: 2
          pattern: ^[A-Z]{2}$
          title: ISO 3166 2 Character Country Code
          type: string
        created:
          example: 2019-01-20T09:00:00Z
          format: date-time
          type: string
        disabled:
          type: boolean
        disabledComment:
          example: reason for disabled
          type: string
        disabledUpdatedTimestamp:
          example: 2019-01-20T09:00:00Z
          format: date-time
          type: string
        displayName:
          example: Bob
          type: string
        email:
          example: bob@example.com
          format: email
          nullable: true
          type: string
        enhancedKycCompleted:
          type: boolean
        gracePeriodEndDate:
          example: 2019-01-20
          format: date
          nullable: true
          readOnly: true
          type: string
        individual:
          $ref: "#/components/schemas/IndividualV3"
        kycCompletedTimestamp:
          example: 2019-01-20T09:00:00+00:00
          format: date_time
          nullable: true
          type: string
        language:
          description: |
            An IETF BCP 47 language code which has been configured for use within this Velo environment.<BR>
            See the /v1/supportedLanguages endpoint to list the available codes for an environment.
          example: en-US
          type: string
        marketingOptInDecision:
          type: boolean
        marketingOptInTimestamp:
          example: 2019-01-20T09:00:00+00:00
          format: date_time
          nullable: true
          type: string
        onboardedStatus:
          description: "Onboarded status. One of the following values: CREATED, INVITED, REGISTERED, ONBOARDED"
          type: string
        pausePayment:
          type: boolean
        pausePaymentTimestamp:
          example: 2019-01-20T09:00:00+00:00
          format: date_time
          nullable: true
          type: string
        payeeId:
          example: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
          format: uuid
          readOnly: true
          type: string
        payeeType:
          description: "Type of Payee. One of the following values: Individual, Company"
          type: string
        payorRefs:
          items:
            $ref: "#/components/schemas/PayeePayorRefV3"
          nullable: true
          readOnly: true
          type: array
        watchlistOverrideComment:
          example: watchlist override comment
          type: string
        watchlistOverrideExpiresAtTimestamp:
          example: 2019-01-20T09:00:00Z
          format: date-time
          nullable: true
          type: string
        watchlistStatus:
          description: "Current watchlist status. One of the following values: NONE, PENDING, REVIEW, PASSED, FAILED"
          type: string
        watchlistStatusUpdatedTimestamp:
          example: 2019-01-20T09:00:00+00:00
          format: date_time
          nullable: true
          readOnly: true
          type: string
      type: object
    PayeeDetailResponseV4:
      example:
        acceptTermsAndConditionsTimestamp: 2019-01-20T09:00:00Z
        address:
          city: Key West
          country: US
          countyOrProvince: FL
          line1: 500 Duval St
          line2: line2
          line3: line3
          line4: line4
          zipOrPostcode: "33945"
        cellphoneNumber: "1234567890"
        challenge:
          description: challenge description
          value: "11984567"
        company:
          name: ABC Group Plc
          operatingName: ABC Co
          taxId: "123123123"
        country: US
        created: 2019-01-20T09:00:00Z
        disabled: true
        disabledComment: reason for disabled
        disabledUpdatedTimestamp: 2019-01-20T09:00:00Z
        displayName: Bob
        email: bob@example.com
        enhancedKycCompleted: true
        gracePeriodEndDate: 2019-01-20T00:00:00.000+0000
        individual:
          dateOfBirth: 1985-01-01
          name:
            firstName: Bob
            lastName: Smith
            otherNames: A
            title: Mr
          nationalIdentification: AB123456C
        kycCompletedTimestamp: 2019-01-20T09:00:00+00:00
        language: en-US
        marketingOptInDecision: true
        marketingOptInTimestamp: 2019-01-20T09:00:00+00:00
        onboardedStatus: onboardedStatus
        pausePayment: true
        pausePaymentTimestamp: 2019-01-20T09:00:00+00:00
        payeeId: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
        payeeType: payeeType
        payorRefs:
          - invitationStatus: invitationStatus
            invitationStatusTimestamp: 2019-01-20T09:00:00Z
            payableIssues:
              - code: "3"
                message: payee-disabled
              - code: "3"
                message: payee-disabled
            payableStatus: true
            paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
            payorId: ba08877f-9d96-41e4-9c26-44a872d856ae
            remoteId: uniqueIdForRemoteEntity
          - invitationStatus: invitationStatus
            invitationStatusTimestamp: 2019-01-20T09:00:00Z
            payableIssues:
              - code: "3"
                message: payee-disabled
              - code: "3"
                message: payee-disabled
            payableStatus: true
            paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
            payorId: ba08877f-9d96-41e4-9c26-44a872d856ae
            remoteId: uniqueIdForRemoteEntity
        watchlistOverrideComment: watchlist override comment
        watchlistOverrideExpiresAtTimestamp: 2019-01-20T09:00:00Z
        watchlistStatus: watchlistStatus
        watchlistStatusUpdatedTimestamp: 2019-01-20T09:00:00+00:00
      properties:
        acceptTermsAndConditionsTimestamp:
          description: The timestamp when the payee last accepted T&Cs
          example: 2019-01-20T09:00:00Z
          format: date-time
          nullable: true
          readOnly: true
          type: string
        address:
          $ref: "#/components/schemas/PayeeAddressV4"
        cellphoneNumber:
          example: "1234567890"
          type: string
        challenge:
          $ref: "#/components/schemas/ChallengeV4"
        company:
          $ref: "#/components/schemas/CompanyV4"
        country:
          example: US
          type: string
        created:
          example: 2019-01-20T09:00:00Z
          format: date-time
          type: string
        disabled:
          type: boolean
        disabledComment:
          example: reason for disabled
          type: string
        disabledUpdatedTimestamp:
          example: 2019-01-20T09:00:00Z
          format: date-time
          type: string
        displayName:
          example: Bob
          type: string
        email:
          example: bob@example.com
          format: email
          nullable: true
          type: string
        enhancedKycCompleted:
          type: boolean
        gracePeriodEndDate:
          example: 2019-01-20
          format: date
          nullable: true
          readOnly: true
          type: string
        individual:
          $ref: "#/components/schemas/IndividualV4"
        kycCompletedTimestamp:
          example: 2019-01-20T09:00:00+00:00
          format: date_time
          nullable: true
          type: string
        language:
          description: |
            An IETF BCP 47 language code which has been configured for use within this Velo environment.<BR>
            See the /v1/supportedLanguages endpoint to list the available codes for an environment.
          example: en-US
          type: string
        marketingOptInDecision:
          type: boolean
        marketingOptInTimestamp:
          example: 2019-01-20T09:00:00+00:00
          format: date_time
          nullable: true
          type: string
        onboardedStatus:
          description: "Payee onboarded status. One of the following values: CREATED, INVITED, REGISTERED, ONBOARDED"
          type: string
        pausePayment:
          type: boolean
        pausePaymentTimestamp:
          example: 2019-01-20T09:00:00+00:00
          format: date_time
          nullable: true
          type: string
        payeeId:
          example: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
          format: uuid
          readOnly: true
          type: string
        payeeType:
          description: "Type of Payee. One of the following values: Individual, Company"
          type: string
        payorRefs:
          items:
            $ref: "#/components/schemas/PayeePayorRefV4"
          nullable: true
          readOnly: true
          type: array
        watchlistOverrideComment:
          example: watchlist override comment
          type: string
        watchlistOverrideExpiresAtTimestamp:
          example: 2019-01-20T09:00:00Z
          format: date-time
          nullable: true
          type: string
        watchlistStatus:
          description: "Current watchlist status. One of the following values: NONE, PENDING, REVIEW, PASSED, FAILED"
          type: string
        watchlistStatusUpdatedTimestamp:
          example: 2019-01-20T09:00:00+00:00
          format: date_time
          nullable: true
          readOnly: true
          type: string
      type: object
    PayeeDetailsChanged:
      allOf:
        - $ref: "#/components/schemas/PayeeEvent"
        - type: object
      description: Base type for all payee details changed events
    PayeeEvent:
      allOf:
        - $ref: "#/components/schemas/SourceEvent"
        - $ref: "#/components/schemas/PayeeEvent_allOf"
      description: Base type for all Payee Events
    PayeeEvent_allOf:
      properties:
        payeeId:
          description: ID of this payee within the Velo platform
          example: cbd9280f-8fde-4190-b014-979d88f3ec54
          format: uuid
          type: string
        reasons:
          description: The reasons for the event notification.
          items:
            $ref: "#/components/schemas/PayeeEvent_allOf_reasons"
          type: array
      required:
        - payeeId
    PayeeEvent_allOf_reasons:
      properties:
        code:
          example: "00001"
          type: string
        message:
          example: payment channel disabled
          type: string
      required:
        - code
        - message
    PayeeInvitationStatusResponseV3:
      example:
        gracePeriodEndDate: 2019-01-20T00:00:00.000+0000
        invitationStatus: invitationStatus
        payeeId: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
      properties:
        gracePeriodEndDate:
          example: 2019-01-20
          format: date
          type: string
        invitationStatus:
          description: "Payee invitation status. One of the following values: ACCEPTED, PENDING, DECLINED"
          type: string
        payeeId:
          example: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
          format: uuid
          type: string
      required:
        - invitationStatus
        - payeeId
      type: object
    PayeeInvitationStatusResponseV4:
      example:
        gracePeriodEndDate: 2019-01-20T00:00:00.000+0000
        invitationStatus: invitationStatus
        payeeId: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
      properties:
        gracePeriodEndDate:
          example: 2019-01-20
          format: date
          type: string
        invitationStatus:
          description: "Payee invitation status. One of the following values: ACCEPTED, PENDING, DECLINED"
          type: string
        payeeId:
          example: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
          format: uuid
          type: string
      required:
        - invitationStatus
        - payeeId
      type: object
    PayeePayorRefV3:
      example:
        invitationStatus: invitationStatus
        invitationStatusTimestamp: 2019-01-20T09:00:00Z
        payableIssues:
          - code: "3"
            message: payee-disabled
          - code: "3"
            message: payee-disabled
        payableStatus: true
        paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
        payorId: ba08877f-9d96-41e4-9c26-44a872d856ae
        remoteId: uniqueIdForRemoteEntity
      properties:
        invitationStatus:
          type: string
        invitationStatusTimestamp:
          description: The timestamp when the invitation status is updated
          example: 2019-01-20T09:00:00Z
          format: date-time
          nullable: true
          type: string
        payableIssues:
          description: Indicates any conditions which prevent the payee from being payable for this payor
          items:
            $ref: "#/components/schemas/PayableIssueV3"
          type: array
        payableStatus:
          description: Indicates if the payee is payable for this payor
          type: boolean
        paymentChannelId:
          example: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
          format: uuid
          type: string
        payorId:
          example: ba08877f-9d96-41e4-9c26-44a872d856ae
          format: uuid
          type: string
        remoteId:
          example: uniqueIdForRemoteEntity
          type: string
      type: object
    PayeePayorRefV4:
      example:
        invitationStatus: invitationStatus
        invitationStatusTimestamp: 2019-01-20T09:00:00Z
        payableIssues:
          - code: "3"
            message: payee-disabled
          - code: "3"
            message: payee-disabled
        payableStatus: true
        paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
        payorId: ba08877f-9d96-41e4-9c26-44a872d856ae
        remoteId: uniqueIdForRemoteEntity
      properties:
        invitationStatus:
          type: string
        invitationStatusTimestamp:
          description: The timestamp when the invitation status is updated
          example: 2019-01-20T09:00:00Z
          format: date-time
          nullable: true
          type: string
        payableIssues:
          description: Indicates any conditions which prevent the payee from being payable for this payor
          items:
            $ref: "#/components/schemas/PayableIssueV4"
          type: array
        payableStatus:
          description: Indicates if the payee is payable for this payor
          type: boolean
        paymentChannelId:
          example: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
          format: uuid
          type: string
        payorId:
          example: ba08877f-9d96-41e4-9c26-44a872d856ae
          format: uuid
          type: string
        remoteId:
          example: uniqueIdForRemoteEntity
          type: string
      type: object
    PayeeType:
      enum:
        - COMPANY
        - INDIVIDUAL
      example: COMPANY
      type: string
    PayeeTypeEnum:
      description: The type of the payee
      enum:
        - Individual
        - Company
      type: string
    PayeeType_2:
      description: "Type of Payee. One of the following values: Individual, Company"
      type: string
    PayeeUserSelfUpdateRequest:
      description: |
        <p>All properties are optional</p>
        <p>Only provided properties will be updated</p>
        <p>Use null to null out a property that is allowed to be nullable</p>
      example:
        email: foo@example.com
        firstName: John
        lastName: Doe
        primaryContactNumber: "11235555555"
        secondaryContactNumber: "11235555550"
        smsNumber: "11235555555"
      properties:
        email:
          description: the email address of the user
          example: foo@example.com
          format: email
          nullable: true
          type: string
        firstName:
          example: John
          maxLength: 128
          minLength: 1
          nullable: true
          type: string
        lastName:
          example: Doe
          maxLength: 128
          minLength: 1
          nullable: true
          type: string
        primaryContactNumber:
          description: |
            The main contact number for the user
          example: "11235555555"
          nullable: true
          pattern: ^\+[1-9]\d{1,14}$
          type: string
        secondaryContactNumber:
          description: |
            The secondary contact number for the user
          example: "11235555550"
          nullable: true
          pattern: ^\+[1-9]\d{1,14}$
          type: string
        smsNumber:
          description: |
            The phone number of a device that the user can receive sms messages on
          example: "11235555555"
          nullable: true
          pattern: ^\+[1-9]\d{1,14}$
          type: string
      type: object
    PaymentAuditCurrency:
      description: ISO-4217 3 character currency code
      example: EUR
      maxLength: 3
      minLength: 3
      type: string
    PaymentAuditCurrencyV3:
      description: ISO 3 character currency code
      maxLength: 3
      minLength: 3
      type: string
    PaymentChannelCountry:
      example:
        isoCountryCode: US
        rules:
          - description: The bank branch, account number prefix and account number suffix; with hyphen separators.
            displayName: Account Name
            displayOrder: 0
            element: accountName
            maxLength: 50
            minLength: 5
            required: true
            validation: ^[0-9]{6,11}$
          - description: The bank branch, account number prefix and account number suffix; with hyphen separators.
            displayName: Account Name
            displayOrder: 0
            element: accountName
            maxLength: 50
            minLength: 5
            required: true
            validation: ^[0-9]{6,11}$
      properties:
        isoCountryCode:
          description: The ISO code for the country
          example: US
          type: string
        rules:
          description: The rules for the given country
          items:
            $ref: "#/components/schemas/PaymentChannelRule"
          type: array
      required:
        - isoCountryCode
        - rules
      type: object
    PaymentChannelRule:
      description: Rules that will get applied when creating or updating a payment channel for the given country
      example:
        description: The bank branch, account number prefix and account number suffix; with hyphen separators.
        displayName: Account Name
        displayOrder: 0
        element: accountName
        maxLength: 50
        minLength: 5
        required: true
        validation: ^[0-9]{6,11}$
      properties:
        description:
          description: An optional description, or hint, as to how the user should enter the field value.
          example: The bank branch, account number prefix and account number suffix; with hyphen separators.
          type: string
        displayName:
          description: User friendly name
          example: Account Name
          type: string
        displayOrder:
          type: integer
        element:
          description: |
            <p>the rule element</p>
            <p>will match a given element name for a payment channel configuration
          example: accountName
          type: string
        maxLength:
          description: maximum length of the element data
          example: 50
          type: integer
        minLength:
          description: mininum length of the element data
          example: 5
          type: integer
        required:
          description: is this element required
          type: boolean
        validation:
          description: a regex to validate the element data
          example: ^[0-9]{6,11}$
          type: string
      required:
        - displayName
        - element
        - required
        - validation
      type: object
    PaymentChannelRulesResponse:
      example:
        bank:
          - isoCountryCode: US
            rules:
              - description: The bank branch, account number prefix and account number suffix; with hyphen separators.
                displayName: Account Name
                displayOrder: 0
                element: accountName
                maxLength: 50
                minLength: 5
                required: true
                validation: ^[0-9]{6,11}$
              - description: The bank branch, account number prefix and account number suffix; with hyphen separators.
                displayName: Account Name
                displayOrder: 0
                element: accountName
                maxLength: 50
                minLength: 5
                required: true
                validation: ^[0-9]{6,11}$
          - isoCountryCode: US
            rules:
              - description: The bank branch, account number prefix and account number suffix; with hyphen separators.
                displayName: Account Name
                displayOrder: 0
                element: accountName
                maxLength: 50
                minLength: 5
                required: true
                validation: ^[0-9]{6,11}$
              - description: The bank branch, account number prefix and account number suffix; with hyphen separators.
                displayName: Account Name
                displayOrder: 0
                element: accountName
                maxLength: 50
                minLength: 5
                required: true
                validation: ^[0-9]{6,11}$
      properties:
        bank:
          items:
            $ref: "#/components/schemas/PaymentChannelCountry"
          type: array
      type: object
    PaymentDelta:
      example:
        paymentAmount: 0
        paymentCurrency: paymentCurrency
        paymentId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        payorPaymentId: payorPaymentId
        payoutId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        sourceAmount: 6
        sourceCurrency: sourceCurrency
        status: status
      properties:
        paymentAmount:
          nullable: true
          type: integer
        paymentCurrency:
          nullable: true
          type: string
        paymentId:
          format: uuid
          readOnly: true
          type: string
        payorPaymentId:
          nullable: true
          type: string
        payoutId:
          format: uuid
          readOnly: true
          type: string
        sourceAmount:
          nullable: true
          type: integer
        sourceCurrency:
          nullable: true
          type: string
        status:
          nullable: true
          type: string
      required:
        - paymentId
        - payoutId
      type: object
    PaymentDeltaResponse:
      description: List Payment Changes Response Object
      example:
        content:
          - paymentAmount: 0
            paymentCurrency: paymentCurrency
            paymentId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            payorPaymentId: payorPaymentId
            payoutId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            sourceAmount: 6
            sourceCurrency: sourceCurrency
            status: status
          - paymentAmount: 0
            paymentCurrency: paymentCurrency
            paymentId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            payorPaymentId: payorPaymentId
            payoutId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            sourceAmount: 6
            sourceCurrency: sourceCurrency
            status: status
        links:
          - href: href
            rel: rel
          - href: href
            rel: rel
        page:
          numberOfElements: 0
          page: 5
          pageSize: 5
          totalElements: 6
          totalPages: 1
      properties:
        content:
          items:
            $ref: "#/components/schemas/PaymentDelta"
          type: array
        links:
          items:
            $ref: "#/components/schemas/PagedPayeeResponseV3_links"
          type: array
        page:
          $ref: "#/components/schemas/PagedPayeeInvitationStatusResponseV3_page"
      type: object
    PaymentDeltaResponseV1:
      description: List Payment Changes Response Object
      example:
        content:
          - paymentAmount: 0
            paymentCurrency: paymentCurrency
            paymentId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            payorPaymentId: payorPaymentId
            payoutId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            sourceAmount: 6
            sourceCurrency: sourceCurrency
            status: status
          - paymentAmount: 0
            paymentCurrency: paymentCurrency
            paymentId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            payorPaymentId: payorPaymentId
            payoutId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            sourceAmount: 6
            sourceCurrency: sourceCurrency
            status: status
        links:
          - href: href
            rel: rel
          - href: href
            rel: rel
        page:
          numberOfElements: 0
          page: 5
          pageSize: 5
          totalElements: 6
          totalPages: 1
      properties:
        content:
          items:
            $ref: "#/components/schemas/PaymentDeltaV1"
          type: array
        links:
          items:
            $ref: "#/components/schemas/PagedPayeeResponseV3_links"
          type: array
        page:
          $ref: "#/components/schemas/PagedPayeeInvitationStatusResponseV3_page"
      type: object
    PaymentDeltaV1:
      example:
        paymentAmount: 0
        paymentCurrency: paymentCurrency
        paymentId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        payorPaymentId: payorPaymentId
        payoutId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        sourceAmount: 6
        sourceCurrency: sourceCurrency
        status: status
      properties:
        paymentAmount:
          nullable: true
          type: integer
        paymentCurrency:
          nullable: true
          type: string
        paymentId:
          format: uuid
          readOnly: true
          type: string
        payorPaymentId:
          nullable: true
          type: string
        payoutId:
          format: uuid
          readOnly: true
          type: string
        sourceAmount:
          nullable: true
          type: integer
        sourceCurrency:
          nullable: true
          type: string
        status:
          nullable: true
          type: string
      required:
        - paymentId
        - payoutId
      type: object
    PaymentEvent:
      allOf:
        - $ref: "#/components/schemas/SourceEvent"
        - $ref: "#/components/schemas/PaymentEvent_allOf"
      description: Base type for all Payment Events
    PaymentEventResponse:
      example:
        accountName: accountName
        accountNumber: accountNumber
        eventDateTime: 2000-01-23T04:56:07.000+00:00
        eventId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        eventType: eventType
        iban: iban
        paymentAmount: 1299
        paymentCurrency: EUR
        principal: principal
        routingNumber: routingNumber
        scheduledAt: 2000-01-23T04:56:07.000+00:00
        scheduledBy: Aphra Behn
        scheduledFor: 2000-01-23T04:56:07.000+00:00
        sourceAmount: 1299
        sourceCurrency: EUR
      properties:
        accountName:
          type: string
        accountNumber:
          description: The account number attached to the event.
          type: string
        eventDateTime:
          description: The date/time at which the event occurred.
          format: date-time
          type: string
        eventId:
          description: The id of the event.
          format: uuid
          type: string
        eventType:
          description: "One of the following values: PAYOUT_SUBMITTED, PAYOUT_COMPLETED, PAYOUT_INSTRUCTED_V3, BANK_PAYMENT_REQUESTED, SOURCE_AMOUNT_CONFIRMED, PAYMENT_SUBMITTED, PAYMENT_SUBMITTED_ACCEPTED, PAYMENT_SUBMITTED_REJECTED, PAYMENT_CONFIRMED, PAYMENT_AWAITING_FUNDS, PAYMENT_FUNDED, PAYMENT_UNFUNDED, PAYMENT_FAILED, PAYMENT_TRACKING_DETAILS_UPDATED, ACH_SUBMITTED_TO_ODFI, PAYMENT_ACCEPTED_BY_RAILS, ACH_RETURN_RECEIVED, RETURN_PAYMENT_FUNDING_REQUESTED, PAYOUT_BATCH_EXECUTED, PAYOUT_BATCH_QUOTE_EXPIRED, PAYOUT_BATCH_FUNDED, PAYOUT_BATCH_FUNDS_RETURN_REQUEST, PAYOUT_BATCH_FUNDS_RETURNED, PAYOUT_FUNDS_REQUEST, PAYOUT_FUNDS_GRANTED, PAYOUT_FUNDS_DENIED, PAYOUT_BATCH_QUOTED, PAYOUT_QUOTED, ACH_PAYMENT_RETURN_CANCELLED, RETURN_PAYMENT_CANCELLATION_REQUESTED, PAYOUT_WITHDRAWN, ORCHESTRATED_PAYMENT_BATCH_REQUESTED, ORCHESTRATED_PAYMENT_BATCH_CONFIRMED, ORCHESTRATED_PAYMENT_REQUESTED"
          type: string
        iban:
          type: string
        paymentAmount:
          description: The destination amount exposed by the event.
          example: 1299
          format: int64
          type: integer
        paymentCurrency:
          description: ISO-4217 3 character currency code
          example: EUR
          maxLength: 3
          minLength: 3
          type: string
        principal:
          type: string
        routingNumber:
          description: The routing number attached to the event.
          type: string
        scheduledAt:
          format: date-time
          type: string
        scheduledBy:
          description: Optional display name as a hint for who scheduled the payout. Not populated if payout was scheduled by an application.
          example: Aphra Behn
          type: string
        scheduledFor:
          format: date-time
          type: string
        sourceAmount:
          description: The source amount exposed by the event.
          example: 1299
          format: int64
          type: integer
        sourceCurrency:
          description: ISO-4217 3 character currency code
          example: EUR
          maxLength: 3
          minLength: 3
          type: string
      required:
        - eventDateTime
        - eventId
        - eventType
      type: object
    PaymentEventResponseV3:
      example:
        accountName: My account
        accountNumber: "123123123"
        eventDateTime: 2000-01-23T04:56:07.000+00:00
        eventId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        eventType: eventType
        iban: DE89 3704 0044 0532 0130 00
        paymentAmount: 1299
        paymentCurrency: paymentCurrency
        principal: Prinicple example
        routingNumber: "123123123"
        sourceAmount: 1299
        sourceCurrency: sourceCurrency
      properties:
        accountName:
          example: My account
          type: string
        accountNumber:
          description: The account number attached to the event.
          example: "123123123"
          type: string
        eventDateTime:
          description: The date/time at which the event occurred.
          format: date-time
          type: string
        eventId:
          description: The id of the event.
          format: uuid
          type: string
        eventType:
          description: "The type of the event. One of the following values: PAYOUT_SUBMITTED, PAYOUT_COMPLETED, PAYOUT_INSTRUCTED_V3, BANK_PAYMENT_REQUESTED, SOURCE_AMOUNT_CONFIRMED, PAYMENT_SUBMITTED, PAYMENT_SUBMITTED_ACCEPTED, PAYMENT_SUBMITTED_REJECTED, PAYMENT_CONFIRMED, PAYMENT_AWAITING_FUNDS, PAYMENT_FUNDED, PAYMENT_UNFUNDED, PAYMENT_FAILED, ACH_SUBMITTED_TO_ODFI, PAYMENT_ACCEPTED_BY_RAILS, ACH_RETURN_RECEIVED, RETURN_PAYMENT_FUNDING_REQUESTED, PAYOUT_BATCH_EXECUTED, PAYOUT_BATCH_QUOTE_EXPIRED, PAYOUT_BATCH_FUNDED, PAYOUT_BATCH_FUNDS_RETURN_REQUEST, PAYOUT_BATCH_FUNDS_RETURNED, PAYOUT_FUNDS_REQUEST, PAYOUT_FUNDS_GRANTED, PAYOUT_FUNDS_DENIED, PAYOUT_BATCH_QUOTED, PAYOUT_QUOTED, ACH_PAYMENT_RETURN_CANCELLED, RETURN_PAYMENT_CANCELLATION_REQUESTED, PAYOUT_WITHDRAWN"
          type: string
        iban:
          example: DE89 3704 0044 0532 0130 00
          type: string
        paymentAmount:
          description: The destination amount exposed by the event.
          example: 1299
          format: int64
          type: integer
        paymentCurrency:
          description: ISO 3 character currency code
          maxLength: 3
          minLength: 3
          type: string
        principal:
          example: Prinicple example
          type: string
        routingNumber:
          description: The routing number attached to the event.
          example: "123123123"
          type: string
        sourceAmount:
          description: The source amount exposed by the event.
          example: 1299
          format: int64
          type: integer
        sourceCurrency:
          description: ISO 3 character currency code
          maxLength: 3
          minLength: 3
          type: string
      required:
        - eventDateTime
        - eventId
        - eventType
      type: object
    PaymentEvent_allOf:
      properties:
        paymentId:
          description: ID of this payment within the Velo platform
          example: cbd9280f-8fde-4190-b014-979d88f3ec54
          format: uuid
          type: string
        payorPaymentId:
          description: ID of this payment in the payors system
          example: ourpayment-id12345
          type: string
        payoutPayorIds:
          $ref: "#/components/schemas/PayoutPayorIds"
      required:
        - paymentId
    PaymentInstructionV3:
      description: Instruction for creating a payment
      example:
        amount: 1299
        currency: USD
        paymentMemo: my memo
        paymentMetadata: invoiceeId_123|abc001:12345|xyz002:4567
        payorPaymentId: 123211321ABSD
        remoteId: remoteId1234
        remoteSystemId: remoteSystemId
        sourceAccountName: MyAccountName
        transmissionType: ACH
      properties:
        amount:
          description: |
            <p>Amount to send to Payee</p>
            <p>The maximum payment amount is dependent on the currency</p>
          example: 1299
          format: int64
          minimum: 1
          type: integer
        currency:
          description: Valid ISO 4217 3 letter currency code. See the <a href="https://www.iso.org/iso-4217-currency-codes.html" target="_blank" a>ISO specification</a> for details.
          example: USD
          maxLength: 3
          minLength: 3
          pattern: ^[A-Z]{3}$
          title: ISO Currency Code
          type: string
        paymentMemo:
          description: |
            <p>Any value here will override the memo value in the parent payout</p>
            <p>This should be the reference field on the statement seen by the payee (but not via ACH)</p>
          example: my memo
          maxLength: 40
          minLength: 0
          type: string
        paymentMetadata:
          description: |
            <p>Metadata about the payment that may be relevant to the specific rails or remote system making the payout</p>
            <p>The structure of the data will be dictated by the requirements of the payment rails</p>
          example: invoiceeId_123|abc001:12345|xyz002:4567
          maxLength: 512
          minLength: 0
          type: string
        payorPaymentId:
          description: A reference identifier for the payor for the given payee payment
          example: 123211321ABSD
          maxLength: 40
          minLength: 0
          type: string
        remoteId:
          description: Your identifier for the payee
          example: remoteId1234
          maxLength: 100
          minLength: 1
          type: string
        remoteSystemId:
          description: |
            <p>The identifier for the remote payments system if not Velo</p>
            <p>Should only be used after consultation with Velo Payments</p>
          maxLength: 100
          minLength: 1
          type: string
        sourceAccountName:
          description: Must match a valid source account name belonging to the payor
          example: MyAccountName
          maxLength: 64
          minLength: 1
          type: string
        transmissionType:
          description: Optionally choose a specific transmission method for the payment
          enum:
            - SAME_DAY_ACH
            - WIRE
            - ACH
            - LOCAL
            - SWIFT
          example: ACH
          type: string
      required:
        - amount
        - currency
        - remoteId
        - sourceAccountName
      type: object
    PaymentRails:
      description: The id of the payment rails
      type: string
    PaymentRejectedOrReturned:
      allOf:
        - $ref: "#/components/schemas/PaymentStatusChanged"
        - $ref: "#/components/schemas/PaymentRejectedOrReturned_allOf"
      description: Base type for all rejection or return payment events
    PaymentRejectedOrReturned_allOf:
      properties:
        reasonCode:
          description: The Velo code that indicates why the payment was rejected or returned
          example: VE0001
          type: string
        reasonMessage:
          description: The description of why the payment was rejected or returned
          example: VE0001
          type: string
      required:
        - reasonCode
        - reasonMessage
    PaymentResponseV3:
      example:
        accountName: My Account Name
        accountNumber: "123123232323"
        countryCode: US
        events:
          - accountName: My account
            accountNumber: "123123123"
            eventDateTime: 2000-01-23T04:56:07.000+00:00
            eventId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            eventType: eventType
            iban: DE89 3704 0044 0532 0130 00
            paymentAmount: 1299
            paymentCurrency: paymentCurrency
            principal: Prinicple example
            routingNumber: "123123123"
            sourceAmount: 1299
            sourceCurrency: sourceCurrency
          - accountName: My account
            accountNumber: "123123123"
            eventDateTime: 2000-01-23T04:56:07.000+00:00
            eventId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            eventType: eventType
            iban: DE89 3704 0044 0532 0130 00
            paymentAmount: 1299
            paymentCurrency: paymentCurrency
            principal: Prinicple example
            routingNumber: "123123123"
            sourceAmount: 1299
            sourceCurrency: sourceCurrency
        filenameReference: file ref
        fundingStatus: fundingStatus
        iban: DE89 3704 0044 0532 0130 00
        individualIdentificationNumber: 1231231adf
        invertedRate: 1.4658129
        payeeId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        paymentAmount: 0
        paymentChannelId: 123asdf
        paymentChannelName: My Payment Channel
        paymentCurrency: paymentCurrency
        paymentId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        paymentMemo: Payment memo
        paymentScheme: paymentScheme
        payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        payorName: payorName
        payorPaymentId: 123123asdf
        quoteId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        railsBatchId: railsBatchId
        railsId: asdf123
        railsPaymentId: railsPaymentId
        rate: 6.0274563
        rejectionReason: rejectionReason
        remoteId: aasdf123
        returnCost: 1232
        returnReason: Some Reason Value
        routingNumber: "123123123123"
        sourceAccountId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        sourceAccountName: My Account
        sourceAmount: 12345
        sourceCurrency: sourceCurrency
        status: status
        submittedDateTime: 2000-01-23T04:56:07.000+00:00
        traceNumber: abodu123
      properties:
        accountName:
          example: My Account Name
          type: string
        accountNumber:
          description: The account number for the account which will receive the payment.
          example: "123123232323"
          type: string
        countryCode:
          description: The country code of the payment channel.
          example: US
          type: string
        events:
          items:
            $ref: "#/components/schemas/PaymentEventResponseV3"
          type: array
        filenameReference:
          description: ACH file payment was submitted in, if applicable
          example: file ref
          type: string
        fundingStatus:
          description: "The funding status of the payment. One of the following values: [FUNDED, INSTRUCTED, UNFUNDED"
          type: string
        iban:
          description: The iban for the payment.
          example: DE89 3704 0044 0532 0130 00
          type: string
        individualIdentificationNumber:
          description: Individual Identification Number assigned to the payment in the ACH file, if applicable
          example: 1231231adf
          type: string
        invertedRate:
          description: The inverted FX rate for the payment, if FX was involved. **Note** that (depending on the role of the caller) this information may not be displayed
          format: float
          type: number
        payeeId:
          description: The id of the paymeee
          format: uuid
          type: string
        paymentAmount:
          description: The amount which the payee will receive
          type: integer
        paymentChannelId:
          example: 123asdf
          type: string
        paymentChannelName:
          example: My Payment Channel
          type: string
        paymentCurrency:
          description: ISO 3 character currency code
          maxLength: 3
          minLength: 3
          type: string
        paymentId:
          description: The id of the payment
          format: uuid
          type: string
        paymentMemo:
          description: The payment memo set by the payor
          example: Payment memo
          type: string
        paymentScheme:
          type: string
        payorId:
          description: The id of the payor
          format: uuid
          type: string
        payorName:
          description: The name of the payor
          type: string
        payorPaymentId:
          example: 123123asdf
          type: string
        quoteId:
          description: The quote Id used for the FX
          format: uuid
          type: string
        railsBatchId:
          type: string
        railsId:
          default: RAILS ID UNAVAILABLE
          description: The rails ID. Default value is RAILS ID UNAVAILABLE when not populated.
          example: asdf123
          type: string
        railsPaymentId:
          type: string
        rate:
          description: The FX rate for the payment, if FX was involved. **Note** that (depending on the role of the caller) this information may not be displayed
          format: float
          type: number
        rejectionReason:
          type: string
        remoteId:
          description: The remote id by which the payor refers to the payee. Only populated once payment is confirmed
          example: aasdf123
          type: string
        returnCost:
          description: The return cost if a returned payment.
          example: 1232
          type: integer
        returnReason:
          example: Some Reason Value
          type: string
        routingNumber:
          description: The routing number for the payment.
          example: "123123123123"
          type: string
        sourceAccountId:
          description: The id of the source account from which the payment was taken
          format: uuid
          type: string
        sourceAccountName:
          description: The name of the source account from which the payment was taken
          example: My Account
          type: string
        sourceAmount:
          description: The source amount for the payment (amount debited to make the payment)
          example: 12345
          type: integer
        sourceCurrency:
          description: ISO 3 character currency code
          maxLength: 3
          minLength: 3
          type: string
        status:
          description: "Current status of the payment. One of the following values: ACCEPTED, AWAITING_FUNDS, FUNDED, UNFUNDED, BANK_PAYMENT_REQUESTED, REJECTED, ACCEPTED_BY_RAILS, CONFIRMED, FAILED, WITHDRAWN"
          type: string
        submittedDateTime:
          format: date-time
          type: string
        traceNumber:
          description: Trace Number assigned to the payment in the ACH file, if applicable
          example: abodu123
          type: string
      required:
        - events
        - fundingStatus
        - payeeId
        - paymentAmount
        - paymentId
        - payorId
        - quoteId
        - railsId
        - sourceAccountId
        - status
        - submittedDateTime
      type: object
    PaymentResponseV4:
      example:
        accountName: My Account Name
        accountNumber: "123123232323"
        autoWithdrawnReasonCode: autoWithdrawnReasonCode
        countryCode: US
        events:
          - accountName: accountName
            accountNumber: accountNumber
            eventDateTime: 2000-01-23T04:56:07.000+00:00
            eventId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            eventType: eventType
            iban: iban
            paymentAmount: 1299
            paymentCurrency: EUR
            principal: principal
            routingNumber: routingNumber
            scheduledAt: 2000-01-23T04:56:07.000+00:00
            scheduledBy: Aphra Behn
            scheduledFor: 2000-01-23T04:56:07.000+00:00
            sourceAmount: 1299
            sourceCurrency: EUR
          - accountName: accountName
            accountNumber: accountNumber
            eventDateTime: 2000-01-23T04:56:07.000+00:00
            eventId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            eventType: eventType
            iban: iban
            paymentAmount: 1299
            paymentCurrency: EUR
            principal: principal
            routingNumber: routingNumber
            scheduledAt: 2000-01-23T04:56:07.000+00:00
            scheduledBy: Aphra Behn
            scheduledFor: 2000-01-23T04:56:07.000+00:00
            sourceAmount: 1299
            sourceCurrency: EUR
        filenameReference: file ref
        fundingStatus: fundingStatus
        iban: DE89 3704 0044 0532 0130 00
        individualIdentificationNumber: 1231231adf
        invertedRate: 3.616076749251911
        isPaymentCcyBaseCcy: true
        payeeAddressCountryCode: US
        payeeId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        paymentAmount: 7
        paymentChannelId: 123asdf
        paymentChannelName: My Payment Channel
        paymentCurrency: EUR
        paymentId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        paymentMemo: Payment memo
        paymentMetadata: sample metadata
        paymentScheme: paymentScheme
        paymentTrackingReference: paymentTrackingReference
        payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        payorName: payorName
        payorPaymentId: 123123asdf
        payout:
          payoutFrom:
            dbaName: dbaName
            payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            payorName: payorName
            principal: principal
            principalId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
          payoutId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
          payoutTo:
            dbaName: dbaName
            payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            payorName: payorName
            principal: principal
            principalId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        postInstructFxInfo:
          fxMode: MANUAL
          fxStatus: INITIATED
          fxStatusUpdatedAt: 2000-01-23T04:56:07.000+00:00
          fxTransactionReference: AB123GHI
        quoteId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        railsBatchId: railsBatchId
        railsId: asdf123
        railsPaymentId: railsPaymentId
        rate: 9.301444243932576
        rejectionReason: rejectionReason
        remoteId: aasdf123
        remoteSystemId: REMOTE_SYSTEM_ID
        remoteSystemPaymentId: remoteSystemPaymentId
        returnCost: 1232
        returnReason: Some Reason Value
        routingNumber: "123123123123"
        schedule:
          notificationsEnabled: true
          scheduleStatus: SCHEDULED
          scheduledAt: 2000-01-23T04:56:07.000+00:00
          scheduledBy: Aphra Behn
          scheduledByPrincipalId: 8946953b-1e3b-49cf-9da4-b704cbb78f3e
          scheduledFor: 2000-01-23T04:56:07.000+00:00
        sourceAccountId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        sourceAccountName: My Account
        sourceAmount: 12345
        sourceCurrency: EUR
        status: status
        submittedDateTime: 2000-01-23T04:56:07.000+00:00
        traceNumber: abodu123
        transmissionType: transmissionType
        withdrawable: true
        withdrawnReason: withdrawnReason
      properties:
        accountName:
          example: My Account Name
          type: string
        accountNumber:
          description: The account number for the account which will receive the payment.
          example: "123123232323"
          type: string
        autoWithdrawnReasonCode:
          description: Populated with rejection reason code if the payment was withdrawn automatically at instruct time
          type: string
        countryCode:
          description: The country code of the payment channel.
          example: US
          type: string
        events:
          items:
            $ref: "#/components/schemas/PaymentEventResponse"
          type: array
        filenameReference:
          description: ACH file payment was submitted in, if applicable
          example: file ref
          type: string
        fundingStatus:
          description: "Current funding status of the payment. One of the following values: FUNDED, INSTRUCTED, UNFUNDED"
          type: string
        iban:
          description: The iban for the payment.
          example: DE89 3704 0044 0532 0130 00
          type: string
        individualIdentificationNumber:
          description: Individual Identification Number assigned to the payment in the ACH file, if applicable
          example: 1231231adf
          type: string
        invertedRate:
          description: The inverted FX rate for the payment, if FX was involved. **Note** that (depending on the role of the caller) this information may not be displayed
          format: double
          type: number
        isPaymentCcyBaseCcy:
          type: boolean
        payeeAddressCountryCode:
          description: The country code of the payee's address.
          example: US
          type: string
        payeeId:
          description: The id of the paymeee
          format: uuid
          type: string
        paymentAmount:
          description: The amount which the payee will receive
          type: integer
        paymentChannelId:
          example: 123asdf
          type: string
        paymentChannelName:
          example: My Payment Channel
          type: string
        paymentCurrency:
          description: ISO-4217 3 character currency code
          example: EUR
          maxLength: 3
          minLength: 3
          type: string
        paymentId:
          description: The id of the payment
          format: uuid
          type: string
        paymentMemo:
          description: The payment memo set by the payor
          example: Payment memo
          type: string
        paymentMetadata:
          description: Metadata for the payment
          example: sample metadata
          type: string
        paymentScheme:
          type: string
        paymentTrackingReference:
          type: string
        payorId:
          description: The id of the payor
          format: uuid
          type: string
        payorName:
          description: The name of the payor
          type: string
        payorPaymentId:
          example: 123123asdf
          type: string
        payout:
          $ref: "#/components/schemas/PaymentResponseV4_payout"
        postInstructFxInfo:
          $ref: "#/components/schemas/PostInstructFxInfo"
        quoteId:
          description: The quote Id used for the FX
          format: uuid
          type: string
        railsBatchId:
          type: string
        railsId:
          default: RAILS ID UNAVAILABLE
          description: The rails ID. Default value is RAILS ID UNAVAILABLE when not populated.
          example: asdf123
          type: string
        railsPaymentId:
          type: string
        rate:
          description: The FX rate for the payment, if FX was involved. **Note** that (depending on the role of the caller) this information may not be displayed
          format: double
          type: number
        rejectionReason:
          type: string
        remoteId:
          description: The remote id by which the payor refers to the payee. Only populated once payment is confirmed
          example: aasdf123
          type: string
        remoteSystemId:
          description: The velo id of the remote system orchestrating the payment. Not populated for normal Velo payments.
          example: REMOTE_SYSTEM_ID
          type: string
        remoteSystemPaymentId:
          description: The id of the payment in the remote system. Not populated for normal Velo payments.
          type: string
        returnCost:
          description: The return cost if a returned payment.
          example: 1232
          type: integer
        returnReason:
          example: Some Reason Value
          type: string
        routingNumber:
          description: The routing number for the payment.
          example: "123123123123"
          type: string
        schedule:
          $ref: "#/components/schemas/PayoutSchedule"
        sourceAccountId:
          description: The id of the source account from which the payment was taken
          format: uuid
          type: string
        sourceAccountName:
          description: The name of the source account from which the payment was taken
          example: My Account
          type: string
        sourceAmount:
          description: The source amount for the payment (amount debited to make the payment)
          example: 12345
          type: integer
        sourceCurrency:
          description: ISO-4217 3 character currency code
          example: EUR
          maxLength: 3
          minLength: 3
          type: string
        status:
          description: "Current status of the payment. One of the following values: ACCEPTED, AWAITING_FUNDS, FUNDED, UNFUNDED, BANK_PAYMENT_REQUESTED, REJECTED, ACCEPTED_BY_RAILS, CONFIRMED, RETURNED, WITHDRAWN"
          type: string
        submittedDateTime:
          format: date-time
          type: string
        traceNumber:
          description: Trace Number assigned to the payment in the ACH file, if applicable
          example: abodu123
          type: string
        transmissionType:
          description: The transmission type of the payment, e.g. ACH, SAME_DAY_ACH, WIRE, GACHO
          type: string
        withdrawable:
          type: boolean
        withdrawnReason:
          type: string
      required:
        - events
        - fundingStatus
        - payeeId
        - paymentAmount
        - paymentId
        - payorId
        - quoteId
        - railsId
        - sourceAccountId
        - status
        - submittedDateTime
      type: object
    PaymentResponseV4_payout:
      example:
        payoutFrom:
          dbaName: dbaName
          payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
          payorName: payorName
          principal: principal
          principalId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        payoutId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        payoutTo:
          dbaName: dbaName
          payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
          payorName: payorName
          principal: principal
          principalId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
      properties:
        payoutFrom:
          $ref: "#/components/schemas/PayoutPayor"
        payoutId:
          format: uuid
          type: string
        payoutTo:
          $ref: "#/components/schemas/PayoutPayor"
    PaymentStatusChanged:
      allOf:
        - $ref: "#/components/schemas/PaymentEvent"
        - $ref: "#/components/schemas/PaymentStatusChanged_allOf"
      description: Base type for all payment status changed events
    PaymentStatusChanged_allOf:
      properties:
        status:
          description: The new status of the payment. One of "SUBMITTED" "ACCEPTED" "REJECTED" "ACCEPTED_BY_RAILS" "CONFIRMED" "RETURNED" "WITHDRAWN"
          example: ACCEPTED
          type: string
      required:
        - status
    PaymentV3:
      example:
        amount: 10000
        autoWithdrawnReasonCode: VE0003
        currency: USD
        payee:
          company:
            companyName: ACME Anvils PLC
          individual:
            name:
              firstName: Fred
              lastName: Flintstone
          payeeId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        paymentId: 859af785-223b-4d5b-a708-5fa57f006dbb
        paymentMemo: INV00112
        paymentMetadata: invoiceeId_123|abc001:12345|xyz002:4567
        payorPaymentId: 123211321ABSD
        railsId: SVB
        remoteId: remoteIdVal123
        remoteSystemId: OB012
        sourceAccountName: Chase Bank Account
        status: AWAITING_FUNDS
        transmissionType: LOCAL
        withdrawable: false
      properties:
        amount:
          description: The amount of the payment in minor units
          example: 10000
          type: integer
        autoWithdrawnReasonCode:
          description: Populated only if the payment was automatically withdrawn during instruction for being invalid
          example: VE0003
          type: string
        currency:
          description: The currency that the payment was made in
          example: USD
          maxLength: 3
          minLength: 3
          type: string
        payee:
          $ref: "#/components/schemas/PayoutPayeeV3"
        paymentId:
          description: The id of the payment
          example: 859af785-223b-4d5b-a708-5fa57f006dbb
          format: uuid
          type: string
        paymentMemo:
          description: |
            <p>Any value here will override the memo value in the parent payout</p>
            <p>This should be the reference field on the statement seen by the payee (but not via ACH)</p>
          example: INV00112
          maxLength: 40
          minLength: 0
          type: string
        paymentMetadata:
          description: |
            <p>Metadata about the payment that may be relevant to the specific rails or remote system making the payout</p>
            <p>The structure of the data will be dictated by the requirements of the payment rails</p>
          example: invoiceeId_123|abc001:12345|xyz002:4567
          maxLength: 512
          minLength: 0
          type: string
        payorPaymentId:
          description: A reference identifier for the payor for the given payee payment
          example: 123211321ABSD
          maxLength: 40
          minLength: 0
          type: string
        railsId:
          description: Indicates the 3rd party system involved in making this payment
          example: SVB
          type: string
        remoteId:
          description: The remoteId supplied by the payor that identifies the payee
          example: remoteIdVal123
          type: string
        remoteSystemId:
          description: |
            <p>The identifier for the remote payments system if not Velo</p>
          example: OB012
          maxLength: 100
          minLength: 1
          type: string
        sourceAccountName:
          description: The identifier of the source account to debit the payment from
          example: Chase Bank Account
          type: string
        status:
          description: "Current status of payment. One of the following values: SUBMITTED, ACCEPTED, REJECTED, WITHDRAWN, RETURNED, AWAITING_FUNDS, FUNDED, UNFUNDED, CANCELLED, BANK_PAYMENT_REQUESTED"
          example: AWAITING_FUNDS
          type: string
        transmissionType:
          description: "The transmission method of the payment. One of the following values: ACH, SAME_DAY_ACH, WIRE, LOCAL, SWIFT"
          example: LOCAL
          type: string
        withdrawable:
          description: Can this paynent be withdrawn
          example: false
          type: boolean
      required:
        - paymentId
      type: object
    PayorAddress:
      example:
        city: Key West
        country: US
        countyOrProvince: FL
        line1: 500 Duval St
        line2: line2
        line3: line3
        line4: line4
        zipOrPostcode: "33945"
      properties:
        city:
          example: Key West
          maxLength: 100
          minLength: 2
          nullable: false
          type: string
        country:
          example: US
          maxLength: 50
          minLength: 2
          nullable: false
          type: string
        countyOrProvince:
          example: FL
          maxLength: 100
          minLength: 2
          nullable: true
          type: string
        line1:
          example: 500 Duval St
          maxLength: 255
          minLength: 2
          nullable: false
          type: string
        line2:
          maxLength: 255
          minLength: 0
          nullable: true
          type: string
        line3:
          maxLength: 255
          minLength: 0
          nullable: true
          type: string
        line4:
          maxLength: 255
          minLength: 0
          nullable: true
          type: string
        zipOrPostcode:
          example: "33945"
          maxLength: 30
          minLength: 2
          nullable: true
          type: string
      required:
        - city
        - country
        - line1
      type: object
    PayorAddressV2:
      example:
        city: Key West
        country: US
        countyOrProvince: FL
        line1: 500 Duval St
        line2: line2
        line3: line3
        line4: line4
        zipOrPostcode: "33945"
      properties:
        city:
          example: Key West
          maxLength: 100
          minLength: 2
          nullable: false
          type: string
        country:
          example: US
          maxLength: 50
          minLength: 2
          nullable: false
          type: string
        countyOrProvince:
          example: FL
          maxLength: 100
          minLength: 2
          nullable: true
          type: string
        line1:
          example: 500 Duval St
          maxLength: 255
          minLength: 2
          nullable: false
          type: string
        line2:
          maxLength: 255
          minLength: 0
          nullable: true
          type: string
        line3:
          maxLength: 255
          minLength: 0
          nullable: true
          type: string
        line4:
          maxLength: 255
          minLength: 0
          nullable: true
          type: string
        zipOrPostcode:
          example: "33945"
          maxLength: 30
          minLength: 2
          nullable: true
          type: string
      required:
        - city
        - country
        - line1
      type: object
    PayorAmlTransaction:
      properties:
        credit:
          format: int64
          type: integer
        creditCurrency:
          description: ISO 4217 3 character currency code
          type: string
        dateFundingRequested:
          type: string
        debit:
          format: int64
          type: integer
        debitCurrency:
          description: ISO 4217 3 character currency code
          type: string
        fundingType:
          type: string
        fxApplied:
          format: double
          type: number
        payeeEmail:
          format: email
          type: string
        payeeName:
          type: string
        payeeType:
          type: string
        paymentAmount:
          format: int64
          type: integer
        paymentCurrency:
          description: ISO 4217 3 character currency code
          type: string
        paymentMemo:
          type: string
        paymentRails:
          type: string
        paymentStatus:
          type: string
        payorPaymentId:
          type: string
        rejectReason:
          type: string
        remoteId:
          description: Remote ID of the Payee, set by Payor
          type: string
        reportTransactionType:
          type: string
        returnCode:
          type: string
        returnDescription:
          type: string
        returnFee:
          type: string
        returnFeeCurrency:
          description: ISO 4217 3 character currency code
          type: string
        returnFeeDescription:
          type: string
        sourceAccount:
          type: string
        transactionDate:
          format: date
          type: string
        transactionTime:
          type: string
      type: object
    PayorAmlTransactionV3:
      example:
        credit: 6
        creditCurrency: creditCurrency
        dateFundingRequested: dateFundingRequested
        debit: 0
        debitCurrency: debitCurrency
        fundingType: fundingType
        fxApplied: 5.962133916683182
        payeeType: payeeType
        paymentAmount: 1
        paymentCurrency: paymentCurrency
        paymentMemo: paymentMemo
        paymentRails: paymentRails
        paymentStatus: paymentStatus
        payorPaymentId: payorPaymentId
        rejectReason: rejectReason
        remoteId: remoteId
        reportTransactionType: reportTransactionType
        returnCode: returnCode
        returnDescription: returnDescription
        returnFee: returnFee
        returnFeeCurrency: returnFeeCurrency
        returnFeeDescription: returnFeeDescription
        sourceAccount: sourceAccount
        transactionDate: 2000-01-23
        transactionTime: transactionTime
      properties:
        credit:
          format: int64
          type: integer
        creditCurrency:
          description: ISO 4217 3 character currency code
          type: string
        dateFundingRequested:
          type: string
        debit:
          format: int64
          type: integer
        debitCurrency:
          description: ISO 4217 3 character currency code
          type: string
        fundingType:
          type: string
        fxApplied:
          format: double
          type: number
        payeeType:
          type: string
        paymentAmount:
          format: int64
          type: integer
        paymentCurrency:
          description: ISO 4217 3 character currency code
          type: string
        paymentMemo:
          type: string
        paymentRails:
          type: string
        paymentStatus:
          type: string
        payorPaymentId:
          type: string
        rejectReason:
          type: string
        remoteId:
          description: Remote ID of the Payee, set by Payor
          type: string
        reportTransactionType:
          type: string
        returnCode:
          type: string
        returnDescription:
          type: string
        returnFee:
          type: string
        returnFeeCurrency:
          description: ISO 4217 3 character currency code
          type: string
        returnFeeDescription:
          type: string
        sourceAccount:
          type: string
        transactionDate:
          format: date
          type: string
        transactionTime:
          type: string
      type: object
    PayorBrandingResponse:
      example:
        collectiveAlias: Contractors
        dbaName: Key West Imports
        logoUrl: https://images.example.com/450ecb66-df18-4d0c-b557-f718782775df/logo.png
        payorName: Key West Imports, Inc
        supportContact: support@example.com
      properties:
        collectiveAlias:
          description: How the payor has chosen to refer to payees
          example: Contractors
          nullable: true
          type: string
        dbaName:
          description: The payor’s 'Doing Business As' name
          example: Key West Imports
          nullable: true
          type: string
        logoUrl:
          description: |
            <p>The URL to use for this payor’s logo</p>
            <p>This will be an immutable system-generated URL</p>
          example: https://images.example.com/450ecb66-df18-4d0c-b557-f718782775df/logo.png
          format: uri
          type: string
        payorName:
          description: The name of the payor
          example: Key West Imports, Inc
          type: string
        supportContact:
          description: The payor’s support contact address
          example: support@example.com
          nullable: true
          type: string
      required:
        - logoUrl
        - payorName
      type: object
    PayorCreateApiKeyRequest:
      example:
        description: Key for iOS mobile application
        name: iOS Key
        roles:
          - velo.payor.admin
      properties:
        description:
          description: Description of the key.
          example: Key for iOS mobile application
          maxLength: 1024
          minLength: 2
          nullable: true
          type: string
        name:
          description: A name for the key.
          example: iOS Key
          maxLength: 100
          minLength: 2
          type: string
        roles:
          description: |
            <p>A role to assign to the key.</p>
            <p>If you want your API key to have write access then assign the role velo.payor.admin</p>
            <p>A later version will change this property from a list to string</p>
          example:
            - velo.payor.admin
          items:
            description: Name of role
            enum:
              - velo.payor.admin
              - velo.payor.support
            type: string
          maxItems: 1
          minItems: 1
          type: array
      required:
        - name
        - roles
      type: object
    PayorCreateApiKeyResponse:
      example:
        apiKey: 385d4506-e7dd-446e-a092-5f30b98e7b26
        apiSecret: f25767d9-342a-48ac-a788-0a7a38ae6fb3
      properties:
        apiKey:
          description: API Key
          example: 385d4506-e7dd-446e-a092-5f30b98e7b26
          format: uuid
          type: string
        apiSecret:
          description: API Secret
          example: f25767d9-342a-48ac-a788-0a7a38ae6fb3
          format: uuid
          type: string
      type: object
    PayorCreateApplicationRequest:
      example:
        description: SAP Application integration
        name: SAP
      properties:
        description:
          description: Description of the application.
          example: SAP Application integration
          maxLength: 1024
          minLength: 2
          nullable: true
          type: string
        name:
          description: The name of the application.
          example: SAP
          maxLength: 100
          minLength: 2
          type: string
      required:
        - name
      type: object
    PayorEmailOptOutRequest:
      example:
        reminderEmailsOptOut: true
      properties:
        reminderEmailsOptOut:
          type: boolean
      required:
        - reminderEmailsOptOut
      type: object
    PayorLinksResponse:
      description: List Payor Links Response Object
      example:
        links:
          - fromPayorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            linkId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            linkType: linkType
            toPayorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
          - fromPayorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            linkId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            linkType: linkType
            toPayorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        payors:
          - kycState: kycState
            payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            payorName: payorName
            primaryContactEmail: primaryContactEmail
          - kycState: kycState
            payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            payorName: payorName
            primaryContactEmail: primaryContactEmail
      properties:
        links:
          items:
            $ref: "#/components/schemas/PayorLinksResponse_links"
          type: array
        payors:
          items:
            $ref: "#/components/schemas/PayorLinksResponse_payors"
          type: array
      type: object
    PayorLinksResponse_links:
      example:
        fromPayorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        linkId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        linkType: linkType
        toPayorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
      properties:
        fromPayorId:
          format: uuid
          type: string
        linkId:
          format: uuid
          type: string
        linkType:
          description: "The type of the link. One of the following values: PARENT_OF"
          type: string
        toPayorId:
          format: uuid
          type: string
      required:
        - fromPayorId
        - linkId
        - linkType
        - toPayorId
    PayorLinksResponse_payors:
      example:
        kycState: kycState
        payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        payorName: payorName
        primaryContactEmail: primaryContactEmail
      properties:
        kycState:
          description: "Current KYC state. One of the following values: FAILED_KYC, PASSED_KYC, REQUIRES_KYC"
          type: string
        payorId:
          format: uuid
          type: string
        payorName:
          type: string
        primaryContactEmail:
          type: string
      required:
        - payorId
        - payorName
    PayorLogoRequest:
      properties:
        logo:
          format: binary
          type: string
      type: object
    PayorV1:
      example:
        address:
          city: Key West
          country: US
          countyOrProvince: FL
          line1: 500 Duval St
          line2: line2
          line3: line3
          line4: line4
          zipOrPostcode: "33945"
        allowsLanguageChoice: true
        collectiveAlias: Payee
        dbaName: Some Biz
        fundingAccountAccountName: Example Corp BOA
        fundingAccountAccountNumber: "1234567890123"
        fundingAccountRoutingNumber: "123456789"
        includesReports: true
        kycState: PASSED_KYC
        language: EN
        manualLockout: true
        maxMasterPayorAdmins: 6
        payeeGracePeriodDays: 0
        payeeGracePeriodProcessingEnabled: true
        payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        payorName: Example, Corp
        primaryContactEmail: joe.buck@example.com
        primaryContactName: Joe Buck
        primaryContactPhone: 123-123-1234
        reminderEmailsOptOut: true
        supportContact: support@example.com
        transmissionTypes:
          ACH: true
          SAME_DAY_ACH: true
          WIRE: true
      properties:
        address:
          $ref: "#/components/schemas/PayorAddress"
        allowsLanguageChoice:
          description: Whether or not the payor allows language choice in the UI.
          type: boolean
        collectiveAlias:
          description: How the payor has chosen to refer to payees.
          example: Payee
          type: string
        dbaName:
          description: The payor’s 'Doing Business As' name.
          example: Some Biz
          type: string
        fundingAccountAccountName:
          description: The funding account name to be used for the payor.
          example: Example Corp BOA
          type: string
        fundingAccountAccountNumber:
          description: The funding account number to be used for the payor.
          example: "1234567890123"
          type: string
        fundingAccountRoutingNumber:
          description: The funding account routing number to be used for the payor.
          example: "123456789"
          type: string
        includesReports:
          type: boolean
        kycState:
          description: "The kyc state of the payor. One of the following values: FAILED_KYC, PASSED_KYC, REQUIRES_KYC"
          example: PASSED_KYC
          readOnly: true
          type: string
        language:
          description: The payor’s language preference. Must be one of [EN, FR].
          example: EN
          type: string
        manualLockout:
          description: Whether or not the payor has been manually locked by the backoffice.
          type: boolean
        maxMasterPayorAdmins:
          type: integer
        payeeGracePeriodDays:
          description: The grace period for paying payees in days.
          readOnly: true
          type: integer
        payeeGracePeriodProcessingEnabled:
          description: Whether grace period processing is enabled.
          readOnly: true
          type: boolean
        payorId:
          format: uuid
          readOnly: true
          type: string
        payorName:
          description: The name of the payor.
          example: Example, Corp
          type: string
        primaryContactEmail:
          description: Primary contact email for the payor.
          example: joe.buck@example.com
          format: email
          type: string
        primaryContactName:
          description: Name of primary contact for the payor.
          example: Joe Buck
          type: string
        primaryContactPhone:
          description: Primary contact phone number for the payor.
          example: 123-123-1234
          type: string
        reminderEmailsOptOut:
          description: Whether or not the payor has opted-out of reminder emails being sent.
          readOnly: true
          type: boolean
        supportContact:
          description: The payor’s support contact email address.
          example: support@example.com
          type: string
        transmissionTypes:
          $ref: "#/components/schemas/TransmissionTypes"
      required:
        - payorName
      type: object
    PayorV2:
      example:
        address:
          city: Key West
          country: US
          countyOrProvince: FL
          line1: 500 Duval St
          line2: line2
          line3: line3
          line4: line4
          zipOrPostcode: "33945"
        allowsLanguageChoice: true
        collectiveAlias: Payee
        dbaName: Some Biz
        includesReports: true
        kycState: PASSED_KYC
        language: EN
        managingPayees: true
        manualLockout: true
        maxMasterPayorAdmins: 6
        openBankingEnabled: true
        payeeGracePeriodDays: 0
        payeeGracePeriodProcessingEnabled: true
        paymentRails: paymentRails
        payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        payorName: Example, Corp
        payorXid: ABC_201234
        primaryContactEmail: joe.buck@example.com
        primaryContactName: Joe Buck
        primaryContactPhone: 123-123-1234
        provider: provider
        reminderEmailsOptOut: true
        remoteSystemIds:
          - REMOTE_SYSTEM_ID
          - REMOTE_SYSTEM_ID
        supportContact: support@example.com
        transmissionTypes:
          ACH: true
          SAME_DAY_ACH: true
          WIRE: true
        usdTxnValueReportingThreshold: 1000000
        wuCustomerId: wuCustomerId
      properties:
        address:
          $ref: "#/components/schemas/PayorAddressV2"
        allowsLanguageChoice:
          description: Whether or not the payor allows language choice in the UI.
          type: boolean
        collectiveAlias:
          description: How the payor has chosen to refer to payees.
          example: Payee
          type: string
        dbaName:
          description: The payor’s 'Doing Business As' name.
          example: Some Biz
          type: string
        includesReports:
          type: boolean
        kycState:
          description: "The kyc state of the payor. One of the following values: FAILED_KYC, PASSED_KYC, REQUIRES_KYC"
          example: PASSED_KYC
          readOnly: true
          type: string
        language:
          description: The payor’s language preference. Must be one of [EN, FR]
          example: EN
          type: string
        managingPayees:
          type: boolean
        manualLockout:
          description: Whether or not the payor has been manually locked by the backoffice.
          type: boolean
        maxMasterPayorAdmins:
          type: integer
        openBankingEnabled:
          description: Is Open Banking supported for this payor
          type: boolean
        payeeGracePeriodDays:
          description: The grace period for paying payees in days.
          readOnly: true
          type: integer
        payeeGracePeriodProcessingEnabled:
          description: Whether grace period processing is enabled.
          readOnly: true
          type: boolean
        paymentRails:
          description: The id of the payment rails
          type: string
        payorId:
          format: uuid
          readOnly: true
          type: string
        payorName:
          description: The name of the payor.
          example: Example, Corp
          type: string
        payorXid:
          description: A unique identifier that an external system uses to reference the payor in their system
          example: ABC_201234
          type: string
        primaryContactEmail:
          description: Primary contact email for the payor.
          example: joe.buck@example.com
          format: email
          type: string
        primaryContactName:
          description: Name of primary contact for the payor.
          example: Joe Buck
          type: string
        primaryContactPhone:
          description: Primary contact phone number for the payor.
          example: 123-123-1234
          type: string
        provider:
          description: The source of the payorXid, default is null which means Velo
          type: string
        reminderEmailsOptOut:
          description: Whether or not the payor has opted-out of reminder emails being sent.
          readOnly: true
          type: boolean
        remoteSystemIds:
          description: The payor’s supported remote systems by id
          items:
            example: REMOTE_SYSTEM_ID
            type: string
          type: array
        supportContact:
          description: The payor’s support contact email address.
          example: support@example.com
          type: string
        transmissionTypes:
          $ref: "#/components/schemas/TransmissionTypes_2"
        usdTxnValueReportingThreshold:
          description: USD in minor units
          example: 1000000
          type: integer
        wuCustomerId:
          type: string
      required:
        - payorId
        - payorName
      type: object
    PayoutCompanyV3:
      example:
        companyName: ACME Anvils PLC
      properties:
        companyName:
          example: ACME Anvils PLC
          type: string
      required:
        - companyName
      type: object
    PayoutIndividualV3:
      example:
        name:
          firstName: Fred
          lastName: Flintstone
      properties:
        name:
          $ref: "#/components/schemas/PayoutNameV3"
      required:
        - name
      type: object
    PayoutNameV3:
      example:
        firstName: Fred
        lastName: Flintstone
      properties:
        firstName:
          example: Fred
          type: string
        lastName:
          example: Flintstone
          type: string
      required:
        - firstName
        - lastName
      type: object
    PayoutPayeeV3:
      description: Payee data associated with a payment. Either individual or company must be populated
      example:
        company:
          companyName: ACME Anvils PLC
        individual:
          name:
            firstName: Fred
            lastName: Flintstone
        payeeId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
      properties:
        company:
          $ref: "#/components/schemas/PayoutCompanyV3"
        individual:
          $ref: "#/components/schemas/PayoutIndividualV3"
        payeeId:
          format: uuid
          type: string
      required:
        - payeeId
      type: object
    PayoutPayor:
      description: Details of payor and principal participating in a payout.
      example:
        dbaName: dbaName
        payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        payorName: payorName
        principal: principal
        principalId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
      properties:
        dbaName:
          description: The alternate name of the payor.
          type: string
        payorId:
          description: The id of the payor.
          format: uuid
          type: string
        payorName:
          description: The name of the payor.
          type: string
        principal:
          description: Email address if principal is a user or ID if application.
          type: string
        principalId:
          description: The id of the principal.
          format: uuid
          type: string
      required:
        - dbaName
        - payorId
        - payorName
        - principal
        - principalId
      type: object
    PayoutPayorIds:
      description: Holder for all payor ids associated with a Payout
      properties:
        payoutFromPayorId:
          description: The ID of the Payor providing the source account for the payout
          example: 35198f08-1c7b-4a91-8921-cd760ed92bca
          format: uuid
          type: string
        payoutToPayorId:
          description: The ID of the Payor that owns the Payee (on behalf of)
          example: 3eb99144-6ebf-4b02-9483-ad86b2ff1bca
          format: uuid
          type: string
        submittingPayorId:
          description: The ID of the Payor that is submitting the payout
          example: ac207f97-663c-4429-9d57-ba5b35d6672d
          format: uuid
          type: string
      required:
        - payoutFromPayorId
        - payoutToPayorId
        - submittingPayorId
      type: object
    PayoutPrincipal:
      description: Details of principal participating in a payout.
      example:
        principal: principal
        principalId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
      properties:
        principal:
          description: Email address if principal is a user or ID if application.
          type: string
        principalId:
          description: The id of the principal.
          format: uuid
          type: string
      required:
        - principal
        - principalId
      type: object
    PayoutSchedule:
      description: Details relating to a payout that was executed via a schedule or is still waiting to be executed
      example:
        notificationsEnabled: true
        scheduleStatus: SCHEDULED
        scheduledAt: 2000-01-23T04:56:07.000+00:00
        scheduledBy: Aphra Behn
        scheduledByPrincipalId: 8946953b-1e3b-49cf-9da4-b704cbb78f3e
        scheduledFor: 2000-01-23T04:56:07.000+00:00
      properties:
        notificationsEnabled:
          type: boolean
        scheduleStatus:
          description: "Current status of the payout schedule. One of the following values: SCHEDULED, EXECUTED, FAILED"
          example: SCHEDULED
          type: string
        scheduledAt:
          format: date-time
          type: string
        scheduledBy:
          description: Optional display name as a hint for who scheduled the payout. Not populated if payout was scheduled by an application.
          example: Aphra Behn
          type: string
        scheduledByPrincipalId:
          description: ID of the user or application that scheduled the payout
          example: 8946953b-1e3b-49cf-9da4-b704cbb78f3e
          type: string
        scheduledFor:
          format: date-time
          type: string
      required:
        - notificationsEnabled
        - scheduleStatus
        - scheduledAt
        - scheduledByPrincipalId
        - scheduledFor
      type: object
    PayoutScheduleV3:
      description: Details relating to a payout that was executed via a schedule or is still waiting to be executed
      example:
        notificationsEnabled: true
        scheduleStatus: SCHEDULED
        scheduledAt: 2000-01-23T04:56:07.000+00:00
        scheduledByPrincipalId: 8946953b-1e3b-49cf-9da4-b704cbb78f3e
        scheduledFor: 2000-01-23T04:56:07.000+00:00
      properties:
        notificationsEnabled:
          type: boolean
        scheduleStatus:
          description: "The current status of the payout schedule. One of the following values: SCHEDULED, EXECUTED, FAILED"
          example: SCHEDULED
          type: string
        scheduledAt:
          format: date-time
          type: string
        scheduledByPrincipalId:
          description: ID of the user or application that scheduled the payout
          example: 8946953b-1e3b-49cf-9da4-b704cbb78f3e
          type: string
        scheduledFor:
          format: date-time
          type: string
      required:
        - notificationsEnabled
        - scheduleStatus
        - scheduledAt
        - scheduledByPrincipalId
        - scheduledFor
      type: object
    PayoutStatus:
      description: "Current status of the Payout. One of the following values: ACCEPTED, REJECTED, SUBMITTED, QUOTED, INSTRUCTED, COMPLETED, INCOMPLETE, CONFIRMED, WITHDRAWN"
      type: string
    PayoutStatusV3:
      description: "Current status of the payout. One of the following values: ACCEPTED, REJECTED, SUBMITTED, QUOTED, INSTRUCTED, COMPLETED, INCOMPLETE, CONFIRMED, WITHDRAWN"
      type: string
    PayoutSummaryAudit:
      example:
        dateTime: 2000-01-23T04:56:07.000+00:00
        fxSummaries:
          - creationDateTime: 2000-01-23T04:56:07.000+00:00
            fundingStatus: fundingStatus
            invertedRate: 123.23
            paymentCurrency: EUR
            quoteId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            rate: 123.23
            sourceCurrency: EUR
            status: status
            totalCost: 5
            totalPaymentAmount: 34235
          - creationDateTime: 2000-01-23T04:56:07.000+00:00
            fundingStatus: fundingStatus
            invertedRate: 123.23
            paymentCurrency: EUR
            quoteId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            rate: 123.23
            sourceCurrency: EUR
            status: status
            totalCost: 5
            totalPaymentAmount: 34235
        instructedDateTime: instructedDateTime
        payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        payorName: payorName
        payoutId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        payoutMemo: payoutMemo
        payoutType: payoutType
        schedule:
          notificationsEnabled: true
          scheduleStatus: SCHEDULED
          scheduledAt: 2000-01-23T04:56:07.000+00:00
          scheduledBy: Aphra Behn
          scheduledByPrincipalId: 8946953b-1e3b-49cf-9da4-b704cbb78f3e
          scheduledFor: 2000-01-23T04:56:07.000+00:00
        sourceAccountSummary:
          - currency: EUR
            sourceAccountId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            totalCost: 3344
          - currency: EUR
            sourceAccountId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            totalCost: 3344
        status: status
        submittedDateTime: submittedDateTime
        totalIncompletePayments: 6
        totalPayments: 0
        totalReturnedPayments: 1
        totalWithdrawnPayments: 5
        withdrawnDateTime: 2000-01-23T04:56:07.000+00:00
      properties:
        dateTime:
          format: date-time
          type: string
        fxSummaries:
          items:
            $ref: "#/components/schemas/FxSummary"
          type: array
        instructedDateTime:
          type: string
        payorId:
          format: uuid
          type: string
        payorName:
          type: string
        payoutId:
          format: uuid
          type: string
        payoutMemo:
          type: string
        payoutType:
          description: "The type of payout. One of the following values: STANDARD, AS, ON_BEHALF_OF"
          type: string
        schedule:
          $ref: "#/components/schemas/PayoutSchedule"
        sourceAccountSummary:
          items:
            $ref: "#/components/schemas/SourceAccountSummary"
          type: array
        status:
          description: "Current status of the Payout. One of the following values: ACCEPTED, REJECTED, SUBMITTED, QUOTED, INSTRUCTED, COMPLETED, INCOMPLETE, CONFIRMED, WITHDRAWN"
          type: string
        submittedDateTime:
          type: string
        totalIncompletePayments:
          type: integer
        totalPayments:
          type: integer
        totalReturnedPayments:
          type: integer
        totalWithdrawnPayments:
          type: integer
        withdrawnDateTime:
          format: date-time
          type: string
      required:
        - payorName
        - payoutType
        - status
        - submittedDateTime
      type: object
    PayoutSummaryAuditV3:
      example:
        fxSummaries:
          - creationDateTime: 2000-01-23T04:56:07.000+00:00
            fundingStatus: fundingStatus
            invertedRate: 1.12
            paymentCurrency: paymentCurrency
            quoteId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            rate: 1.12
            sourceCurrency: sourceCurrency
            status: status
            totalCost: 1234
            totalPaymentAmount: 1234
          - creationDateTime: 2000-01-23T04:56:07.000+00:00
            fundingStatus: fundingStatus
            invertedRate: 1.12
            paymentCurrency: paymentCurrency
            quoteId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            rate: 1.12
            sourceCurrency: sourceCurrency
            status: status
            totalCost: 1234
            totalPaymentAmount: 1234
        instructedDateTime: instructedDateTime
        payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        payoutId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        payoutMemo: payoutMemo
        sourceAccountSummary:
          - currency: currency
            sourceAccountId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            totalCost: 3434
          - currency: currency
            sourceAccountId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            totalCost: 3434
        status: status
        submittedDateTime: submittedDateTime
        totalFailedPayments: 123
        totalIncompletePayments: 123
        totalPayments: 123
        withdrawnDateTime: withdrawnDateTime
      properties:
        fxSummaries:
          items:
            $ref: "#/components/schemas/FxSummaryV3"
          type: array
        instructedDateTime:
          type: string
        payorId:
          format: uuid
          type: string
        payoutId:
          format: uuid
          type: string
        payoutMemo:
          type: string
        sourceAccountSummary:
          items:
            $ref: "#/components/schemas/SourceAccountSummaryV3"
          type: array
        status:
          description: "Current status of the payout. One of the following values: ACCEPTED, REJECTED, SUBMITTED, QUOTED, INSTRUCTED, COMPLETED, INCOMPLETE, CONFIRMED, WITHDRAWN"
          type: string
        submittedDateTime:
          type: string
        totalFailedPayments:
          example: 123
          type: integer
        totalIncompletePayments:
          example: 123
          type: integer
        totalPayments:
          example: 123
          type: integer
        withdrawnDateTime:
          type: string
      required:
        - payoutId
        - status
        - submittedDateTime
      type: object
    PayoutSummaryResponseV3:
      example:
        acceptedPayments:
          - amount: 10000
            currencyType: USD
            paymentMemo: INV00112
            paymentMetadata: invoiceeId_123|abc001:12345|xyz002:4567
            payorPaymentId: 123211321ABSD
            railsId: SVB
            remoteId: remoteId1234
            remoteSystemId: OB012
            sourceAccountName: Chase Bank Account
          - amount: 10000
            currencyType: USD
            paymentMemo: INV00112
            paymentMetadata: invoiceeId_123|abc001:12345|xyz002:4567
            payorPaymentId: 123211321ABSD
            railsId: SVB
            remoteId: remoteId1234
            remoteSystemId: OB012
            sourceAccountName: Chase Bank Account
        accounts:
          - currency: USD
            sourceAccountId: cf81e490-4ab8-49c2-bd68-9d1e725480cb
            sourceAccountName: AccountName
            totalPayoutCost: 1000000
          - currency: USD
            sourceAccountId: cf81e490-4ab8-49c2-bd68-9d1e725480cb
            sourceAccountName: AccountName
            totalPayoutCost: 1000000
        fxSummaries:
          - creationTime: 2022-10-30T09:45:09Z
            expiryTime: 2022-10-30T09:50:09Z
            fundingStatus: FUNDED
            invertedRate: 1.12
            paymentCurrency: USD
            quoteId: af80d455-29dd-4e72-a000-495a9829a7d0
            rate: 0.89
            sourceCurrency: USD
            status: QUOTED
            totalPaymentAmount: 890000
            totalSourceAmount: 1000000
          - creationTime: 2022-10-30T09:45:09Z
            expiryTime: 2022-10-30T09:50:09Z
            fundingStatus: FUNDED
            invertedRate: 1.12
            paymentCurrency: USD
            quoteId: af80d455-29dd-4e72-a000-495a9829a7d0
            rate: 0.89
            sourceCurrency: USD
            status: QUOTED
            totalPaymentAmount: 890000
            totalSourceAmount: 1000000
        paymentsAccepted: 9
        paymentsRejected: 1
        paymentsSubmitted: 10
        paymentsWithdrawn: 0
        payoutId: cf81e490-4ab8-49c2-bd68-9d1e725480cb
        rejectedPayments:
          - amount: 10000
            currencyType: USD
            lineNumber: 34
            message: Payment cannot be processed because of the Payee's OFAC or Compliance Status
            paymentMetadata: invoiceeId_123|abc001:12345|xyz002:4567
            payorPaymentId: 123211321ABSD
            reason: The payee has not been onboarded
            reasonCode: VE1012
            remoteId: remoteIdVal123
            remoteSystemId: OB012
            sourceAccountName: Chase Bank Account
          - amount: 10000
            currencyType: USD
            lineNumber: 34
            message: Payment cannot be processed because of the Payee's OFAC or Compliance Status
            paymentMetadata: invoiceeId_123|abc001:12345|xyz002:4567
            payorPaymentId: 123211321ABSD
            reason: The payee has not been onboarded
            reasonCode: VE1012
            remoteId: remoteIdVal123
            remoteSystemId: OB012
            sourceAccountName: Chase Bank Account
        schedule:
          notificationsEnabled: true
          scheduleStatus: SCHEDULED
          scheduledAt: 2000-01-23T04:56:07.000+00:00
          scheduledByPrincipalId: 8946953b-1e3b-49cf-9da4-b704cbb78f3e
          scheduledFor: 2000-01-23T04:56:07.000+00:00
        status: COMPLETED
      properties:
        acceptedPayments:
          items:
            $ref: "#/components/schemas/AcceptedPaymentV3"
          type: array
        accounts:
          items:
            $ref: "#/components/schemas/SourceAccountV3"
          type: array
        fxSummaries:
          items:
            $ref: "#/components/schemas/QuoteFxSummaryV3"
          type: array
        paymentsAccepted:
          description: The number of payments that were accepted in the payout
          example: 9
          type: integer
        paymentsRejected:
          description: The number of payments that were rejected in the payout
          example: 1
          type: integer
        paymentsSubmitted:
          description: The number of payments that were submitted in the payout
          example: 10
          type: integer
        paymentsWithdrawn:
          description: The number of payments that were withdrawn in the payout
          example: 0
          type: integer
        payoutId:
          description: The id of the payout
          example: cf81e490-4ab8-49c2-bd68-9d1e725480cb
          format: uuid
          type: string
        rejectedPayments:
          items:
            $ref: "#/components/schemas/RejectedPaymentV3"
          type: array
        schedule:
          $ref: "#/components/schemas/PayoutScheduleV3"
        status:
          description: The status of the payout (one of SUBMITTED, ACCEPTED, REJECTED, QUOTED, INSTRUCTED, COMPLETED, INCOMPLETE, WITHDRAWN)
          example: COMPLETED
          type: string
      required:
        - acceptedPayments
        - accounts
        - fxSummaries
        - paymentsWithdrawn
        - rejectedPayments
      type: object
    PayoutType:
      description: "The type of payout. One of the following values: STANDARD, AS, ON_BEHALF_OF"
      type: string
    Ping:
      allOf:
        - $ref: "#/components/schemas/SourceEvent"
      description: Ping event for testing the webhook integration. Can be initiated via the Web UI.
    PingResponse:
      example:
        id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        webhookId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
      properties:
        id:
          format: uuid
          type: string
        webhookId:
          format: uuid
          type: string
      type: object
    PostInstructFxInfo:
      description: FX details relating to a payout that was executed or is still waiting to be executed
      example:
        fxMode: MANUAL
        fxStatus: INITIATED
        fxStatusUpdatedAt: 2000-01-23T04:56:07.000+00:00
        fxTransactionReference: AB123GHI
      properties:
        fxMode:
          description: The mode by which the FX rate is to be determined (MANUAL or AUTO)
          example: MANUAL
          type: string
        fxStatus:
          description: The state to which the Post-Instruct FX process has reached (INITIATED or COMPLETED)
          example: INITIATED
          type: string
        fxStatusUpdatedAt:
          description: The date-time at which the most recent fxStatus was determined.
          format: date-time
          type: string
        fxTransactionReference:
          description: The reference assigned to the FX funding that will fulfil this payment.
          example: AB123GHI
          type: string
      required:
        - fxMode
        - fxStatus
        - fxStatusUpdatedAt
      type: object
    PostInstructFxMode:
      description: The mode by which the FX rate is to be determined (MANUAL or AUTO)
      example: MANUAL
      type: string
    PostInstructFxStatus:
      description: The state to which the Post-Instruct FX process has reached (INITIATED or COMPLETED)
      example: INITIATED
      type: string
    QueryBatchResponseV3:
      example:
        failureCount: 2
        failures:
          - failedSubmission:
              address:
                city: Key West
                country: US
                countyOrProvince: FL
                line1: 500 Duval St
                line2: line2
                line3: line3
                line4: line4
                zipOrPostcode: "33945"
              challenge:
                description: challenge description
                value: challenge test
              company:
                name: ABC Group Plc
                operatingName: ABC Co
                taxId: "123123123"
              email: bob@example.com
              individual:
                dateOfBirth: 1970-05-20T00:00:00.000+0000
                name:
                  firstName: Bob
                  lastName: Smith
                  otherNames: H
                  title: Mr
                nationalIdentification: SA211123K
              language: en-US
              payeeId: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
              paymentChannel:
                accountName: My account
                accountNumber: XXXXXX5678
                countryCode: US
                currency: USD
                iban: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1234
                paymentChannelName: My Payment Channel
                routingNumber: XXXXX6789
              payorRefs:
                - invitationStatus: invitationStatus
                  invitationStatusTimestamp: 2019-01-20T09:00:00Z
                  payableIssues:
                    - code: "3"
                      message: payee-disabled
                    - code: "3"
                      message: payee-disabled
                  payableStatus: true
                  paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
                  payorId: ba08877f-9d96-41e4-9c26-44a872d856ae
                  remoteId: uniqueIdForRemoteEntity
                - invitationStatus: invitationStatus
                  invitationStatusTimestamp: 2019-01-20T09:00:00Z
                  payableIssues:
                    - code: "3"
                      message: payee-disabled
                    - code: "3"
                      message: payee-disabled
                  payableStatus: true
                  paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
                  payorId: ba08877f-9d96-41e4-9c26-44a872d856ae
                  remoteId: uniqueIdForRemoteEntity
              remoteId: Remote ID
              type: type
            failureMessage: failure reason
          - failedSubmission:
              address:
                city: Key West
                country: US
                countyOrProvince: FL
                line1: 500 Duval St
                line2: line2
                line3: line3
                line4: line4
                zipOrPostcode: "33945"
              challenge:
                description: challenge description
                value: challenge test
              company:
                name: ABC Group Plc
                operatingName: ABC Co
                taxId: "123123123"
              email: bob@example.com
              individual:
                dateOfBirth: 1970-05-20T00:00:00.000+0000
                name:
                  firstName: Bob
                  lastName: Smith
                  otherNames: H
                  title: Mr
                nationalIdentification: SA211123K
              language: en-US
              payeeId: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
              paymentChannel:
                accountName: My account
                accountNumber: XXXXXX5678
                countryCode: US
                currency: USD
                iban: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1234
                paymentChannelName: My Payment Channel
                routingNumber: XXXXX6789
              payorRefs:
                - invitationStatus: invitationStatus
                  invitationStatusTimestamp: 2019-01-20T09:00:00Z
                  payableIssues:
                    - code: "3"
                      message: payee-disabled
                    - code: "3"
                      message: payee-disabled
                  payableStatus: true
                  paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
                  payorId: ba08877f-9d96-41e4-9c26-44a872d856ae
                  remoteId: uniqueIdForRemoteEntity
                - invitationStatus: invitationStatus
                  invitationStatusTimestamp: 2019-01-20T09:00:00Z
                  payableIssues:
                    - code: "3"
                      message: payee-disabled
                    - code: "3"
                      message: payee-disabled
                  payableStatus: true
                  paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
                  payorId: ba08877f-9d96-41e4-9c26-44a872d856ae
                  remoteId: uniqueIdForRemoteEntity
              remoteId: Remote ID
              type: type
            failureMessage: failure reason
        pendingCount: 2
        status: status
      properties:
        failureCount:
          example: 2
          format: int64
          type: integer
        failures:
          items:
            $ref: "#/components/schemas/FailedSubmissionV3"
          type: array
        pendingCount:
          example: 2
          format: int64
          type: integer
        status:
          description: "Batch Status. One of the following values: SUBMITTED, ACCEPTED"
          type: string
      type: object
    QueryBatchResponseV4:
      example:
        failureCount: 2
        failures:
          - failedSubmission:
              address:
                city: Key West
                country: US
                countyOrProvince: FL
                line1: 500 Duval St
                line2: line2
                line3: line3
                line4: line4
                zipOrPostcode: "33945"
              challenge:
                description: challenge description
                value: "11984567"
              company:
                name: ABC Group Plc
                operatingName: ABC Co
                taxId: "123123123"
              email: bob@example.com
              individual:
                dateOfBirth: 1970-05-20T00:00:00.000+0000
                name:
                  firstName: Bob
                  lastName: Smith
                  otherNames: H
                  title: Mr
                nationalIdentification: SA211123K
              language: en-US
              payeeId: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
              paymentChannel:
                accountName: My account
                accountNumber: XXXXXX5678
                countryCode: US
                currency: USD
                iban: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1234
                paymentChannelName: My Payment Channel
                routingNumber: XXXXX6789
              payorRefs:
                - invitationStatus: invitationStatus
                  invitationStatusTimestamp: 2019-01-20T09:00:00Z
                  payableIssues:
                    - code: "3"
                      message: payee-disabled
                    - code: "3"
                      message: payee-disabled
                  payableStatus: true
                  paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
                  payorId: ba08877f-9d96-41e4-9c26-44a872d856ae
                  remoteId: uniqueIdForRemoteEntity
                - invitationStatus: invitationStatus
                  invitationStatusTimestamp: 2019-01-20T09:00:00Z
                  payableIssues:
                    - code: "3"
                      message: payee-disabled
                    - code: "3"
                      message: payee-disabled
                  payableStatus: true
                  paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
                  payorId: ba08877f-9d96-41e4-9c26-44a872d856ae
                  remoteId: uniqueIdForRemoteEntity
              remoteId: Remote ID
              type: type
            failureMessage: failure reason
          - failedSubmission:
              address:
                city: Key West
                country: US
                countyOrProvince: FL
                line1: 500 Duval St
                line2: line2
                line3: line3
                line4: line4
                zipOrPostcode: "33945"
              challenge:
                description: challenge description
                value: "11984567"
              company:
                name: ABC Group Plc
                operatingName: ABC Co
                taxId: "123123123"
              email: bob@example.com
              individual:
                dateOfBirth: 1970-05-20T00:00:00.000+0000
                name:
                  firstName: Bob
                  lastName: Smith
                  otherNames: H
                  title: Mr
                nationalIdentification: SA211123K
              language: en-US
              payeeId: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9
              paymentChannel:
                accountName: My account
                accountNumber: XXXXXX5678
                countryCode: US
                currency: USD
                iban: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1234
                paymentChannelName: My Payment Channel
                routingNumber: XXXXX6789
              payorRefs:
                - invitationStatus: invitationStatus
                  invitationStatusTimestamp: 2019-01-20T09:00:00Z
                  payableIssues:
                    - code: "3"
                      message: payee-disabled
                    - code: "3"
                      message: payee-disabled
                  payableStatus: true
                  paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
                  payorId: ba08877f-9d96-41e4-9c26-44a872d856ae
                  remoteId: uniqueIdForRemoteEntity
                - invitationStatus: invitationStatus
                  invitationStatusTimestamp: 2019-01-20T09:00:00Z
                  payableIssues:
                    - code: "3"
                      message: payee-disabled
                    - code: "3"
                      message: payee-disabled
                  payableStatus: true
                  paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3
                  payorId: ba08877f-9d96-41e4-9c26-44a872d856ae
                  remoteId: uniqueIdForRemoteEntity
              remoteId: Remote ID
              type: type
            failureMessage: failure reason
        pendingCount: 2
        status: status
      properties:
        failureCount:
          example: 2
          format: int64
          type: integer
        failures:
          items:
            $ref: "#/components/schemas/FailedSubmissionV4"
          type: array
        pendingCount:
          example: 2
          format: int64
          type: integer
        status:
          description: "Batch Status. One of the following values: SUBMITTED, ACCEPTED"
          type: string
      type: object
    QuoteFxSummaryV3:
      example:
        creationTime: 2022-10-30T09:45:09Z
        expiryTime: 2022-10-30T09:50:09Z
        fundingStatus: FUNDED
        invertedRate: 1.12
        paymentCurrency: USD
        quoteId: af80d455-29dd-4e72-a000-495a9829a7d0
        rate: 0.89
        sourceCurrency: USD
        status: QUOTED
        totalPaymentAmount: 890000
        totalSourceAmount: 1000000
      properties:
        creationTime:
          description: Timestamp of when the quote was created
          example: 2022-10-30T09:45:09Z
          format: date-time
          type: string
        expiryTime:
          description: The timestamp for when the quote will expire
          example: 2022-10-30T09:50:09Z
          format: date-time
          type: string
        fundingStatus:
          description: "Current status of the funding associated with this quote. One of the following values: UNFUNDED, INSTRUCTED, FUNDED"
          example: FUNDED
          type: string
        invertedRate:
          description: The inverse conversion rate (from paymnent currency to source currency)
          example: 1.12
          format: float
          type: number
        paymentCurrency:
          description: Valid ISO 4217 3 letter currency code. See the <a href="https://www.iso.org/iso-4217-currency-codes.html" target="_blank" a>ISO specification</a> for details.
          example: USD
          maxLength: 3
          minLength: 3
          pattern: ^[A-Z]{3}$
          title: ISO Currency Code
          type: string
        quoteId:
          description: The id of the created quote
          example: af80d455-29dd-4e72-a000-495a9829a7d0
          format: uuid
          type: string
        rate:
          description: The conversion rate (from the source currency to the payment currency)
          example: 0.89
          format: float
          type: number
        sourceCurrency:
          description: Valid ISO 4217 3 letter currency code. See the <a href="https://www.iso.org/iso-4217-currency-codes.html" target="_blank" a>ISO specification</a> for details.
          example: USD
          maxLength: 3
          minLength: 3
          pattern: ^[A-Z]{3}$
          title: ISO Currency Code
          type: string
        status:
          description: "Current status of the fx quote. One of the following values: UNQUOTED, QUOTED, EXPIRED, EXECUTED, REJECTED"
          example: QUOTED
          type: string
        totalPaymentAmount:
          description: The amount (in minor units) that the payee will receive
          example: 890000
          type: integer
        totalSourceAmount:
          description: The amount (in minor units) that will be paid from the source account
          example: 1000000
          type: integer
      required:
        - creationTime
        - fundingStatus
        - paymentCurrency
        - quoteId
        - rate
        - sourceCurrency
        - status
        - totalPaymentAmount
        - totalSourceAmount
      type: object
    QuoteResponseV3:
      example:
        fxSummaries:
          - creationTime: 2022-10-30T09:45:09Z
            expiryTime: 2022-10-30T09:50:09Z
            fundingStatus: FUNDED
            invertedRate: 1.12
            paymentCurrency: USD
            quoteId: af80d455-29dd-4e72-a000-495a9829a7d0
            rate: 0.89
            sourceCurrency: USD
            status: QUOTED
            totalPaymentAmount: 890000
            totalSourceAmount: 1000000
          - creationTime: 2022-10-30T09:45:09Z
            expiryTime: 2022-10-30T09:50:09Z
            fundingStatus: FUNDED
            invertedRate: 1.12
            paymentCurrency: USD
            quoteId: af80d455-29dd-4e72-a000-495a9829a7d0
            rate: 0.89
            sourceCurrency: USD
            status: QUOTED
            totalPaymentAmount: 890000
            totalSourceAmount: 1000000
      properties:
        fxSummaries:
          items:
            $ref: "#/components/schemas/QuoteFxSummaryV3"
          type: array
      type: object
    RegionV2:
      example:
        abbreviation: CA
        name: California
      properties:
        abbreviation:
          example: CA
          type: string
        name:
          example: California
          type: string
      type: object
    RegisterSmsRequest:
      example:
        smsNumber: "11235555555"
      properties:
        smsNumber:
          description: |
            The phone number of a device that the user can receive sms messages on
          example: "11235555555"
          pattern: ^\+[1-9]\d{1,14}$
          type: string
      required:
        - smsNumber
      type: object
    RejectedPaymentV3:
      example:
        amount: 10000
        currencyType: USD
        lineNumber: 34
        message: Payment cannot be processed because of the Payee's OFAC or Compliance Status
        paymentMetadata: invoiceeId_123|abc001:12345|xyz002:4567
        payorPaymentId: 123211321ABSD
        reason: The payee has not been onboarded
        reasonCode: VE1012
        remoteId: remoteIdVal123
        remoteSystemId: OB012
        sourceAccountName: Chase Bank Account
      properties:
        amount:
          description: The amount of the payment in minor units
          example: 10000
          type: integer
        currencyType:
          description: Valid ISO 4217 3 letter currency code. See the <a href="https://www.iso.org/iso-4217-currency-codes.html" target="_blank" a>ISO specification</a> for details.
          example: USD
          maxLength: 3
          minLength: 3
          pattern: ^[A-Z]{3}$
          title: ISO Currency Code
          type: string
        lineNumber:
          description: If the payment was submitted in a csv payout then this will be the line number of the payment in the file
          example: 34
          type: integer
        message:
          description: A more general rejection message than the reason property
          example: Payment cannot be processed because of the Payee's OFAC or Compliance Status
          type: string
        paymentMetadata:
          description: |
            <p>Metadata about the payment that may be relevant to the specific rails or remote system making the payout</p>
            <p>The structure of the data will be dictated by the requirements of the payment rails</p>
          example: invoiceeId_123|abc001:12345|xyz002:4567
          maxLength: 512
          minLength: 0
          type: string
        payorPaymentId:
          description: A reference identifier for the payor for the given payee payment
          example: 123211321ABSD
          maxLength: 40
          minLength: 0
          type: string
        reason:
          description: The reason for the payment being rejected
          example: The payee has not been onboarded
          type: string
        reasonCode:
          description: The reason code as determined by Velo
          example: VE1012
          type: string
        remoteId:
          description: The remoteId supplied by the payor that identifies the payee
          example: remoteIdVal123
          type: string
        remoteSystemId:
          description: |
            <p>The identifier for the remote payments system if not Velo</p>
          example: OB012
          maxLength: 100
          minLength: 1
          type: string
        sourceAccountName:
          description: The identifier of the source account to debit the payment from
          example: Chase Bank Account
          type: string
      required:
        - amount
        - currencyType
        - payorPaymentId
        - reason
        - remoteId
        - sourceAccountName
      type: object
    ResendTokenRequest:
      example:
        tokenType: INVITE_MFA_USER
        verificationCode: "123456"
      properties:
        tokenType:
          description: The type of the token to resend
          enum:
            - INVITE_MFA_USER
            - MFA_REGISTRATION
          example: INVITE_MFA_USER
          type: string
        verificationCode:
          description: |
            <p>Optional property that MUST be suppied when manually verifying a user</p>
            <p>The user's smsNumber is registered via a separate endpoint and an OTP sent to them</p>
          example: "123456"
          maxLength: 6
          minLength: 6
          nullable: true
          type: string
      required:
        - tokenType
      type: object
    ResetPasswordRequest:
      example:
        email: foo@example.com
      properties:
        email:
          description: the email address of the user requesting the reset password
          example: foo@example.com
          format: email
          type: string
      required:
        - email
      type: object
    Role:
      properties:
        name:
          description: the name of the role
          example: payor.admin
          type: string
      required:
        - name
      type: object
    RoleUpdateRequest:
      example:
        roles:
          - payor.admin
        verificationCode: "123456"
      properties:
        roles:
          description: |
            <p>The role(s) for the user</p>
            <p>The role must exist</p>
            <p>The role can be a custom role or a system role but the invoker must have the permissions to assign the role</p>
            <p>System roles are: backoffice.admin, payor.master_admin, payor.admin, payor.support</p>
          example:
            - payor.admin
          items:
            type: string
          type: array
        verificationCode:
          description: |
            <p>Optional property that MUST be suppied when manually verifying a user</p>
            <p>The user's smsNumber is registered via a separate endpoint and an OTP sent to them</p>
          example: "123456"
          maxLength: 6
          minLength: 6
          nullable: true
          type: string
      required:
        - roles
      type: object
    SchedulePayoutRequestV3:
      example:
        notificationsEnabled: true
        scheduledFor: 2025-01-01T10:00:00Z
      properties:
        notificationsEnabled:
          description: Flag to indicate whether to receive notifications when scheduled payout is processed
          type: boolean
        scheduledFor:
          description: UTC timestamp for instructing the payout. Format is ISO-8601.
          example: 2025-01-01T10:00:00Z
          format: date-time
          type: string
      required:
        - notificationsEnabled
        - scheduledFor
      type: object
    ScheduleStatus:
      description: "Current status of the payout schedule. One of the following values: SCHEDULED, EXECUTED, FAILED"
      example: SCHEDULED
      type: string
    SelfMFATypeUnregisterRequest:
      example:
        mfaType: TOTP
      properties:
        mfaType:
          description: The type of the MFA device
          enum:
            - SMS
            - YUBIKEY
            - TOTP
          example: TOTP
          type: string
      required:
        - mfaType
      type: object
    SelfUpdatePasswordRequest:
      example:
        newPassword: My_new_password
        oldPassword: My_current_password
      properties:
        newPassword:
          description: The new password
          example: My_new_password
          maxLength: 128
          minLength: 8
          type: string
        oldPassword:
          description: The user's current password
          example: My_current_password
          maxLength: 128
          minLength: 8
          type: string
      required:
        - newPassword
        - oldPassword
      type: object
    SetNotificationsRequest:
      example:
        minimumBalance: 800828190
      properties:
        minimumBalance:
          description: Amount to set as minimum balance in minor units
          format: int64
          maximum: 9999999999
          minimum: 0
          type: integer
      required:
        - minimumBalance
      type: object
    SetNotificationsRequest_2:
      properties:
        minimumBalance:
          description: Amount to set as minimum balance for notifications in minor units
          example: 10000000
          format: int64
          maximum: 9999999999
          minimum: 0
          type: integer
      required:
        - minimumBalance
      type: object
    SourceAccountResponseV2:
      example:
        accountType: FBO
        autoTopUpConfig:
          enabled: true
          minBalance: 10000
          targetBalance: 300000
        balance: 1203489
        balanceVisible: true
        currency: USD
        customerId: Joe Customer
        fundingAccountId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        fundingRef: a1b2c3d4
        id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        name: MyAccountName
        notifications:
          minimumBalance: 120000
        payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        physicalAccountId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        physicalAccountName: VELO_FBO_MYBANKA_USD
        pooled: true
        railsId: BOA_RAIL
      properties:
        accountType:
          example: FBO
          type: string
        autoTopUpConfig:
          $ref: "#/components/schemas/AutoTopUpConfigV2"
        balance:
          description: Decimal implied
          example: 1203489
          format: int64
          type: integer
        balanceVisible:
          type: boolean
        currency:
          example: USD
          maxLength: 3
          minLength: 3
          type: string
        customerId:
          example: Joe Customer
          nullable: true
          type: string
        fundingAccountId:
          format: uuid
          nullable: true
          type: string
        fundingRef:
          example: a1b2c3d4
          type: string
        id:
          description: Source Account Id
          format: uuid
          type: string
        name:
          example: MyAccountName
          type: string
        notifications:
          $ref: "#/components/schemas/NotificationsV2"
        payorId:
          format: uuid
          type: string
        physicalAccountId:
          format: uuid
          type: string
        physicalAccountName:
          example: VELO_FBO_MYBANKA_USD
          type: string
        pooled:
          type: boolean
        railsId:
          example: BOA_RAIL
          type: string
      required:
        - accountType
        - balanceVisible
        - fundingRef
        - id
        - physicalAccountName
        - pooled
        - railsId
      type: object
    SourceAccountResponseV3:
      example:
        autoTopUpConfig:
          enabled: true
          fundingAccountId: 640ab1bd-8a6a-4603-a83a-1edbc3ed5689
          minBalance: 10000
          targetBalance: 300000
        balance: 1203489
        country: US
        currency: USD
        customerId: Joe Customer
        deleted: true
        deletedAt: 2021-01-27T10:08:25.701Z
        fundingRef: a1b2c3d4
        id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        name: MyAccountName
        notifications:
          minimumBalance: 120000
        payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        physicalAccountId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        physicalAccountName: VELO_FBO_MYBANKA_USD
        pooled: true
        railsId: BOA_RAIL
        type: FBO
        userDeleted: true
      properties:
        autoTopUpConfig:
          $ref: "#/components/schemas/AutoTopUpConfigV3"
        balance:
          description: Decimal implied
          example: 1203489
          format: int64
          type: integer
        country:
          description: Valid ISO 3166 2 character country code. See the <a href="https://www.iso.org/iso-3166-country-codes.html" target="_blank" a>ISO specification</a> for details.
          example: US
          maxLength: 2
          minLength: 2
          pattern: ^[A-Z]{2}$
          title: ISO 3166 2 Character Country Code
          type: string
        currency:
          description: Valid ISO 4217 3 letter currency code. See the <a href="https://www.iso.org/iso-4217-currency-codes.html" target="_blank" a>ISO specification</a> for details.
          example: USD
          maxLength: 3
          minLength: 3
          pattern: ^[A-Z]{3}$
          title: ISO Currency Code
          type: string
        customerId:
          example: Joe Customer
          nullable: true
          type: string
        deleted:
          description: An optional flag for whether the source account has been deleted. Only present in the response if true.
          type: boolean
        deletedAt:
          description: An optional timestamp when the source account has been deleted. Only present in the response if deleted.
          example: 2021-01-27T10:08:25.701Z
          format: date-time
          type: string
        fundingRef:
          description: The funding reference (will not be set for DECOUPLED accounts).
          example: a1b2c3d4
          type: string
        id:
          description: Source Account Id
          format: uuid
          type: string
        name:
          example: MyAccountName
          type: string
        notifications:
          $ref: "#/components/schemas/NotificationsV3"
        payorId:
          format: uuid
          type: string
        physicalAccountId:
          description: The physical account id (will not be set for DECOUPLED accounts).
          format: uuid
          type: string
        physicalAccountName:
          description: The physical account name (will not be set for DECOUPLED accounts).
          example: VELO_FBO_MYBANKA_USD
          type: string
        pooled:
          description: The pooled account flag (will not be set for DECOUPLED accounts).
          type: boolean
        railsId:
          example: BOA_RAIL
          type: string
        type:
          example: FBO
          type: string
        userDeleted:
          description: An optional flag for whether the source account has been deleted by a user. Only present in the response if true.
          type: boolean
      required:
        - id
        - railsId
        - type
      type: object
    SourceAccountSummary:
      example:
        currency: EUR
        sourceAccountId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        totalCost: 3344
      properties:
        currency:
          description: ISO-4217 3 character currency code
          example: EUR
          maxLength: 3
          minLength: 3
          type: string
        sourceAccountId:
          format: uuid
          type: string
        totalCost:
          example: 3344
          format: int64
          type: integer
      required:
        - sourceAccountId
        - totalCost
      type: object
    SourceAccountSummaryV3:
      example:
        currency: currency
        sourceAccountId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        totalCost: 3434
      properties:
        currency:
          description: ISO 3 character currency code
          maxLength: 3
          minLength: 3
          type: string
        sourceAccountId:
          format: uuid
          type: string
        totalCost:
          example: 3434
          format: int64
          type: integer
      required:
        - sourceAccountId
        - totalCost
      type: object
    SourceAccountTypeV3:
      description: "Type of source account. One of the following values: FBO,PRIVATE,WUBS_DECOUPLED"
      type: string
    SourceAccountV3:
      example:
        currency: USD
        sourceAccountId: cf81e490-4ab8-49c2-bd68-9d1e725480cb
        sourceAccountName: AccountName
        totalPayoutCost: 1000000
      properties:
        currency:
          description: Valid ISO 4217 3 letter currency code. See the <a href="https://www.iso.org/iso-4217-currency-codes.html" target="_blank" a>ISO specification</a> for details.
          example: USD
          maxLength: 3
          minLength: 3
          pattern: ^[A-Z]{3}$
          title: ISO Currency Code
          type: string
        sourceAccountId:
          description: The id of the payout
          example: cf81e490-4ab8-49c2-bd68-9d1e725480cb
          format: uuid
          type: string
        sourceAccountName:
          description: The name of the source account as referencec in the payout
          example: AccountName
          type: string
        totalPayoutCost:
          description: The total amount (in mnor units) that will be debited from the source account for the payout
          example: 1000000
          type: integer
      required:
        - currency
        - sourceAccountId
        - sourceAccountName
        - totalPayoutCost
      type: object
    SourceEvent:
      description: Base type for each source event payload
      properties:
        createdAt:
          description: ISO8601 timestamp indicating when the source event was created
          example: 2020-06-18T15:09:42Z
          format: date-time
          type: string
        eventId:
          description: UUID id of the source event in the Velo platform
          example: 270ab907-27ec-4b83-8028-0ff432bbdec4
          format: uuid
          type: string
        sourceType:
          description: OA3 Schema type name for the source info which is used as the discriminator value to ensure that data binding works correctly
          example: payment_status_changed
          type: string
      required:
        - createdAt
        - eventId
        - sourceType
      type: object
    SupportedCountriesResponse:
      example:
        countries:
          - currencies:
              - USD
              - USD
            isoCountryCode: US
          - currencies:
              - USD
              - USD
            isoCountryCode: US
      properties:
        countries:
          items:
            $ref: "#/components/schemas/SupportedCountry"
          type: array
      type: object
    SupportedCountriesResponseV2:
      example:
        countries:
          - currencies:
              - USD
              - USD
            isoCountryCode: US
            regions:
              - abbreviation: CA
                name: California
              - abbreviation: CA
                name: California
          - currencies:
              - USD
              - USD
            isoCountryCode: US
            regions:
              - abbreviation: CA
                name: California
              - abbreviation: CA
                name: California
      properties:
        countries:
          items:
            $ref: "#/components/schemas/SupportedCountryV2"
          type: array
      type: object
    SupportedCountry:
      example:
        currencies:
          - USD
          - USD
        isoCountryCode: US
      properties:
        currencies:
          items:
            $ref: "#/components/schemas/IsoCurrency"
          type: array
        isoCountryCode:
          description: Valid ISO 3166 2 character country code. See the <a href="https://www.iso.org/iso-3166-country-codes.html" target="_blank" a>ISO specification</a> for details.
          example: US
          maxLength: 2
          minLength: 2
          pattern: ^[A-Z]{2}$
          title: ISO 3166 2 Character Country Code
          type: string
      type: object
    SupportedCountryV2:
      example:
        currencies:
          - USD
          - USD
        isoCountryCode: US
        regions:
          - abbreviation: CA
            name: California
          - abbreviation: CA
            name: California
      properties:
        currencies:
          items:
            $ref: "#/components/schemas/IsoCurrency"
          type: array
        isoCountryCode:
          description: Valid ISO 3166 2 character country code. See the <a href="https://www.iso.org/iso-3166-country-codes.html" target="_blank" a>ISO specification</a> for details.
          example: US
          maxLength: 2
          minLength: 2
          pattern: ^[A-Z]{2}$
          title: ISO 3166 2 Character Country Code
          type: string
        regions:
          items:
            $ref: "#/components/schemas/RegionV2"
          type: array
      type: object
    SupportedCurrencyResponseV2:
      example:
        currencies:
          - currency: USD
            maxPaymentAmount: 100000
          - currency: USD
            maxPaymentAmount: 100000
      properties:
        currencies:
          items:
            $ref: "#/components/schemas/SupportedCurrencyV2"
          type: array
      type: object
    SupportedCurrencyV2:
      example:
        currency: USD
        maxPaymentAmount: 100000
      properties:
        currency:
          description: Valid ISO 4217 3 letter currency code. See the <a href="https://www.iso.org/iso-4217-currency-codes.html" target="_blank" a>ISO specification</a> for details.
          example: USD
          maxLength: 3
          minLength: 3
          pattern: ^[A-Z]{3}$
          title: ISO Currency Code
          type: string
        maxPaymentAmount:
          description: The max amount allowed in this currency
          example: 100000
          type: integer
      type: object
    SupportedLanguage:
      description: |
        An IETF BCP 47 language code which has been configured for use within this Velo environment.<BR>
        See the /v1/supportedLanguages endpoint to list the available codes for an environment.
      example: en-US
      type: string
    TransferRequestV2:
      example:
        amount: 800828191
        currency: USD
        toSourceAccountId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
      properties:
        amount:
          description: Amount to transfer, in minor units
          format: int64
          maximum: 9999999999
          minimum: 1
          type: integer
        currency:
          example: USD
          maxLength: 3
          minLength: 3
          type: string
        toSourceAccountId:
          description: The 'to' source account id, which will be credited
          format: uuid
          type: string
      required:
        - amount
        - currency
        - toSourceAccountId
      type: object
    TransferRequestV3:
      example:
        amount: 800828191
        currency: USD
        toSourceAccountId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
      properties:
        amount:
          description: Amount to transfer, in minor units
          format: int64
          maximum: 9999999999
          minimum: 1
          type: integer
        currency:
          description: Valid ISO 4217 3 letter currency code. See the <a href="https://www.iso.org/iso-4217-currency-codes.html" target="_blank" a>ISO specification</a> for details.
          example: USD
          maxLength: 3
          minLength: 3
          pattern: ^[A-Z]{3}$
          title: ISO Currency Code
          type: string
        toSourceAccountId:
          description: The 'to' source account id, which will be credited
          format: uuid
          type: string
      required:
        - amount
        - currency
        - toSourceAccountId
      type: object
    TransmissionTypes:
      example:
        ACH: true
        SAME_DAY_ACH: true
        WIRE: true
      properties:
        ACH:
          description: Whether the Payor is allowed to pay via ACH
          example: true
          type: boolean
        SAME_DAY_ACH:
          description: Whether the Payor is allowed to pay via same day ACH
          example: true
          type: boolean
        WIRE:
          description: Whether the Payor is allowed to pay via wire
          example: true
          type: boolean
      required:
        - ACH
        - SAME_DAY_ACH
        - WIRE
      type: object
    TransmissionTypes_2:
      example:
        ACH: true
        SAME_DAY_ACH: true
        WIRE: true
      properties:
        ACH:
          description: Whether the Payor is allowed to pay via ACH
          example: true
          type: boolean
        SAME_DAY_ACH:
          description: Whether the Payor is allowed to pay via same day ACH
          example: true
          type: boolean
        WIRE:
          description: Whether the Payor is allowed to pay via wire
          example: true
          type: boolean
      required:
        - ACH
        - SAME_DAY_ACH
        - WIRE
      type: object
    UnregisterMFARequest:
      example:
        mfaType: TOTP
        verificationCode: "123456"
      properties:
        mfaType:
          description: The type of the MFA device
          enum:
            - YUBIKEY
            - TOTP
          example: TOTP
          type: string
        verificationCode:
          description: |
            <p>Optional property that MUST be suppied when manually verifying a user</p>
            <p>The user's smsNumber is registered via a separate endpoint and an OTP sent to them</p>
          example: "123456"
          maxLength: 6
          minLength: 6
          nullable: true
          type: string
      required:
        - mfaType
      type: object
    UpdatePayeeDetailsRequestV3:
      example:
        address:
          city: Key West
          country: US
          countyOrProvince: FL
          line1: 500 Duval St
          line2: line2
          line3: line3
          line4: line4
          zipOrPostcode: "33945"
        challenge:
          description: challenge description
          value: challenge test
        company:
          name: ABC Group Plc
          operatingName: ABC Co
          taxId: "123123123"
        email: bob@example.com
        individual:
          dateOfBirth: 1985-01-01
          name:
            firstName: Bob
            lastName: Smith
            otherNames: A
            title: Mr
          nationalIdentification: AB123456C
        language: en-US
      properties:
        address:
          $ref: "#/components/schemas/PayeeAddressV3"
        challenge:
          $ref: "#/components/schemas/ChallengeV3"
        company:
          $ref: "#/components/schemas/CompanyV3"
        email:
          example: bob@example.com
          format: email
          nullable: true
          type: string
        individual:
          $ref: "#/components/schemas/IndividualV3"
        language:
          description: |
            An IETF BCP 47 language code which has been configured for use within this Velo environment.<BR>
            See the /v1/supportedLanguages endpoint to list the available codes for an environment.
          example: en-US
          type: string
        payeeType:
          $ref: "#/components/schemas/PayeeTypeEnum"
      type: object
    UpdatePayeeDetailsRequestV4:
      example:
        address:
          city: Key West
          country: US
          countyOrProvince: FL
          line1: 500 Duval St
          line2: line2
          line3: line3
          line4: line4
          zipOrPostcode: "33945"
        challenge:
          description: challenge description
          value: "11984567"
        company:
          name: ABC Group Plc
          operatingName: ABC Co
          taxId: "123123123"
        contactSmsNumber: "11235555555"
        email: bob@example.com
        individual:
          dateOfBirth: 1985-01-01
          name:
            firstName: Bob
            lastName: Smith
            otherNames: A
            title: Mr
          nationalIdentification: AB123456C
        language: en-US
      properties:
        address:
          $ref: "#/components/schemas/PayeeAddressV4"
        challenge:
          $ref: "#/components/schemas/ChallengeV4"
        company:
          $ref: "#/components/schemas/CompanyV4"
        contactSmsNumber:
          description: |
            The phone number of a device that the payee wishes to receive sms messages on
          example: "11235555555"
          pattern: ^\+[1-9]\d{1,14}$
          type: string
        email:
          example: bob@example.com
          format: email
          nullable: true
          type: string
        individual:
          $ref: "#/components/schemas/IndividualV4"
        language:
          description: |
            An IETF BCP 47 language code which has been configured for use within this Velo environment.<BR>
            See the /v1/supportedLanguages endpoint to list the available codes for an environment.
          example: en-US
          type: string
        payeeType:
          $ref: "#/components/schemas/PayeeTypeEnum"
      type: object
    UpdateRemoteIdRequestV3:
      example:
        payorId: 9ac75325-5dcd-42d5-b992-175d7e0a035e
        remoteId: remoteId123
      properties:
        payorId:
          example: 9ac75325-5dcd-42d5-b992-175d7e0a035e
          format: uuid
          nullable: false
          type: string
        remoteId:
          example: remoteId123
          maxLength: 100
          minLength: 1
          nullable: false
          type: string
      required:
        - payorId
        - remoteId
      type: object
    UpdateRemoteIdRequestV4:
      example:
        payorId: 9ac75325-5dcd-42d5-b992-175d7e0a035e
        remoteId: remoteId123
      properties:
        payorId:
          example: 9ac75325-5dcd-42d5-b992-175d7e0a035e
          format: uuid
          nullable: false
          type: string
        remoteId:
          example: remoteId123
          maxLength: 100
          minLength: 1
          nullable: false
          type: string
      required:
        - payorId
        - remoteId
      type: object
    UpdateWebhookRequest:
      example:
        authorizationHeader: authorizationHeader
        categories:
          - null
          - null
        enabled: true
        webhookUrl: webhookUrl
      properties:
        authorizationHeader:
          description: the authorization header to include with the notification.
          maxLength: 1000
          minLength: 4
          nullable: true
          pattern: .*
          type: string
        categories:
          description: The notification categories to enable.
          items:
            $ref: "#/components/schemas/Category"
          nullable: true
          type: array
        enabled:
          description: whether the webhook is enabled.
          type: boolean
        webhookUrl:
          description: the webhook URL to use.
          maxLength: 2000
          minLength: 6
          type: string
      type: object
    UserDetailsUpdateRequest:
      description: |
        <p>All properties are optional</p>
        <p>Only provided properties will be updated</p>
        <p>Use null to null out a property that is allowed to be nullable</p>
      example:
        email: foo@example.com
        firstName: John
        lastName: Doe
        mfaType: TOTP
        primaryContactNumber: "11235555555"
        secondaryContactNumber: "11235555550"
        smsNumber: "11235555555"
        verificationCode: "123456"
      properties:
        email:
          description: the email address of the user
          example: foo@example.com
          format: email
          nullable: true
          type: string
        firstName:
          example: John
          maxLength: 128
          minLength: 1
          nullable: true
          type: string
        lastName:
          example: Doe
          maxLength: 128
          minLength: 1
          nullable: true
          type: string
        mfaType:
          $ref: "#/components/schemas/MFAType"
        primaryContactNumber:
          description: |
            The main contact number for the user
          example: "11235555555"
          nullable: true
          pattern: ^\+[1-9]\d{1,14}$
          type: string
        secondaryContactNumber:
          description: |
            The secondary contact number for the user
          example: "11235555550"
          nullable: true
          pattern: ^\+[1-9]\d{1,14}$
          type: string
        smsNumber:
          description: |
            The phone number of a device that the user can receive sms messages on
          example: "11235555555"
          nullable: true
          pattern: ^\+[1-9]\d{1,14}$
          type: string
        verificationCode:
          description: |
            <p>Optional property that MUST be suppied when manually verifying a user</p>
            <p>The user's smsNumber is registered via a separate endpoint and an OTP sent to them</p>
          example: "123456"
          maxLength: 6
          minLength: 6
          nullable: true
          type: string
      type: object
    UserInfo:
      example:
        mfa_details:
          mfa_type: TOTP
          verified: true
        userType: PAYOR
        user_id: 39976ee5-dc4c-4b21-a966-a04fa71ef9e1
      properties:
        mfa_details:
          $ref: "#/components/schemas/MFADetails"
        userType:
          $ref: "#/components/schemas/UserType_2"
        user_id:
          description: the id of the user
          example: 39976ee5-dc4c-4b21-a966-a04fa71ef9e1
          format: uuid
          type: string
      type: object
    UserResponse:
      example:
        companyName: Acme Corp
        email: foo@example.com
        entityId: 7fffa261-ac68-49e6-b605-d24a444d9206
        firstName: John
        id: 8bbf301c-948f-4445-b411-357eec53e441
        lastName: Doe
        lockedOut: true
        lockedOutTimestamp: 2000-01-23T04:56:07.000+00:00
        mfaStatus: REGISTERED
        mfaType: TOTP
        primaryContactNumber: "11235555555"
        roles:
          - payor.admin
        secondaryContactNumber: "11235555550"
        smsNumber: "11235555555"
        status: ENABLED
        userType: PAYOR
      properties:
        companyName:
          description: |
            The payor or payee company name or null if the user is not a payor or payee user
          example: Acme Corp
          maxLength: 128
          minLength: 1
          type: string
        email:
          description: the email address of the user
          example: foo@example.com
          format: email
          type: string
        entityId:
          description: |
            The payorId or payeeId or null if the user is not a payor or payee user
          example: 7fffa261-ac68-49e6-b605-d24a444d9206
          format: uuid
          type: string
        firstName:
          example: John
          maxLength: 128
          minLength: 1
          type: string
        id:
          description: The id of the user
          example: 8bbf301c-948f-4445-b411-357eec53e441
          format: uuid
          type: string
        lastName:
          example: Doe
          maxLength: 128
          minLength: 1
          type: string
        lockedOut:
          description: If true the user is currently locked out and unable to log in
          example: true
          type: boolean
        lockedOutTimestamp:
          description: |
            A timestamp showing when the user was locked out
            If null then the user is not currently locked out
          format: date-time
          nullable: true
          type: string
        mfaStatus:
          description: The status of the MFA device
          enum:
            - REGISTERED
            - UNREGISTERED
          example: REGISTERED
          type: string
        mfaType:
          description: The type of the MFA device
          enum:
            - SMS
            - YUBIKEY
            - TOTP
          example: TOTP
          type: string
        primaryContactNumber:
          description: |
            The main contact number for the user
          example: "11235555555"
          pattern: ^\+[1-9]\d{1,14}$
          type: string
        roles:
          description: |
            The role(s) for the user
          example:
            - payor.admin
          items:
            $ref: "#/components/schemas/Role"
          minItems: 1
          type: array
        secondaryContactNumber:
          description: |
            The secondary contact number for the user
          example: "11235555550"
          pattern: ^\+[1-9]\d{1,14}$
          type: string
        smsNumber:
          description: |
            The phone number of a device that the user can receive sms messages on
          example: "11235555555"
          pattern: ^\+[1-9]\d{1,14}$
          type: string
        status:
          description: |
            The status of the user
            when the user has been invited but not yet enrolled they will have a PENDING status
          enum:
            - ENABLED
            - DISABLED
            - PENDING
          example: ENABLED
          type: string
        userType:
          description: Indicates the type of user. Could be BACKOFFICE, PAYOR or PAYEE.
          enum:
            - BACKOFFICE
            - PAYOR
            - PAYEE
          example: PAYOR
          type: string
      type: object
    UserStatus:
      description: |
        The status of the user
        when the user has been invited but not yet enrolled they will have a PENDING status
      enum:
        - ENABLED
        - DISABLED
        - PENDING
      example: ENABLED
      type: string
    UserType:
      enum:
        - BACKOFFICE
        - PAYOR
        - PAYEE
      example: PAYOR
      type: string
    UserType_2:
      enum:
        - BACKOFFICE
        - PAYOR
        - PAYEE
      example: PAYOR
      type: string
    ValidatePasswordResponse:
      example:
        score: 2
        suggestions:
          - "[password has been used before]"
          - "[password has been used before]"
        valid: true
        warning: Historic Password
      properties:
        score:
          description: |
            More secure passwords are given a higher score. <P>
            For a password to be acceptable for use in Velo, it must score at least 3
          example: 2
          format: int32
          maximum: 4
          minimum: 0
          type: integer
        suggestions:
          items:
            description: |
              Any suggested changes to password text which would make the password more secure
            example: "[password has been used before]"
            type: string
          type: array
        valid:
          description: if true then the password can be accepted
          type: boolean
        warning:
          description: Any warning message as a reason for the given score.
          example: Historic Password
          type: string
      type: object
    VerificationCode:
      description: |
        <p>Optional property that MUST be suppied when manually verifying a user</p>
        <p>The user's smsNumber is registered via a separate endpoint and an OTP sent to them</p>
      example: "123456"
      maxLength: 6
      minLength: 6
      nullable: true
      type: string
    WatchlistStatusV3:
      description: "Current watchlist status. One of the following values: NONE, PENDING, REVIEW, PASSED, FAILED"
      type: string
    WatchlistStatusV4:
      description: "Current watchlist status. One of the following values: NONE, PENDING, REVIEW, PASSED, FAILED"
      type: string
    WebhookResponse:
      example:
        authorizationHeader: authorizationHeader
        categories:
          - null
          - null
        enabled: true
        id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
        webhookUrl: webhookUrl
      properties:
        authorizationHeader:
          type: string
        categories:
          items:
            $ref: "#/components/schemas/Category"
          type: array
        enabled:
          type: boolean
        id:
          format: uuid
          type: string
        payorId:
          format: uuid
          type: string
        webhookUrl:
          type: string
      type: object
    WebhooksResponse:
      description: List Webhooks Object
      example:
        content:
          - authorizationHeader: authorizationHeader
            categories:
              - null
              - null
            enabled: true
            id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            webhookUrl: webhookUrl
          - authorizationHeader: authorizationHeader
            categories:
              - null
              - null
            enabled: true
            id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91
            webhookUrl: webhookUrl
        links:
          - href: href
            rel: rel
          - href: href
            rel: rel
        page:
          numberOfElements: 0
          page: 5
          pageSize: 5
          totalElements: 6
          totalPages: 1
      properties:
        content:
          items:
            $ref: "#/components/schemas/WebhookResponse"
          type: array
        links:
          items:
            $ref: "#/components/schemas/PagedPayeeResponseV3_links"
          type: array
        page:
          $ref: "#/components/schemas/PagedPayeeInvitationStatusResponseV3_page"
      type: object
    WithdrawPaymentRequest:
      example:
        reason: Payment submitted in error
      properties:
        reason:
          description: Reason for withdrawal
          example: Payment submitted in error
          maxLength: 256
          minLength: 2
          type: string
      required:
        - reason
      type: object
    inline_response_400:
      properties:
        correlationId:
          description: a unique identifier to track a request or related sequence of requests
          example: ee53e01d-c078-43fd-abd4-47e92f4a06cf
          format: uuid
          nullable: true
          type: string
        errors:
          description: one or more errors
          items:
            $ref: "#/components/schemas/Error"
          minItems: 1
          nullable: true
          type: array
        httpStatusCode:
          description: this will mirror the Status-Code part of the Status-Line http response header and is included for extra clarity
          example: 400
          type: integer
    inline_response_401:
      properties:
        correlationId:
          description: a unique identifier to track a request or related sequence of requests
          example: ee53e01d-c078-43fd-abd4-47e92f4a06cf
          format: uuid
          nullable: true
          type: string
        errors:
          description: one or more errors
          items:
            $ref: "#/components/schemas/Error"
          minItems: 1
          nullable: true
          type: array
        httpStatusCode:
          description: this will mirror the Status-Code part of the Status-Line http response header and is included for extra clarity
          example: 401
          type: integer
    inline_response_403:
      properties:
        correlationId:
          description: a unique identifier to track a request or related sequence of requests
          example: ee53e01d-c078-43fd-abd4-47e92f4a06cf
          format: uuid
          nullable: true
          type: string
        errors:
          description: one or more errors
          items:
            $ref: "#/components/schemas/Error"
          minItems: 1
          nullable: true
          type: array
        httpStatusCode:
          description: this will mirror the Status-Code part of the Status-Line http response header and is included for extra clarity
          example: 403
          type: integer
    inline_response_404:
      properties:
        correlationId:
          description: a unique identifier to track a request or related sequence of requests
          example: ee53e01d-c078-43fd-abd4-47e92f4a06cf
          format: uuid
          nullable: true
          type: string
        errors:
          description: one or more errors
          items:
            $ref: "#/components/schemas/Error"
          minItems: 1
          nullable: true
          type: array
        httpStatusCode:
          description: this will mirror the Status-Code part of the Status-Line http response header and is included for extra clarity
          example: 404
          type: integer
    inline_response_409:
      properties:
        correlationId:
          description: a unique identifier to track a request or related sequence of requests
          example: ee53e01d-c078-43fd-abd4-47e92f4a06cf
          format: uuid
          nullable: true
          type: string
        errors:
          description: one or more errors
          items:
            $ref: "#/components/schemas/Error"
          minItems: 1
          nullable: true
          type: array
        httpStatusCode:
          description: this will mirror the Status-Code part of the Status-Line http response header and is included for extra clarity
          example: 409
          type: integer
    inline_response_412:
      properties:
        correlationId:
          description: a unique identifier to track a request or related sequence of requests
          example: ee53e01d-c078-43fd-abd4-47e92f4a06cf
          format: uuid
          nullable: true
          type: string
        errors:
          description: one or more errors
          items:
            $ref: "#/components/schemas/Error"
          minItems: 1
          nullable: true
          type: array
        httpStatusCode:
          description: this will mirror the Status-Code part of the Status-Line http response header and is included for extra clarity
          example: 412
          type: integer
  securitySchemes:
    OAuth2:
      description: This API uses OAuth 2 with the Client Credentials grant flow. [More info](https://www.oauth.com/oauth2-servers/access-tokens/client-credentials)
      flows:
        clientCredentials:
          scopes:
            " ": Scopes not required
          tokenUrl: https://api.sandbox.velopayments.com/v1/login
      type: oauth2
    basicAuth:
      scheme: basic
      type: http
    oAuthVeloBackOffice:
      description: This API uses OAuth 2 with the implicit grant flow. Authenticated user must have backoffice role [More info](https://api.example.com/docs/auth)
      flows:
        clientCredentials:
          scopes:
            " ": Scopes not required
          tokenUrl: https://api.sandbox.velopayments.com/oauth/token
      type: oauth2
x-tagGroups:
  - name: Payor Operations
    tags:
      - Payors
      - Payor Hierarchy
      - Funding
      - Source Accounts
      - Webhooks
      - Payins
  - name: Payee Operations
    tags:
      - Payees
      - Payee Invitation
      - Invites
  - name: Payout APIs
    tags:
      - Payouts
  - name: Reporting
    tags:
      - Payment Audit Service
  - name: Auth
    tags:
      - Login
      - Users
      - Tokens
  - name: API Utilities
    tags:
      - Currencies
      - Countries
  - name: Legal
    tags:
      - Legal
x-webhooks:
  veloWebhookNotification:
    post:
      description: The webhook notifications that are sent to the payor's configured webhook endpoint URL
      operationId: veloWebhook
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Notification"
      responses:
        "200":
          description: A successful response indicates that the notification has been received by the customers system. Any other http status will result in the notification being retried.
      summary: Webhook notifications
      tags:
        - Webhooks
