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.

Notice

This document, including all contents herein, and the Velo Payments API are the confidential information and the intellectual property of Velo and are not to be distributed or otherwise made available to any third party. The Velo Payment API, and your use of the Velo Payment API, is governed by and subject to the Velo Services Terms of Use.

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. abcdef) and API secret (e.g. 123456) with a colon between them. E.g. abcdef:123456

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

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

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 YWJjZGVmOjEyMzQ1Ngo=" \
'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":"..."
}

If the authenticate API call is unsuccessful, you will receive a 401 HTTP status indicating that the credentials are incorrect.

API access following authentication

Following successful authentication, the value of the access_token field in the response 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.

Payor Service Public API endpoints

Get Payor

GET /v1/payors/{payorId}

Get a Single Payor by Id (200 - OK, 404 - payor not found).

Authorization

User access token required.

Path parameters

Parameter Type Optional Description

payorId

Object

false

The payor id (UUID).

Query parameters

No parameters.

Request fields

No request body.

Response fields

Path Type Optional Description

payorId

String

false

The payor id (UUID).

payorName

String

false

The name of the payor.

address

Object

false

The address of the payor.

address.line1

String

false

Size must be between 2 and 255 inclusive.

address.line2

String

true

Size must be between 0 and 255 inclusive.

address.line3

String

true

Size must be between 0 and 255 inclusive.

address.line4

String

true

Size must be between 0 and 255 inclusive.

address.city

String

false

Size must be between 2 and 100 inclusive.

address.countyOrProvince

String

true

Size must be between 2 and 100 inclusive.

address.zipOrPostcode

String

true

Size must be between 2 and 30 inclusive.

address.country

String

false

Size must be between 2 and 50 inclusive.

primaryContactName

String

false

Name of primary contact for the payor.

primaryContactPhone

String

false

Primary contact phone number for the payor.

primaryContactEmail

String

false

Primary contact email for the payor.

fundingAccountRoutingNumber

String

true

The funding account routing number to be used for the payor.

fundingAccountAccountNumber

String

true

The funding account number to be used for the payor.

fundingAccountAccountName

String

true

The funding account name to be used for the payor.

kycState

String

true

The kyc state of the payor.

Must be one of [FAILED_KYC, PASSED_KYC, REQUIRES_KYC].

manualLockout

Boolean

true

Whether or not the payor has been manually locked by the backoffice.

payeeGracePeriodProcessingEnabled

Boolean

true

Whether grace period processing is enabled.

payeeGracePeriodDays

Integer

true

The grace period for paying payees in days.

collectiveAlias

String

true

How the payor has chosen to refer to payees.

supportContact

String

true

The payor’s support contact address.

dbaName

String

true

The payor’s 'Doing Business As' name.

allowsLanguageChoice

Boolean

true

Whether or not the payor allows language choice in the UI.

reminderEmailsOptOut

Boolean

true

Whether or not the payor has opted-out of reminder emails being sent.

language

String

false

The payor’s language preference.

Must be one of [EN, FR].

includesReports

Boolean

true

Example request

$ curl 'https://api.sandbox.velopayments.com/v1/payors/88cead94-0cda-44b1-af60-3d0d4ae8d370' -i -X GET \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer 3353e7a1-45b6-40b0-bed5-346d6bc4fc57'

Example response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 727

{
  "payorId" : "88cead94-0cda-44b1-af60-3d0d4ae8d370",
  "payorName" : "Payor1",
  "address" : {
    "line1" : "101 California Street",
    "line2" : null,
    "line3" : null,
    "line4" : null,
    "city" : "San Francisco",
    "countyOrProvince" : "California",
    "zipOrPostcode" : "94111",
    "country" : "US"
  },
  "primaryContactName" : "Foo Name",
  "primaryContactPhone" : "+1234567890",
  "primaryContactEmail" : "foo@example.com",
  "kycState" : "REQUIRES_KYC",
  "manualLockout" : false,
  "payeeGracePeriodProcessingEnabled" : true,
  "payeeGracePeriodDays" : 90,
  "dbaName" : "Payor1 DBA",
  "allowsLanguageChoice" : false,
  "reminderEmailsOptOut" : false,
  "language" : "FR",
  "includesReports" : false
}

Set Payor Funding Bank Details

POST /v1/payors/{payorId}/payorFundingBankDetailsUpdate

Update the Funding bank details of the Payor (202 - accepted, 400 - invalid request body, 404 - payor not found).

Authorization

User access token required.

Path parameters

Parameter Type Optional Description

payorId

Object

false

Query parameters

No parameters.

Request fields

Path Type Optional Description

routingNumber

String

false

Routing number for the payor’s bank.

Size must be between 9 and 9 inclusive.

accountNumber

String

false

Payor’s bank account number.

Size must be between 4 and 17 inclusive.

accountName

String

false

Payor’s bank account name.

Size must be between 1 and 22 inclusive.

Response fields

No response body.

Example request

$ curl 'https://api.sandbox.velopayments.com/v1/payors/8ec2209a-2e57-481f-8ad6-96a04399b3c4/payorFundingBankDetailsUpdate' -i -X POST \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer 17466d1e-93ea-452e-98a9-bc8b25ed06a5' \
    -d '{"routingNumber":"123456789","accountNumber":"12345","accountName":"Bob"}'

Example response

HTTP/1.1 202 Accepted

Create Application

POST /v1/payors/{payorId}/applications

Create an Application for the Payor (201 - created, 400 - invalid request body, 404 - payor not found, 409 - application name conflict).

Authorization

User access token required.

Path parameters

Parameter Type Optional Description

payorId

Object

false

The ID (UUID) of the payor.

Query parameters

No parameters.

Request fields

Path Type Optional Description

name

String

false

The name of the application.

Size must be between 2 and 100 inclusive.

description

String

true

Description of the application.

Size must be between 2 and 1024 inclusive.

Response fields

No response body.

Example request

$ curl 'https://api.sandbox.velopayments.com/v1/payors/6f150cb4-2acf-4f51-94f2-8e7e1a856c93/applications' -i -X POST \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer df22bc6b-a5d5-4c04-8adf-aad72c06c022' \
    -d '{"name":"foo","description":"a foo application"}'

Example response

HTTP/1.1 201 Created
Location: https://api.sandbox.velopayments.com/v1/payors/6f150cb4-2acf-4f51-94f2-8e7e1a856c93/applications/642fcebf-bd58-45f2-a2c6-eaeb05cdb139

Create Key

POST /v1/payors/{payorId}/applications/{applicationId}/keys

Create an ApiKey for the Payor (201 - created, 400 - invalid request body / payor in invalid state, 404 - payor not found / application not found).

Authorization

User access token required.

Path parameters

Parameter Type Optional Description

payorId

Object

false

The id (UUID) of the payor.

applicationId

Object

false

The id (UUID) of the application.

Query parameters

No parameters.

Request fields

Path Type Optional Description

name

String

false

A name for the key.

Size must be between 2 and 100 inclusive.

description

String

true

Description of the key.

Size must be between 2 and 1024 inclusive.

roles

Array[String]

false

A list of roles to assign to the key.

Size must be between 1 and 2147483647 inclusive.

Response fields

Path Type Optional Description

apiKey

String

true

API key (UUID).

apiSecret

String

true

API secret (UUID).

Example request

$ curl 'https://api.sandbox.velopayments.com/v1/payors/6f150cb4-2acf-4f51-94f2-8e7e1a856c93/applications/1d2287ff-1331-4dd4-95c1-b87c308faf7d/keys' -i -X POST \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer f01653c4-671e-40fd-ab94-a8f84726dd2b' \
    -d '{"name":"foo","description":"a foo key","roles":["foo.role"]}'

Example response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 111

{
  "apiKey" : "94db4862-1a4a-4bb8-b3b5-5eba4a4b5f9d",
  "apiSecret" : "71b052c2-3b52-446d-97f8-e555be6ef47e"
}

Payee Service APIs

Get Payees

GET /v1/payees

Get a paginated response listing the payees for a payor (200 - OK, 400 - Request parameters validation errors ).

Authorization

User access token required.

Path parameters

No parameters.

Query parameters

Parameter Type Optional Description

payorId

Object

true

Payor id (only mandatory if the payor is making the request).

ofacStatus

Object

true

The ofacStatus of the payees.

page

Integer

true

Page number. Default is 1.

pageSize

Integer

true

Page size. Default is 25. Max allowable is 100.

sort

String

true

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.

requestParams

Object

false

Request fields

No request body.

Response fields

Path Type Optional Description

links

Array[Object]

true

links[].rel

String

true

links[].href

String

true

page

Object

true

page.numberOfElements

Integer

true

page.totalElements

Integer

true

page.totalPages

Integer

true

page.page

Integer

true

page.pageSize

Integer

true

content

Array[Object]

true

Example request

$ curl 'https://api.sandbox.velopayments.com/v1/payees?pageSize=2&page=8&payorId=474accdc-311a-4ecb-9717-9e89eaae9744' -i -X GET \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer 4fc4132b-9d3b-454b-be3d-a24035a84490'

Example response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 1223

{
  "page" : {
    "numberOfElements" : 2,
    "totalElements" : 45,
    "totalPages" : 23,
    "page" : 9,
    "pageSize" : 2
  },
  "summary" : {
    "totalPayeesCount" : 123,
    "totalInvitedCount" : 3,
    "totalRegisteredCount" : 20,
    "totalOnboardedCount" : 70,
    "totalOfacFailedCount" : 30
  },
  "links" : [ {
    "rel" : "first",
    "href" : "https://api.sandbox.velopayments.com/v1/payees?payorId=474accdc-311a-4ecb-9717-9e89eaae9744&page=1&pageSize=2&sort=displayName:asc"
  }, {
    "rel" : "last",
    "href" : "https://api.sandbox.velopayments.com/v1/payees?payorId=474accdc-311a-4ecb-9717-9e89eaae9744&page=23&pageSize=2&sort=displayName:asc"
  }, {
    "rel" : "self",
    "href" : "https://api.sandbox.velopayments.com/v1/payees?payorId=474accdc-311a-4ecb-9717-9e89eaae9744&page=9&pageSize=2&sort=displayName:asc"
  }, {
    "rel" : "prev",
    "href" : "https://api.sandbox.velopayments.com/v1/payees?payorId=474accdc-311a-4ecb-9717-9e89eaae9744&page=8&pageSize=2&sort=displayName:asc"
  }, {
    "rel" : "next",
    "href" : "https://api.sandbox.velopayments.com/v1/payees?payorId=474accdc-311a-4ecb-9717-9e89eaae9744&page=10&pageSize=2&sort=displayName:asc"
  } ],
  "content" : [ null, null ]
}

Initiate Payee Creation

POST /v2/payees

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, 409 - if there is a duplicate remote id within the batch / if there is a duplicate email within the batch).

Authorization

User access token required.

Path parameters

No parameters.

Query parameters

No parameters.

Request fields

Path Type Optional Description

payorId

String

false

payees

Array[Object]

false

Size must be between 1 and 2000 inclusive.

payees[].type

String

false

Must be one of [Individual, Company].

payees[].remoteId

String

false

Size must be between 1 and 100 inclusive.

payees[].email

String

false

Must be a well-formed email address.

payees[].address

Object

false

payees[].address.line1

String

false

Size must be between 1 and 100 inclusive.

payees[].address.line2

String

true

Size must be between 1 and 100 inclusive.

payees[].address.line3

String

true

Size must be between 1 and 100 inclusive.

payees[].address.line4

String

true

Size must be between 1 and 100 inclusive.

payees[].address.city

String

false

Size must be between 1 and 50 inclusive.

payees[].address.countyOrProvince

String

true

Size must be between 1 and 50 inclusive.

payees[].address.zipOrPostcode

String

false

Size must be between 3 and 15 inclusive.

payees[].address.country

String

false

Size must be between 1 and 60 inclusive.

payees[].paymentChannel

Object

true

payees[].paymentChannel.paymentChannelName

String

true

payees[].paymentChannel.iban

String

true

Must match the regular expression ^[A-Za-z0-9]+$.
Size must be between 15 and 34 inclusive.

payees[].paymentChannel.accountNumber

String

true

Size must be between 6 and 17 inclusive.

payees[].paymentChannel.routingNumber

String

true

Must be a combination of 9 numeric digits, separated optionally by hyphens or spaces.

payees[].paymentChannel.countryCode

String

false

Size must be between 2 and 2 inclusive.

payees[].paymentChannel.currency

String

false

Must be a 3 character currency code e.g. USD, GBP, EUR.

payees[].paymentChannel.accountName

String

false

Size must be between 1 and 100 inclusive.

payees[].individual

Object

true

payees[].individual.name

Object

false

payees[].individual.name.title

String

true

Size must be between 1 and 10 inclusive.

payees[].individual.name.firstName

String

false

Size must be between 1 and 40 inclusive.

payees[].individual.name.otherNames

String

true

Size must be between 1 and 40 inclusive.

payees[].individual.name.lastName

String

false

Size must be between 1 and 40 inclusive.

payees[].individual.nationalIdentification

String

true

payees[].individual.dateOfBirth

String

false

payees[].company

Object

true

payees[].company.name

String

false

Size must be between 1 and 40 inclusive.

payees[].company.taxId

String

true

Must match the regular expression [\d]{9}.

payees[].social

Object

true

payees[].social.twitterId

String

true

Size must be between 1 and 256 inclusive.

payees[].social.facebookId

String

true

Size must be between 1 and 256 inclusive.

payees[].social.linkedInId

String

true

Size must be between 1 and 256 inclusive.

payees[].challenge

Object

true

payees[].challenge.value

String

false

Size must be between 3 and 20 inclusive.

payees[].challenge.description

String

false

Size must be between 1 and 255 inclusive.

payees[].ofacOverride

Boolean

true

payees[].language

String

true

Must be one of [AR, EN, ES, FR, HE, HI, JA, PT, RU, UR, ZH].

Response fields

No response body.

Example request

$ curl 'https://api.sandbox.velopayments.com/v2/payees' -i -X POST \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer 9ce397f0-c21e-4f5e-a2f2-53f60d1ab527' \
    -d '{"payorId":"79d2b6ad-05c8-4145-a1ed-2eddafb83521","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"}]}'

Example response

HTTP/1.1 201 Created
Location: https://api.sandbox.velopayments.com/v2/payees/batch/5d9ec362-2014-493c-aa21-d8384a401c11

Query Batch Status

GET /v2/payees/batch/{batchId}

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 ).

Authorization

User access token required.

Path parameters

Parameter Type Optional Description

batchId

Object

false

Query parameters

No parameters.

Request fields

No request body.

Response fields

Path Type Optional Description

status

String

true

Must be one of [SUBMITTED, ACCEPTED].

failureCount

Integer

true

pendingCount

Integer

true

failures

Array[Object]

true

failures[].failedSubmission

Object

true

failures[].failedSubmission.type

String

false

Must be one of [Individual, Company].

failures[].failedSubmission.remoteId

String

false

Size must be between 1 and 100 inclusive.

failures[].failedSubmission.email

String

false

Must be a well-formed email address.

failures[].failedSubmission.address

Object

false

failures[].failedSubmission.address.line1

String

false

Size must be between 1 and 100 inclusive.

failures[].failedSubmission.address.line2

String

true

Size must be between 1 and 100 inclusive.

failures[].failedSubmission.address.line3

String

true

Size must be between 1 and 100 inclusive.

failures[].failedSubmission.address.line4

String

true

Size must be between 1 and 100 inclusive.

failures[].failedSubmission.address.city

String

false

Size must be between 1 and 50 inclusive.

failures[].failedSubmission.address.countyOrProvince

String

true

Size must be between 1 and 50 inclusive.

failures[].failedSubmission.address.zipOrPostcode

String

false

Size must be between 3 and 15 inclusive.

failures[].failedSubmission.address.country

String

false

Size must be between 1 and 60 inclusive.

failures[].failedSubmission.paymentChannel

Object

true

failures[].failedSubmission.paymentChannel.paymentChannelName

String

true

failures[].failedSubmission.paymentChannel.iban

String

true

Must match the regular expression ^[A-Za-z0-9]+$.
Size must be between 15 and 34 inclusive.

failures[].failedSubmission.paymentChannel.accountNumber

String

true

Size must be between 6 and 17 inclusive.

failures[].failedSubmission.paymentChannel.routingNumber

String

true

Must be a combination of 9 numeric digits, separated optionally by hyphens or spaces.

failures[].failedSubmission.paymentChannel.countryCode

String

false

Size must be between 2 and 2 inclusive.

failures[].failedSubmission.paymentChannel.currency

String

false

Must be a 3 character currency code e.g. USD, GBP, EUR.

failures[].failedSubmission.paymentChannel.accountName

String

false

Size must be between 1 and 100 inclusive.

failures[].failedSubmission.individual

Object

true

failures[].failedSubmission.individual.name

Object

false

failures[].failedSubmission.individual.name.title

String

true

Size must be between 1 and 10 inclusive.

failures[].failedSubmission.individual.name.firstName

String

false

Size must be between 1 and 40 inclusive.

failures[].failedSubmission.individual.name.otherNames

String

true

Size must be between 1 and 40 inclusive.

failures[].failedSubmission.individual.name.lastName

String

false

Size must be between 1 and 40 inclusive.

failures[].failedSubmission.individual.nationalIdentification

String

true

failures[].failedSubmission.individual.dateOfBirth

String

false

failures[].failedSubmission.company

Object

true

failures[].failedSubmission.company.name

String

false

Size must be between 1 and 40 inclusive.

failures[].failedSubmission.company.taxId

String

true

Must match the regular expression [\d]{9}.

failures[].failedSubmission.social

Object

true

failures[].failedSubmission.social.twitterId

String

true

Size must be between 1 and 256 inclusive.

failures[].failedSubmission.social.facebookId

String

true

Size must be between 1 and 256 inclusive.

failures[].failedSubmission.social.linkedInId

String

true

Size must be between 1 and 256 inclusive.

failures[].failedSubmission.challenge

Object

true

failures[].failedSubmission.challenge.value

String

false

Size must be between 3 and 20 inclusive.

failures[].failedSubmission.challenge.description

String

false

Size must be between 1 and 255 inclusive.

failures[].failedSubmission.ofacOverride

Boolean

true

failures[].failedSubmission.language

String

true

Must be one of [AR, EN, ES, FR, HE, HI, JA, PT, RU, UR, ZH].

failures[].failureMessage

String

true

Example request

$ curl 'https://api.sandbox.velopayments.com/v2/payees/batch/8f5b89ce-fcca-4214-ba2c-c7e4583805a0' -i -X GET \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer 524fd29d-4614-4baf-9798-a4c09e02ad95'

Example response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 679

{
  "status" : "ACCEPTED",
  "failureCount" : 1,
  "pendingCount" : 0,
  "failures" : [ {
    "failedSubmission" : {
      "type" : "Company",
      "remoteId" : "remoteId",
      "email" : "bob@example.com",
      "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"
    },
    "failureMessage" : "Address is mandatory"
  } ]
}

Initiate Csv Batch Creation

POST /v2/payees

Add Payees from a CSV source file and return a location header with a link to the batch( 201 - CREATED, 409 CONFLICT - if there is a duplicate remote id within the batch / if there is a duplicate email within the batch).

Authorization

User access token required.

Path parameters

No parameters.

Query parameters

Parameter Type Optional Description

payorId

Object

false

file

Object

false

Csv Structure

Field Name Type Optional Description

type

String

false

Must be one of [Individual, Company].

remoteId

String

false

Size must be between 1 and 100 inclusive.

email

String

false

Must be a well-formed email address.

addressLine1

String

false

Size must be between 1 and 100 inclusive.

addressLine2

String

true

Size must be between 1 and 100 inclusive.

addressLine3

String

true

Size must be between 1 and 100 inclusive.

addressLine4

String

true

Size must be between 1 and 100 inclusive.

addressCity

String

false

Size must be between 1 and 50 inclusive.

addressCountyOrProvince

String

true

Size must be between 1 and 50 inclusive.

addressZipOrPostcode

String

false

Size must be between 3 and 15 inclusive.

addressCountry

String

false

Size must be between 1 and 60 inclusive.

individualNationalIdentification

String

true

Must be 9 digits.

individualDateOfBirth

String

false for individual payee

Must not be in the future.

individualTitle

String

true

Size must be between 1 and 10 inclusive.

individualFirstName

String

false for individual payee

Size must be between 1 and 40 inclusive.

individualOtherNames

String

true

Size must be between 1 and 40 inclusive.

individualLastName

String

false for individual payee

Size must be between 1 and 40 inclusive.

companyName

String

false for company payee

Size must be between 1 and 40 inclusive.

companyEIN

String

true

Must match the regular expression [\d]{9}.

paymentChannelAccountNumber

String

true

Size must be between 6 and 17 inclusive.

paymentChannelRoutingNumber

String

true

Must be a combination of 9 numeric digits, separated optionally by hyphens or spaces.

paymentChannelAccountName

String

false if other payment channel information is provided

Size must be between 1 and 100 inclusive.

paymentChannelIban

String

true

Must match the regular expression ^[A-Za-z0-9]+$.Size must be between 15 and 34 inclusive.

paymentChannelCountryCode

String

false if other payment channel information is provided

Size must be 2 characters.

paymentChannelCurrency

String

false if other payment channel information is provided

Must be a 3 character currency code e.g. USD, GBP, EUR.

challengeDescription

String

false if custom challenge is being provided

Size must be between 1 and 255 inclusive.

challengeValue

String

false if custom challenge is being provided

Size must be between 3 and 20 inclusive.

payeeLanguage

String

true

Must be one of [AR, EN, ES, FR, HE, HI, JA, PT, RU, UR, ZH].

Response fields

No response body.

Example request

$ curl 'https://api.sandbox.velopayments.com/v2/payees?payorId=ba175c73-0b7c-4823-8e57-822b355df17c' -i -X POST \
    -H 'Content-Type: multipart/form-data' \
    -H 'Authorization: Bearer fd2c949c-a448-484b-a804-e779604b91cc' \
    -F 'file=@test.csv;type=text/plain' \
    -F 'payorId=ba175c73-0b7c-4823-8e57-822b355df17c'

Example response

HTTP/1.1 201 Created
Location: https://api.sandbox.velopayments.com/v2/payees/batch/8d0bd130-b006-431a-8ee5-8737a9d7234e
Content-Type: application/json;charset=UTF-8
Content-Length: 83

{
  "batchId" : "8d0bd130-b006-431a-8ee5-8737a9d7234e",
  "rejectedCsvRows" : [ ]
}

Funding Manager APIs

Get Source Account

GET /v1/sourceAccounts/{sourceAccountId}

Get the source account (200 - success, 400 - invalid path parameter, 404 - account not found).

Authorization

User access token required.

Path parameters

Parameter Type Optional Description

sourceAccountId

Object

false

Query parameters

No parameters.

Request fields

No request body.

Response fields

No response body.

Example request

$ curl 'https://api.sandbox.velopayments.com/v1/sourceAccounts/8d6195ee-4c63-4789-a153-b0372e9f2b94' -i -X GET \
    -H 'Authorization: Bearer 36358c26-2db2-4ed8-9811-3d906b4084c2'

Example response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 288

{
  "id" : "40a08604-09a7-4e93-99c2-94ca764d0b93",
  "balance" : 12034.89,
  "currency" : "USD",
  "fundingRef" : "a1b2c3d4",
  "physicalAccountName" : "VELO_FBO_MYBANKA_USD",
  "railsId" : "SIM",
  "payorId" : "74a21000-4fe8-4f94-a33b-79d0c02abce8",
  "name" : "USD",
  "pooled" : true
}

Get Source Accounts

GET /v1/sourceAccounts

Get the source accounts. (200 - success, 400 - invalid request parameters).

Authorization

User access token required.

Path parameters

No parameters.

Query parameters

Parameter Type Optional Description

physicalAccountName

String

true

payorId

Object

true

page

Integer

true

pageSize

Integer

true

sort

String

true

requestParams

Object

false

Request fields

No request body.

Response fields

No response body.

Example request

$ curl 'https://api.sandbox.velopayments.com/v1/sourceAccounts?payorId=74a21000-4fe8-4f94-a33b-79d0c02abce8' -i -X GET \
    -H 'Authorization: Bearer 442339d5-c833-4f5e-a0fc-ce14a9d29945'

Example response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 1325

{
  "page" : {
    "numberOfElements" : 2,
    "totalElements" : 2,
    "totalPages" : 1,
    "page" : 1,
    "pageSize" : 0
  },
  "links" : [ {
    "rel" : "first",
    "href" : "https://api.sandbox.velopayments.com/v1/sourceAccounts?payorId=74a21000-4fe8-4f94-a33b-79d0c02abce8&page=1&pageSize=0&sort=fundingRef:asc"
  }, {
    "rel" : "last",
    "href" : "https://api.sandbox.velopayments.com/v1/sourceAccounts?payorId=74a21000-4fe8-4f94-a33b-79d0c02abce8&page=1&pageSize=0&sort=fundingRef:asc"
  }, {
    "rel" : "self",
    "href" : "https://api.sandbox.velopayments.com/v1/sourceAccounts?payorId=74a21000-4fe8-4f94-a33b-79d0c02abce8&page=1&pageSize=0&sort=fundingRef:asc"
  } ],
  "content" : [ {
    "id" : "8b98de80-5871-4073-aaa9-d60cc552fe56",
    "balance" : 12034.89,
    "currency" : "USD",
    "fundingRef" : "a1b2c3d4",
    "physicalAccountName" : "VELO_FBO_MYBANKA_USD",
    "railsId" : "SIM",
    "payorId" : "74a21000-4fe8-4f94-a33b-79d0c02abce8",
    "name" : "USD",
    "pooled" : true
  }, {
    "id" : "224c2edc-8278-4ce1-a35d-23cf0e7bd29c",
    "balance" : 12034.89,
    "currency" : "USD",
    "fundingRef" : "a1b2c3d4",
    "physicalAccountName" : "VELO_FBO_MYBANKA_USD",
    "railsId" : "SIM",
    "payorId" : "74a21000-4fe8-4f94-a33b-79d0c02abce8",
    "name" : "USD",
    "pooled" : true
  } ]
}

Request Ach Funding

POST /v1/sourceAccounts/{sourceAccountId}/achFundingRequest

Instruct an ACH 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).

Authorization

User access token required.

Path parameters

Parameter Type Optional Description

sourceAccountId

Object

false

Query parameters

No parameters.

Request fields

Path Type Optional Description

amount

Decimal

false

Must be at least 0.01.
Must be at most 99999999.99.

Response fields

No response body.

Example request

$ curl 'https://api.sandbox.velopayments.com/v1/sourceAccounts/524f454d-f41a-4e03-9940-acc8a86eb98f/achFundingRequest' -i -X POST \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer 37ed07ca-bc72-48af-9c37-d278de77ca4d' \
    -d '{"amount":9999.90}'

Example response

HTTP/1.1 202 Accepted

Payment Audit Service APIs

Get Payouts For Payor (deprecated)

GET /v1/paymentaudit/payouts

Deprecated. Warning: This is now deprecated and will be removed in the future - it is recommended to move to the /v2/paymentaudit/payouts API

Get a list of Payouts for a payor
Supported fields for sorting are: sourceTotalAmount, dateTime, status
.

Authorization

User access token required.

Path parameters

No parameters.

Query parameters

Parameter Type Optional Description

payorId

Object

false

The id of the payor.

page

Integer

true

Page number. Default is 1.

pageSize

Integer

true

Page size. Default is 25. Max allowable is 100.

sort

String

true

List of sort fields (e.g. ?sort=dateTime:asc,status:asc)
Default is no sort
The supported sort fields are: sourceTotalAmount, dateTime, status.

requestParams

Object

false

Request fields

No request body.

Response fields

Path Type Optional Description

links

Array[Object]

true

links[].rel

String

true

links[].href

String

true

page

Object

true

page.numberOfElements

Integer

true

page.totalElements

Integer

true

page.totalPages

Integer

true

page.page

Integer

true

page.pageSize

Integer

true

content

Array[Object]

true

Example request

$ curl 'https://api.sandbox.velopayments.com/v1/paymentaudit/payouts?payorId=6b626534-9ba8-448a-81d5-1bd9add2d41c' -i -X GET \
    -H 'Authorization: Bearer 5c52725f-c222-4cc4-9c50-4db17d00045e'

Example response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 924

{
  "links" : [ {
    "rel" : "first",
    "href" : "https://api.sandbox.velopayments.com/v1/paymentaudit/payouts?payorId=6b626534-9ba8-448a-81d5-1bd9add2d41c&page=1&pageSize=25"
  }, {
    "rel" : "last",
    "href" : "https://api.sandbox.velopayments.com/v1/paymentaudit/payouts?payorId=6b626534-9ba8-448a-81d5-1bd9add2d41c&page=1&pageSize=25"
  }, {
    "rel" : "self",
    "href" : "https://api.sandbox.velopayments.com/v1/paymentaudit/payouts?payorId=6b626534-9ba8-448a-81d5-1bd9add2d41c&page=1&pageSize=25"
  } ],
  "page" : {
    "numberOfElements" : 1,
    "totalElements" : 1,
    "totalPages" : 1,
    "page" : 1,
    "pageSize" : 25
  },
  "content" : [ {
    "payoutId" : "b693be4f-bb8f-48b2-809f-c13b0bc028a8",
    "payorId" : "6b626534-9ba8-448a-81d5-1bd9add2d41c",
    "sourceTotalAmount" : 999.12,
    "sourceCurrency" : "USD",
    "status" : "INSTRUCTED",
    "dateTime" : "2017-07-23T01:01:31.111Z"
  } ]
}

Get Payouts For Payor

GET /v2/paymentaudit/payouts

Get a list of Payouts for a payor including the source account summary

Supported fields for sorting are: dateTime, status
(200 - OK, 400 - invalid request parameter).

Authorization

User access token required.

Path parameters

No parameters.

Query parameters

Parameter Type Optional Description

payorId

Object

false

The id of the payor.

page

Integer

true

Page number. Default is 1.

pageSize

Integer

true

Page size. Default is 25. Max allowable is 100.

sort

String

true

List of sort fields (e.g. ?sort=dateTime:asc,status:asc)
Default is no sort
The supported sort fields are: dateTime, status.

requestParams

Object

false

Request fields

No request body.

Response fields

Path Type Optional Description

links

Array[Object]

true

links[].rel

String

true

links[].href

String

true

page

Object

true

page.numberOfElements

Integer

true

page.totalElements

Integer

true

page.totalPages

Integer

true

page.page

Integer

true

page.pageSize

Integer

true

content

Array[Object]

true

Example request

$ curl 'https://api.sandbox.velopayments.com/v2/paymentaudit/payouts?payorId=6b626534-9ba8-448a-81d5-1bd9add2d41c' -i -X GET \
    -H 'Authorization: Bearer e0ed5153-fd37-4d28-826a-a35e52d2b4c2'

Example response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 1097

{
  "links" : [ {
    "rel" : "first",
    "href" : "https://api.sandbox.velopayments.com/v2/paymentaudit/payouts?payorId=6b626534-9ba8-448a-81d5-1bd9add2d41c&page=1&pageSize=25"
  }, {
    "rel" : "last",
    "href" : "https://api.sandbox.velopayments.com/v2/paymentaudit/payouts?payorId=6b626534-9ba8-448a-81d5-1bd9add2d41c&page=1&pageSize=25"
  }, {
    "rel" : "self",
    "href" : "https://api.sandbox.velopayments.com/v2/paymentaudit/payouts?payorId=6b626534-9ba8-448a-81d5-1bd9add2d41c&page=1&pageSize=25"
  } ],
  "page" : {
    "numberOfElements" : 1,
    "totalElements" : 1,
    "totalPages" : 1,
    "page" : 1,
    "pageSize" : 25
  },
  "summary" : {
    "thisMonthPayoutsCount" : 52,
    "thisMonthFailedPaymentsCount" : 3
  },
  "content" : [ {
    "payoutId" : "b693be4f-bb8f-48b2-809f-c13b0bc028a8",
    "payorId" : "6b626534-9ba8-448a-81d5-1bd9add2d41c",
    "status" : "INSTRUCTED",
    "dateTime" : "2017-07-23T01:01:31.111Z",
    "sourceAccountSummary" : [ {
      "sourceAccountId" : "7f999153-0a5a-4fa8-b6fa-fba41d0b1a1b",
      "sourceTotalAmount" : 999.12
    } ]
  } ]
}

Get Payments For Payout

GET /v2/paymentaudit/payouts/{payoutId}

List (paginated) the payments within a payout

Supported sort fields: sourceAmount, sourceCurrency, destinationAmount, destinationCurrency, routingNumber, accountNumber, remoteId, dateTime, status
Default sort: remoteId
(200 - OK, 400 - invalid request parameter, 404 - payout not found).

Authorization

User access token required.

Path parameters

Parameter Type Optional Description

payoutId

Object

false

The id (UUID) of the payout.

Query parameters

Parameter Type Optional Description

page

Integer

true

Page number. Default is 1.

pageSize

Integer

true

Page size. Default is 25. Max allowable is 100.

sort

String

true

List of sort fields (e.g. ?sort=dateTime:asc,status:asc)
Default is sort by remoteId
The supported sort fields are: sourceAmount, sourceCurrency, destinationAmount, destinationCurrency, routingNumber, accountNumber, remoteId, dateTime and status.

sensitive

Boolean

true

requestParams

Object

false

Request fields

No request body.

Response fields

Path Type Optional Description

links

Array[Object]

true

links[].rel

String

true

links[].href

String

true

page

Object

true

page.numberOfElements

Integer

true

page.totalElements

Integer

true

page.totalPages

Integer

true

page.page

Integer

true

page.pageSize

Integer

true

content

Array[Object]

true

content[].paymentId

String

false

content[].payeeId

String

false

content[].payorId

String

false

content[].sourceAccountId

String

false

content[].remoteId

String

true

content[].sourceCurrency

String

false

Must be a 3 character currency code e.g. USD, GBP, EUR.

content[].sourceAmount

Decimal

true

content[].destinationCurrency

String

false

Must be a 3 character currency code e.g. USD, GBP, EUR.

content[].destinationAmount

Decimal

false

content[].status

String

false

Must be one of [FUNDS_REQUESTED, FUNDS_GRANTED, BANK_PAYMENT_REQUESTED, CONFIRMED, HELD, FAILED].

content[].events

Array[Object]

false

Size must be between 1 and 2147483647 inclusive.

content[].events[].eventId

String

false

content[].events[].eventDateTime

String

false

content[].events[].eventType

String

false

Must be one of [PAYOUT_INSTRUCTED, BANK_PAYMENT_REQUESTED, PAYMENT_CONFIRMED, PAYMENT_FUNDS_REQUESTED, PAYMENT_FUNDS_GRANTED, PAYMENT_FAILED, PAYMENT_HELD, ACH_SUBMITTED_TO_ODFI, PAYMENT_ACCEPTED_BY_RAILS, ACH_RETURN_RECEIVED, RETURN_PAYMENT_FUNDING_REQUESTED].

content[].events[].sourceCurrency

String

true

Must be a 3 character currency code e.g. USD, GBP, EUR.

content[].events[].sourceAmount

Decimal

true

content[].events[].destinationCurrency

String

true

Must be a 3 character currency code e.g. USD, GBP, EUR.

content[].events[].destinationAmount

Decimal

true

content[].events[].accountNumber

String

true

content[].events[].iban

String

true

content[].events[].routingNumber

String

true

content[].events[].principal

String

true

content[].dateTime

String

true

content[].routingNumber

String

true

content[].accountNumber

String

true

content[].iban

String

true

content[].memo

String

true

content[].fxRate

Decimal

true

content[].filenameReference

String

true

content[].payorPaymentId

String

true

content[].paymentChannelId

String

true

content[].paymentChannelName

String

true

Example request

$ curl 'https://api.sandbox.velopayments.com/v2/paymentaudit/payouts/c5094189-ab5d-4617-9f02-40e76643699e?sort=status' -i -X GET \
    -H 'Authorization: Bearer 613f5898-bdf9-46f8-aa1c-87ed6c1b644a'

Example response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 10693

{
  "links" : [ {
    "rel" : "first",
    "href" : "https://api.sandbox.velopayments.com/v2/paymentaudit/payouts/c5094189-ab5d-4617-9f02-40e76643699e?page=1&pageSize=25&sort=status"
  }, {
    "rel" : "last",
    "href" : "https://api.sandbox.velopayments.com/v2/paymentaudit/payouts/c5094189-ab5d-4617-9f02-40e76643699e?page=5&pageSize=25&sort=status"
  }, {
    "rel" : "self",
    "href" : "https://api.sandbox.velopayments.com/v2/paymentaudit/payouts/c5094189-ab5d-4617-9f02-40e76643699e?page=1&pageSize=25&sort=status"
  }, {
    "rel" : "next",
    "href" : "https://api.sandbox.velopayments.com/v2/paymentaudit/payouts/c5094189-ab5d-4617-9f02-40e76643699e?page=2&pageSize=25&sort=status"
  } ],
  "page" : {
    "numberOfElements" : 25,
    "totalElements" : 122,
    "totalPages" : 5,
    "page" : 1,
    "pageSize" : 25
  },
  "summary" : {
    "numberOfConfirmedPayments" : 222,
    "numberOfSentToPaymentChannelPayments" : 0,
    "numberOfFailedPayments" : 0,
    "numberOfHeldPayments" : 0
  },
  "content" : [ {
    "paymentId" : "29db960e-755a-4ddd-866d-ea31661e32a9",
    "payeeId" : "1e5c0960-26ab-48fc-96c2-96f9ab639c1a",
    "payorId" : "0d16336c-5a9f-435a-bbd3-16f29c219181",
    "sourceAmount" : 44.98,
    "destinationAmount" : 13.3,
    "status" : "BANK_PAYMENT_REQUESTED",
    "dateTime" : "2017-09-13T15:50:01Z",
    "routingNumber" : "123456789",
    "accountNumber" : "987654321"
  }, {
    "paymentId" : "7acbb43b-a128-46d5-86dd-bc06343f4426",
    "payeeId" : "a0c00e6c-82fd-4678-a120-eb56b8f1570d",
    "payorId" : "c59d8a07-6362-4728-bba6-8d5d5aa510a2",
    "sourceAmount" : 46.95,
    "destinationAmount" : 40.4,
    "status" : "BANK_PAYMENT_REQUESTED",
    "dateTime" : "2017-09-13T12:19:33Z",
    "routingNumber" : "123456789",
    "accountNumber" : "987654321"
  }, {
    "paymentId" : "3d5e35c8-2235-4274-8d7e-0dddfc5f330a",
    "payeeId" : "9dd8d7f9-d2cd-4c2c-bc84-d5f12209fcc3",
    "payorId" : "d01feade-c6ea-4f7f-a668-11f63d731a1b",
    "sourceAmount" : 9.17,
    "destinationAmount" : 79.88,
    "status" : "BANK_PAYMENT_REQUESTED",
    "dateTime" : "2017-09-13T13:52:13Z",
    "routingNumber" : "123456789",
    "accountNumber" : "987654321"
  }, {
    "paymentId" : "7ed13301-ca68-4999-ae68-55343446f4bb",
    "payeeId" : "97d237e0-44f4-446d-952a-30fca82d8fd0",
    "payorId" : "63ad7822-1cc0-485f-b0f7-7cd7fdceb261",
    "sourceAmount" : 76.41,
    "destinationAmount" : 68.75,
    "status" : "BANK_PAYMENT_REQUESTED",
    "dateTime" : "2017-09-13T12:10:10Z",
    "routingNumber" : "123456789",
    "accountNumber" : "987654321"
  }, {
    "paymentId" : "119568b7-ad5f-4aff-8459-3f82cc238f3d",
    "payeeId" : "ea2b16db-9d78-4014-8413-7c7d9b2561f6",
    "payorId" : "929efdab-4132-4dc4-bdb4-ff36d92f0e67",
    "sourceAmount" : 59.64,
    "destinationAmount" : 77.02,
    "status" : "BANK_PAYMENT_REQUESTED",
    "dateTime" : "2017-09-13T13:49:47Z",
    "routingNumber" : "123456789",
    "accountNumber" : "987654321"
  }, {
    "paymentId" : "592221fe-3c25-434a-bc8a-ff5afeebe78c",
    "payeeId" : "5f8c60c7-84c7-4034-bb1c-c14d477e8c27",
    "payorId" : "83c60796-5fdb-4ebe-a190-433584e633ba",
    "sourceAmount" : 51.23,
    "destinationAmount" : 55.08,
    "status" : "BANK_PAYMENT_REQUESTED",
    "dateTime" : "2017-09-13T11:56:07Z",
    "routingNumber" : "123456789",
    "accountNumber" : "987654321"
  }, {
    "paymentId" : "f98bdc37-a5f6-4729-b81f-ba718ef4a180",
    "payeeId" : "a9adf13b-06cb-462b-8233-9153b899d893",
    "payorId" : "a17233c4-68b0-4291-82a3-7fe88ea21e77",
    "sourceAmount" : 28.39,
    "destinationAmount" : 40.21,
    "status" : "BANK_PAYMENT_REQUESTED",
    "dateTime" : "2017-09-13T15:52:12Z",
    "routingNumber" : "123456789",
    "accountNumber" : "987654321"
  }, {
    "paymentId" : "14d9efda-df08-4c0c-9838-d8352f15098f",
    "payeeId" : "db53480b-6c05-486d-8ccd-f3683b61bfca",
    "payorId" : "9993132b-ebab-48ce-9847-f7debe7b275b",
    "sourceAmount" : 48.44,
    "destinationAmount" : 44.72,
    "status" : "BANK_PAYMENT_REQUESTED",
    "dateTime" : "2017-09-13T12:04:13Z",
    "routingNumber" : "123456789",
    "accountNumber" : "987654321"
  }, {
    "paymentId" : "805534a6-a39e-491c-a721-16bfc46fab7c",
    "payeeId" : "47679844-03e7-4bb0-8978-28ddf081bd75",
    "payorId" : "0f2f97a6-543e-40dc-a382-00dc1f9f9310",
    "sourceAmount" : 46.32,
    "destinationAmount" : 11.88,
    "status" : "BANK_PAYMENT_REQUESTED",
    "dateTime" : "2017-09-13T13:43:32Z",
    "routingNumber" : "123456789",
    "accountNumber" : "987654321"
  }, {
    "paymentId" : "6a797f6b-7299-429f-8ac8-5c86c3475c78",
    "payeeId" : "3a7581e1-e81c-42a8-a3f7-faa588b7d984",
    "payorId" : "91eb465e-e505-482e-8302-bc8e35d8546a",
    "sourceAmount" : 45.76,
    "destinationAmount" : 78.96,
    "status" : "BANK_PAYMENT_REQUESTED",
    "dateTime" : "2017-09-13T11:39:51Z",
    "routingNumber" : "123456789",
    "accountNumber" : "987654321"
  }, {
    "paymentId" : "e671e1ae-e273-451b-ac7b-8b56314f66f3",
    "payeeId" : "07768a16-1018-4062-aec6-68c65cfe8552",
    "payorId" : "741db0dc-9c5f-45dc-b58d-a001fef87dfd",
    "sourceAmount" : 80.24,
    "destinationAmount" : 38.83,
    "status" : "BANK_PAYMENT_REQUESTED",
    "dateTime" : "2017-09-13T14:30:34Z",
    "routingNumber" : "123456789",
    "accountNumber" : "987654321"
  }, {
    "paymentId" : "aacbc247-a470-4e1a-9143-5c4db9bf954d",
    "payeeId" : "7dcd9e17-4d6d-4c1d-be36-4633f8c882d3",
    "payorId" : "055456c2-00d3-40e5-9a50-65cfcbde33e8",
    "sourceAmount" : 97.89,
    "destinationAmount" : 69.46,
    "status" : "BANK_PAYMENT_REQUESTED",
    "dateTime" : "2017-09-13T13:10:56Z",
    "routingNumber" : "123456789",
    "accountNumber" : "987654321"
  }, {
    "paymentId" : "3c14ff34-25ce-496e-b688-d1c77bdc44d0",
    "payeeId" : "9db98156-e79a-479b-9ff6-f52743780947",
    "payorId" : "5775c5ca-2886-423c-b437-3cb07c3e5ad8",
    "sourceAmount" : 54.25,
    "destinationAmount" : 36.79,
    "status" : "BANK_PAYMENT_REQUESTED",
    "dateTime" : "2017-09-13T12:46:48Z",
    "routingNumber" : "123456789",
    "accountNumber" : "987654321"
  }, {
    "paymentId" : "f23874d8-323a-4581-9696-37bcb1dbe291",
    "payeeId" : "ce72d3b9-da7c-496a-b60f-621fa92af3ae",
    "payorId" : "74e7399d-a3f0-42e8-ad1f-92483eba92c7",
    "sourceAmount" : 44.59,
    "destinationAmount" : 34.05,
    "status" : "BANK_PAYMENT_REQUESTED",
    "dateTime" : "2017-09-13T15:26:41Z",
    "routingNumber" : "123456789",
    "accountNumber" : "987654321"
  }, {
    "paymentId" : "80b188f0-242c-44d1-9dbc-2b0634c41c30",
    "payeeId" : "a3aa41b8-89a9-400d-bbea-7e20e090adc6",
    "payorId" : "457586ba-7e91-4825-bf38-b80278f206d5",
    "sourceAmount" : 38.71,
    "destinationAmount" : 28.67,
    "status" : "BANK_PAYMENT_REQUESTED",
    "dateTime" : "2017-09-13T14:23:42Z",
    "routingNumber" : "123456789",
    "accountNumber" : "987654321"
  }, {
    "paymentId" : "640c2d4a-88fb-43a2-8998-fcdb4f9566ce",
    "payeeId" : "750674c1-32ea-48b6-bb61-927d89fdb660",
    "payorId" : "b2c6d9fe-3c38-4dcc-a40b-8fa08006144b",
    "sourceAmount" : 41.91,
    "destinationAmount" : 56.32,
    "status" : "BANK_PAYMENT_REQUESTED",
    "dateTime" : "2017-09-13T13:51:12Z",
    "routingNumber" : "123456789",
    "accountNumber" : "987654321"
  }, {
    "paymentId" : "74692648-041d-4ba2-9999-db802cab883c",
    "payeeId" : "cfaffd98-f575-4a3c-83e8-d40c1ab5fec0",
    "payorId" : "e112d17b-9873-42f4-a38d-cdd5f84eea81",
    "sourceAmount" : 73.67,
    "destinationAmount" : 80.27,
    "status" : "BANK_PAYMENT_REQUESTED",
    "dateTime" : "2017-09-13T13:52:47Z",
    "routingNumber" : "123456789",
    "accountNumber" : "987654321"
  }, {
    "paymentId" : "ed70fc00-06b7-4af4-9b95-b117cd8b53b6",
    "payeeId" : "db402be0-07a6-48c9-af00-2c8d33257df0",
    "payorId" : "74590ce9-d43a-4ecb-812a-41438d85d52e",
    "sourceAmount" : 85.23,
    "destinationAmount" : 47.53,
    "status" : "BANK_PAYMENT_REQUESTED",
    "dateTime" : "2017-09-13T13:00:26Z",
    "routingNumber" : "123456789",
    "accountNumber" : "987654321"
  }, {
    "paymentId" : "4897caf1-88f3-485c-8610-a159e1479934",
    "payeeId" : "6f1b2a3c-aff0-4f50-b1f7-816662f3a3cc",
    "payorId" : "be47f50a-f210-4824-b44d-64ae9f2fd421",
    "sourceAmount" : 87.29,
    "destinationAmount" : 85.74,
    "status" : "BANK_PAYMENT_REQUESTED",
    "dateTime" : "2017-09-13T12:08:08Z",
    "routingNumber" : "123456789",
    "accountNumber" : "987654321"
  }, {
    "paymentId" : "9a387007-0db2-4fdf-9fed-479449efe41d",
    "payeeId" : "2d46e7da-eabb-448b-b12c-cefd70d533a2",
    "payorId" : "1f4749bf-c827-4525-a681-b09f22f1d9dd",
    "sourceAmount" : 84.12,
    "destinationAmount" : 11.55,
    "status" : "BANK_PAYMENT_REQUESTED",
    "dateTime" : "2017-09-13T13:47:26Z",
    "routingNumber" : "123456789",
    "accountNumber" : "987654321"
  }, {
    "paymentId" : "e6e48eab-7ff2-4535-96bf-aa5a094572c8",
    "payeeId" : "30570d11-2406-485e-9289-cb1bb73e3706",
    "payorId" : "1687e0e9-87a3-4a00-80ce-98a81fbe4e69",
    "sourceAmount" : 0.37,
    "destinationAmount" : 8.38,
    "status" : "BANK_PAYMENT_REQUESTED",
    "dateTime" : "2017-09-13T13:39:57Z",
    "routingNumber" : "123456789",
    "accountNumber" : "987654321"
  }, {
    "paymentId" : "68ae672d-803f-4c92-88d8-8fa893795c18",
    "payeeId" : "940e3b96-790c-4d80-b37a-f86414f03142",
    "payorId" : "b8d4f365-3a33-432f-8607-a06bce3c4235",
    "sourceAmount" : 58.34,
    "destinationAmount" : 70.56,
    "status" : "CONFIRMED",
    "dateTime" : "2017-09-13T11:22:27Z",
    "routingNumber" : "123456789",
    "accountNumber" : "987654321"
  }, {
    "paymentId" : "966af02e-0c79-4c05-adfc-06b32da62e16",
    "payeeId" : "26185af1-ec0a-40e1-a716-685cd4ddfa1c",
    "payorId" : "3c3be24e-9314-428f-90ed-51cc70409449",
    "sourceAmount" : 37.49,
    "destinationAmount" : 90.06,
    "status" : "CONFIRMED",
    "dateTime" : "2017-09-13T15:10:34Z",
    "routingNumber" : "123456789",
    "accountNumber" : "987654321"
  }, {
    "paymentId" : "9f46011e-4097-41a2-9ce4-ed8f844afb42",
    "payeeId" : "51874ff0-1cf3-4bd8-9aa8-e46ea5afec02",
    "payorId" : "e4236523-a2cc-415a-81fd-1c6aed5c296d",
    "sourceAmount" : 52.44,
    "destinationAmount" : 27.0,
    "status" : "CONFIRMED",
    "dateTime" : "2017-09-13T11:13:45Z",
    "routingNumber" : "123456789",
    "accountNumber" : "987654321"
  }, {
    "paymentId" : "71f17701-d121-4c52-863b-c1258a9a0f13",
    "payeeId" : "b2540b12-2d56-4665-8923-e3b0b546170a",
    "payorId" : "02686d4f-f35f-49e5-8cb6-688954b0292a",
    "sourceAmount" : 60.24,
    "destinationAmount" : 86.68,
    "status" : "CONFIRMED",
    "dateTime" : "2017-09-13T14:50:47Z",
    "routingNumber" : "123456789",
    "accountNumber" : "987654321"
  } ]
}

Get Payment

GET /v1/paymentaudit/payments/{paymentId}

Get the payment with the given id. This contains the payment history.

(200 - OK, 404 - payment not found).

Authorization

User access token required.

Path parameters

Parameter Type Optional Description

paymentId

Object

false

The payment id (UUID).

Query parameters

Parameter Type Optional Description

sensitive

Boolean

true

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.

Request fields

No request body.

Response fields

Path Type Optional Description

paymentId

String

false

payeeId

String

false

payorId

String

false

sourceAccountId

String

false

remoteId

String

true

sourceCurrency

String

false

Must be a 3 character currency code e.g. USD, GBP, EUR.

sourceAmount

Decimal

true

destinationCurrency

String

false

Must be a 3 character currency code e.g. USD, GBP, EUR.

destinationAmount

Decimal

false

status

String

false

Must be one of [FUNDS_REQUESTED, FUNDS_GRANTED, BANK_PAYMENT_REQUESTED, CONFIRMED, HELD, FAILED].

events

Array[Object]

false

Size must be between 1 and 2147483647 inclusive.

events[].eventId

String

false

events[].eventDateTime

String

false

events[].eventType

String

false

Must be one of [PAYOUT_INSTRUCTED, BANK_PAYMENT_REQUESTED, PAYMENT_CONFIRMED, PAYMENT_FUNDS_REQUESTED, PAYMENT_FUNDS_GRANTED, PAYMENT_FAILED, PAYMENT_HELD, ACH_SUBMITTED_TO_ODFI, PAYMENT_ACCEPTED_BY_RAILS, ACH_RETURN_RECEIVED, RETURN_PAYMENT_FUNDING_REQUESTED].

events[].sourceCurrency

String

true

Must be a 3 character currency code e.g. USD, GBP, EUR.

events[].sourceAmount

Decimal

true

events[].destinationCurrency

String

true

Must be a 3 character currency code e.g. USD, GBP, EUR.

events[].destinationAmount

Decimal

true

events[].accountNumber

String

true

events[].iban

String

true

events[].routingNumber

String

true

events[].principal

String

true

dateTime

String

true

routingNumber

String

true

accountNumber

String

true

iban

String

true

memo

String

true

fxRate

Decimal

true

filenameReference

String

true

payorPaymentId

String

true

paymentChannelId

String

true

paymentChannelName

String

true

Example request

$ curl 'https://api.sandbox.velopayments.com/v1/paymentaudit/payments/74f52c00-abee-4b43-9742-52f5dbc09408' -i -X GET \
    -H 'Authorization: Bearer 07548b45-c70b-4106-b4d9-5ba708338190'

Example response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 1183

{
  "paymentId" : "74f52c00-abee-4b43-9742-52f5dbc09408",
  "payeeId" : "e7358e2f-8ca7-4ee6-a8b1-194c767e59d7",
  "payorId" : "6b626534-9ba8-448a-81d5-1bd9add2d41c",
  "remoteId" : "abcdefghijklm",
  "destinationCurrency" : "USD",
  "destinationAmount" : 999.12,
  "status" : "BANK_PAYMENT_REQUESTED",
  "events" : [ {
    "eventId" : "e47eebef-1a8d-4020-9ae1-3f53a0e423bd",
    "eventDateTime" : "2017-08-15T09:03:11.111Z",
    "eventType" : "PAYMENT_FUNDS_REQUESTED",
    "destinationCurrency" : "USD",
    "destinationAmount" : 999.12,
    "principal" : "f4d2f7c6-82a2-45a8-a46b-d7f78ec5db66"
  }, {
    "eventId" : "9e10edec-b2ce-43e9-9910-0d2c45beab6a",
    "eventDateTime" : "2017-08-15T09:03:12.111Z",
    "eventType" : "PAYMENT_FUNDS_GRANTED"
  }, {
    "eventId" : "dd852c05-49fc-473a-a30b-7c399366488e",
    "eventDateTime" : "2017-07-23T04:01:33.111Z",
    "eventType" : "BANK_PAYMENT_REQUESTED",
    "destinationAmount" : 999.12,
    "accountNumber" : "XXXXXX4321",
    "routingNumber" : "XXXXX6789"
  } ],
  "dateTime" : "2017-07-23T01:01:31.111Z",
  "routingNumber" : "XXXXX6789",
  "accountNumber" : "XXXXXX4321",
  "memo" : "memo",
  "payorPaymentId" : "1234567abc"
}

Get Fundings For Payor

GET /v1/paymentaudit/fundings

Get a list of Fundings for a payor

(200 - OK, 400 - invalid request parameter).

Authorization

User access token required.

Path parameters

No parameters.

Query parameters

Parameter Type Optional Description

payorId

Object

false

The id of the payor.

page

Integer

true

Page number. Default is 1.

pageSize

Integer

true

Page size. Default is 25. Max allowable is 100.

sort

String

true

List of sort fields (e.g. ?sort=destinationCurrency:asc,destinationAmount:asc)
Default is no sort
The supported sort fields are: dateTime and amount.

requestParams

Object

false

Request fields

No request body.

Response fields

Path Type Optional Description

links

Array[Object]

true

links[].rel

String

true

links[].href

String

true

page

Object

true

page.numberOfElements

Integer

true

page.totalElements

Integer

true

page.totalPages

Integer

true

page.page

Integer

true

page.pageSize

Integer

true

content

Array[Object]

true

Example request

$ curl 'https://api.sandbox.velopayments.com/v1/paymentaudit/fundings?payorId=b92568f9-8528-4dd0-9a7b-374a52c8863b' -i -X GET \
    -H 'Authorization: Bearer 145d4055-a799-4621-bf93-625601d67c58'

Example response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 1130

{
  "links" : [ {
    "rel" : "first",
    "href" : "https://api.sandbox.velopayments.com/v1/paymentaudit/fundings?payorId=b92568f9-8528-4dd0-9a7b-374a52c8863b&page=1&pageSize=25"
  }, {
    "rel" : "last",
    "href" : "https://api.sandbox.velopayments.com/v1/paymentaudit/fundings?payorId=b92568f9-8528-4dd0-9a7b-374a52c8863b&page=1&pageSize=25"
  }, {
    "rel" : "self",
    "href" : "https://api.sandbox.velopayments.com/v1/paymentaudit/fundings?payorId=b92568f9-8528-4dd0-9a7b-374a52c8863b&page=1&pageSize=25"
  } ],
  "page" : {
    "numberOfElements" : 1,
    "totalElements" : 1,
    "totalPages" : 1,
    "page" : 1,
    "pageSize" : 25
  },
  "content" : [ {
    "amount" : 100.0,
    "dateTime" : "2018-10-03T13:50:04.293Z",
    "status" : "CREDIT",
    "events" : [ {
      "eventId" : "f06c445f-495e-495d-9ca1-02bd2e57f064",
      "eventDateTime" : "2017-08-14T09:03:11.111Z",
      "fundingEventType" : "PAYOR_FUNDING_REQUESTED"
    }, {
      "eventId" : "2a6f70fb-82f1-47e9-b0d1-fb5dbc924b2b",
      "eventDateTime" : "2017-08-14T09:03:11.111Z",
      "fundingEventType" : "PAYOR_FUNDING_DETECTED"
    } ]
  } ]
}

Invite Service APIs

Validate Invite

GET /v1/invites/{inviteId}

Check if the link is still valid (204 - no content, 404 - invite not found).

Authorization

Resource is public.

Path parameters

Parameter Type Optional Description

inviteId

Object

false

A UUID value.

Query parameters

No parameters.

Request fields

No request body.

Response fields

No response body.

Example request

$ curl 'https://api.sandbox.velopayments.com/v1/invites/264b1b21-a82c-42ac-bc26-75b33ebacda1' -i -X GET \
    -H 'Content-Type: application/json'

Example response

HTTP/1.1 204 No Content

Validate Cellphone

POST /v1/invites/{inviteId}/smsTokens

Generate a OTP and send to the supplied phone number if valid (204 - no content, 400 - invalid request body, 404 - invite not found, 409 - password not set).

Authorization

Resource is public.

Path parameters

Parameter Type Optional Description

inviteId

Object

false

The Invite ID.

Query parameters

No parameters.

Request fields

Path Type Optional Description

cellphoneNumber

String

false

Must match the regular expression ^\+?[1-9]\d{1,14}$.

Response fields

No response body.

Example request

$ curl 'https://api.sandbox.velopayments.com/v1/invites/4586fa17-cae4-4c77-9b25-e6e3570863db/smsTokens' -i -X POST \
    -H 'Content-Type: application/json' \
    -d '{"cellphoneNumber": "4478009787464"}'

Example response

HTTP/1.1 204 No Content

Update Invite Options

POST /v1/invites/{inviteId}/optionsUpdate

Update the invite with acceptance of marketing options, plus terms and conditions (204 - no content, 400 - invalid request body, 404 - invite not found, 406 - invite in invalid state).

Authorization

Resource is public.

Path parameters

Parameter Type Optional Description

inviteId

Object

false

The inviteId.

Query parameters

No parameters.

Request fields

Path Type Optional Description

marketingOptIn

Boolean

false

acceptTermsAndConditions

Boolean

false

Response fields

No response body.

Example request

$ curl 'https://api.sandbox.velopayments.com/v1/invites/08267938-7151-4b04-b9a3-8fd74d2e4b63/optionsUpdate' -i -X POST \
    -H 'Content-Type: application/json' \
    -d '{"marketingOptIn": true, "acceptTermsAndConditions": true}'

Example response

HTTP/1.1 204 No Content

Update

POST /v1/invites/{inviteId}

Update the invite with credentials needed for login (204 - no content, 404 - invite not found, 406 - Invite in invalid state).

Authorization

Resource is public.

Path parameters

Parameter Type Optional Description

inviteId

Object

false

The inviteId.

Query parameters

No parameters.

Request fields

Path Type Optional Description

password

String

false

Size must be between 8 and 128 inclusive.

Response fields

No response body.

Example request

$ curl 'https://api.sandbox.velopayments.com/v1/invites/f72d0da4-fa17-41d1-aff4-823d9a3d48a0' -i -X POST \
    -H 'Content-Type: application/json' \
    -d '{"password": "myPassword"}'

Example response

HTTP/1.1 204 No Content

Validate Sms Token

POST /v1/invites/{inviteId}/smsTokens/validate

Validate the OTP sent to the invited payee’s cellphone (204 - no content, 400 - OTP incorrect, 404 - invite not found).

Authorization

Resource is public.

Path parameters

Parameter Type Optional Description

inviteId

Object

false

A UUID.

Query parameters

No parameters.

Request fields

Path Type Optional Description

smsChallengeToken

String

false

Must match the regular expression [0-9]{6}+.

Response fields

No response body.

Example request

$ curl 'https://api.sandbox.velopayments.com/v1/invites/3623614a-c935-4b8e-8f57-006c97f414ee/smsTokens/validate' -i -X POST \
    -H 'Content-Type: application/json' \
    -d '{"smsChallengeToken": "123456"}'

Example response

HTTP/1.1 204 No Content

Payout Service APIs

Submit Payout

POST /v2/payouts

Create a new payout and return a location header with a link to instruct the payout. If there are no valid payments in the payout then no payout is created and a 400 (Bad Request) is returned.

Authorization

User access token required.

Path parameters

No parameters.

Query parameters

No parameters.

Request fields

Path Type Optional Description

payorId

String

false

memo

String

true

Size must be between 0 and 40 inclusive.

payments

Array[Object]

false

Size must be between 1 and 2000 inclusive.

payments[].remoteId

String

false

Size must be between 1 and 100 inclusive.

payments[].currency

String

false

Must be a 3 character currency code e.g. USD, GBP, EUR.

payments[].amount

Decimal

false

Must be at least 0.01.

payments[].memo

String

true

Size must be between 0 and 40 inclusive.

payments[].sourceAccountName

String

false

Size must be between 1 and 64 inclusive.

payments[].payorPaymentId

String

true

Size must be between 0 and 40 inclusive.

Response fields

Path Type Optional Description

payoutId

String

true

fxSummaries

Array[Object]

true

fxSummaries[].rate

Decimal

false

fxSummaries[].quoteExpiry

String

false

fxSummaries[].quoteId

String

false

fxSummaries[].totalSourceAmount

Decimal

false

fxSummaries[].totalPaymentAmount

Decimal

false

fxSummaries[].sourceCurrency

String

false

fxSummaries[].paymentCurrency

String

false

accounts

Array[Object]

true

accounts[].sourceAccountName

String

false

accounts[].sourceAccountId

String

false

accounts[].currency

String

false

accounts[].totalPayoutCost

Decimal

false

rejectedPayments

Array[Object]

true

rejectedPayments[].remoteId

String

true

rejectedPayments[].currencyType

String

true

rejectedPayments[].amount

Decimal

true

rejectedPayments[].sourceAccountName

String

true

rejectedPayments[].payorPaymentId

String

true

rejectedPayments[].reason

String

true

Must be one of [UNKNOWN_REMOTE_ID, UNKNOWN_SOURCE_ACCOUNT, UNSUPPORTED_CURRENCY, OFAC_FAILED, DUPLICATE_PAYOR_PAYMENT_ID, CURRENCY_MISMATCH, DECLINED_INVITE, PENDING_INVITE, OTHER].

Example request

$ curl 'https://api.sandbox.velopayments.com/v2/payouts' -i -X POST \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer 99fb0893-fbbf-4c79-a5d4-b8841e50ef4d' \
    -d '{"payorId":"c09bd6e1-a564-4099-bdee-13eb02437d05","payments":[{"remoteId":"myRemoteId01","currency":"USD","amount":123.45,"sourceAccountName":"PAYOR_SRC_ACCT","payorPaymentId":"1111"},{"remoteId":"myRemoteId02","currency":"USD","amount":234.56,"sourceAccountName":"PAYOR_SRC_ACCT","payorPaymentId":"2222"},{"remoteId":"myRemoteId01","currency":"USD","amount":10.20,"sourceAccountName":"PAYOR_SRC_ACCT","payorPaymentId":"3333"},{"remoteId":"myRemoteId03","currency":"USD","amount":34.56,"sourceAccountName":"PAYOR_SRC_ACCT","payorPaymentId":"4444"},{"remoteId":"myRemoteId04","currency":"USD","amount":87.65,"sourceAccountName":"PAYOR_SRC_ACCT","payorPaymentId":"5555"}]}'

Example response

HTTP/1.1 201 Created
Location: https://api.sandbox.velopayments.com/v2/payouts/6f3d949d-9075-462c-8ebd-6e89c820e375
Content-Type: application/json;charset=UTF-8
Content-Length: 228

{
  "payoutId" : "6f3d949d-9075-462c-8ebd-6e89c820e375",
  "rejectedPayments" : [ {
    "remoteId" : "myRemoteId03",
    "reason" : "UNKNOWN_REMOTE_ID"
  }, {
    "remoteId" : "myRemoteId03",
    "reason" : "OFAC_FAILED"
  } ]
}

Instruct Payout

POST /v2/payouts/{payoutId}

Instruct a payout to be made for the specified payoutId.

Authorization

User access token required.

Path parameters

Parameter Type Optional Description

payoutId

Object

false

The id (UUID) of the payout to instruct.

Query parameters

No parameters.

Request fields

No request body.

Response fields

No response body.

Example request

$ curl 'https://api.sandbox.velopayments.com/v2/payouts/cfeb45fc-04cb-4d8e-85f1-2aeb798beb54' -i -X POST \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer 073472f4-f7ec-41cf-8c8e-82ec44f7e52f'

Example response

HTTP/1.1 200 OK

Submit Csv Payout

POST /v2/payouts

Create a new payout from a CSV source file and return a location header with a link to instruct the payout Supported CSV fields are: remoteId - mandatory - 100 chars max currency - mandatory - 3 characters e.g. USD amount - mandatory memo - optional sourceAccountName - mandatory - 64 characters max payorPaymentId - optional - 40 characters max If there are no valid payments in the csv file then no payout is created and a 400 (Bad Request) is returned.

Authorization

User access token required.

Path parameters

No parameters.

Query parameters

Parameter Type Optional Description

payorId

Object

false

memo

String

true

file

Object

false

Csv Structure

Field Name Type Optional Description

remoteId

String

false

Size must be between 1 and 100 inclusive.

currency

String

false

Must be a 3 character currency code e.g. USD, GBP, EUR.

amount

Decimal

false

Must be at least 0.01.

memo

String

true

Size must be between 0 and 40 inclusive.

sourceAccountName

String

false

Size must be between 1 and 64 inclusive.

payorPaymentId

String

true

Size must be between 0 and 40 inclusive.

Response fields

No response body.

Example request

$ curl 'https://api.sandbox.velopayments.com/v2/payouts?sourceCurrency=USD&payorId=9e6645e6-796c-4998-98d2-001f8ecd5f80&memo=this%20is%20the%20memo' -i -X POST \
    -H 'Content-Type: multipart/form-data' \
    -H 'Authorization: Bearer b704351b-f104-4758-8d06-5eb0b32ae505' \
    -F 'file=@test.csv;type=text/plain' \
    -F 'sourceCurrency=USD' \
    -F 'payorId=9e6645e6-796c-4998-98d2-001f8ecd5f80' \
    -F 'memo=this is the memo'

Example response

HTTP/1.1 201 Created
Location: https://api.sandbox.velopayments.com/v2/payouts/c29ecbda-60bf-4af0-8b28-6fd34df317d0
Content-Type: application/json;charset=UTF-8
Content-Length: 57

{
  "payoutId" : "c29ecbda-60bf-4af0-8b28-6fd34df317d0"
}
Velo secondary logo