openapi: 3.0.2 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.30.53 x-logo: url: https://apidocs.velopayments.com/velo-logo-e9573185_new.svg servers: - description: Velo Payments Sandbox for testing url: https://api.sandbox.velopayments.com/ - description: Velo Payments Production URL url: https://api.payouts.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: Payout Service APIs allow you to create and instruct payouts to payees. name: Payouts - description: Payment Audit Service APIs allow you to see the history of fundings, payouts, and payments to payees. name: Payment Audit Service - description: |
When a payor creates a payee then an invite token is emailed to the invited payee
Payees use this token to onboard to the platform
There are several required tasks that the payee must perform before they are accepted onto the platform
name: Invites - description: |Verification tokens allow users to complete authenitcation flows such as user invite, MFA registration and password reset
Tokens have an expiry and are one-time use only
name: Tokens - description: |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
© Velo Payments, Inc.
name: Legal paths: /v1/authenticate: post: description: |Use this endpoint to obtain an access token for calling Velo Payments APIs.
You need your API key and API secret issued by Velo
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
e.g. Given an ApiKey: 44a9537d-d55d-4b47-8082-14061c2bcdd8 and ApiSecret: c396b26b-137a-44fd-87f5-34631f8fd529
Using a Base64 encode function Base64Encoder().encode("44a9537d-d55d-4b47-8082-14061c2bcdd8:c396b26b-137a-44fd-87f5-34631f8fd529")
Included as a Basic Authorization header: -H "Authorization: Basic NDRhOTUzN2QtZDU1ZC00YjQ3LTgwODItMTQwNjFjMmJjZGQ4OmMzOTZiMjZiLTEzN2EtNDRmZC04N2Y1LTM0NjMxZjhmZDUyOQ=="
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/logout: post: description: |Given a valid access token in the header then log out the authenticated user or client
Will revoke the token
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: |Reset password
An email with an embedded link will be sent to the receipient of the email address
The link will contain a token to be used for resetting the password
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/validate: post: description: |The second part of login involves validating using an MFA device
An access token with PRE_AUTH authorities is required
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"}' /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/{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: - contractId: 1 headers: Content-Type: application/json body: id: 5782f21b-03ab-4f4c-a2ca-ca1e1141eeee email: foo@example.com firstName: Foo lastName: Bar status: ENABLED smsNumber: +44123555000 primaryContactNumber: +44123555001 secondaryContactNumber: +44123555002 entityId: 93742f58-d584-4527-b187-19a90a70fe89 roles: - payor.admin mfaStatus: REGISTERED mfaType: TOTP lockedOut: false 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: |If a user is enabled this endpoint will disable them
The invoker must have the appropriate permission
A user cannot disable themself
When a user is disabled any active access tokens will be revoked and the user will not be able to log in
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: |If a user has been disabled this endpoints will enable them
The invoker must have the appropriate permission
A user cannot enable themself
If the user is a payor user and the payor is disabled this operation is not allowed
If enabling a payor user would breach the limit for master admin payor users the request will be rejected
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/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/{userId}/roleUpdate: post: description: |Update the user's Role
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}/mfa/unregister: post: description: |Unregister the MFA device for the user
If the user does not require further verification then a register new MFA device token will be sent to them via their email address
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}/tokens: post: description: |Resend the specified token
The token to resend must already exist for the user
It will be revoked and a new one issued
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: |Update the profile details for the given user
When updating Payor users with the role of payor.master_admin a verificationCode is required
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" \ }' /v2/users/registration/sms: post: description: |Register an Sms number and send an OTP to it
Used for manual verification of a user
The backoffice user initiates the request to send the OTP to the user's sms
The user then reads back the OTP which the backoffice user enters in the verifactionCode property for requests that require it
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/userDetailsUpdate: post: description: |Update the profile details for the given user
Only Payee user types are supported
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/self/mfa/unregister: post: description: |Unregister the MFA device for the user
If the user does not require further verification then a register new MFA device token will be sent to them via their email address
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"}' /v1/payors/{payorId}: get: deprecated: true description: | Get a Single Payor by Id. operationId: getPayorById 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: - contractId: 1 headers: Content-Type: application/json;charset=UTF-8 body: payorId: 0a818933-087d-47f2-ad83-2f986ed087eb payorName: Joe address: line1: 101 California Street city: San Francisco zipOrPostcode: "94111" country: US primaryContactName: Joe primaryContactPhone: 1231231234 primaryContactEmail: foo@example.com kycState: PASSED_KYC manualLockout: false payeeGracePeriodProcessingEnabled: true payeeGracePeriodDays: 90 dbaName: FlyByNight, Inc allowsLanguageChoice: false reminderEmailsOptOut: false language: EN supportContact: support@example.com collectiveAlias: MyAlias maxMasterPayorAdmins: 2 404: content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' description: Payor Id Not Found x-contracts: - contractId: 2 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 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 name: Test Get Payor contractPath: /v1/payors/0a818933-087d-47f2-ad83-2f986ed087eb serviceName: payor-service - contractId: 2 name: Test Payor Not Found contractPath: /v1/payors/00000000-0000-0000-0000-000000000000 serviceName: payor-service /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: - contractId: 1 headers: Content-Type: application/json;charset=UTF-8 body: payorId: 0a818933-087d-47f2-ad83-2f986ed087eb payorXid: ABC_12345678 payorName: Joe address: line1: 101 California Street city: San Francisco zipOrPostcode: 94111 country: US primaryContactName: Joe primaryContactPhone: 1231231234 primaryContactEmail: foo@example.com kycState: PASSED_KYC manualLockout: false payeeGracePeriodProcessingEnabled: true payeeGracePeriodDays: 90 dbaName: FlyByNight, Inc allowsLanguageChoice: false reminderEmailsOptOut: false language: EN supportContact: support@example.com collectiveAlias: MyAlias maxMasterPayorAdmins: 2 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 name: Test Get Payor V2 contractPath: /v2/payors/0a818933-087d-47f2-ad83-2f986ed087eb serviceName: payor-service - contractId: 2 name: Test Payor Not Found V2 contractPath: /v2/payors/00000000-0000-0000-0000-000000000000 serviceName: payor-service /v1/payors/{payorId}/applications: post: description: Create an application for the given Payor ID. Applications are programatic users which can be assigned unique keys. operationId: payorCreateApplicationRequest 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: - contractId: 1 headers: Content-Type: application/json body: name: foo description: a foo application matchers: headers: - key: Content-Type regex: application/json.* body: - path: $.name type: by_regex predefined: non_empty - path: $.description type: by_regex predefined: non_empty responses: 201: description: Success headers: Location: description: location schema: 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 404: content: application/json: schema: $ref: '#/components/schemas/inline_response_404' description: | The resource was not found or is no longer available 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: 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 name: Test Create Application contractPath: /v1/payors/835ac62e-616c-4261-bf38-63366db78c0d/applications serviceName: payor-service /v1/payors/{payorId}/applications/{applicationId}/keys: post: description: Create an an API key for the given payor Id and application Id operationId: payorCreateApiKeyRequest 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: - contractId: 4 headers: Content-Type: application/json body: name: Key Name description: A key description roles: - payor.admin matchers: headers: - key: Content-Type regex: application/json.* body: - path: $.name type: by_regex predefined: non_empty - path: $.description type: by_regex predefined: non_empty - path: $.roles type: by_regex predefined: non_empty responses: 200: content: application/json: schema: $ref: '#/components/schemas/PayorCreateApiKeyResponse' description: HTTP Ok, key created x-contracts: - contractId: 4 headers: Content-Type: application/json body: apiKey: 385d4506-e7dd-446e-a092-5f30b98e7b26 apiSecret: f25767d9-342a-48ac-a788-0a7a38ae6fb3 matchers: headers: - key: Content-Type regex: application/json.* body: - path: $.apiKey type: by_regex predefined: non_empty - path: $.apiSecret type: by_regex predefined: non_empty 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":["foo.role"]}' x-contracts: - contractId: 4 name: Create an API key for a payor contractPath: /v1/payors/0a818933-087d-47f2-ad83-2f986ed087eb/applications/ba08877f-9d96-41e4-9c26-44a872d856ae/keys serviceName: payor-service /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: - contractId: 1 headers: Content-Type: application/json body: reminderEmailsOptOut: true - contractId: 2 headers: Content-Type: application/json body: reminderEmailsOptOut: true 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 name: Test Email Opt-Out serviceName: payor-service contractPath: /v1/payors/0a818933-087d-47f2-ad83-2f986ed087eb/reminderEmailsUpdate - contractId: 2 name: Test Not Found serviceName: payor-service contractPath: /v1/payors/00000000-0000-0000-0000-000000000000/reminderEmailsUpdate /v1/payors/{payorId}/branding/logos: post: description: Add Payor Logo. Logo file is used in your branding, and emails sent to payees. operationId: payorAddPayorLogo 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}/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: - contractId: 1 body: payorName: Payor1 logoUrl: http://example.com collectiveAlias: customer supportContact: support@example.com dbaName: FlybyNight Inc matchers: headers: - key: Content_type regex: application/json.* body: - path: $.payorName type: by_regex predefined: non_empty - path: $.logoUrl type: by_regex predefined: non_empty - path: $.collectiveAlias type: by_regex predefined: non_empty - path: $.supportContact type: by_regex predefined: non_empty - path: $.dbaName type: by_regex predefined: non_empty 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 name: Get Payor Branding Details description: Test to get branding details for payor label: Payor_Branding priority: 10 ignored: false contractPath: /v1/payors/0a818933-087d-47f2-ad83-2f986ed087eb/branding serviceName: payor-service - contractId: 2 name: Get Payor Brandding Details - not found description: Test to not found status returned by API label: Payor_Branding priority: 20 contractPath: /v1/payors/00000000-0000-0000-0000-000000000000/branding serviceName: payor-service /v1/payorLinks: get: description: This endpoint allows you to list payor links operationId: payorLinks 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: Look for the parent payor details for this payor id in: query name: parentOfPayor required: false schema: format: uuid type: string - description: | List of additional Payor fields to include in the response for each Payor. The values of payorId and payorName and always included for each Payor - 'fields' allows you to add to this. Example: ```fields=primaryContactEmail,kycState``` - will include payorId+payorName+primaryContactEmail+kycState for each Payor Default if not specified is to include only payorId and payorName. The supported fields are any combination of: primaryContactEmail,kycState 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: - contractId: 1 headers: Content-Type: application/json body: links: - linkId: 65514617-d18d-4bb4-8cee-09b3e7625fc9 fromPayorId: 51e93026-2f47-4dfd-a5ff-c0da0954a847 linkType: PARENT_OF toPayorId: b0b09d8a-866c-4703-833e-2ff9106e185b - linkId: 6a91b045-6f42-4f9f-a627-f97f66d39bef fromPayorId: b0b09d8a-866c-4703-833e-2ff9106e185b 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 matchers: headers: - key: Content-Type regex: application/json.* - contractId: 2 headers: Content-Type: application/json body: links: - linkId: 65514617-d18d-4bb4-8cee-09b3e7625fc9 fromPayorId: 51e93026-2f47-4dfd-a5ff-c0da0954a847 linkType: PARENT_OF toPayorId: b0b09d8a-866c-4703-833e-2ff9106e185b - linkId: 6a91b045-6f42-4f9f-a627-f97f66d39bef fromPayorId: b0b09d8a-866c-4703-833e-2ff9106e185b linkType: PARENT_OF toPayorId: 15486051-aa39-430d-8926-a4bc2fea1d04 payors: - payorId: 51e93026-2f47-4dfd-a5ff-c0da0954a847 payorName: Payor One primaryContactEmail: payorone@somewhere.com kycState: FAILED_KYC - payorId: b0b09d8a-866c-4703-833e-2ff9106e185b payorName: Payor Two primaryContactEmail: payortwo@anothersite.com kycState: PASSED_KYC - payorId: 15486051-aa39-430d-8926-a4bc2fea1d04 payorName: Payor Three primaryContactEmail: payorthree@example.com kycState: REQUIRES_KYC 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 404: content: application/json: schema: $ref: '#/components/schemas/inline_response_404' description: | The resource was not found or is no longer available 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 Payor Links tags: - Payors 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 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' 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 404: content: application/json: schema: $ref: '#/components/schemas/inline_response_404' description: | The resource was not found or is no longer available 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 security: - oAuthVeloBackOffice: [] summary: Create a Payor Link tags: - Payors Private /v3/payees/{payeeId}: delete: deprecated: true description: |Use v4 instead
This API will delete Payee by Id (UUID). Deletion by ID is not allowed if:
* Payee ID is not found
* If Payee has not been on-boarded
* If Payee is in grace period
* If Payee has existing payments
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: |Use v4 instead
Get Payee by Id
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: - contractId: 1 headers: Content-Type: application/json body: payeeId: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9 payorRefs: - payorId: 9ac75325-5dcd-42d5-b992-175d7e0a035e remoteId: remoteId invitationStatus: PENDING email: bob@example.com onboardedStatus: CREATED watchlistStatus: PENDING watchlistOverrideExpiresAtTimestamp: 2019-02-04T00:00:00Z watchlistOverrideComment: watchlist override comment language: fr created: 2018-01-02T00:00:00Z country: US displayName: Cuthbert, Barney payeeType: Individual disabled: false disabledComment: disabled comment disabledUpdatedTimestamp: 2018-02-03T00:00:00Z address: line1: 100 Battery Street line2: line2 line3: line3 line4: line4 city: San Francisco countyOrProvince: California zipOrPostcode: "94018" country: US individual: name: title: Mr firstName: Barney otherNames: Grubb lastName: Cuthbert nationalIdentification: XXXXX4321 dateOfBirth: XXXX-XX-XX cellphoneNumber: "0800800800" watchlistStatusUpdatedTimestamp: 2018-02-04T00:00:00Z gracePeriodEndDate: 2019-12-23 enhancedKycCompleted: true kycCompletedTimestamp: 2018-02-04T00:00:00Z pausePayment: false pausePaymentTimestamp: 2018-02-04T00:00:00Z marketingOptInDecision: true marketingOptInTimestamp: 2018-02-03T00:00:00Z acceptTermsAndConditionsTimestamp: 2018-01-02T00:00:00Z - contractId: 2 headers: Content-Type: application/json body: payeeId: 01b51877-2a17-427a-b2b0-d73f2b136315 payorRefs: - payorId: 9ac75325-5dcd-42d5-b992-175d7e0a035e remoteId: remoteId invitationStatus: PENDING email: bob@example.com onboardedStatus: CREATED watchlistStatus: PENDING watchlistOverrideExpiresAtTimestamp: 2019-02-04T00:00:00Z watchlistOverrideComment: watchlist override comment language: fr created: 2018-01-02T00:00:00Z country: US displayName: Cuthbert, Barney payeeType: Company disabled: false disabledComment: disabled comment disabledUpdatedTimestamp: 2018-02-03T00:00:00Z address: line1: 100 Battery Street line2: line2 line3: line3 line4: line4 city: San Francisco countyOrProvince: California zipOrPostcode: "94018" country: US company: name: WIDGET CORP taxId: "223344556" operatingName: SAMPLE DBA NAME cellphoneNumber: "0800800800" watchlistStatusUpdatedTimestamp: 2018-02-04T00:00:00Z gracePeriodEndDate: 2019-12-23 enhancedKycCompleted: true kycCompletedTimestamp: 2018-02-04T00:00:00Z pausePayment: false pausePaymentTimestamp: 2018-02-04T00:00:00Z marketingOptInDecision: true marketingOptInTimestamp: 2018-02-03T00:00:00Z acceptTermsAndConditionsTimestamp: 2018-01-02T00:00:00Z - contractId: 4 headers: Content-Type: application/json body: payeeId: 026cc3c8-3a0c-4083-a05b-e908048c1b08 payorRefs: - payorId: 9ac75325-5dcd-42d5-b992-175d7e0a035e remoteId: remoteId invitationStatus: PENDING email: bob@example.com onboardedStatus: CREATED watchlistStatus: PENDING watchlistOverrideExpiresAtTimestamp: 2019-02-04T00:00:00Z watchlistOverrideComment: watchlist override comment language: fr created: 2018-01-02T00:00:00Z country: US displayName: Cuthbert, Barney payeeType: Individual disabled: false disabledComment: disabled comment disabledUpdatedTimestamp: 2018-02-03T00:00:00Z address: line1: 100 Battery Street line2: line2 line3: line3 line4: line4 city: San Francisco countyOrProvince: California zipOrPostcode: "94018" country: US individual: name: title: Mr firstName: Barney otherNames: Grubb lastName: Cuthbert nationalIdentification: "987654321" dateOfBirth: 1970-05-20 cellphoneNumber: "0800800800" watchlistStatusUpdatedTimestamp: 2018-02-04T00:00:00Z gracePeriodEndDate: 2019-12-23 enhancedKycCompleted: true kycCompletedTimestamp: 2018-02-04T00:00:00Z pausePayment: false pausePaymentTimestamp: 2018-02-04T00:00:00Z marketingOptInDecision: true marketingOptInTimestamp: 2018-02-03T00:00:00Z acceptTermsAndConditionsTimestamp: 2018-01-02T00:00:00Z 404: description: Payee Not found x-contracts: - contractId: 3 summary: Get Payee by Id tags: - Payees x-contracts: - contractId: 1 name: Get Individual Payee v3 serviceName: payee-service contractPath: /v3/payees/2aa5d7e0-2ecb-403f-8494-1865ed0454e9 - contractId: 2 name: Get Company Payee v3 serviceName: payee-service contractPath: /v3/payees/01b51877-2a17-427a-b2b0-d73f2b136315 - contractId: 3 name: Payee Id Not Found v3 serviceName: payee-service contractPath: /v3/payees/e67cbda6-c031-4aae-8e72-922fe76c7a24 - contractId: 4 name: Get Payee sensitive true v3 serviceName: payee-service contractPath: /v3/payees/026cc3c8-3a0c-4083-a05b-e908048c1b08 /v3/payees: get: deprecated: true description: |Use v4 instead
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 value: 0a818933-087d-47f2-ad83-2f986ed087eb matchers: - type: equal_to 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: - contractId: 1 headers: Content-Type: application/json body: page: numberOfElements: 1 totalElements: 1 totalPages: 23 page: 9, pageSize: 2 links: - rel: first href: https://api.sandbox.velopayments.com/v3/payees?payorId=1982b223-73b7-419d-a2e1-e64362b0ee8b&page=1&pageSize=2&sort=displayName:asc content: - payeeId: ee2cc9a1-34dd-4ab6-91e3-db111d08d995 matchers: headers: - key: Content-Type regex: application/json.* body: - path: $.page.numberOfElements type: by_regex predefined: number - path: $.page.totalElements type: by_regex predefined: number - path: $.page.totalPages type: by_regex predefined: number - path: $.page.page type: by_regex predefined: number - path: $.page.pageSize type: by_regex predefined: number - path: $.links type: by_type minOccurrence: 1 maxOccurrence: 5 - path: $.links[0].href type: by_regex predefined: url - path: $.content type: by_type minOccurrence: 1 - path: $.content[0].payeeId type: by_regex predefined: uuid - path: $.content[0].email type: by_regex predefined: email - 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 type: by_regex predefined: uuid 404: content: application/json: schema: $ref: '#/components/schemas/inline_response_404' description: | The resource was not found or is no longer available 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 Payees tags: - Payees x-contracts: - contractId: 1 name: Test List Payees All params for v3 headers: Content-Type: application/json 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 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' post: deprecated: true description: |Use v4 instead
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: payorId: format: uuid type: string file: description: CSV File of payee data items: $ref: '#/components/schemas/CreatePayeesCSVRequestV3' type: array type: object description: Post payees to create. x-contracts: - contractId: 1 headers: Content-Type: application/json body: payorId: 0a818933-087d-47f2-ad83-2f986ed087eb 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 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" language: fr matchers: headers: - key: Content-Type regex: application/json.* body: - path: $.payorId type: by_regex predefined: uuid - path: $.payees type: by_regex predefined: non_empty - contractId: 2 headers: Content-Type: multipart/form-data multipart: params: payorId: 0a818933-087d-47f2-ad83-2f986ed087eb named: - paramName: file fileName: filename.csv 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 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 type: by_regex predefined: url - 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 type: by_regex predefined: url - key: Content-Type regex: application/json.* 404: content: application/json: schema: $ref: '#/components/schemas/inline_response_404' description: | The resource was not found or is no longer available 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: Initiate Payee Creation tags: - Payee Invitation x-contracts: - contractId: 1 name: Create Payees by JSON v3 serviceName: payee-service - contractId: 2 name: Create Payees by CSV v3 serviceName: payee-service 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"}]}' /v3/payees/batch/{batchId}: get: deprecated: true description: |Use v4 instead
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 404: content: application/json: schema: $ref: '#/components/schemas/inline_response_404' description: | The resource was not found or is no longer available 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: 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/{payeeId}/invite: post: deprecated: true description: |Use v4 instead
Resend an invite to the Payee The payee must have already been invited by the payor and not yet accepted or declined
Any previous invites to the payee by this Payor will be invalidated
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 404: content: application/json: schema: $ref: '#/components/schemas/inline_response_404' description: | The resource was not found or is no longer available 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: 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/payors/{payorId}/invitationStatus: get: deprecated: true description: |Use v4 instead
Returns a filtered, paginated list of payees associated with a payor, along with invitation status and grace period end date.
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: - contractId: 1 headers: Content-Type: application/json body: page: numberOfElements: 1 totalElements: 1 totalPages: 1 page: 1 pageSize: 25 links: - rel: first 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 content: - payeeId: c3d60e1f-a4d0-4273-b501-bfa81c70d56b matchers: headers: - key: Content-Type regex: application/json.* body: - path: $.page type: by_type minOccurrence: 1 - path: $.page.numberOfElements type: by_regex predefined: number - path: $.page.totalElements type: by_regex predefined: number - path: $.page.totalPages type: by_regex predefined: number - path: $.page.page type: by_regex predefined: number - path: $.page.pageSize type: by_regex predefined: number - path: $.links type: by_type minOccurrence: 1 maxOccurrence: 5 - path: $.links[0].href type: by_regex predefined: url - path: $.content type: by_type minOccurrence: 1 - path: $.content[0].payeeId type: by_regex predefined: uuid 404: content: application/json: schema: $ref: '#/components/schemas/inline_response_404' description: | The resource was not found or is no longer available 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 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/deltas: get: deprecated: true description: |Use v4 instead
Get a paginated response listing payee changes.
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 value: 0a818933-087d-47f2-ad83-2f986ed087eb matchers: - type: equal_to 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 value: 2019-01-20T09:00:00+00:00 matchers: - type: equal_to 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-contracts: - contractId: 1 name: Test List Payee Changes V3 ignored: true request: queryParameters: - key: page value: 1 - key: pageSize value: 30 serviceName: payee-service 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' /v3/payees/{payeeId}/remoteIdUpdate: post: deprecated: true description: |Use v4 instead
Update the remote Id for the given Payee Id.
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/payees/{payeeId}/payeeDetailsUpdate: post: deprecated: true description: |Use v4 instead
Update payee details for the given Payee Id.
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 404: content: application/json: schema: $ref: '#/components/schemas/inline_response_404' description: | The resource was not found or is no longer available 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 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" } }' /v4/payees/{payeeId}: delete: description: |
This API will delete Payee by Id (UUID). Deletion by ID is not allowed if:
* Payee ID is not found
* If Payee has not been on-boarded
* If Payee is in grace period
* If Payee has existing payments
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: - contractId: 1 headers: Content-Type: application/json body: payeeId: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9 payorRefs: - payorId: 9ac75325-5dcd-42d5-b992-175d7e0a035e remoteId: remoteId invitationStatus: PENDING email: bob@example.com onboardedStatus: CREATED watchlistStatus: PENDING watchlistOverrideExpiresAtTimestamp: 2019-02-04T00:00:00Z watchlistOverrideComment: watchlist override comment language: fr created: 2018-01-02T00:00:00Z country: US displayName: Cuthbert, Barney payeeType: Individual disabled: false disabledComment: disabled comment disabledUpdatedTimestamp: 2018-02-03T00:00:00Z address: line1: 100 Battery Street line2: line2 line3: line3 line4: line4 city: San Francisco countyOrProvince: California zipOrPostcode: "94018" country: US individual: name: title: Mr firstName: Barney otherNames: Grubb lastName: Cuthbert nationalIdentification: XXXXX4321 dateOfBirth: XXXX-XX-XX cellphoneNumber: "0800800800" watchlistStatusUpdatedTimestamp: 2018-02-04T00:00:00Z gracePeriodEndDate: 2019-12-23 enhancedKycCompleted: true kycCompletedTimestamp: 2018-02-04T00:00:00Z pausePayment: false pausePaymentTimestamp: 2018-02-04T00:00:00Z marketingOptInDecision: true marketingOptInTimestamp: 2018-02-03T00:00:00Z acceptTermsAndConditionsTimestamp: 2018-01-02T00:00:00Z - contractId: 2 headers: Content-Type: application/json body: payeeId: 01b51877-2a17-427a-b2b0-d73f2b136315 payorRefs: - payorId: 9ac75325-5dcd-42d5-b992-175d7e0a035e remoteId: remoteId invitationStatus: PENDING email: bob@example.com onboardedStatus: CREATED watchlistStatus: PENDING watchlistOverrideExpiresAtTimestamp: 2019-02-04T00:00:00Z watchlistOverrideComment: watchlist override comment language: fr created: 2018-01-02T00:00:00Z country: US displayName: Cuthbert, Barney payeeType: Company disabled: false disabledComment: disabled comment disabledUpdatedTimestamp: 2018-02-03T00:00:00Z address: line1: 100 Battery Street line2: line2 line3: line3 line4: line4 city: San Francisco countyOrProvince: California zipOrPostcode: "94018" country: US company: name: WIDGET CORP taxId: "223344556" operatingName: SAMPLE DBA NAME cellphoneNumber: "0800800800" watchlistStatusUpdatedTimestamp: 2018-02-04T00:00:00Z gracePeriodEndDate: 2019-12-23 enhancedKycCompleted: true kycCompletedTimestamp: 2018-02-04T00:00:00Z pausePayment: false pausePaymentTimestamp: 2018-02-04T00:00:00Z marketingOptInDecision: true marketingOptInTimestamp: 2018-02-03T00:00:00Z acceptTermsAndConditionsTimestamp: 2018-01-02T00:00:00Z - contractId: 4 headers: Content-Type: application/json body: payeeId: 026cc3c8-3a0c-4083-a05b-e908048c1b08 payorRefs: - payorId: 9ac75325-5dcd-42d5-b992-175d7e0a035e remoteId: remoteId invitationStatus: PENDING email: bob@example.com onboardedStatus: CREATED watchlistStatus: PENDING watchlistOverrideExpiresAtTimestamp: 2019-02-04T00:00:00Z watchlistOverrideComment: watchlist override comment language: fr created: 2018-01-02T00:00:00Z country: US displayName: Cuthbert, Barney payeeType: Individual disabled: false disabledComment: disabled comment disabledUpdatedTimestamp: 2018-02-03T00:00:00Z address: line1: 100 Battery Street line2: line2 line3: line3 line4: line4 city: San Francisco countyOrProvince: California zipOrPostcode: "94018" country: US individual: name: title: Mr firstName: Barney otherNames: Grubb lastName: Cuthbert nationalIdentification: "987654321" dateOfBirth: 1970-05-20 cellphoneNumber: "0800800800" watchlistStatusUpdatedTimestamp: 2018-02-04T00:00:00Z gracePeriodEndDate: 2019-12-23 enhancedKycCompleted: true kycCompletedTimestamp: 2018-02-04T00:00:00Z pausePayment: false pausePaymentTimestamp: 2018-02-04T00:00:00Z marketingOptInDecision: true marketingOptInTimestamp: 2018-02-03T00:00:00Z acceptTermsAndConditionsTimestamp: 2018-01-02T00:00:00Z 404: description: Payee Not found x-contracts: - contractId: 3 summary: Get Payee by Id tags: - Payees x-contracts: - contractId: 1 name: Get Individual Payee v4 serviceName: payee-service contractPath: /v4/payees/2aa5d7e0-2ecb-403f-8494-1865ed0454e9 - contractId: 2 name: Get Company Payee v4 serviceName: payee-service contractPath: /v4/payees/01b51877-2a17-427a-b2b0-d73f2b136315 - contractId: 3 name: Payee Id Not Found v4 serviceName: payee-service contractPath: /v4/payees/e67cbda6-c031-4aae-8e72-922fe76c7a24 - contractId: 4 name: Get Payee sensitive true v4 serviceName: payee-service contractPath: /v4/payees/026cc3c8-3a0c-4083-a05b-e908048c1b08 /v4/payees/{payeeId}/payeeDetailsUpdate: post: description: |Update payee details for the given Payee Id.
Payors may only update the payee details if the payee has not yet onboarded
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 404: content: application/json: schema: $ref: '#/components/schemas/inline_response_404' description: | The resource was not found or is no longer available 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 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: |Update the remote Id for the given Payee Id.
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/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 value: 0a818933-087d-47f2-ad83-2f986ed087eb matchers: - type: equal_to 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: - contractId: 1 headers: Content-Type: application/json body: page: numberOfElements: 1 totalElements: 1 totalPages: 23 page: 9, pageSize: 2 links: - rel: first href: https://api.sandbox.velopayments.com/v4/payees?payorId=1982b223-73b7-419d-a2e1-e64362b0ee8b&page=1&pageSize=2&sort=displayName:asc content: - payeeId: ee2cc9a1-34dd-4ab6-91e3-db111d08d995 matchers: headers: - key: Content-Type regex: application/json.* body: - path: $.page.numberOfElements type: by_regex predefined: number - path: $.page.totalElements type: by_regex predefined: number - path: $.page.totalPages type: by_regex predefined: number - path: $.page.page type: by_regex predefined: number - path: $.page.pageSize type: by_regex predefined: number - path: $.links type: by_type minOccurrence: 1 maxOccurrence: 5 - path: $.links[0].href type: by_regex predefined: url - path: $.content type: by_type minOccurrence: 1 - path: $.content[0].payeeId type: by_regex predefined: uuid - path: $.content[0].email type: by_regex predefined: email - 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 type: by_regex predefined: uuid 404: content: application/json: schema: $ref: '#/components/schemas/inline_response_404' description: | The resource was not found or is no longer available 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 Payees tags: - Payees x-contracts: - contractId: 1 name: Test List Payees All params for v4 headers: Content-Type: application/json 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 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' post: description: | 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: v4CreatePayee requestBody: content: application/json: schema: $ref: '#/components/schemas/CreatePayeesRequestV4' multipart/form-data: schema: properties: payorId: format: uuid type: string file: description: CSV File of payee data items: $ref: '#/components/schemas/CreatePayeesCSVRequestV4' type: array type: object description: Post payees to create. x-contracts: - contractId: 1 headers: Content-Type: application/json body: payorId: 0a818933-087d-47f2-ad83-2f986ed087eb 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 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" language: fr matchers: headers: - key: Content-Type regex: application/json.* body: - path: $.payorId type: by_regex predefined: uuid - path: $.payees type: by_regex predefined: non_empty - contractId: 2 headers: Content-Type: multipart/form-data multipart: params: payorId: 0a818933-087d-47f2-ad83-2f986ed087eb named: - paramName: file fileName: filename.csv 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 responses: 201: content: application/json: schema: $ref: '#/components/schemas/CreatePayeesCSVResponseV4' description: HTTP Created. Body created only on CSV requests x-contracts: - contractId: 1 headers: Location: https://api.sandbox.velopayments.com/v4/payees/batch/dbe7df3a-6b75-4bcb-97c5-45d25f828267 matchers: headers: - key: Location type: by_regex predefined: url - 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 type: by_regex predefined: url - key: Content-Type regex: application/json.* 404: content: application/json: schema: $ref: '#/components/schemas/inline_response_404' description: | The resource was not found or is no longer available 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: Initiate Payee Creation tags: - Payee Invitation x-contracts: - contractId: 1 name: Create Payees by JSON v4 serviceName: payee-service - contractId: 2 name: Create Payees by CSV v4 serviceName: payee-service 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"}]}' /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 404: content: application/json: schema: $ref: '#/components/schemas/inline_response_404' description: | The resource was not found or is no longer available 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: 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/{payeeId}/invite: post: description: |Resend an invite to the Payee The payee must have already been invited by the payor and not yet accepted or declined
Any previous invites to the payee by this Payor will be invalidated
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 404: content: application/json: schema: $ref: '#/components/schemas/inline_response_404' description: | The resource was not found or is no longer available 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: 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/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: - contractId: 1 headers: Content-Type: application/json body: page: numberOfElements: 1 totalElements: 1 totalPages: 1 page: 1 pageSize: 25 links: - rel: first 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 content: - payeeId: c3d60e1f-a4d0-4273-b501-bfa81c70d56b matchers: headers: - key: Content-Type regex: application/json.* body: - path: $.page type: by_type minOccurrence: 1 - path: $.page.numberOfElements type: by_regex predefined: number - path: $.page.totalElements type: by_regex predefined: number - path: $.page.totalPages type: by_regex predefined: number - path: $.page.page type: by_regex predefined: number - path: $.page.pageSize type: by_regex predefined: number - path: $.links type: by_type minOccurrence: 1 maxOccurrence: 5 - path: $.links[0].href type: by_regex predefined: url - path: $.content type: by_type minOccurrence: 1 - path: $.content[0].payeeId type: by_regex predefined: uuid 404: content: application/json: schema: $ref: '#/components/schemas/inline_response_404' description: | The resource was not found or is no longer available 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 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/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 value: 0a818933-087d-47f2-ad83-2f986ed087eb matchers: - type: equal_to 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 value: 2019-01-20T09:00:00+00:00 matchers: - type: equal_to 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-contracts: - contractId: 1 name: Test List Payee Changes V4 ignored: true request: queryParameters: - key: page value: 1 - key: pageSize value: 30 serviceName: payee-service 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' /v1/sourceAccounts: description: List Source Accounts get: deprecated: true description: List source accounts. operationId: getSourceAccounts parameters: - description: Physical Account Name in: query name: physicalAccountName required: false schema: type: string - description: The account owner Payor ID in: query name: payorId 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 in: query name: sort required: false schema: default: fundingRef:asc pattern: '[fundingRef]+[:desc|:asc]' type: string responses: 200: content: application/json: schema: $ref: '#/components/schemas/ListSourceAccountResponse' description: List Source Account 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 404: description: Not Found summary: Get list of source accounts tags: - Funding Manager x-code-samples: - lang: shell source: | $ curl 'https://api.sandbox.velopayments.com/v1/sourceAccounts?payorId=a2967711-df07-41e5-b5ea-f563088911c6' -i -X GET \ -H 'Authorization: Bearer 757a7dbf-2afb-45ec-877c-2aa3857c8e08' summary: List Source Accounts /v1/sourceAccounts/{sourceAccountId}: description: Get details about given source account. get: deprecated: true description: Get details about given source account. operationId: getSourceAccount 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/SourceAccountResponse' description: Source account 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 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: - Funding Manager x-code-samples: - lang: shell source: | $ curl 'https://api.sandbox.velopayments.com/v1/sourceAccounts/126895a8-ba3d-44e8-9b34-84ee579cee7a' -i -X GET \ -H 'Authorization: Bearer a016f840-dafc-4b10-95f5-70ecc75a02d1' summary: Get Source Account /v1/sourceAccounts/{sourceAccountId}/achFundingRequest: 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. operationId: createAchFundingRequest parameters: - description: Source account id in: path name: sourceAccountId required: true schema: format: uuid type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/FundingRequestV1' 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 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 Manager x-code-samples: - lang: shell source: | $ curl 'https://api.sandbox.velopayments.com/v1/sourceAccounts/533b082b-b3eb-4712-8242-0fd3a307033f/achFundingRequest' -i -X POST \ -H 'Authorization: Bearer 67c1b4fc-29ce-425c-863b-950163a5e971' \ -H 'Content-Type: application/json' \ -d '{"amount":999990}' /v1/sourceAccounts/{sourceAccountId}/notifications: post: description: Set notifications for a given source account 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: - Funding Manager 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}' /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: createFundingRequest 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 Manager 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: 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: - Funding Manager 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}: description: Get details about given source account. 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 details about given source account. tags: - Funding Manager 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' summary: Get Source Account /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: transferFunds 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/TransferRequest' 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: - Funding Manager 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" }' /v1/fundingAccounts: get: deprecated: true description: Get the funding accounts. operationId: getFundingAccounts parameters: - in: query name: payorId required: false schema: format: uuid type: string - in: query name: sourceAccountId 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=accountName:asc,name:asc) Default is accountName:asc The supported sort fields are - accountName, name and currency. 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/ListFundingAccountsResponse' description: Get Funding Accounts Response 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 400: content: application/json: schema: $ref: '#/components/schemas/inline_response_400' description: Invalid request. See Error message payload for details of failure summary: Get Funding Accounts tags: - Funding Manager /v1/fundingAccounts/{fundingAccountId}: get: deprecated: true description: Get Funding Account by ID operationId: getFundingAccount 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/FundingAccountResponse' 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 Manager /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/FundingAccountType' - 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/ListFundingAccountsResponse_2' description: Get Funding Accounts Response 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 400: content: application/json: schema: $ref: '#/components/schemas/inline_response_400' description: Invalid request. See Error message payload for details of failure summary: Get Funding Accounts tags: - Funding Manager post: description: Create Funding Account operationId: createFundingAccountV2 requestBody: content: application/json: examples: fbo: summary: FBO Example value: type: FBO name: My FBO Account payorId: ee53e01d-c078-43fd-abd4-47e92f4a06cf accountName: My Account Name accountNumber: 1231231234556 routingNumber: 123456789 wubs: summary: WUBS value: type: WUBS_DECOUPLED name: My WUBS Account payorId: ee53e01d-c078-43fd-abd4-47e92f4a06cf currency: USD 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/FundingAccountResponse_2' 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 Manager /v3/sourceAccounts/{sourceAccountId}/fundingRequest: post: 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: 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 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 Manager 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: 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/SourceAccountType' - 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: - Funding Manager 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: - Funding Manager 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}/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/TransferRequest_2' 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: - Funding Manager 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" }' /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 Manager /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/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' /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/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/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/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/Get a list of Fundings for a payor.
operationId: getFundingsV4 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: 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/payoutStatistics: get: description: |Get payout statistics for a payor.
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/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' /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: |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 - description: |Mode to determine whether to include other Payor's data in the results.
May only be used if payorId is specified.
Can be omitted or set to 'payorOnly' or 'payorAndDescendants'.
payorOnly: Only include results for the specified Payor. This is the default if 'include' is omitted.
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.
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
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' /v3/payouts: post: description: |Create a new payout and return a location header with a link to get the payout.
Basic validation of the payout is performed before returning but more comprehensive validation is done asynchronously.
The results can be obtained by issuing a HTTP GET to the URL returned in the location header.
**NOTE:** amount values in payments must be in 'minor units' format. E.g. cents for USD, pence for GBP etc.
with no decimal places. 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: 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 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 type: object description: Post amount to transfer using stored funding account details. required: true responses: 202: description: Detailed response of payout instructions headers: Location: description: Reference to created payout 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: - Payout Service 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: - Payout Service 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: - Payout Service 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/InstructPayoutRequest' 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: - Payout Service 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}/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: - Payout Service 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}/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: - Payout Service 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}/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: - Payout Service 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: |Schedule a payout for auto-instruction in the future or update existing payout schedule if the payout has been scheduled before.
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/SchedulePayoutRequest' 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: - Payout Service 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"}' /v1/paymentChannelRules: get: 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/payments/{paymentId}/withdraw: post: description: |withdraw a payment
There are a variety of reasons why this can fail
List the supported countries.
This version will be retired in March 2020. Use /v2/supportedCountries
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' /v2/supportedCountries: get: 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/v1/supportedCountries' -i -X GET /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 /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 components: schemas: Notification: properties: apiVersion: description: The API version of the notification schema example: "1" 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 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 source: description: One of the available set of source event payloads discriminator: mapping: ping: '#/components/schemas/Ping' payment_status_changed: '#/components/schemas/PaymentStatusChanged' payment_rejected_or_returned: '#/components/schemas/PaymentRejectedOrReturned' onboarding_status_changed: '#/components/schemas/OnboardingStatusChanged' payable_status_changed: '#/components/schemas/PayableStatusChanged' payee_details_changed: '#/components/schemas/PayeeDetailsChanged' debit_status_changed: '#/components/schemas/DebitStatusChanged' propertyName: sourceType example: type: payment_status_changed eventId: 270ab907-27ec-4b83-8028-0ff432bbdec4 createdAt: 2020-06-18T15:09:42Z paymentId: cbd9280f-8fde-4190-b014-979d88f3ec54 payoutPayorIds: submittingPayorId: ac207f97-663c-4429-9d57-ba5b35d6672d payoutFromPayorId: ac207f97-663c-4429-9d57-ba5b35d6672d payoutToPayorId: ac207f97-663c-4429-9d57-ba5b35d6672d payorPaymentId: ourpayment-id12345 status: ACCEPTED 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 SourceEvent: description: Base type for each source event payload properties: 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 eventId: description: UUID id of the source event in the Velo platform example: 270ab907-27ec-4b83-8028-0ff432bbdec4 format: uuid type: string createdAt: description: ISO8601 timestamp indicating when the source event was created example: 2020-06-18T15:09:42Z format: date-time type: string required: - createdAt - eventId - sourceType type: object Ping: allOf: - $ref: '#/components/schemas/SourceEvent' description: Ping event for testing the webhook integration. Can be initiated via the Web UI. PaymentEvent: allOf: - $ref: '#/components/schemas/SourceEvent' - $ref: '#/components/schemas/PaymentEvent_allOf' description: Base type for all Payment Events PaymentStatusChanged: allOf: - $ref: '#/components/schemas/PaymentEvent' - $ref: '#/components/schemas/PaymentStatusChanged_allOf' description: Base type for all payment status changed events PaymentRejectedOrReturned: allOf: - $ref: '#/components/schemas/PaymentStatusChanged' - $ref: '#/components/schemas/PaymentRejectedOrReturned_allOf' description: Base type for all rejection or return payment events PayoutPayorIds: description: Holder for all payor ids associated with a Payout properties: submittingPayorId: description: The ID of the Payor that is submitting the payout example: ac207f97-663c-4429-9d57-ba5b35d6672d format: uuid type: string 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 required: - payoutFromPayorId - payoutToPayorId - submittingPayorId type: object PayeeEvent: allOf: - $ref: '#/components/schemas/SourceEvent' - $ref: '#/components/schemas/PayeeEvent_allOf' description: Base type for all Payee Events OnboardingStatusChanged: allOf: - $ref: '#/components/schemas/PayeeEvent' - type: object description: Base type for all onboarding status changed events PayableStatusChanged: allOf: - $ref: '#/components/schemas/PayeeEvent' - type: object description: Base type for all payable status changed events PayeeDetailsChanged: allOf: - $ref: '#/components/schemas/PayeeEvent' - type: object description: Base type for all payee details changed events DebitEvent: allOf: - $ref: '#/components/schemas/SourceEvent' - $ref: '#/components/schemas/DebitEvent_allOf' description: Base type for all Debit Events DebitStatusChanged: allOf: - $ref: '#/components/schemas/DebitEvent' - $ref: '#/components/schemas/DebitStatusChanged_allOf' description: Base type for all debit status changed events AuthResponse: example: access_token: IwOGYzYTlmM2YxOTQ5MGE3YmNmMDFkNTVk refresh_token: IwOGYzYTlmM2YxOTQ5MGE3YmNmMDFkNTVk scope: example_scope token_type: bearer expires_in: 1799 entityIds: - entityIds - entityIds properties: access_token: example: IwOGYzYTlmM2YxOTQ5MGE3YmNmMDFkNTVk type: string token_type: example: bearer type: string expires_in: example: 1799 type: number refresh_token: example: IwOGYzYTlmM2YxOTQ5MGE3YmNmMDFkNTVk type: string scope: example: example_scope type: string entityIds: items: type: string type: array required: - access_token - token_type type: object Error: properties: errorMessage: description: English language message indicating the nature of the error example: size must be between 0 and 10 type: string 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 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 errorData: $ref: '#/components/schemas/ErrorData' 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 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 AccessTokenResponse: example: access_token: 9b58410b-e1b7-4f90-bebb-7e09c5427020 refresh_token: c3d0f771-0997-4814-84e3-09690208545a user_info: mfa_details: mfa_type: TOTP verified: true user_id: 39976ee5-dc4c-4b21-a966-a04fa71ef9e1 userType: PAYOR scope: https://api.velopayments.com/scopes/auth/users token_type: bearer expires_in: 1800 entityIds: - ed89eaa0-4450-4916-a4ff-62a328d60bd6 properties: access_token: description: | Bearer token used in headers to access secure endpoints example: 9b58410b-e1b7-4f90-bebb-7e09c5427020 type: string token_type: default: bearer description: the type of the token example: bearer type: string refresh_token: description: can be used to obtain a new access token example: c3d0f771-0997-4814-84e3-09690208545a type: string expires_in: description: The lifetime in seconds of the access token example: 1800 type: integer scope: description: the scope of the access token example: https://api.velopayments.com/scopes/auth/users type: string user_info: $ref: '#/components/schemas/UserInfo' entityIds: description: | If the user is a payee then the payeeIdIf the user is a payor then the payorId example: - ed89eaa0-4450-4916-a4ff-62a328d60bd6 items: type: string type: array type: object UserType: enum: - BACKOFFICE - PAYOR - PAYEE example: PAYOR type: string 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 PayeeType: enum: - COMPANY - INDIVIDUAL example: COMPANY type: string PagedUserResponse: description: List Users Response Object example: links: - rel: first 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 page: numberOfElements: 12 totalPages: 2 pageSize: 25 page: 1 totalElements: 33 content: - lastName: Doe companyName: Acme Corp roles: - payor.admin lockedOutTimestamp: 2000-01-23T04:56:07.000+00:00 smsNumber: "11235555555" entityId: 7fffa261-ac68-49e6-b605-d24a444d9206 mfaStatus: REGISTERED firstName: John primaryContactNumber: "11235555555" mfaType: TOTP lockedOut: true id: 8bbf301c-948f-4445-b411-357eec53e441 userType: PAYOR email: foo@example.com secondaryContactNumber: "11235555550" status: ENABLED - lastName: Doe companyName: Acme Corp roles: - payor.admin lockedOutTimestamp: 2000-01-23T04:56:07.000+00:00 smsNumber: "11235555555" entityId: 7fffa261-ac68-49e6-b605-d24a444d9206 mfaStatus: REGISTERED firstName: John primaryContactNumber: "11235555555" mfaType: TOTP lockedOut: true id: 8bbf301c-948f-4445-b411-357eec53e441 userType: PAYOR email: foo@example.com secondaryContactNumber: "11235555550" status: ENABLED properties: page: $ref: '#/components/schemas/PagedUserResponse_page' links: items: $ref: '#/components/schemas/PagedUserResponse_links' type: array content: items: $ref: '#/components/schemas/UserResponse' type: array type: object UserResponse: example: lastName: Doe companyName: Acme Corp roles: - payor.admin lockedOutTimestamp: 2000-01-23T04:56:07.000+00:00 smsNumber: "11235555555" entityId: 7fffa261-ac68-49e6-b605-d24a444d9206 mfaStatus: REGISTERED firstName: John primaryContactNumber: "11235555555" mfaType: TOTP lockedOut: true id: 8bbf301c-948f-4445-b411-357eec53e441 userType: PAYOR email: foo@example.com secondaryContactNumber: "11235555550" status: ENABLED properties: id: description: The id of the user example: 8bbf301c-948f-4445-b411-357eec53e441 format: uuid 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 email: description: the email address of the user example: foo@example.com format: email 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 primaryContactNumber: description: | The main contact number for the user example: "11235555555" pattern: ^\+[1-9]\d{1,14}$ type: string secondaryContactNumber: description: | The secondary contact number for the user example: "11235555550" pattern: ^\+[1-9]\d{1,14}$ type: string firstName: example: John maxLength: 128 minLength: 1 type: string lastName: example: Doe maxLength: 128 minLength: 1 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 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 roles: description: | The role(s) for the user example: - payor.admin items: $ref: '#/components/schemas/Role' minItems: 1 type: array userType: description: Indicates the type of user. Could be BACKOFFICE, PAYOR or PAYEE. enum: - BACKOFFICE - PAYOR - PAYEE example: PAYOR type: string mfaType: description: The type of the MFA device enum: - SMS - YUBIKEY - TOTP example: TOTP type: string mfaStatus: description: The status of the MFA device enum: - REGISTERED - UNREGISTERED example: REGISTERED 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 type: object InviteUserRequest: example: firstName: John lastName: Doe primaryContactNumber: "11235555555" mfaType: TOTP roles: - velo.payor.admin smsNumber: "11235555555" entityId: 7fffa261-ac68-49e6-b605-d24a444d9206 userType: PAYEE email: foo@example.com secondaryContactNumber: "11235555550" verificationCode: "123456" properties: email: description: the email address of the invited user example: foo@example.com format: email type: string mfaType: description: |
The MFA type that the user will use
The type may be conditional on the role(s) the user has
enum: - SMS - YUBIKEY - TOTP example: TOTP 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 primaryContactNumber: description: | The main contact number for the user example: "11235555555" 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 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 firstName: example: John maxLength: 128 minLength: 1 type: string lastName: example: Doe maxLength: 128 minLength: 1 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 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 RoleUpdateRequest: example: roles: - payor.admin verificationCode: "123456" properties: 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: backoffice.admin, payor.master_admin, payor.admin, payor.support
example: - payor.admin items: type: string type: array 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: - roles 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: |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: - mfaType 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: |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: - tokenType type: object UserDetailsUpdateRequest: description: |All properties are optional
Only provided properties will be updated
Use null to null out a property that is allowed to be nullable
example: firstName: John lastName: Doe primaryContactNumber: "11235555555" mfaType: TOTP smsNumber: "11235555555" secondaryContactNumber: "11235555550" email: foo@example.com verificationCode: "123456" properties: 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 firstName: example: John maxLength: 128 minLength: 1 nullable: true type: string lastName: example: Doe maxLength: 128 minLength: 1 nullable: true type: string email: description: the email address of the user example: foo@example.com format: email nullable: true 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 mfaType: $ref: '#/components/schemas/MFAType' 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 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 PayeeUserSelfUpdateRequest: description: |All properties are optional
Only provided properties will be updated
Use null to null out a property that is allowed to be nullable
example: firstName: John lastName: Doe primaryContactNumber: "11235555555" smsNumber: "11235555555" secondaryContactNumber: "11235555550" email: foo@example.com properties: 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 firstName: example: John maxLength: 128 minLength: 1 nullable: true type: string lastName: example: Doe maxLength: 128 minLength: 1 nullable: true type: string email: description: the email address of the user example: foo@example.com format: email nullable: true 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 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: oldPassword: My_current_password newPassword: My_new_password properties: oldPassword: description: The user's current password example: My_current_password maxLength: 128 minLength: 8 type: string newPassword: description: The new password example: My_new_password maxLength: 128 minLength: 8 type: string required: - newPassword - oldPassword type: object 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 ValidatePasswordResponse: example: valid: true score: 2 warning: Historic Password suggestions: - '[password has been used before]' - '[password has been used before]' properties: score: description: | More secure passwords are given a higher score.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 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 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 type: object PayorV1: example: primaryContactName: Joe Buck payeeGracePeriodProcessingEnabled: true supportContact: support@example.com address: country: US countyOrProvince: FL line4: line4 city: Key West line3: line3 line2: line2 line1: 500 Duval St zipOrPostcode: "33945" fundingAccountAccountName: Example Corp BOA includesReports: true allowsLanguageChoice: true language: EN fundingAccountAccountNumber: "1234567890123" dbaName: Some Biz primaryContactPhone: 123-123-1234 payeeGracePeriodDays: 0 fundingAccountRoutingNumber: "123456789" reminderEmailsOptOut: true maxMasterPayorAdmins: 6 transmissionTypes: ACH: true SAME_DAY_ACH: true WIRE: true manualLockout: true collectiveAlias: Payee payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 kycState: PASSED_KYC primaryContactEmail: joe.buck@example.com payorName: Example, Corp properties: payorId: format: uuid readOnly: true type: string payorName: description: The name of the payor. example: Example, Corp type: string address: $ref: '#/components/schemas/PayorAddress' 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 primaryContactEmail: description: Primary contact email for the payor. example: joe.buck@example.com format: email type: string fundingAccountRoutingNumber: description: The funding account routing number to be used for the payor. example: "123456789" type: string fundingAccountAccountNumber: description: The funding account number to be used for the payor. example: "1234567890123" type: string fundingAccountAccountName: description: The funding account name to be used for the payor. example: Example Corp BOA type: string kycState: $ref: '#/components/schemas/KycState' manualLockout: description: Whether or not the payor has been manually locked by the backoffice. type: boolean payeeGracePeriodProcessingEnabled: description: Whether grace period processing is enabled. readOnly: true type: boolean payeeGracePeriodDays: description: The grace period for paying payees in days. readOnly: true type: integer collectiveAlias: description: How the payor has chosen to refer to payees. example: Payee type: string supportContact: description: The payor’s support contact email address. example: support@example.com type: string dbaName: description: The payor’s 'Doing Business As' name. example: Some Biz type: string allowsLanguageChoice: description: Whether or not the payor allows language choice in the UI. type: boolean reminderEmailsOptOut: description: Whether or not the payor has opted-out of reminder emails being sent. readOnly: true type: boolean language: description: The payor’s language preference. Must be one of [EN, FR]. enum: - EN - FR example: EN type: string includesReports: type: boolean maxMasterPayorAdmins: type: integer transmissionTypes: $ref: '#/components/schemas/TransmissionTypes' required: - payorName type: object ErrorResponse: description: Error response returned by all error conditions in Velo Services properties: errors: description: one or more errors items: $ref: '#/components/schemas/Error' minItems: 1 type: array correlationId: description: a unique identifier to track a request or related sequence of requests example: ee53e01d-c078-43fd-abd4-47e92f4a06cf format: uuid type: string 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 PayorV2: example: primaryContactName: Joe Buck payeeGracePeriodProcessingEnabled: true supportContact: support@example.com payorXid: ABC_201234 includesReports: true managingPayees: true allowsLanguageChoice: true language: EN provider: provider maxMasterPayorAdmins: 6 transmissionTypes: ACH: true SAME_DAY_ACH: true WIRE: true manualLockout: true payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 primaryContactEmail: joe.buck@example.com usdTxnValueReportingThreshold: 1000000 payorName: Example, Corp address: country: US countyOrProvince: FL line4: line4 city: Key West line3: line3 line2: line2 line1: 500 Duval St zipOrPostcode: "33945" openBankingEnabled: true dbaName: Some Biz primaryContactPhone: 123-123-1234 payeeGracePeriodDays: 0 reminderEmailsOptOut: true collectiveAlias: Payee kycState: PASSED_KYC wuCustomerId: wuCustomerId remoteSystemIds: - REMOTE_SYSTEM_ID - REMOTE_SYSTEM_ID properties: 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 provider: description: The source of the payorXid, default is null which means Velo type: string address: $ref: '#/components/schemas/PayorAddressV2' 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 primaryContactEmail: description: Primary contact email for the payor. example: joe.buck@example.com format: email type: string kycState: $ref: '#/components/schemas/KycState' manualLockout: description: Whether or not the payor has been manually locked by the backoffice. type: boolean openBankingEnabled: description: Is Open Banking supported for this payor type: boolean payeeGracePeriodProcessingEnabled: description: Whether grace period processing is enabled. readOnly: true type: boolean payeeGracePeriodDays: description: The grace period for paying payees in days. readOnly: true type: integer collectiveAlias: description: How the payor has chosen to refer to payees. example: Payee type: string supportContact: description: The payor’s support contact email address. example: support@example.com type: string dbaName: description: The payor’s 'Doing Business As' name. example: Some Biz type: string allowsLanguageChoice: description: Whether or not the payor allows language choice in the UI. type: boolean reminderEmailsOptOut: description: Whether or not the payor has opted-out of reminder emails being sent. readOnly: true type: boolean language: description: The payor’s language preference. Must be one of [EN, FR]. enum: - EN - FR example: EN type: string includesReports: type: boolean wuCustomerId: type: string maxMasterPayorAdmins: type: integer paymentRails: $ref: '#/components/schemas/PaymentRails' transmissionTypes: $ref: '#/components/schemas/TransmissionTypes_2' remoteSystemIds: description: The payor’s supported remote systems by id items: example: REMOTE_SYSTEM_ID type: string type: array usdTxnValueReportingThreshold: description: USD in minor units example: 1000000 type: integer managingPayees: type: boolean required: - payorId - payorName type: object PayorCreateApplicationRequest: example: name: SAP description: SAP Application integration properties: name: description: The name of the application. example: SAP maxLength: 100 minLength: 2 type: string description: description: Description of the application. example: SAP Application integration maxLength: 1024 minLength: 2 nullable: true type: string required: - name type: object PayorCreateApiKeyRequest: example: roles: - payor.admin name: iOS Key description: Key for iOS mobile application properties: name: description: A name for the key. example: iOS Key maxLength: 100 minLength: 2 type: string description: description: Description of the key. example: Key for iOS mobile application maxLength: 1024 minLength: 2 nullable: true type: string roles: description: |
A list of roles to assign to the key.
Only the first role name will be used
A later version will change this from a list to string
example: - payor.admin items: description: Name of role enum: - payor.admin - payor.support type: string maxItems: 10 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 PayorEmailOptOutRequest: example: reminderEmailsOptOut: true properties: reminderEmailsOptOut: type: boolean required: - reminderEmailsOptOut type: object PayorLogoRequest: properties: logo: format: binary type: string type: object PayorBrandingResponse: example: supportContact: support@example.com collectiveAlias: Payee dbaName: Key West Imports logoUrl: example.com payorName: Key West Imports, Inc properties: payorName: description: The name of the payor example: Key West Imports, Inc type: string logoUrl: description: The URL to use for this payor’s logo example: example.com format: uri type: string collectiveAlias: description: How the payor has chosen to refer to payees example: Payee nullable: true type: string supportContact: description: The payor’s support contact address example: support@example.com nullable: true type: string dbaName: description: The payor’s 'Doing Business As' name example: Key West Imports nullable: true type: string required: - logoUrl - payorName type: object PayorLinksResponse: description: List Payor Links Response Object example: payors: - payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 kycState: FAILED_KYC primaryContactEmail: primaryContactEmail payorName: payorName - payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 kycState: FAILED_KYC primaryContactEmail: primaryContactEmail payorName: payorName links: - toPayorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 linkId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 fromPayorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 linkType: PARENT_OF - toPayorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 linkId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 fromPayorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 linkType: PARENT_OF properties: links: items: $ref: '#/components/schemas/PayorLinksResponse_links' type: array payors: items: $ref: '#/components/schemas/PayorLinksResponse_payors' type: array type: object CreatePayorLinkRequest: example: toPayorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 fromPayorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 linkType: PARENT_OF properties: fromPayorId: format: uuid type: string linkType: enum: - PARENT_OF type: string toPayorId: format: uuid type: string required: - fromPayorId - linkType - toPayorId type: object PayeeDetailResponseV3: example: payorRefs: - payorId: ba08877f-9d96-41e4-9c26-44a872d856ae invitationStatusTimestamp: 2019-01-20T09:00:00Z payableStatus: true payableIssues: - code: "3" message: payee-disabled - code: "3" message: payee-disabled remoteId: uniqueIdForRemoteEntity paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3 - payorId: ba08877f-9d96-41e4-9c26-44a872d856ae invitationStatusTimestamp: 2019-01-20T09:00:00Z payableStatus: true payableIssues: - code: "3" message: payee-disabled - code: "3" message: payee-disabled remoteId: uniqueIdForRemoteEntity paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3 watchlistOverrideComment: watchlist override comment country: US cellphoneNumber: "1234567890" displayName: Bob kycCompletedTimestamp: 2019-01-20T09:00:00+00:00 marketingOptInTimestamp: 2019-01-20T09:00:00+00:00 language: en-US watchlistOverrideExpiresAtTimestamp: 2019-01-20T09:00:00Z disabled: true company: taxId: "123123123" name: ABC Group Plc operatingName: ABC Co payeeId: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9 pausePaymentTimestamp: 2019-01-20T09:00:00+00:00 email: bob@example.com acceptTermsAndConditionsTimestamp: 2019-01-20T09:00:00Z disabledUpdatedTimestamp: 2019-01-20T09:00:00Z address: country: US countyOrProvince: FL line4: line4 city: Key West line3: line3 line2: line2 line1: 500 Duval St zipOrPostcode: "33945" individual: name: firstName: Bob lastName: Smith otherNames: A title: Mr nationalIdentification: AB123456C dateOfBirth: 1985-01-01 created: 2019-01-20T09:00:00Z enhancedKycCompleted: true pausePayment: true gracePeriodEndDate: 2019-01-20T00:00:00.000+0000 marketingOptInDecision: true watchlistStatusUpdatedTimestamp: 2019-01-20T09:00:00+00:00 disabledComment: reason for disabled challenge: description: challenge description value: challenge test properties: payeeId: example: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9 format: uuid readOnly: true type: string payorRefs: items: $ref: '#/components/schemas/PayeePayorRefV3' nullable: true readOnly: true type: array email: example: bob@example.com format: email nullable: true type: string onboardedStatus: $ref: '#/components/schemas/OnboardedStatusV3' watchlistStatus: $ref: '#/components/schemas/WatchlistStatusV3' watchlistOverrideExpiresAtTimestamp: example: 2019-01-20T09:00:00Z format: date-time nullable: true type: string watchlistOverrideComment: example: watchlist override comment type: string language: description: | An IETF BCP 47 language code which has been configured for use within this Velo environment.The id of the payor whose source account(s) will be debited
payoutFromPayorId and payoutToPayorId must be both supplied or both omitted
example: c4261044-13df-4a6c-b1d4-fa8be2b46f5a 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
example: 9afc6b39-de12-466a-a9ca-07c7a23b312d format: uuid type: string payoutMemo: description: |Text applied to all payment memos unless specified explicitly on a payment
This should be the reference field on the statement seen by the payee (but not via ACH)
example: Monthly Payment maxLength: 40 type: string payments: items: $ref: '#/components/schemas/PaymentInstructionV3' maxItems: 2000 minItems: 1 type: array required: - payments type: object PaymentInstructionV3: description: Instruction for creating a payment example: amount: 1299 paymentMetadata: invoiceeId_123|abc001:12345|xyz002:4567 currency: USD payorPaymentId: 123211321ABSD transmissionType: ACH paymentMemo: my memo remoteSystemId: remoteSystemId remoteId: remoteId1234 sourceAccountName: MyAccountName properties: remoteId: description: Your identifier for payee example: remoteId1234 maxLength: 100 minLength: 1 type: string currency: description: Valid ISO 4217 3 letter currency code. See the ISO specification for details. example: USD maxLength: 3 minLength: 3 pattern: ^[A-Z]{3}$ title: ISO Currency Code type: string amount: description: |Amount to send to Payee
The maximum payment amount is dependent on the currency
example: 1299 format: int64 minimum: 1 type: integer paymentMemo: description: |Any value here will override the memo value in the parent payout
This should be the reference field on the statement seen by the payee (but not via ACH)
example: my memo maxLength: 40 minLength: 0 type: string sourceAccountName: description: Must match a valid source account name belonging to the payor example: MyAccountName maxLength: 64 minLength: 1 type: string payorPaymentId: description: A reference identifier for the payor for the given payee payment example: 123211321ABSD maxLength: 40 minLength: 0 type: string transmissionType: $ref: '#/components/schemas/TransmissionType' remoteSystemId: description: |The identifier for the remote payments system if not Velo
Should only be used after consultation with Velo Payments
maxLength: 100 minLength: 1 type: string paymentMetadata: description: |Metadata about the payment that may be relevant to the specific rails or remote system making the payout
The structure of the data will be dictated by the requirements of the payment rails
example: invoiceeId_123|abc001:12345|xyz002:4567 maxLength: 512 minLength: 0 type: string required: - amount - currency - remoteId - sourceAccountName type: object PayoutSummaryResponseV3: example: rejectedPayments: - currencyType: USD reason: The payee has not been onboarded amount: 1234 paymentMetadata: invoiceeId_123|abc001:12345|xyz002:4567 payorPaymentId: paymenIdVal123123 reasonCode: PAYMENT_VALUE_TOO_HIGH remoteSystemId: Remote_System_Id_101234 lineNumber: 10 message: Payment cannot be processed because of the Payee's OFAC or Compliance Status remoteId: remoteIdVal123 sourceAccountName: Chase - currencyType: USD reason: The payee has not been onboarded amount: 1234 paymentMetadata: invoiceeId_123|abc001:12345|xyz002:4567 payorPaymentId: paymenIdVal123123 reasonCode: PAYMENT_VALUE_TOO_HIGH remoteSystemId: Remote_System_Id_101234 lineNumber: 10 message: Payment cannot be processed because of the Payee's OFAC or Compliance Status remoteId: remoteIdVal123 sourceAccountName: Chase schedule: scheduledFor: 2000-01-23T04:56:07.000+00:00 scheduleStatus: SCHEDULED notificationsEnabled: true scheduledByPrincipalId: 8946953b-1e3b-49cf-9da4-b704cbb78f3e scheduledAt: 2000-01-23T04:56:07.000+00:00 paymentsRejected: 0 paymentsSubmitted: 10 paymentsWithdrawn: 0 fxSummaries: - invertedRate: 1.12 creationTime: 2000-01-23T04:56:07.000+00:00 rate: 1.12 expiryTime: 2000-01-23T04:56:07.000+00:00 sourceCurrency: USD totalPaymentAmount: 1234 paymentCurrency: USD quoteId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 totalSourceAmount: 1234 fundingStatus: FUNDED status: QUOTED - invertedRate: 1.12 creationTime: 2000-01-23T04:56:07.000+00:00 rate: 1.12 expiryTime: 2000-01-23T04:56:07.000+00:00 sourceCurrency: USD totalPaymentAmount: 1234 paymentCurrency: USD quoteId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 totalSourceAmount: 1234 fundingStatus: FUNDED status: QUOTED accounts: - sourceAccountId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 currency: USD totalPayoutCost: 1231200 sourceAccountName: AccountName - sourceAccountId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 currency: USD totalPayoutCost: 1231200 sourceAccountName: AccountName payoutId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 acceptedPayments: - currencyType: USD amount: 1234 paymentMetadata: invoiceeId_123|abc001:12345|xyz002:4567 payorPaymentId: paymenIdVal123123 paymentMemo: Payment memo remoteSystemId: Remote_System_Id_101234 remoteId: remoteIdVal123 sourceAccountName: Chase - currencyType: USD amount: 1234 paymentMetadata: invoiceeId_123|abc001:12345|xyz002:4567 payorPaymentId: paymenIdVal123123 paymentMemo: Payment memo remoteSystemId: Remote_System_Id_101234 remoteId: remoteIdVal123 sourceAccountName: Chase status: COMPLETED paymentsAccepted: 10 properties: payoutId: format: uuid type: string status: example: COMPLETED type: string paymentsSubmitted: example: 10 type: integer paymentsAccepted: example: 10 type: integer paymentsRejected: example: 0 type: integer paymentsWithdrawn: example: 0 type: integer fxSummaries: items: $ref: '#/components/schemas/QuoteFxSummaryV3' type: array accounts: items: $ref: '#/components/schemas/SourceAccountV3' type: array acceptedPayments: items: $ref: '#/components/schemas/AcceptedPaymentV3' type: array rejectedPayments: items: $ref: '#/components/schemas/RejectedPaymentV3' type: array schedule: $ref: '#/components/schemas/PayoutSchedule_2' required: - acceptedPayments - accounts - fxSummaries - paymentsWithdrawn - rejectedPayments type: object InstructPayoutRequest: 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 QuoteResponseV3: example: fxSummaries: - invertedRate: 1.12 creationTime: 2000-01-23T04:56:07.000+00:00 rate: 1.12 expiryTime: 2000-01-23T04:56:07.000+00:00 sourceCurrency: USD totalPaymentAmount: 1234 paymentCurrency: USD quoteId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 totalSourceAmount: 1234 fundingStatus: FUNDED status: QUOTED - invertedRate: 1.12 creationTime: 2000-01-23T04:56:07.000+00:00 rate: 1.12 expiryTime: 2000-01-23T04:56:07.000+00:00 sourceCurrency: USD totalPaymentAmount: 1234 paymentCurrency: USD quoteId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 totalSourceAmount: 1234 fundingStatus: FUNDED status: QUOTED properties: fxSummaries: items: $ref: '#/components/schemas/QuoteFxSummaryV3' type: array type: object PagedPaymentsResponseV3: description: List Payees Response Object example: links: - rel: rel href: href - rel: rel href: href page: numberOfElements: 0 totalPages: 1 pageSize: 5 page: 5 totalElements: 6 content: - amount: 1234 paymentMemo: Payment memo remoteId: remoteIdVal123 payee: individual: name: firstName: Fred lastName: Flintstone company: companyName: ACME Anvils PLC payeeId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 paymentId: paymentId withdrawable: false autoWithdrawnReasonCode: VE0003 paymentMetadata: invoiceeId_123|abc001:12345|xyz002:4567 currency: USD payorPaymentId: paymenIdVal123123 transmissionType: ACH remoteSystemId: Remote_System_Id_101234 sourceAccountName: Chase status: SUBMITTED - amount: 1234 paymentMemo: Payment memo remoteId: remoteIdVal123 payee: individual: name: firstName: Fred lastName: Flintstone company: companyName: ACME Anvils PLC payeeId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 paymentId: paymentId withdrawable: false autoWithdrawnReasonCode: VE0003 paymentMetadata: invoiceeId_123|abc001:12345|xyz002:4567 currency: USD payorPaymentId: paymenIdVal123123 transmissionType: ACH remoteSystemId: Remote_System_Id_101234 sourceAccountName: Chase status: SUBMITTED properties: page: $ref: '#/components/schemas/PagedPayeeInvitationStatusResponseV3_page' links: items: $ref: '#/components/schemas/PagedPayeeResponseV3_links' type: array content: items: $ref: '#/components/schemas/PaymentV3' type: array type: object SchedulePayoutRequest: example: scheduledFor: 2025-01-01T10:00:00Z notificationsEnabled: true properties: scheduledFor: description: UTC timestamp for instructing the payout. Format is ISO-8601. example: 2025-01-01T10:00:00Z format: date-time type: string notificationsEnabled: description: Flag to indicate whether to receive notifications when scheduled payout is processed type: boolean required: - notificationsEnabled - scheduledFor type: object PaymentChannelRulesResponse: example: bank: - isoCountryCode: US rules: - displayName: Account Name minLength: 5 displayOrder: 0 required: true maxLength: 50 validation: ^[0-9]{6,11}$ element: accountName - displayName: Account Name minLength: 5 displayOrder: 0 required: true maxLength: 50 validation: ^[0-9]{6,11}$ element: accountName - isoCountryCode: US rules: - displayName: Account Name minLength: 5 displayOrder: 0 required: true maxLength: 50 validation: ^[0-9]{6,11}$ element: accountName - displayName: Account Name minLength: 5 displayOrder: 0 required: true maxLength: 50 validation: ^[0-9]{6,11}$ element: accountName properties: bank: items: $ref: '#/components/schemas/PaymentChannelCountry' type: array 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 SupportedCountriesResponse: example: countries: - isoCountryCode: US currencies: - USD - USD - isoCountryCode: US currencies: - USD - USD properties: countries: items: $ref: '#/components/schemas/SupportedCountry' type: array type: object SupportedCountriesResponseV2: example: countries: - regions: - name: California abbreviation: CA - name: California abbreviation: CA isoCountryCode: US currencies: - USD - USD - regions: - name: California abbreviation: CA - name: California abbreviation: CA isoCountryCode: US currencies: - USD - USD properties: countries: items: $ref: '#/components/schemas/SupportedCountryV2' 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 WebhooksResponse: description: List Webhooks Object example: links: - rel: rel href: href - rel: rel href: href page: numberOfElements: 0 totalPages: 1 pageSize: 5 page: 5 totalElements: 6 content: - id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 authorizationHeader: authorizationHeader categories: - null - null webhookUrl: webhookUrl enabled: true - id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 authorizationHeader: authorizationHeader categories: - null - null webhookUrl: webhookUrl enabled: true properties: page: $ref: '#/components/schemas/PagedPayeeInvitationStatusResponseV3_page' links: items: $ref: '#/components/schemas/PagedPayeeResponseV3_links' type: array content: items: $ref: '#/components/schemas/WebhookResponse' type: array type: object CreateWebhookRequest: example: payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 authorizationHeader: authorizationHeader categories: - null - null webhookUrl: webhookUrl enabled: true properties: payorId: format: uuid type: string webhookUrl: description: the webhook URL to use. maxLength: 2000 minLength: 6 type: string authorizationHeader: description: the authorization header to include with the notification. maxLength: 1000 minLength: 4 pattern: .* type: string enabled: description: whether the webhook is enabled. type: boolean categories: description: the categories to enable. items: $ref: '#/components/schemas/Category' type: array required: - enabled - payorId - webhookUrl type: object WebhookResponse: example: id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 authorizationHeader: authorizationHeader categories: - null - null webhookUrl: webhookUrl enabled: true properties: id: format: uuid type: string payorId: format: uuid type: string webhookUrl: type: string authorizationHeader: type: string enabled: type: boolean categories: items: $ref: '#/components/schemas/Category' type: array type: object UpdateWebhookRequest: example: authorizationHeader: authorizationHeader categories: - null - null webhookUrl: webhookUrl enabled: true properties: webhookUrl: description: the webhook URL to use. maxLength: 2000 minLength: 6 type: string authorizationHeader: description: the authorization header to include with the notification. maxLength: 1000 minLength: 4 nullable: true pattern: .* type: string enabled: description: whether the webhook is enabled. type: boolean categories: description: The notification categories to enable. items: $ref: '#/components/schemas/Category' nullable: true type: array type: object PingResponse: example: webhookId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 id: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 properties: id: format: uuid type: string webhookId: format: uuid type: string type: object LocalisationDetails: properties: template: description: the English language message template used to construct the error message example: size must be between {min} and {max} type: string parameters: additionalProperties: type: string description: name to value map containing any named parameters that appear in the message template example: min: "0" max: "10" type: object type: object ErrorData: properties: description: description: The description of the error data content example: The rejected CSV rows type: string content: description: Object containing typed error data specific to the API type: object type: object UserInfo: example: mfa_details: mfa_type: TOTP verified: true user_id: 39976ee5-dc4c-4b21-a966-a04fa71ef9e1 userType: PAYOR properties: user_id: description: the id of the user example: 39976ee5-dc4c-4b21-a966-a04fa71ef9e1 format: uuid type: string userType: $ref: '#/components/schemas/UserType_2' mfa_details: $ref: '#/components/schemas/MFADetails' type: object Role: properties: name: description: the name of the role example: payor.admin type: string required: - name type: object 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 MFAType: description: The type of the MFA device enum: - SMS - YUBIKEY - TOTP example: TOTP nullable: true type: string PayorAddress: example: country: US countyOrProvince: FL line4: line4 city: Key West line3: line3 line2: line2 line1: 500 Duval St zipOrPostcode: "33945" properties: 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 city: example: Key West maxLength: 100 minLength: 2 nullable: false type: string countyOrProvince: example: FL maxLength: 100 minLength: 2 nullable: true type: string zipOrPostcode: example: "33945" maxLength: 30 minLength: 2 nullable: true type: string country: example: US maxLength: 50 minLength: 2 nullable: false type: string required: - city - country - line1 type: object KycState: description: The kyc state of the payor. enum: - FAILED_KYC - PASSED_KYC - REQUIRES_KYC example: PASSED_KYC readOnly: true type: string 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 PayorAddressV2: example: country: US countyOrProvince: FL line4: line4 city: Key West line3: line3 line2: line2 line1: 500 Duval St zipOrPostcode: "33945" properties: 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 city: example: Key West maxLength: 100 minLength: 2 nullable: false type: string countyOrProvince: example: FL maxLength: 100 minLength: 2 nullable: true type: string zipOrPostcode: example: "33945" maxLength: 30 minLength: 2 nullable: true type: string country: example: US maxLength: 50 minLength: 2 nullable: false type: string required: - city - country - line1 type: object PaymentRails: enum: - WU - BOFA type: string 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 PayeePayorRefV3: example: payorId: ba08877f-9d96-41e4-9c26-44a872d856ae invitationStatusTimestamp: 2019-01-20T09:00:00Z payableStatus: true payableIssues: - code: "3" message: payee-disabled - code: "3" message: payee-disabled remoteId: uniqueIdForRemoteEntity paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3 properties: payorId: example: ba08877f-9d96-41e4-9c26-44a872d856ae format: uuid type: string remoteId: example: uniqueIdForRemoteEntity type: string invitationStatus: $ref: '#/components/schemas/InvitationStatusV3' invitationStatusTimestamp: description: The timestamp when the invitation status is updated example: 2019-01-20T09:00:00Z format: date-time nullable: true type: string paymentChannelId: example: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3 format: uuid type: string payableStatus: description: Indicates if the payee is payable for this payor type: boolean payableIssues: description: Indicates any conditions which prevent the payee from being payable for this payor items: $ref: '#/components/schemas/PayableIssueV3' type: array type: object OnboardedStatusV3: enum: - CREATED - INVITED - REGISTERED - ONBOARDED type: string LanguageV3: description: | An IETF BCP 47 language code which has been configured for use within this Velo environment.Used to override the default challenge presented to the payee when they onboard
Not used after the payee has onboarded
example: description: challenge description value: "11984567" properties: value: description: The value that the user will be asked to verify when they onboard example: "11984567" maxLength: 20 minLength: 3 type: string description: example: challenge description maxLength: 255 minLength: 1 type: string required: - description - value type: object GetPayeeListResponseV4: example: payorRefs: - payorId: ba08877f-9d96-41e4-9c26-44a872d856ae invitationStatusTimestamp: 2019-01-20T09:00:00Z payableStatus: true payableIssues: - code: "3" message: payee-disabled - code: "3" message: payee-disabled remoteId: uniqueIdForRemoteEntity paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3 - payorId: ba08877f-9d96-41e4-9c26-44a872d856ae invitationStatusTimestamp: 2019-01-20T09:00:00Z payableStatus: true payableIssues: - code: "3" message: payee-disabled - code: "3" message: payee-disabled remoteId: uniqueIdForRemoteEntity paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3 watchlistOverrideComment: Example reason for the watchlist status being overridden country: US disabledUpdatedTimestamp: 2019-01-20T09:00:00Z individual: name: firstName: Bob lastName: Smith otherNames: H title: Mr created: 2019-01-20T09:00:00Z displayName: ABC language: en-US watchlistStatusUpdatedTimestamp: 2019-01-20T09:00:00+00:00 disabledComment: reason for disabled disabled: true company: name: ABC Group Plc operatingName: ABC Co payeeId: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9 email: bob@example.com properties: payeeId: example: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9 format: uuid readOnly: true type: string payorRefs: items: $ref: '#/components/schemas/PayeePayorRefV4' nullable: true readOnly: true type: array email: example: bob@example.com format: email nullable: true type: string onboardedStatus: $ref: '#/components/schemas/OnboardedStatusV4' watchlistStatus: $ref: '#/components/schemas/WatchlistStatusV4' watchlistStatusUpdatedTimestamp: example: 2019-01-20T09:00:00+00:00 format: date_time nullable: true readOnly: true type: string watchlistOverrideComment: example: Example reason for the watchlist status being overridden nullable: true type: string language: description: | An IETF BCP 47 language code which has been configured for use within this Velo environment.The transmission type that will be used to send a payment
If omitted, a default will be provided by the payment rails
enum: - SAME_DAY_ACH - WIRE - ACH example: ACH type: string QuoteFxSummaryV3: example: invertedRate: 1.12 creationTime: 2000-01-23T04:56:07.000+00:00 rate: 1.12 expiryTime: 2000-01-23T04:56:07.000+00:00 sourceCurrency: USD totalPaymentAmount: 1234 paymentCurrency: USD quoteId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 totalSourceAmount: 1234 fundingStatus: FUNDED status: QUOTED properties: rate: example: 1.12 format: float type: number invertedRate: example: 1.12 format: float type: number creationTime: format: date-time type: string expiryTime: format: date-time type: string quoteId: format: uuid type: string totalSourceAmount: example: 1234 type: integer totalPaymentAmount: example: 1234 type: integer sourceCurrency: description: Valid ISO 4217 3 letter currency code. See the ISO specification for details. example: USD maxLength: 3 minLength: 3 pattern: ^[A-Z]{3}$ title: ISO Currency Code type: string paymentCurrency: description: Valid ISO 4217 3 letter currency code. See the ISO specification for details. example: USD maxLength: 3 minLength: 3 pattern: ^[A-Z]{3}$ title: ISO Currency Code type: string fundingStatus: enum: - UNFUNDED - INSTRUCTED - FUNDED example: FUNDED type: string status: enum: - UNQUOTED - QUOTED - EXPIRED - EXECUTED - REJECTED example: QUOTED type: string required: - creationTime - fundingStatus - paymentCurrency - quoteId - rate - sourceCurrency - status - totalPaymentAmount - totalSourceAmount type: object SourceAccountV3: example: sourceAccountId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 currency: USD totalPayoutCost: 1231200 sourceAccountName: AccountName properties: sourceAccountName: example: AccountName type: string sourceAccountId: format: uuid type: string currency: description: Valid ISO 4217 3 letter currency code. See the ISO specification for details. example: USD maxLength: 3 minLength: 3 pattern: ^[A-Z]{3}$ title: ISO Currency Code type: string totalPayoutCost: example: 1231200 type: integer required: - currency - sourceAccountId - sourceAccountName - totalPayoutCost type: object AcceptedPaymentV3: example: currencyType: USD amount: 1234 paymentMetadata: invoiceeId_123|abc001:12345|xyz002:4567 payorPaymentId: paymenIdVal123123 paymentMemo: Payment memo remoteSystemId: Remote_System_Id_101234 remoteId: remoteIdVal123 sourceAccountName: Chase properties: remoteId: example: remoteIdVal123 type: string currencyType: description: Valid ISO 4217 3 letter currency code. See the ISO specification for details. example: USD maxLength: 3 minLength: 3 pattern: ^[A-Z]{3}$ title: ISO Currency Code type: string amount: example: 1234 type: integer sourceAccountName: example: Chase type: string payorPaymentId: example: paymenIdVal123123 type: string paymentMemo: example: Payment memo type: string remoteSystemId: example: Remote_System_Id_101234 type: string paymentMetadata: example: invoiceeId_123|abc001:12345|xyz002:4567 type: string required: - amount - currencyType - payorPaymentId - remoteId - sourceAccountName type: object RejectedPaymentV3: example: currencyType: USD reason: The payee has not been onboarded amount: 1234 paymentMetadata: invoiceeId_123|abc001:12345|xyz002:4567 payorPaymentId: paymenIdVal123123 reasonCode: PAYMENT_VALUE_TOO_HIGH remoteSystemId: Remote_System_Id_101234 lineNumber: 10 message: Payment cannot be processed because of the Payee's OFAC or Compliance Status remoteId: remoteIdVal123 sourceAccountName: Chase properties: remoteId: example: remoteIdVal123 type: string currencyType: description: Valid ISO 4217 3 letter currency code. See the ISO specification for details. example: USD maxLength: 3 minLength: 3 pattern: ^[A-Z]{3}$ title: ISO Currency Code type: string amount: example: 1234 type: integer sourceAccountName: example: Chase type: string payorPaymentId: example: paymenIdVal123123 type: string remoteSystemId: example: Remote_System_Id_101234 type: string paymentMetadata: example: invoiceeId_123|abc001:12345|xyz002:4567 type: string reason: example: The payee has not been onboarded type: string reasonCode: example: PAYMENT_VALUE_TOO_HIGH type: string lineNumber: example: 10 type: integer message: example: Payment cannot be processed because of the Payee's OFAC or Compliance Status type: string required: - amount - currencyType - payorPaymentId - reason - remoteId - sourceAccountName type: object PayoutSchedule_2: description: Details relating to a payout that was executed via a schedule or is still waiting to be executed example: scheduledFor: 2000-01-23T04:56:07.000+00:00 scheduleStatus: SCHEDULED notificationsEnabled: true scheduledByPrincipalId: 8946953b-1e3b-49cf-9da4-b704cbb78f3e scheduledAt: 2000-01-23T04:56:07.000+00:00 properties: scheduleStatus: $ref: '#/components/schemas/ScheduleStatus_2' scheduledAt: format: date-time type: string scheduledFor: 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 notificationsEnabled: type: boolean required: - notificationsEnabled - scheduleStatus - scheduledAt - scheduledByPrincipalId - scheduledFor type: object PaymentV3: example: amount: 1234 paymentMemo: Payment memo remoteId: remoteIdVal123 payee: individual: name: firstName: Fred lastName: Flintstone company: companyName: ACME Anvils PLC payeeId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 paymentId: paymentId withdrawable: false autoWithdrawnReasonCode: VE0003 paymentMetadata: invoiceeId_123|abc001:12345|xyz002:4567 currency: USD payorPaymentId: paymenIdVal123123 transmissionType: ACH remoteSystemId: Remote_System_Id_101234 sourceAccountName: Chase status: SUBMITTED properties: paymentId: type: string remoteId: example: remoteIdVal123 type: string currency: example: USD maxLength: 3 minLength: 3 type: string amount: example: 1234 type: integer sourceAccountName: example: Chase type: string payorPaymentId: example: paymenIdVal123123 type: string paymentMemo: example: Payment memo type: string payee: $ref: '#/components/schemas/PayoutPayeeV3' withdrawable: example: false type: boolean status: enum: - SUBMITTED - ACCEPTED - REJECTED - WITHDRAWN - RETURNED - AWAITING_FUNDS - FUNDED - UNFUNDED - CANCELLED - REQUESTED type: string transmissionType: $ref: '#/components/schemas/TransmissionType' remoteSystemId: example: Remote_System_Id_101234 type: string paymentMetadata: example: invoiceeId_123|abc001:12345|xyz002:4567 type: string autoWithdrawnReasonCode: description: Populated only if the payment was automatically withdrawn during instruction for being invalid example: VE0003 type: string required: - paymentId type: object PaymentChannelCountry: example: isoCountryCode: US rules: - displayName: Account Name minLength: 5 displayOrder: 0 required: true maxLength: 50 validation: ^[0-9]{6,11}$ element: accountName - displayName: Account Name minLength: 5 displayOrder: 0 required: true maxLength: 50 validation: ^[0-9]{6,11}$ element: accountName 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 SupportedCountry: example: isoCountryCode: US currencies: - USD - USD properties: isoCountryCode: description: Valid ISO 3166 2 character country code. See the ISO specification for details. example: US maxLength: 2 minLength: 2 pattern: ^[A-Z]{2}$ title: ISO 3166 2 Character Country Code type: string currencies: items: $ref: '#/components/schemas/IsoCurrency' type: array type: object SupportedCountryV2: example: regions: - name: California abbreviation: CA - name: California abbreviation: CA isoCountryCode: US currencies: - USD - USD properties: isoCountryCode: description: Valid ISO 3166 2 character country code. See the ISO specification for details. example: US maxLength: 2 minLength: 2 pattern: ^[A-Z]{2}$ title: ISO 3166 2 Character Country Code type: string currencies: items: $ref: '#/components/schemas/IsoCurrency' type: array regions: items: $ref: '#/components/schemas/RegionV2' type: array type: object SupportedCurrencyV2: example: currency: USD maxPaymentAmount: 100000 properties: currency: description: Valid ISO 4217 3 letter currency code. See the ISO specification 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 Category: description: The notification category. One of "payment", "payee", "debit". enum: - payment - payee - debit type: string UserType_2: enum: - BACKOFFICE - PAYOR - PAYEE example: PAYOR type: string 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 InvitationStatusV3: enum: - ACCEPTED - PENDING - DECLINED type: string 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 GetPayeeListResponseIndividualV3: example: name: firstName: Bob lastName: Smith otherNames: H title: Mr properties: name: $ref: '#/components/schemas/NameV3' type: object 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 CreatePayeeAddressV3: example: country: US countyOrProvince: FL line4: line4 city: Key West line3: line3 line2: line2 line1: 500 Duval St zipOrPostcode: "33945" properties: 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 city: example: Key West maxLength: 50 minLength: 2 nullable: false type: string countyOrProvince: example: FL maxLength: 50 minLength: 2 nullable: true type: string zipOrPostcode: example: "33945" maxLength: 60 minLength: 2 nullable: true type: string country: description: 2 letter ISO 3166-1 country code enum: - AF - AX - AL - DZ - AS - AD - AO - AI - AQ - AG - AR - AM - AW - AU - AT - AZ - BS - BH - BD - BB - BY - BE - BZ - BJ - BM - BT - BO - BQ - BA - BW - BV - BR - IO - BN - BG - BF - BI - KH - CM - CA - CV - KY - CF - TD - CL - CN - CX - CC - CO - KM - CG - CD - CK - CR - CI - HR - CU - CW - CY - CZ - DK - DJ - DM - DO - EC - EG - SV - GQ - ER - EE - ET - FK - FO - FJ - FI - FR - GF - PF - TF - GA - GM - GE - DE - GH - GI - GR - GL - GD - GP - GU - GT - GG - GN - GW - GY - HT - HM - VA - HN - HK - HU - IS - IN - ID - IR - IQ - IE - IM - IL - IT - JM - JP - JE - JO - KZ - KE - KI - KP - KR - KW - KG - LA - LV - LB - LS - LR - LY - LI - LT - LU - MO - MK - MG - MW - MY - MV - ML - MT - MH - MQ - MR - MU - YT - MX - FM - MD - MC - MN - ME - MS - MA - MZ - MM - NA - NR - NP - NL - NC - NZ - NI - NE - NG - NU - NF - MP - NO - OM - PK - PW - PS - PA - PG - PY - PE - PH - PN - PL - PT - PR - QA - RE - RO - RU - RW - BL - SH - KN - LC - MF - PM - VC - WS - SM - ST - SA - SN - RS - SC - SL - SG - SX - SK - SI - SB - SO - ZA - GS - SS - ES - LK - SD - SR - SJ - SZ - SE - CH - SY - TW - TJ - TZ - TH - TL - TG - TK - TO - TT - TN - TR - TM - TC - TV - UG - UA - AE - GB - US - UM - UY - UZ - VU - VE - VN - VG - VI - WF - EH - YE - ZM - ZW example: US maxLength: 2 minLength: 2 nullable: false type: string required: - city - country - line1 type: object CreatePaymentChannelV3: example: paymentChannelName: My Payment Channel routingNumber: XXXXX6789 accountName: My account countryCode: US iban: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1234 currency: USD accountNumber: XXXXXX5678 properties: paymentChannelName: example: My Payment Channel 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 accountNumber: description: Either routing number and account number or only iban must be set example: XXXXXX5678 maxLength: 17 minLength: 6 type: string routingNumber: description: Either routing number and account number or only iban must be set example: XXXXX6789 maxLength: 9 minLength: 9 type: string countryCode: description: Valid ISO 3166 2 character country code. See the ISO specification 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 ISO specification for details. example: USD maxLength: 3 minLength: 3 pattern: ^[A-Z]{3}$ title: ISO Currency Code type: string accountName: example: My account type: string required: - accountName - countryCode - currency type: object CreateIndividualV3: example: name: firstName: Bob lastName: Smith otherNames: H title: Mr nationalIdentification: SA211123K dateOfBirth: 1970-05-20T00:00:00.000+0000 properties: name: $ref: '#/components/schemas/CreateIndividualV3_name' nationalIdentification: example: SA211123K maxLength: 30 minLength: 6 type: string dateOfBirth: description: Must not be date in future. Example - 1970-05-20 example: 1970-05-20 format: date type: string required: - dateOfBirth - name type: object FailedPayeeV3: example: payorRefs: - payorId: ba08877f-9d96-41e4-9c26-44a872d856ae invitationStatusTimestamp: 2019-01-20T09:00:00Z payableStatus: true payableIssues: - code: "3" message: payee-disabled - code: "3" message: payee-disabled remoteId: uniqueIdForRemoteEntity paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3 - payorId: ba08877f-9d96-41e4-9c26-44a872d856ae invitationStatusTimestamp: 2019-01-20T09:00:00Z payableStatus: true payableIssues: - code: "3" message: payee-disabled - code: "3" message: payee-disabled remoteId: uniqueIdForRemoteEntity paymentChannelId: 70faaff7-2c32-4b44-b27f-f0b6c484e6f3 address: country: US countyOrProvince: FL line4: line4 city: Key West line3: line3 line2: line2 line1: 500 Duval St zipOrPostcode: "33945" individual: name: firstName: Bob lastName: Smith otherNames: H title: Mr nationalIdentification: SA211123K dateOfBirth: 1970-05-20T00:00:00.000+0000 challenge: description: challenge description value: challenge test language: en-US company: taxId: "123123123" name: ABC Group Plc operatingName: ABC Co payeeId: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9 email: bob@example.com remoteId: Remote ID paymentChannel: paymentChannelName: My Payment Channel routingNumber: XXXXX6789 accountName: My account countryCode: US iban: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1234 currency: USD accountNumber: XXXXXX5678 properties: payeeId: example: 2aa5d7e0-2ecb-403f-8494-1865ed0454e9 format: uuid readOnly: true type: string payorRefs: items: $ref: '#/components/schemas/PayeePayorRefV3' nullable: true readOnly: true type: array email: example: bob@example.com format: email type: string remoteId: example: Remote ID type: string type: $ref: '#/components/schemas/PayeeType_2' address: $ref: '#/components/schemas/CreatePayeeAddressV3' paymentChannel: $ref: '#/components/schemas/CreatePaymentChannelV3' challenge: $ref: '#/components/schemas/ChallengeV3' language: description: | An IETF BCP 47 language code which has been configured for use within this Velo environment.the rule element
will match a given element name for a payment channel configuration example: accountName type: string required: description: is this element required type: boolean displayName: description: User friendly name example: Account Name type: string minLength: description: mininum length of the element data example: 5 type: integer maxLength: description: maximum length of the element data example: 50 type: integer validation: description: a regex to validate the element data example: ^[0-9]{6,11}$ type: string displayOrder: type: integer required: - displayName - element - required - validation type: object RegionV2: example: name: California abbreviation: CA properties: name: example: California type: string abbreviation: example: CA type: string type: object NameV3: example: firstName: Bob lastName: Smith otherNames: H title: Mr properties: title: example: Mr maxLength: 10 minLength: 1 type: string firstName: example: Bob maxLength: 40 minLength: 1 type: string otherNames: example: H maxLength: 40 minLength: 1 type: string lastName: example: Smith maxLength: 40 minLength: 1 type: string type: object NameV4: example: firstName: Bob lastName: Smith otherNames: H title: Mr properties: title: example: Mr maxLength: 10 minLength: 1 type: string firstName: example: Bob maxLength: 40 minLength: 1 type: string otherNames: example: H maxLength: 40 minLength: 1 type: string lastName: example: Smith maxLength: 40 minLength: 1 type: string type: object FundingEventType: enum: - 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 PayoutIndividualV3: example: name: firstName: Fred lastName: Flintstone properties: name: $ref: '#/components/schemas/PayoutNameV3' required: - name type: object PayoutCompanyV3: example: companyName: ACME Anvils PLC properties: companyName: example: ACME Anvils PLC type: string required: - companyName type: object PayoutNameV3: example: firstName: Fred lastName: Flintstone properties: firstName: example: Fred type: string lastName: example: Flintstone type: string required: - firstName - lastName type: object inline_response_401: properties: errors: description: one or more errors items: $ref: '#/components/schemas/Error' minItems: 1 nullable: true type: array 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 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: errors: description: one or more errors items: $ref: '#/components/schemas/Error' minItems: 1 nullable: true type: array 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 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_400: properties: errors: description: one or more errors items: $ref: '#/components/schemas/Error' minItems: 1 nullable: true type: array 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 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_404: properties: errors: description: one or more errors items: $ref: '#/components/schemas/Error' minItems: 1 nullable: true type: array 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 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: errors: description: one or more errors items: $ref: '#/components/schemas/Error' minItems: 1 nullable: true type: array 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 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: errors: description: one or more errors items: $ref: '#/components/schemas/Error' minItems: 1 nullable: true type: array 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 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 PaymentEvent_allOf: properties: paymentId: description: ID of this payment within the Velo platform example: cbd9280f-8fde-4190-b014-979d88f3ec54 format: uuid type: string payoutPayorIds: $ref: '#/components/schemas/PayoutPayorIds' payorPaymentId: description: ID of this payment in the payors system example: ourpayment-id12345 type: string required: - paymentId 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 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 PayeeEvent_allOf_reasons: properties: code: example: "00001" type: string message: example: payment channel disabled type: string required: - code - message 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 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: properties: status: description: The new status of the debit. One of "PENDING" "PROCESSING" "REJECTED" "RELEASED" example: PENDING type: string required: - status PagedUserResponse_page: example: numberOfElements: 12 totalPages: 2 pageSize: 25 page: 1 totalElements: 33 properties: numberOfElements: example: 12 type: integer totalElements: example: 33 type: integer totalPages: example: 2 type: integer page: example: 1 type: integer pageSize: example: 25 type: integer PagedUserResponse_links: example: rel: first href: https://api.sandbox.velopayments.com/v2/users??type=PAYOR&page=1&pageSize=10 properties: rel: example: first type: string href: example: https://api.sandbox.velopayments.com/v2/users??type=PAYOR&page=1&pageSize=10 type: string PayorLinksResponse_links: example: toPayorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 linkId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 fromPayorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 linkType: PARENT_OF properties: linkId: format: uuid type: string fromPayorId: format: uuid type: string linkType: enum: - PARENT_OF type: string toPayorId: format: uuid type: string required: - fromPayorId - linkId - linkType - toPayorId PayorLinksResponse_payors: example: payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 kycState: FAILED_KYC primaryContactEmail: primaryContactEmail payorName: payorName properties: payorId: format: uuid type: string payorName: type: string primaryContactEmail: type: string kycState: enum: - FAILED_KYC - PASSED_KYC - REQUIRES_KYC type: string required: - payorId - payorName PagedPayeeResponseV3_summary: example: totalOnboardedCount: 10 totalRegisteredCount: 10 totalPayeesCount: 10 totalInvitedCount: 10 totalWatchlistFailedCount: 0 properties: totalPayeesCount: example: 10 type: integer totalInvitedCount: example: 10 type: integer totalRegisteredCount: example: 10 type: integer totalOnboardedCount: example: 10 type: integer totalWatchlistFailedCount: example: 0 type: integer PagedPayeeResponseV3_page: example: numberOfElements: 10 totalPages: 10 pageSize: 10 page: 10 totalElements: 10 properties: numberOfElements: example: 10 type: integer totalElements: example: 10 type: integer totalPages: example: 10 type: integer page: example: 10 type: integer pageSize: example: 10 type: integer PagedPayeeResponseV3_links: example: rel: rel href: href properties: rel: type: string href: type: string CreatePayeesCSVResponseV3_rejectedCsvRows: example: rejectedContent: unable,to,process,csv,line lineNumber: 3 message: rejected message 1 properties: lineNumber: example: 3 type: integer rejectedContent: example: unable,to,process,csv,line type: string message: example: rejected message 1 type: string PagedPayeeInvitationStatusResponseV3_page: example: numberOfElements: 0 totalPages: 1 pageSize: 5 page: 5 totalElements: 6 properties: numberOfElements: type: integer totalElements: type: integer totalPages: type: integer page: type: integer pageSize: type: integer PayeeDeltaResponseV3_page: example: numberOfElements: 2 totalPages: 1 pageSize: 25 page: 1 totalElements: 2 properties: numberOfElements: example: 2 type: integer totalElements: example: 2 type: integer totalPages: example: 1 type: integer page: example: 1 type: integer pageSize: example: 25 type: integer PayeeDeltaResponseV3_links: example: 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 properties: rel: example: first type: string 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 PayeeDeltaResponseV4_links: example: 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 properties: rel: example: first type: string 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 ListSourceAccountResponse_page: example: numberOfElements: 1 totalPages: 2 pageSize: 25 page: 1 totalElements: 1 properties: numberOfElements: example: 1 type: integer totalElements: example: 1 type: integer totalPages: example: 2 type: integer page: example: 1 type: integer pageSize: example: 25 type: integer ListSourceAccountResponse_links: example: rel: first href: https://api.sandbox.velopayments.com/v1/sourceAccounts?payorId=a2967711-df07-41e5-b5ea-f563088911c6&page=1&pageSize=0&sort=fundingRef:asc properties: rel: example: first type: string href: example: https://api.sandbox.velopayments.com/v1/sourceAccounts?payorId=a2967711-df07-41e5-b5ea-f563088911c6&page=1&pageSize=0&sort=fundingRef:asc type: string ListSourceAccountResponseV2_links: example: rel: first href: https://api.sandbox.velopayments.com/v2/sourceAccounts?payorId=a2967711-df07-41e5-b5ea-f563088911c6&page=1&pageSize=0&sort=fundingRef:asc properties: rel: example: first type: string href: example: https://api.sandbox.velopayments.com/v2/sourceAccounts?payorId=a2967711-df07-41e5-b5ea-f563088911c6&page=1&pageSize=0&sort=fundingRef:asc type: string ListSourceAccountResponseV3_links: example: rel: first href: https://api.sandbox.velopayments.com/v3/sourceAccounts?payorId=a2967711-df07-41e5-b5ea-f563088911c6&page=1&pageSize=0&sort=fundingRef:asc properties: rel: example: first type: string href: example: https://api.sandbox.velopayments.com/v3/sourceAccounts?payorId=a2967711-df07-41e5-b5ea-f563088911c6&page=1&pageSize=0&sort=fundingRef:asc type: string GetFundingsResponse_links: example: rel: first href: https://api.sandbox.velopayments.com/v1/paymentaudit/fundings?payorId=2a5d8af2-a1ed-4d7f-b9a7-ebe4b333be5a&page=1&pageSize=10 properties: rel: example: first type: string href: example: https://api.sandbox.velopayments.com/v1/paymentaudit/fundings?payorId=2a5d8af2-a1ed-4d7f-b9a7-ebe4b333be5a&page=1&pageSize=10 type: string GetPayoutsResponseV3_page: example: numberOfElements: 12 totalPages: 123 pageSize: 25 page: 1 totalElements: 123 properties: numberOfElements: example: 12 type: integer totalElements: example: 123 type: integer totalPages: example: 123 type: integer page: example: 1 type: integer pageSize: example: 25 type: integer GetPayoutsResponseV3_links: example: rel: first href: https://example.com properties: rel: example: first type: string href: example: https://example.com type: string GetPaymentsForPayoutResponseV3_summary: example: incompletePayments: 123 confirmedPayments: 123 releasedPayments: 123 submittedDateTime: 2000-01-23T04:56:07.000+00:00 payoutStatus: ACCEPTED withdrawnDateTime: 2000-01-23T04:56:07.000+00:00 totalPayments: 123 instructedDateTime: 2000-01-23T04:56:07.000+00:00 payoutMemo: Payment Memo value failedPayments: 0 properties: payoutStatus: description: The current status of the payout. enum: - ACCEPTED - REJECTED - SUBMITTED - QUOTED - INSTRUCTED - COMPLETED - INCOMPLETE - CONFIRMED - WITHDRAWN type: string submittedDateTime: description: The date/time at which the payout was submitted. format: date-time type: string instructedDateTime: description: The date/time at which the payout was instructed. format: date-time type: string withdrawnDateTime: description: The date/time at which the payout was withdrawn. format: date-time type: string payoutMemo: description: The memo attached to the payout. example: Payment Memo value type: string totalPayments: description: The count of payments within the payout. example: 123 type: integer confirmedPayments: description: The count of payments within the payout which have been confirmed. example: 123 type: integer releasedPayments: description: The count of payments within the payout which have been released. example: 123 type: integer incompletePayments: description: The count of payments within the payout which are incomplete. example: 123 type: integer failedPayments: description: The count of payments within the payout which have failed or been returned. example: 0 type: integer GetPaymentsForPayoutResponseV3_page: example: numberOfElements: 12 totalPages: 10 pageSize: 25 page: 1 totalElements: 12 properties: numberOfElements: example: 12 type: integer totalElements: example: 12 type: integer totalPages: example: 10 type: integer page: example: 1 type: integer pageSize: example: 25 type: integer ListPaymentsResponseV3_page: example: numberOfElements: 12 totalPages: 12 pageSize: 25 page: 1 totalElements: 12 properties: numberOfElements: example: 12 type: integer totalElements: example: 12 type: integer totalPages: example: 12 type: integer page: example: 1 type: integer pageSize: example: 25 type: integer GetPaymentsForPayoutResponseV4_summary: example: withdrawnPayments: 2 submitting: principal: principal principalId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 dbaName: dbaName payorName: payorName confirmedPayments: 6 releasedPayments: 1 withdrawn: principal: principal principalId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 totalPayments: 0 payoutFrom: principal: principal principalId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 dbaName: dbaName payorName: payorName payoutTo: principal: principal principalId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 dbaName: dbaName payorName: payorName quoted: principal: principal principalId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 instructed: principal: principal principalId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 schedule: scheduledFor: 2000-01-23T04:56:07.000+00:00 scheduleStatus: SCHEDULED notificationsEnabled: true scheduledBy: Aphra Behn scheduledByPrincipalId: 8946953b-1e3b-49cf-9da4-b704cbb78f3e scheduledAt: 2000-01-23T04:56:07.000+00:00 incompletePayments: 5 submittedDateTime: 2000-01-23T04:56:07.000+00:00 quotedDateTime: 2000-01-23T04:56:07.000+00:00 withdrawnDateTime: 2000-01-23T04:56:07.000+00:00 returnedPayments: 5 instructedDateTime: 2000-01-23T04:56:07.000+00:00 payoutMemo: payoutMemo properties: payoutStatus: $ref: '#/components/schemas/PayoutStatus' submittedDateTime: description: The date/time at which the payout was submitted. format: date-time type: string instructedDateTime: description: The date/time at which the payout was instructed. format: date-time type: string withdrawnDateTime: format: date-time type: string quotedDateTime: description: The date/time at which the payout was quoted. format: date-time type: string payoutMemo: description: The memo attached to the payout. type: string totalPayments: description: The count of payments within the payout. type: integer confirmedPayments: description: The count of payments within the payout which have been confirmed. type: integer releasedPayments: description: The count of payments within the payout which have been released. type: integer incompletePayments: description: The count of payments within the payout which are incomplete. type: integer returnedPayments: description: The count of payments within the payout which have been returned. type: integer withdrawnPayments: description: The count of payments within the payout which have been withdrawn. type: integer payoutType: $ref: '#/components/schemas/PayoutType' submitting: $ref: '#/components/schemas/PayoutPayor' payoutFrom: $ref: '#/components/schemas/PayoutPayor' payoutTo: $ref: '#/components/schemas/PayoutPayor' quoted: $ref: '#/components/schemas/PayoutPrincipal' instructed: $ref: '#/components/schemas/PayoutPrincipal' withdrawn: $ref: '#/components/schemas/PayoutPrincipal' schedule: $ref: '#/components/schemas/PayoutSchedule' PaymentResponseV4_payout: example: payoutId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 payoutFrom: principal: principal principalId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 dbaName: dbaName payorName: payorName payoutTo: principal: principal principalId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 payorId: 046b6c7f-0b8a-43b9-b35d-6489e6daee91 dbaName: dbaName payorName: payorName properties: payoutId: format: uuid type: string payoutFrom: $ref: '#/components/schemas/PayoutPayor' payoutTo: $ref: '#/components/schemas/PayoutPayor' IndividualV3_name: example: firstName: Bob lastName: Smith otherNames: A title: Mr properties: title: example: Mr maxLength: 10 minLength: 1 type: string firstName: example: Bob maxLength: 40 minLength: 1 type: string otherNames: example: A maxLength: 40 minLength: 1 type: string lastName: example: Smith maxLength: 40 minLength: 1 type: string required: - firstName - lastName CreateIndividualV3_name: example: firstName: Bob lastName: Smith otherNames: H title: Mr properties: title: example: Mr maxLength: 10 minLength: 1 type: string firstName: example: Bob maxLength: 40 minLength: 1 type: string otherNames: example: H maxLength: 40 minLength: 1 type: string lastName: example: Smith maxLength: 40 minLength: 1 type: string required: - firstName - lastName 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 - Funding Manager - Webhooks - Payins - name: Payee Operations tags: - Payees - Payee Invitation - Invites - name: Payouts tags: - Payout Service - 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: summary: Webhook notifications description: The webhook notifications that are sent to the payor's configured webhook endpoint URL tags: - Webhooks 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.