Introduction
All calls result in either success
200
or failure400
. On success, the response follows the following structure:
{
"response": ""
}
On failure, the response follows the following structure:
{
"error": ""
}
Welcome to the BVNK API. We believe banking should be a concentration of elegant and effective functions rather than the complex, bloated and expensive system it is today.
Our API driven banking infrastructure can allow anyone to create new products, or to expand on their existing offering. We enable innovation through providing a platform.
Find out more about BVNK on our website.
Defaults
System wide defaults are followed for consistency.
In the case of the demo installation, no API key is required. For all custom deploys or the production deploy, API keys will be issued for developers to test against.
These API keys will need to be included on each and every request to the API using the header value X-Api-Key
and X-Api-Secret
.
Basic Auth
Some requests are secured through Basic Auth. Usernames and passwords will be issued to developers on request, and for private installations given to the relevant parties.
For the demo instance, the following credentials may be used:
Basic Auth Username: bvnk
Basic Auth Password: AFjDJurwxTNqqYfXsU6zXGvN
Contact
For more information please reach out to us on BVNK
Users
User Signup
To signup to BVNK:
curl -X POST \
https://demo.bvnk.co/account/signup \
-H 'Authorization: Basic YnZuazpldml0YWJsZS1jYXVjdXMtZm9yZXNhdy1wcmVzc21hbi1mbGF0Y2FyLWZpZXJ5LW9mZnNob290LWhvdXI=' \
-H 'Cache-Control: no-cache' \
-H 'Postman-Token: a7d75f11-876a-9458-b195-43c967d62111' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-F AccountHolderGivenName=Debug \
-F AccountHolderFamilyName=Account \
-F AccountHolderDateOfBirth=1900-01-01 \
-F AccountHolderIdentificationNumber=400000-0000-001 \
-F 'AccountHolderContactNumber1=(558) 555-42381' \
-F AccountHolderEmailAddress=alice@bankai.co \
-F 'AccountHolderAddressLine1=Address 1' \
-F 'AccountHolderAddressLine2=Address 2' \
-F 'AccountHolderAddressLine3=Address 3' \
-F AccountHolderPassword=password \
-F AccountHolderPostalCode=1234 \
-F AccountHolderCountry=GB
import requests
url = "https://demo.bvnk.co/account/signup"
payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderGivenName\"\r\n\r\nDebug\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderFamilyName\"\r\n\r\nAccount\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderDateOfBirth\"\r\n\r\n1900-01-01\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderIdentificationNumber\"\r\n\r\n400000-0000-001\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderContactNumber1\"\r\n\r\n(558) 555-42381\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderEmailAddress\"\r\n\r\nalice@bankai.co\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine1\"\r\n\r\nAddress 1\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine2\"\r\n\r\nAddress 2\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine3\"\r\n\r\nAddress 3\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderPassword\"\r\n\r\npassword\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderPostalCode\"\r\n\r\n1234\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderCountry\"\r\n\r\nGB\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
headers = {
'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
'Authorization': "Basic YnZuazpldml0YWJsZS1jYXVjdXMtZm9yZXNhdy1wcmVzc21hbi1mbGF0Y2FyLWZpZXJ5LW9mZnNob290LWhvdXI=",
'Cache-Control': "no-cache",
'Postman-Token': "becd926e-c9bd-0d37-dde3-95d94b649f04"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/account/signup"
payload := strings.NewReader("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderGivenName\"\r\n\r\nDebug\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderFamilyName\"\r\n\r\nAccount\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderDateOfBirth\"\r\n\r\n1900-01-01\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderIdentificationNumber\"\r\n\r\n400000-0000-001\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderContactNumber1\"\r\n\r\n(558) 555-42381\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderEmailAddress\"\r\n\r\nalice@bankai.co\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine1\"\r\n\r\nAddress 1\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine2\"\r\n\r\nAddress 2\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine3\"\r\n\r\nAddress 3\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderPassword\"\r\n\r\npassword\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderPostalCode\"\r\n\r\n1234\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderCountry\"\r\n\r\nGB\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
req.Header.Add("Authorization", "Basic YnZuazpldml0YWJsZS1jYXVjdXMtZm9yZXNhdy1wcmVzc21hbi1mbGF0Y2FyLWZpZXJ5LW9mZnNob290LWhvdXI=")
req.Header.Add("Cache-Control", "no-cache")
req.Header.Add("Postman-Token", "98be2b0b-b895-e1e4-22e2-d2d26aa21c37")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.post("https://demo.bvnk.co/account/signup")
.header("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
.header("Authorization", "Basic YnZuazpldml0YWJsZS1jYXVjdXMtZm9yZXNhdy1wcmVzc21hbi1mbGF0Y2FyLWZpZXJ5LW9mZnNob290LWhvdXI=")
.header("Cache-Control", "no-cache")
.header("Postman-Token", "6fe15eac-7e64-b093-b04a-30ae914d8031")
.body("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderGivenName\"\r\n\r\nDebug\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderFamilyName\"\r\n\r\nAccount\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderDateOfBirth\"\r\n\r\n1900-01-01\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderIdentificationNumber\"\r\n\r\n400000-0000-001\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderContactNumber1\"\r\n\r\n(558) 555-42381\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderEmailAddress\"\r\n\r\nalice@bankai.co\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine1\"\r\n\r\nAddress 1\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine2\"\r\n\r\nAddress 2\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine3\"\r\n\r\nAddress 3\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderPassword\"\r\n\r\npassword\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderPostalCode\"\r\n\r\n1234\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderCountry\"\r\n\r\nGB\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
.asString();
var data = new FormData();
data.append("AccountHolderGivenName", "Debug");
data.append("AccountHolderFamilyName", "Account");
data.append("AccountHolderDateOfBirth", "1900-01-01");
data.append("AccountHolderIdentificationNumber", "400000-0000-001");
data.append("AccountHolderContactNumber1", "(558) 555-42381");
data.append("AccountHolderEmailAddress", "alice@bankai.co");
data.append("AccountHolderAddressLine1", "Address 1");
data.append("AccountHolderAddressLine2", "Address 2");
data.append("AccountHolderAddressLine3", "Address 3");
data.append("AccountHolderPassword", "password");
data.append("AccountHolderPostalCode", "1234");
data.append("AccountHolderCountry", "GB");
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://demo.bvnk.co/account/signup");
xhr.setRequestHeader("Authorization", "Basic YnZuazpldml0YWJsZS1jYXVjdXMtZm9yZXNhdy1wcmVzc21hbi1mbGF0Y2FyLWZpZXJ5LW9mZnNob290LWhvdXI=");
xhr.setRequestHeader("Cache-Control", "no-cache");
xhr.setRequestHeader("Postman-Token", "7c40dcd5-3eef-f583-e3e6-f99320a9e796");
xhr.send(data);
Users act as account holders and need to be created as the first action. All accounts need to be linked to users, and Know Your Customer requirements centre around users. Country must be valid ISO2 code, a list of valid countries and their codes can be retrieved through GET /countries
. The signup request should be done via a BVNK interface (web or mobile app) because it also uses HTTP authentication as a new customer would not have an account.
A uuid
will be returned which will be the identifier for the user in subsequent auth requests. Please see create auth request for more details.
This request requires Basic Auth, please see the introduction for more details.
Successful response:
{
"response": "7217123a-c4e5-440f-a7b9-94230d303d66"
}
Error response:
{
"error": "Contact number already linked to another user"
}
HTTP Request
POST https://demo.bvnk.co/account/signup
Headers
X-Auth-Token: {auth token}
Basic: {basic auth}
Query Parameters
Parameter | Required | Description |
---|---|---|
AccountHolderGivenName | true | Given or first name of account holder |
AccountHolderFamilyName | true | Family name of account holder |
AccountHolderDateOfBirth | true | Date of birth of account holder in the format dd-mm-yyyy |
AccountHolderIdentificationNumber | true | Identification or passport number of account holder |
AccountHolderContactNumber1 | true | Primary contact number for account holder |
AccountHolderContactNumber2 | false | Secondary contact number for account holder |
AccountHolderEmailAddress | true | Email address for account holder |
AccountHolderAddressLine1 | true | First line of address for account holder |
AccountHolderAddressLine2 | false | Second line of address for account holder |
AccountHolderAddressLine3 | false | Third line of address for account holder |
AccountHolderPostalCode | true | Postal code of address for account holder |
AccountHolderCountry | true | Valid ISO2 code for country. List of countries can be retrieved from /countries . |
AccountHolderPassword | true | Password for the users account |
Admin User creation
To create a new administrator:
curl -X POST \
https://demo.bvnk.co/account/user \
-H 'Authorization: Basic YnZuazpldml0YWJsZS1jYXVjdXMtZm9yZXNhdy1wcmVzc21hbi1mbGF0Y2FyLWZpZXJ5LW9mZnNob290LWhvdXI=' \
-H 'Cache-Control: no-cache' \
-H 'Postman-Token: a7d75f11-876a-9458-b195-43c967d62111' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-F AccountHolderGivenName=Debug \
-F AccountHolderFamilyName=Account \
-F AccountHolderDateOfBirth=1900-01-01 \
-F AccountHolderIdentificationNumber=400000-0000-001 \
-F 'AccountHolderContactNumber1=(558) 555-42381' \
-F AccountHolderEmailAddress=alice@bankai.co \
-F 'AccountHolderAddressLine1=Address 1' \
-F 'AccountHolderAddressLine2=Address 2' \
-F 'AccountHolderAddressLine3=Address 3' \
-F AccountHolderPassword=password \
-F AccountHolderPostalCode=1234 \
-F AccountHolderCountry=GB
import requests
url = "https://demo.bvnk.co/account/user"
payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderGivenName\"\r\n\r\nDebug\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderFamilyName\"\r\n\r\nAccount\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderDateOfBirth\"\r\n\r\n1900-01-01\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderIdentificationNumber\"\r\n\r\n400000-0000-001\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderContactNumber1\"\r\n\r\n(558) 555-42381\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderEmailAddress\"\r\n\r\nalice@bankai.co\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine1\"\r\n\r\nAddress 1\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine2\"\r\n\r\nAddress 2\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine3\"\r\n\r\nAddress 3\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderPassword\"\r\n\r\npassword\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderPostalCode\"\r\n\r\n1234\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderCountry\"\r\n\r\nGB\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
headers = {
'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
'Authorization': "Basic YnZuazpldml0YWJsZS1jYXVjdXMtZm9yZXNhdy1wcmVzc21hbi1mbGF0Y2FyLWZpZXJ5LW9mZnNob290LWhvdXI=",
'Cache-Control': "no-cache",
'Postman-Token': "becd926e-c9bd-0d37-dde3-95d94b649f04"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/account/user"
payload := strings.NewReader("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderGivenName\"\r\n\r\nDebug\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderFamilyName\"\r\n\r\nAccount\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderDateOfBirth\"\r\n\r\n1900-01-01\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderIdentificationNumber\"\r\n\r\n400000-0000-001\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderContactNumber1\"\r\n\r\n(558) 555-42381\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderEmailAddress\"\r\n\r\nalice@bankai.co\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine1\"\r\n\r\nAddress 1\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine2\"\r\n\r\nAddress 2\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine3\"\r\n\r\nAddress 3\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderPassword\"\r\n\r\npassword\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderPostalCode\"\r\n\r\n1234\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderCountry\"\r\n\r\nGB\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
req.Header.Add("Authorization", "Basic YnZuazpldml0YWJsZS1jYXVjdXMtZm9yZXNhdy1wcmVzc21hbi1mbGF0Y2FyLWZpZXJ5LW9mZnNob290LWhvdXI=")
req.Header.Add("Cache-Control", "no-cache")
req.Header.Add("Postman-Token", "98be2b0b-b895-e1e4-22e2-d2d26aa21c37")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.post("https://demo.bvnk.co/account/user")
.header("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
.header("Authorization", "Basic YnZuazpldml0YWJsZS1jYXVjdXMtZm9yZXNhdy1wcmVzc21hbi1mbGF0Y2FyLWZpZXJ5LW9mZnNob290LWhvdXI=")
.header("Cache-Control", "no-cache")
.header("Postman-Token", "6fe15eac-7e64-b093-b04a-30ae914d8031")
.body("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderGivenName\"\r\n\r\nDebug\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderFamilyName\"\r\n\r\nAccount\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderDateOfBirth\"\r\n\r\n1900-01-01\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderIdentificationNumber\"\r\n\r\n400000-0000-001\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderContactNumber1\"\r\n\r\n(558) 555-42381\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderEmailAddress\"\r\n\r\nalice@bankai.co\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine1\"\r\n\r\nAddress 1\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine2\"\r\n\r\nAddress 2\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine3\"\r\n\r\nAddress 3\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderPassword\"\r\n\r\npassword\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderPostalCode\"\r\n\r\n1234\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderCountry\"\r\n\r\nGB\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
.asString();
var data = new FormData();
data.append("AccountHolderGivenName", "Debug");
data.append("AccountHolderFamilyName", "Account");
data.append("AccountHolderDateOfBirth", "1900-01-01");
data.append("AccountHolderIdentificationNumber", "400000-0000-001");
data.append("AccountHolderContactNumber1", "(558) 555-42381");
data.append("AccountHolderEmailAddress", "alice@bankai.co");
data.append("AccountHolderAddressLine1", "Address 1");
data.append("AccountHolderAddressLine2", "Address 2");
data.append("AccountHolderAddressLine3", "Address 3");
data.append("AccountHolderPassword", "password");
data.append("AccountHolderPostalCode", "1234");
data.append("AccountHolderCountry", "GB");
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://demo.bvnk.co/account/user");
xhr.setRequestHeader("Authorization", "Basic YnZuazpldml0YWJsZS1jYXVjdXMtZm9yZXNhdy1wcmVzc21hbi1mbGF0Y2FyLWZpZXJ5LW9mZnNob290LWhvdXI=");
xhr.setRequestHeader("Cache-Control", "no-cache");
xhr.setRequestHeader("Postman-Token", "7c40dcd5-3eef-f583-e3e6-f99320a9e796");
xhr.send(data);
While all accounts must be linked to users and Know Your Customer requirements center around users, not all users need to have an account. At BVNK, every user has a role, including Administrators, Merchants, Merchant Customers and regular account holders. This endpoint allows Administrators that aren't BVNK users to create users through HTTP authentication. This is necessary for new installations where no user exists and the first administrator must be created. It is therefore not an endpoint to be used often.
Successful response:
{
"response": ""
}
Error response:
{
"error": "Contact number already linked to another user"
}
HTTP Request
POST https://demo.bvnk.co/account/user
Headers
Authorization: {Basic Basic YnZuazpldml0YWJsZS1jYXVjdXMtZm9yZXNhdy1wcmVzc21hbi1mbGF0Y2FyLWZpZXJ5LW9mZnNob290LWhvdXI=}
Query Parameters
Parameter | Required | Description |
---|---|---|
AccountHolderGivenName | true | Given or first name of account holder |
AccountHolderFamilyName | true | Family name of account holder |
AccountHolderDateOfBirth | true | Date of birth of account holder in the format dd-mm-yyyy |
AccountHolderIdentificationNumber | true | Identification or passport number of account holder |
AccountHolderContactNumber1 | true | Primary contact number for account holder |
AccountHolderContactNumber2 | false | Secondary contact number for account holder |
AccountHolderEmailAddress | true | Email address for account holder |
AccountHolderAddressLine1 | true | First line of address for account holder |
AccountHolderAddressLine2 | false | Second line of address for account holder |
AccountHolderAddressLine3 | false | Third line of address for account holder |
AccountHolderPostalCode | true | Postal code of address for account holder |
AccountHolderCountry | true | Valid ISO2 code for country. List of countries can be retrieved from /countries . |
AccountHolderPassword | true | Password for the users account |
IAM User creation
To create a new IAM User:
curl -X POST \
https://demo.bvnk.co/iam/user \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json' \
-H 'Postman-Token: a4b4a190-c876-0461-302e-f1de16ca1c3c' \
-H 'X-Auth-Token: 256f8024-2271-445c-88f2-6cdeed30531b' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-F AccountHolderGivenName=PayDNA \
-F 'AccountHolderFamilyName=Admin 1' \
-F AccountHolderDateOfBirth=1900-01-01 \
-F AccountHolderIdentificationNumber=19000101-1234-003 \
-F AccountHolderContactNumber1=555-555-0003 \
-F 'AccountHolderContactNumber2=(555) 555-4366' \
-F AccountHolderEmailAddress=test3@bvnk.co \
-F 'AccountHolderAddressLine1=Address 1' \
-F 'AccountHolderAddressLine2=Address 2' \
-F 'AccountHolderAddressLine3=Address 3' \
-F AccountHolderCountry=GB \
-F AccountHolderPostalCode=1234 \
-F AccountHolderPassword=password \
-F UserType=admin
import requests
url = "https://demo.bvnk.co/iam/user"
payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderGivenName\"\r\n\r\nPayDNA\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderFamilyName\"\r\n\r\nAdmin 1\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderDateOfBirth\"\r\n\r\n1900-01-01\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderIdentificationNumber\"\r\n\r\n19000101-1234-003\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderContactNumber1\"\r\n\r\n555-555-0003\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderContactNumber2\"\r\n\r\n(555) 555-4366\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderEmailAddress\"\r\n\r\ntest3@bvnk.co\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine1\"\r\n\r\nAddress 1\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine2\"\r\n\r\nAddress 2\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine3\"\r\n\r\nAddress 3\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderCountry\"\r\n\r\nAO\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderPostalCode\"\r\n\r\n1234\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderPassword\"\r\n\r\npassword\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"UserType\"\r\n\r\nadmin\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
headers = {
'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
'Content-Type': "application/json",
'X-Auth-Token': "256f8024-2271-445c-88f2-6cdeed30531b",
'Cache-Control': "no-cache",
'Postman-Token': "1126f433-dedb-24e8-512d-af111bb25697"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/iam/user"
payload := strings.NewReader("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderGivenName\"\r\n\r\nPayDNA\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderFamilyName\"\r\n\r\nAdmin 1\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderDateOfBirth\"\r\n\r\n1900-01-01\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderIdentificationNumber\"\r\n\r\n19000101-1234-003\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderContactNumber1\"\r\n\r\n555-555-0003\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderContactNumber2\"\r\n\r\n(555) 555-4366\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderEmailAddress\"\r\n\r\ntest3@bvnk.co\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine1\"\r\n\r\nAddress 1\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine2\"\r\n\r\nAddress 2\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine3\"\r\n\r\nAddress 3\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderCountry\"\r\n\r\nAO\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderPostalCode\"\r\n\r\n1234\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderPassword\"\r\n\r\npassword\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"UserType\"\r\n\r\nadmin\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
req.Header.Add("Content-Type", "application/json")
req.Header.Add("X-Auth-Token", "8400a09e-7676-4aa3-bce0-57a216b7f1b0")
req.Header.Add("Cache-Control", "no-cache")
req.Header.Add("Postman-Token", "8348a26e-3b5c-92bd-668f-d08974fa4f10")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.post("https://demo.bvnk.co/iam/user")
.header("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
.header("Content-Type", "application/json")
.header("X-Auth-Token", "8400a09e-7676-4aa3-bce0-57a216b7f1b0")
.header("Cache-Control", "no-cache")
.header("Postman-Token", "4590f99d-00e2-a1d6-0f7b-0eea1c028d0a")
.body("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderGivenName\"\r\n\r\nPayDNA\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderFamilyName\"\r\n\r\nAdmin 1\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderDateOfBirth\"\r\n\r\n1900-01-01\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderIdentificationNumber\"\r\n\r\n19000101-1234-003\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderContactNumber1\"\r\n\r\n555-555-0003\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderContactNumber2\"\r\n\r\n(555) 555-4366\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderEmailAddress\"\r\n\r\ntest3@bvnk.co\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine1\"\r\n\r\nAddress 1\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine2\"\r\n\r\nAddress 2\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine3\"\r\n\r\nAddress 3\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderCountry\"\r\n\r\nAO\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderPostalCode\"\r\n\r\n1234\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderPassword\"\r\n\r\npassword\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"UserType\"\r\n\r\nadmin\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
.asString();
var data = new FormData();
data.append("AccountHolderGivenName", "PayDNA");
data.append("AccountHolderFamilyName", "Admin 1");
data.append("AccountHolderDateOfBirth", "1900-01-01");
data.append("AccountHolderIdentificationNumber", "19000101-1234-003");
data.append("AccountHolderContactNumber1", "555-555-0003");
data.append("AccountHolderContactNumber2", "(555) 555-4366");
data.append("AccountHolderEmailAddress", "test3@bvnk.co");
data.append("AccountHolderAddressLine1", "Address 1");
data.append("AccountHolderAddressLine2", "Address 2");
data.append("AccountHolderAddressLine3", "Address 3");
data.append("AccountHolderCountry", "AO");
data.append("AccountHolderPostalCode", "1234");
data.append("AccountHolderPassword", "password");
data.append("UserType", "admin");
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://demo.bvnk.co/iam/user");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.setRequestHeader("X-Auth-Token", "8400a09e-7676-4aa3-bce0-57a216b7f1b0");
xhr.setRequestHeader("Cache-Control", "no-cache");
xhr.setRequestHeader("Postman-Token", "989b404a-b05e-c2da-83a1-c375d137f6c9");
xhr.send(data);
This endpoint allows organizations to create user accounts for their own staff or customers, and administrators users to create other administrators and users. Users created this way are added to IAM groups according to the role of the user creating them. For example, a user created by a merchant or merchant's customer has permissions only on the company's resources. An administrator created by a BVNK admin will have the same roles as that admin, and a simple user created by the same admin will have permissions only over their own resources.
Successful response:
{
"response": ""
}
Error response:
{
"error": "Contact number already linked to another user"
}
HTTP Request
POST https://demo.bvnk.co/iam/user
Query Parameters
Parameter | Required | Description |
---|---|---|
AccountHolderGivenName | true | Given or first name of account holder |
AccountHolderFamilyName | true | Family name of account holder |
AccountHolderDateOfBirth | true | Date of birth of account holder in the format dd-mm-yyyy |
AccountHolderIdentificationNumber | true | Identification or passport number of account holder |
AccountHolderContactNumber1 | true | Primary contact number for account holder |
AccountHolderContactNumber2 | false | Secondary contact number for account holder |
AccountHolderEmailAddress | true | Email address for account holder |
AccountHolderAddressLine1 | true | First line of address for account holder |
AccountHolderAddressLine2 | false | Second line of address for account holder |
AccountHolderAddressLine3 | false | Third line of address for account holder |
AccountHolderPostalCode | true | Postal code of address for account holder |
AccountHolderCountry | true | Valid ISO2 code for country. List of countries can be retrieved from /countries . |
AccountHolderPassword | true | Password for the users account |
UserType | true | One of admin, staff, user |
Authorization
Create Authorization
curl -X POST \
https://demo.bvnk.co/auth/account \
-H 'cache-control: no-cache' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-H 'postman-token: d9cec22a-f367-31ed-99bb-a725767cc5db' \
-F UserIdentificationNumber=300000-0000-001 \
-F Password=test1234
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/auth/account"
payload := strings.NewReader("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"UserIdentificationNumber\"\r\n\r\n300000-0000-001\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Password\"\r\n\r\ntest1234\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
req.Header.Add("cache-control", "no-cache")
req.Header.Add("postman-token", "260911ea-cd1a-41a0-048e-c17a4187347e")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.post("https://demo.bvnk.co/auth/account")
.header("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
.header("cache-control", "no-cache")
.header("postman-token", "757e3e20-ccd4-3a49-6ff1-5f3f645c5e55")
.body("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"UserIdentificationNumber\"\r\n\r\n300000-0000-001\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Password\"\r\n\r\ntest1234\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
.asString();
var request = require("request");
var options = { method: 'POST',
url: 'https://demo.bvnk.co/auth/account',
headers:
{ 'postman-token': 'db7c8e74-30e5-980a-7034-19a904ea5122',
'cache-control': 'no-cache',
'content-type': 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' },
formData:
{ UserIdentificationNumber: '300000-0000-001',
Password: 'test1234' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "https://demo.bvnk.co/auth/account"
payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"UserIdentificationNumber\"\r\n\r\n300000-0000-001\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Password\"\r\n\r\ntest1234\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
headers = {
'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
'cache-control': "no-cache",
'postman-token': "a336b6fb-f79a-fc4f-7b47-9cb876c9f52a"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
A successfull response looks like:
{
"response": "3069ecbc-bf37-421d-a66f-6b78d56fd86f"
}
An unsuccessful response looks like:
{
"error": "Password must be at least 8 characters"
}
This endpoint creates an authorization user for the account user. A uuid
is returned which will be the identifier for the user in subsequent auth requests. This is to avoid
sending through the AccountHolderIdentificationNumber
on all auth requests.
If an authorization user has already been created for the account user, the saved uuid
will be returned.
HTTP Request
POST https://demo.bvnk.co/auth/account
Query Parameters
Parameter | Required | Description |
---|---|---|
UserIdentificationNumber | true | The matching value from the account user creation. |
Password | true | The password set during account user creation. Minimum of 8 characters long. |
Log In
curl -X POST \
https://demo.bvnk.co/auth/login \
-H 'cache-control: no-cache' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-H 'postman-token: 0d828327-c0f7-f4b4-2af5-45139ff6ec6f' \
-F User=3069ecbc-bf37-421d-a66f-6b78d56fd86f \
-F Password=test1234
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/auth/login"
payload := strings.NewReader("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"User\"\r\n\r\n3069ecbc-bf37-421d-a66f-6b78d56fd86f\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Password\"\r\n\r\ntest1234\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
req.Header.Add("cache-control", "no-cache")
req.Header.Add("postman-token", "3c009e3a-f538-ba4b-759a-f858b0ab7a20")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.post("https://demo.bvnk.co/auth/login")
.header("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
.header("cache-control", "no-cache")
.header("postman-token", "3015717e-61ed-b1a7-879a-a12ffc3b07ae")
.body("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"User\"\r\n\r\n3069ecbc-bf37-421d-a66f-6b78d56fd86f\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Password\"\r\n\r\ntest1234\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
.asString();
var request = require("request");
var options = { method: 'POST',
url: 'https://demo.bvnk.co/auth/login',
headers:
{ 'postman-token': '333d7125-a982-ce12-a9e2-c995d4e38a6f',
'cache-control': 'no-cache',
'content-type': 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' },
formData:
{ User: '3069ecbc-bf37-421d-a66f-6b78d56fd86f',
Password: 'test1234' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "https://demo.bvnk.co/auth/login"
payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"User\"\r\n\r\n3069ecbc-bf37-421d-a66f-6b78d56fd86f\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Password\"\r\n\r\ntest1234\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
headers = {
'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
'cache-control': "no-cache",
'postman-token': "7c2703b3-7bcb-5e94-59e6-971e36aede7d"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
Successful response:
{
"response": "6836d1f3-2321-45eb-9173-efeaa211a6d5"
}
Error response:
{
"error": "Authentication credentials invalid"
}
This endpoint authorizes a user and returns an auth token
to use in requests which require user level authorization. The User
value is the uuid
value received from the create authorization step.
HTTP Request
POST https://demo.bvnk.co/auth/login<ID>
URL Parameters
Parameter | Required | Description |
---|---|---|
User | true | The UUID value from create authorization |
Password | true | The password set during user account creation |
Extend Auth Token
curl -X POST \
https://demo.bvnk.co/auth \
-H 'cache-control: no-cache' \
-H 'postman-token: 0e618af3-40b3-e570-d241-676f7be72f32' \
-H 'x-auth-token: a0447b38-31ae-428a-ae19-76e6258b6371'
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/auth"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("x-auth-token", "a0447b38-31ae-428a-ae19-76e6258b6371")
req.Header.Add("cache-control", "no-cache")
req.Header.Add("postman-token", "65b5984d-1673-8815-d7a8-3d9d0e2c0e22")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.post("https://demo.bvnk.co/auth")
.header("x-auth-token", "a0447b38-31ae-428a-ae19-76e6258b6371")
.header("cache-control", "no-cache")
.header("postman-token", "613b45e3-9dce-8faf-5b5b-6ec9a7b2c709")
.asString();
var request = require("request");
var options = { method: 'POST',
url: 'https://demo.bvnk.co/auth',
headers:
{ 'postman-token': '0eb3f65f-36d9-b55b-b559-458d8e41d648',
'cache-control': 'no-cache',
'x-auth-token': 'a0447b38-31ae-428a-ae19-76e6258b6371' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "https://demo.bvnk.co/auth"
headers = {
'x-auth-token': "a0447b38-31ae-428a-ae19-76e6258b6371",
'cache-control': "no-cache",
'postman-token': "5b0b842a-7000-d0dc-8505-cdf6cd50bf88"
}
response = requests.request("POST", url, headers=headers)
print(response.text)
Successfull response:
{
"response": ""
}
Error response:
{
"error": "Token invalid"
}
This endpoint extends a token. Default TTL is 60 minutes.
HTTP Request
POST https://demo.bvnk.co/auth
Headers
X-Auth-Token: {auth token}
URL Parameters
Parameter | Required | Description |
---|
There are no parameters for this request, only the X-Auth-Token
header is required.
Create Application Authorization
curl -X POST \
https://demo.bvnk.co/auth/application \
-H 'Cache-Control: no-cache' \
-H 'Postman-Token: eafa344a-fad3-0fa1-b6ca-d75b5003bee4' \
-H 'X-Auth-Token: a2e8c942-3ffc-45fc-b695-0419d1e69360' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-F ApplicationName=desktop-app
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/auth/application"
payload := strings.NewReader("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"ApplicationName\"\r\n\r\ndesktop-app\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
req.Header.Add("X-Auth-Token", "a2e8c942-3ffc-45fc-b695-0419d1e69360")
req.Header.Add("Cache-Control", "no-cache")
req.Header.Add("Postman-Token", "23a51075-e7e2-db35-d0a5-bdd93fe1f79d")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.post("https://demo.bvnk.co/auth/application")
.header("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
.header("X-Auth-Token", "a2e8c942-3ffc-45fc-b695-0419d1e69360")
.header("Cache-Control", "no-cache")
.header("Postman-Token", "be7387a0-3de7-8072-5e33-32971037002b")
.body("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"ApplicationName\"\r\n\r\ndesktop-app\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
.asString();
var request = require("request");
var options = { method: 'POST',
url: 'https://demo.bvnk.co/auth/application',
headers:
{ 'Postman-Token': '22a28e90-bbf0-a2ea-c0e3-44094d750f10',
'Cache-Control': 'no-cache',
'X-Auth-Token': 'a2e8c942-3ffc-45fc-b695-0419d1e69360',
'content-type': 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' },
formData: { ApplicationName: 'desktop-app' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "https://demo.bvnk.co/auth/application"
payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"ApplicationName\"\r\n\r\ndesktop-app\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
headers = {
'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
'X-Auth-Token': "a2e8c942-3ffc-45fc-b695-0419d1e69360",
'Cache-Control': "no-cache",
'Postman-Token': "9d0784e2-ce8f-25fe-989a-aeb48f707a4d"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
A successfull response looks like:
{
"response": "3069ecbc-bf37-421d-a66f-6b78d56fd86f"
}
An unsuccessful response looks like:
{
"error": "Application already registered"
}
This endpoint registers an application for authentication. The application is registered, and an application authorization token is returned.
This token can then be used with /auth/application/login
to authenticate against the server.
These authentication tokens are application specific, and can be enabled or disabled as well as removed entirely.
The purpose of this route is to allow devices to authenticate against the account without having to store the user's password.
HTTP Request
POST https://demo.bvnk.co/auth/application
Headers
X-Auth-Token: {auth token}
Query Parameters
Parameter | Required | Description |
---|---|---|
ApplicationName | true | The unique name of the application. This should be set by the application itself, e.g. ios-app . |
Log In Using Application Auth
curl -X POST \
https://demo.bvnk.co/auth/application/login \
-H 'Cache-Control: no-cache' \
-H 'Postman-Token: f9c5cf0e-8e5d-1a89-f456-ee48b2375388' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-F User=c12716f5-44c7-4513-a8e4-172da5d9c902 \
-F AppToken=649daaad-fd98-4acf-bfa1-98177a708d6e
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/auth/application/login"
payload := strings.NewReader("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"User\"\r\n\r\nc12716f5-44c7-4513-a8e4-172da5d9c902\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AppToken\"\r\n\r\n649daaad-fd98-4acf-bfa1-98177a708d6e\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
req.Header.Add("Cache-Control", "no-cache")
req.Header.Add("Postman-Token", "768d24b7-1298-cd01-6b42-60c2b7661cb5")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.post("https://demo.bvnk.co/auth/application/login")
.header("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
.header("Cache-Control", "no-cache")
.header("Postman-Token", "df7fbae5-6423-9d22-db71-543671a877dc")
.body("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"User\"\r\n\r\nc12716f5-44c7-4513-a8e4-172da5d9c902\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AppToken\"\r\n\r\n649daaad-fd98-4acf-bfa1-98177a708d6e\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
.asString();
var request = require("request");
var options = { method: 'POST',
url: 'https://demo.bvnk.co/auth/application/login',
headers:
{ 'Postman-Token': '96a70e11-3894-0ef6-8107-dda8b7458d74',
'Cache-Control': 'no-cache',
'content-type': 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' },
formData:
{ User: 'c12716f5-44c7-4513-a8e4-172da5d9c902',
AppToken: '649daaad-fd98-4acf-bfa1-98177a708d6e' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "https://demo.bvnk.co/auth/application/login"
payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"User\"\r\n\r\nc12716f5-44c7-4513-a8e4-172da5d9c902\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AppToken\"\r\n\r\n649daaad-fd98-4acf-bfa1-98177a708d6e\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
headers = {
'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
'Cache-Control': "no-cache",
'Postman-Token': "4030d628-97ba-07e8-d65d-88b87d7f75a8"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
Successful response:
{
"response": "6836d1f3-2321-45eb-9173-efeaa211a6d5"
}
Error response:
{
"error": "Authentication invalid"
}
This endpoint authorizes an application for a user and returns an auth token
to use in requests which require user level authorization.
The User
value is the uuid
value received from the create authorization step.
The AppToken
value is the uuid
value received from the create application authorization step.
HTTP Request
POST https://demo.bvnk.co/auth/application/login
URL Parameters
Parameter | Required | Description |
---|---|---|
User | true | The UUID value from create authorization |
AppToken | true | The UUID value for the given application created during application authorization |
Accounts
Create Account
curl -X POST \
https://demo.bvnk.co/account \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json' \
-H 'Postman-Token: b32bfcc5-d0c6-07bf-b833-9cd815c21980' \
-H 'X-Auth-Token: ee2cd9fb-a165-40c7-95af-c05d4d5f8117' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-F AccountCurrency=usd \
-F AccountType=cheque
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/account"
payload := strings.NewReader("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountCurrency\"\r\n\r\nusd\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountType\"\r\n\r\ncheque\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
req.Header.Add("Content-Type", "application/json")
req.Header.Add("X-Auth-Token", "ee2cd9fb-a165-40c7-95af-c05d4d5f8117")
req.Header.Add("Cache-Control", "no-cache")
req.Header.Add("Postman-Token", "9937aa75-ed63-3800-1973-9b343d1fcef8")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.post("https://demo.bvnk.co/account")
.header("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
.header("Content-Type", "application/json")
.header("X-Auth-Token", "ee2cd9fb-a165-40c7-95af-c05d4d5f8117")
.header("Cache-Control", "no-cache")
.header("Postman-Token", "775810d4-bd8e-a3fd-c72c-aa5ba51de164")
.body("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountCurrency\"\r\n\r\nusd\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountType\"\r\n\r\ncheque\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
.asString();
var request = require("request");
var options = { method: 'POST',
url: 'https://demo.bvnk.co/account',
headers:
{ 'Postman-Token': 'a91f96a0-c484-0b3f-e01a-5c902292a3a8',
'Cache-Control': 'no-cache',
'X-Auth-Token': 'ee2cd9fb-a165-40c7-95af-c05d4d5f8117',
'Content-Type': 'application/json',
'content-type': 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' },
formData: { AccountCurrency: 'usd', AccountType: 'cheque' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "https://demo.bvnk.co/account"
payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountCurrency\"\r\n\r\nusd\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountType\"\r\n\r\ncheque\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
headers = {
'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
'Content-Type': "application/json",
'X-Auth-Token': "ee2cd9fb-a165-40c7-95af-c05d4d5f8117",
'Cache-Control': "no-cache",
'Postman-Token': "8500c7f9-4664-73ea-cb1d-ce9f9355406a"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
Successful response:
{
"response": "9e7d08ef-5377-4ebc-a606-186dbe07020e"
}
Error response:
{
"error": "Account type not valid, must be one of savings, cheque, merchant, money-market, cd, ira, rcp, credit, mortgage, loan"
}
This endpoint is used to create an account against an existing user. As the user has already been registered, only the account type and currency are optional for this call.
Cryptocurrency accounts are created through this route by specifying the account currency as a supported cryptocurrency, e.g. AccountCurrency: btc
. If you want to create a cryptocurrency account
using a seed, specify the field AccountSeed
.
Supported currencies are retrieved through GET /currencies
.
HTTP Request
POST https://demo.bvnk.co/account
Headers
X-Auth-Token: {auth token}
URL Parameters
Parameter | Required | Description |
---|---|---|
AccountType | false | Account type, one of savings, cheque, merchant, money-market, cd, ira, rcp, credit, mortgage, loan. Default cheque. |
AccountCurrency | false | Account currency which must be valid according to list retrieved from GET /currencies . Will default to system default. |
AccountSeed | false | Seed used to create a cryptocurrency account from. |
Get All Accounts By ID
curl -X GET \
https://demo.bvnk.co/account/000000-0000-001 \
-H 'cache-control: no-cache' \
-H 'postman-token: 97cb1918-d4c2-51d9-c105-edd0e1b81a4c' \
-H 'x-auth-token: 870b08c5-b45b-4e7b-95ac-779cad191939'
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/account/000000-0000-001"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-auth-token", "870b08c5-b45b-4e7b-95ac-779cad191939")
req.Header.Add("cache-control", "no-cache")
req.Header.Add("postman-token", "a215a2c3-85af-2c09-7626-a64fe9f224cb")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.get("https://demo.bvnk.co/account/000000-0000-001")
.header("x-auth-token", "870b08c5-b45b-4e7b-95ac-779cad191939")
.header("cache-control", "no-cache")
.header("postman-token", "616dbcd8-cd43-2774-d3ed-96c7d8cfa2e7")
.asString();
var request = require("request");
var options = { method: 'GET',
url: 'https://demo.bvnk.co/account/000000-0000-001',
headers:
{ 'postman-token': 'ef32670c-55a6-21ca-e2be-2ff8cd27b022',
'cache-control': 'no-cache',
'x-auth-token': '870b08c5-b45b-4e7b-95ac-779cad191939' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "https://demo.bvnk.co/account/000000-0000-001"
headers = {
'x-auth-token': "870b08c5-b45b-4e7b-95ac-779cad191939",
'cache-control': "no-cache",
'postman-token': "24facbd1-9605-75ee-ca4b-510230bc3292"
}
response = requests.request("GET", url, headers=headers)
print(response.text)
Successful response:
{
"response": [
"50d60fcb-e579-4432-bf36-d0167e381376",
"c1b338ce-8869-4615-bb33-10efc7c338e5",
"a913711e-9477-4cdf-a5aa-e312a710e9be",
...
]
}
Error response:
{
"error": "Account not found"
}
This endpoint returns a JSON array of all account numbers linked to a given user through their identification number.
HTTP Request
GET https://demo.bvnk.co/account/{ID number}
Headers
X-Auth-Token: {auth token}
URL Parameters
Parameter | Required | Description |
---|
This request requires no parameters.
Get Account Holder
curl -X GET \
https://demo.bvnk.co/accountHolder/ \
-H 'cache-control: no-cache' \
-H 'postman-token: 72a0650b-4fe2-9932-f26f-a2f092f9fec0' \
-H 'x-auth-token: 870b08c5-b45b-4e7b-95ac-779cad191939'
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/accountHolder/"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-auth-token", "870b08c5-b45b-4e7b-95ac-779cad191939")
req.Header.Add("cache-control", "no-cache")
req.Header.Add("postman-token", "0c190ce9-506b-4607-b898-ec96edd58b34")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.get("https://demo.bvnk.co/accountHolder/")
.header("x-auth-token", "870b08c5-b45b-4e7b-95ac-779cad191939")
.header("cache-control", "no-cache")
.header("postman-token", "206807d9-28cc-a40a-5f30-3e96f8425052")
.asString();
var request = require("request");
var options = { method: 'GET',
url: 'https://demo.bvnk.co/accountHolder/',
headers:
{ 'postman-token': '36ab9a2e-dcd5-b83f-c890-f1e78695e9fe',
'cache-control': 'no-cache',
'x-auth-token': '870b08c5-b45b-4e7b-95ac-779cad191939' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "https://demo.bvnk.co/accountHolder/"
headers = {
'x-auth-token': "870b08c5-b45b-4e7b-95ac-779cad191939",
'cache-control': "no-cache",
'postman-token': "38ae7044-a0c3-8bd1-5557-77b3e2ca7a40"
}
response = requests.request("GET", url, headers=headers)
print(response.text)
Successful response:
{
"response": {
"GivenName": "Test",
"FamilyName": "User1",
"DateOfBirth": "1900-01-01",
"IdentificationNumber": "555123412345",
"ContactNumber1": "UserContactNumber",
"ContactNumber2": "",
"EmailAddress": "test@user.com",
"AddressLine1": "Address 1",
"AddressLine2": "Address 2",
"AddressLine3": "Address 3",
"PostalCode": "1234",
"Country": "GB",
"ExchangeCustomer": false,
"UserRole": "default",
"Merchant": "",
"Customer": "",
"CustomerType": "",
"CustomerMetaID": "",
"CustomFields": null
}
}
Error response:
{
"error": "Could not retrieve account details"
}
This endpoint returns the details of the current user.
HTTP Request
GET https://demo.bvnk.co/accountHolder/
Headers
X-Auth-Token: {auth token}
URL Parameters
Parameter | Required | Description |
---|
This request requires no parameters.
Get All Users
curl -X GET \
https://demo.bvnk.co/account/user \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json' \
-H 'Postman-Token: 2e3e1e5d-6f77-bfef-7e53-5606f86bca97' \
-H 'X-Auth-Token: 8400a09e-7676-4aa3-bce0-57a216b7f1b0'
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/account/user"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Content-Type", "application/json")
req.Header.Add("X-Auth-Token", "8400a09e-7676-4aa3-bce0-57a216b7f1b0")
req.Header.Add("Cache-Control", "no-cache")
req.Header.Add("Postman-Token", "a2252eec-ac2b-3fde-3a5d-d01b6bb50de7")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.get("https://demo.bvnk.co/account/user")
.header("Content-Type", "application/json")
.header("X-Auth-Token", "8400a09e-7676-4aa3-bce0-57a216b7f1b0")
.header("Cache-Control", "no-cache")
.header("Postman-Token", "51b7d8f2-eda9-b59e-df2d-dadb2ab6a5f1")
.asString();
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://demo.bvnk.co/account/user");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.setRequestHeader("X-Auth-Token", "8400a09e-7676-4aa3-bce0-57a216b7f1b0");
xhr.setRequestHeader("Cache-Control", "no-cache");
xhr.setRequestHeader("Postman-Token", "6bfd8d10-46a0-8eea-73b2-89c746d47cb4");
xhr.send(data);
import requests
url = "https://demo.bvnk.co/account/user"
headers = {
'Content-Type': "application/json",
'X-Auth-Token': "8400a09e-7676-4aa3-bce0-57a216b7f1b0",
'Cache-Control': "no-cache",
'Postman-Token': "5350373e-18dd-e5a3-c71d-65c4cc449bfc"
}
response = requests.request("GET", url, headers=headers)
print(response.text)
Successful response:
{
"response": [{
"GivenName": "Customer",
"FamilyName": "Director",
"DateOfBirth": "1900-01-01",
"IdentificationNumber": "19000101-1234-007",
"ContactNumber1": "555-555-0007",
"ContactNumber2": "DIAL_PREFIX800-test-fax2",
"EmailAddress": "test7@bvnk.co",
"AddressLine1": "Address 1",
"AddressLine2": "Address 2",
"AddressLine3": "Address 3",
"PostalCode": "1234",
"Country": "AO",
"ExchangeCustomer": false,
"UserRole": "customer",
"Merchant": "9400ae23-8fd6-4062-be6d-0c417051fc3b",
"Customer": "ee99b544-6560-44b6-a68b-fc95300b0145",
"CustomerType": "",
"CustomerMetaID": "",
"CustomFields": {
"AddressCity": "Test",
"AddressComplexName": "Test",
"AddressProvince": "Test",
"AddressStreetName": "Test",
"AddressStreetNumber": "Test",
"AddressSuburb": "Test",
"AddressUnitNo": "Test",
"City": "Test",
"ComplexName": "Test",
"ContactnumberMobile": "0800-test-mobile3",
"DateOfBirth": "1900-01-01",
"EthnicGroup": "Caucasian",
"FullName": "Paul P. Coulson",
"Gender": "Male",
"HomeLanguage": "English",
"IDType": "Driver License",
"IDexipiry": "2020-01-01",
"Initials": "P.C.",
"MaritalStatus": "Single",
"Nationality": "United Kingdom",
"PreferredName": "Mr. Coulson",
"Province": "Test",
"StreetName": "Test",
"StreetNumber": "Test",
"Suburb": "Test",
"Title": "MR",
"UnitNo": "Test",
"isLocalResident": "Y"
}
}, {
"GivenName": "Customer1",
"FamilyName": "Admin",
"DateOfBirth": "1900-01-01",
"IdentificationNumber": "19000101-1234-008",
"ContactNumber1": "555-555-0009",
"ContactNumber2": "555555-4328",
"EmailAddress": "test8@bvnk.co",
"AddressLine1": "Address 1",
"AddressLine2": "Address 2",
"AddressLine3": "Address 3",
"PostalCode": "1234",
"Country": "AO",
"ExchangeCustomer": false,
"UserRole": "customer_admin",
"Merchant": "9400ae23-8fd6-4062-be6d-0c417051fc3b",
"Customer": "ee99b544-6560-44b6-a68b-fc95300b0145",
"CustomerType": "",
"CustomerMetaID": "",
"CustomFields": null
}, {
"GivenName": "Customer 1",
"FamilyName": "Employee",
"DateOfBirth": "1900-01-01",
"IdentificationNumber": "19000101-1234-009",
"ContactNumber1": "555-555-0010",
"ContactNumber2": "555555-4397",
"EmailAddress": "test9@bvnk.co",
"AddressLine1": "Address 1",
"AddressLine2": "Address 2",
"AddressLine3": "Address 3",
"PostalCode": "1234",
"Country": "AO",
"ExchangeCustomer": false,
"UserRole": "customer_staff",
"Merchant": "9400ae23-8fd6-4062-be6d-0c417051fc3b",
"Customer": "ee99b544-6560-44b6-a68b-fc95300b0145",
"CustomerType": "",
"CustomerMetaID": "",
"CustomFields": null
}, {
"GivenName": "Customer1 Subaccount",
"FamilyName": "Director",
"DateOfBirth": "1900-01-01",
"IdentificationNumber": "19000101-1234-010",
"ContactNumber1": "555-555-0012",
"ContactNumber2": "DIAL_PREFIX800-test1-fax2",
"EmailAddress": "test11@bvnk.co",
"AddressLine1": "Address 1",
"AddressLine2": "Address 2",
"AddressLine3": "Address 3",
"PostalCode": "1234",
"Country": "AO",
"ExchangeCustomer": false,
"UserRole": "customer_subaccount",
"Merchant": "9400ae23-8fd6-4062-be6d-0c417051fc3b",
"Customer": "ee99b544-6560-44b6-a68b-fc95300b0145",
"CustomerType": "",
"CustomerMetaID": "",
"CustomFields": null
}]
}
Error response:
{
"error": "error message"
}
This endpoint returns a collection of all users that the current user has permissions to view.
HTTP Request
GET https://demo.bvnk.co/account/user
Headers
X-Auth-Token: {auth token}
URL Parameters
Parameter | Required | Description |
---|
This request requires no parameters.
Get All Accounts (owned by current user)
curl -X GET \
https://demo.bvnk.co/account \
-H 'cache-control: no-cache' \
-H 'postman-token: fee216a0-ab05-9344-b688-2354c0f615df' \
-H 'x-auth-token: 870b08c5-b45b-4e7b-95ac-779cad191939'
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/account"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-auth-token", "870b08c5-b45b-4e7b-95ac-779cad191939")
req.Header.Add("cache-control", "no-cache")
req.Header.Add("postman-token", "76cfe032-6c2c-faa4-3ade-d19efdf0095f")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.get("https://demo.bvnk.co/account")
.header("x-auth-token", "870b08c5-b45b-4e7b-95ac-779cad191939")
.header("cache-control", "no-cache")
.header("postman-token", "f684bff8-3acd-ce9c-5f51-e511b89651e1")
.asString();
var request = require("request");
var options = { method: 'GET',
url: 'https://demo.bvnk.co/account',
headers:
{ 'postman-token': '9a020860-4e1d-f5cb-696e-e70e21827fde',
'cache-control': 'no-cache',
'x-auth-token': '870b08c5-b45b-4e7b-95ac-779cad191939' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "https://demo.bvnk.co/account"
headers = {
'x-auth-token': "870b08c5-b45b-4e7b-95ac-779cad191939",
'cache-control': "no-cache",
'postman-token': "7a622071-b9b9-2bce-45a0-a894a0c2c59f"
}
response = requests.request("GET", url, headers=headers)
print(response.text)
This route will return all user's account details. If the account is a cryptocurrency account, the additional
field WalletAddress
will be returned. This is not a static value.
Successful response:
{
"response": [
{
"Account": {
"AccountNumber": "90c68cb4-e44d-42c7-9b03-1b3845636e60",
"BankNumber": "a0299975-b8e2-4358-8f1a-911ee12dbaac",
"AccountHolderName": "User1,Test",
"AccountBalance": "0",
"Overdraft": "0",
"AvailableBalance": "0",
"Type": "",
"Currency": "bct",
"CurrencyType": "",
"Timestamp": 0,
"WalletAddress": "mfeyrbigCqw6NDzZXATkyic5Jd8ZUieTuA",
"AccountHolderID": ""
},
"AccountMeta": {
"bvnk_account_name": "calypso calypso",
"bvnk_private_resource": "yes",
"namespace": "user_8604125138082100"
}
},
{
"Account": {
"AccountNumber": "165482e1-0acd-4b3c-b737-3c3b67203128",
"BankNumber": "a0299975-b8e2-4358-8f1a-911ee12dbaac",
"AccountHolderName": "User1,Test",
"AccountBalance": "0",
"Overdraft": "0",
"AvailableBalance": "0",
"Type": "",
"Currency": "bct",
"CurrencyType": "",
"Timestamp": 0,
"WalletAddress": "moa42qAWq6B5zM7mChuaCqTGX6s9jSesm4",
"AccountHolderID": ""
},
"AccountMeta": {
"bvnk_account_name": "east athena",
"bvnk_private_resource": "yes",
"namespace": "user_8604125138082100"
}
},
{
"Account": {
"AccountNumber": "6865a99a-12c0-470f-b505-4582013ba7cb",
"BankNumber": "a0299975-b8e2-4358-8f1a-911ee12dbaac",
"AccountHolderName": "Test Merchant Ltd",
"AccountBalance": "0",
"Overdraft": "0",
"AvailableBalance": "0",
"Type": "",
"Currency": "usd",
"CurrencyType": "",
"Timestamp": 0,
"WalletAddress": "",
"AccountHolderID": ""
},
"AccountMeta": {
"bvnk_account_name": "alfred apple",
"namespace": "user_8604125138082100"
}
},
{
"Account": {
"AccountNumber": "8e8968e5-c3b9-49a5-b30f-a671f966243f",
"BankNumber": "a0299975-b8e2-4358-8f1a-911ee12dbaac",
"AccountHolderName": "User1,Test",
"AccountBalance": "0",
"Overdraft": "0",
"AvailableBalance": "0",
"Type": "",
"Currency": "zar",
"CurrencyType": "",
"Timestamp": 0,
"WalletAddress": "",
"AccountHolderID": ""
},
"AccountMeta": {
"bvnk_account_name": "east echo",
"bvnk_private_resource": "yes",
"namespace": "user_8604125138082100"
}
}
]
}
Error response:
{
"error": "Could not retrieve account listing"
}
HTTP Request
GET https://demo.bvnk.co/account/
Headers
X-Auth-Token: {auth token}
URL Parameters
Parameter | Required | Description |
---|
This request requires no parameters.
Get All Accounts
curl -X GET \
https://demo.bvnk.co/account/all \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json' \
-H 'Postman-Token: f1858b57-6bab-cf56-ba54-4044e4260481' \
-H 'X-Auth-Token: 8400a09e-7676-4aa3-bce0-57a216b7f1b0'
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/account/all"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Content-Type", "application/json")
req.Header.Add("X-Auth-Token", "8400a09e-7676-4aa3-bce0-57a216b7f1b0")
req.Header.Add("Cache-Control", "no-cache")
req.Header.Add("Postman-Token", "1de3852a-6bc9-31b4-528f-3e2260a1481b")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.get("https://demo.bvnk.co/account/all")
.header("Content-Type", "application/json")
.header("X-Auth-Token", "8400a09e-7676-4aa3-bce0-57a216b7f1b0")
.header("Cache-Control", "no-cache")
.header("Postman-Token", "23775726-4bfe-9b5e-4e7c-f080b0cbaff1")
.asString();
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://demo.bvnk.co/account/all");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.setRequestHeader("X-Auth-Token", "8400a09e-7676-4aa3-bce0-57a216b7f1b0");
xhr.setRequestHeader("Cache-Control", "no-cache");
xhr.setRequestHeader("Postman-Token", "3c992704-078e-03bd-9488-dbd938f7e86d");
xhr.send(data);
import requests
url = "https://demo.bvnk.co/account/all"
headers = {
'Content-Type': "application/json",
'X-Auth-Token': "8400a09e-7676-4aa3-bce0-57a216b7f1b0",
'Cache-Control': "no-cache",
'Postman-Token': "15e5a727-6e94-7ada-0233-1abc37938c02"
}
response = requests.request("GET", url, headers=headers)
print(response.text)
This endpoint returns a collection of all accounts that the current user has permissions to view. If an account is a cryptocurrency account, the additional
field WalletAddress
will be returned. This is not a static value.
Successful response:
{
"response": [
{
"Account": {
"AccountNumber": "90c68cb4-e44d-42c7-9b03-1b3845636e60",
"BankNumber": "a0299975-b8e2-4358-8f1a-911ee12dbaac",
"AccountHolderName": "User1,Test",
"AccountBalance": "0",
"Overdraft": "0",
"AvailableBalance": "0",
"Type": "",
"Currency": "bct",
"CurrencyType": "",
"Timestamp": 0,
"WalletAddress": "mfeyrbigCqw6NDzZXATkyic5Jd8ZUieTuA",
"AccountHolderID": ""
},
"AccountMeta": {
"bvnk_account_name": "calypso calypso",
"bvnk_private_resource": "yes",
"namespace": "user_8604125138082100"
}
},
{
"Account": {
"AccountNumber": "165482e1-0acd-4b3c-b737-3c3b67203128",
"BankNumber": "a0299975-b8e2-4358-8f1a-911ee12dbaac",
"AccountHolderName": "User1,Test",
"AccountBalance": "0",
"Overdraft": "0",
"AvailableBalance": "0",
"Type": "",
"Currency": "bct",
"CurrencyType": "",
"Timestamp": 0,
"WalletAddress": "moa42qAWq6B5zM7mChuaCqTGX6s9jSesm4",
"AccountHolderID": ""
},
"AccountMeta": {
"bvnk_account_name": "east athena",
"bvnk_private_resource": "yes",
"namespace": "user_8604125138082100"
}
},
{
"Account": {
"AccountNumber": "6865a99a-12c0-470f-b505-4582013ba7cb",
"BankNumber": "a0299975-b8e2-4358-8f1a-911ee12dbaac",
"AccountHolderName": "Test Merchant Ltd",
"AccountBalance": "0",
"Overdraft": "0",
"AvailableBalance": "0",
"Type": "",
"Currency": "usd",
"CurrencyType": "",
"Timestamp": 0,
"WalletAddress": "",
"AccountHolderID": ""
},
"AccountMeta": {
"bvnk_account_name": "alfred apple",
"namespace": "user_8604125138082100"
}
},
{
"Account": {
"AccountNumber": "8e8968e5-c3b9-49a5-b30f-a671f966243f",
"BankNumber": "a0299975-b8e2-4358-8f1a-911ee12dbaac",
"AccountHolderName": "User1,Test",
"AccountBalance": "0",
"Overdraft": "0",
"AvailableBalance": "0",
"Type": "",
"Currency": "zar",
"CurrencyType": "",
"Timestamp": 0,
"WalletAddress": "",
"AccountHolderID": ""
},
"AccountMeta": {
"bvnk_account_name": "east echo",
"bvnk_private_resource": "yes",
"namespace": "user_8604125138082100"
}
}
]
}
Error response:
{
"error": "Could not retrieve account listing"
}
HTTP Request
GET https://demo.bvnk.co/account/all
Headers
X-Auth-Token: {auth token}
URL Parameters
Parameter | Required | Description |
---|
This request requires no parameters.
Get Account By Account Number
curl -X GET \
https://demo.bvnk.co/accountByNumber/e0e712e4-b5e2-4b03-a401-1c828e0f2726 \
-H 'cache-control: no-cache' \
-H 'postman-token: b192e455-192d-c66a-360a-24ce519a3a45' \
-H 'x-auth-token: 870b08c5-b45b-4e7b-95ac-779cad191939'
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/accountByNumber/e0e712e4-b5e2-4b03-a401-1c828e0f2726"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-auth-token", "870b08c5-b45b-4e7b-95ac-779cad191939")
req.Header.Add("cache-control", "no-cache")
req.Header.Add("postman-token", "3897be5a-22e9-beb8-181d-0a6c2c74b0ef")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.get("https://demo.bvnk.co/accountByNumber/e0e712e4-b5e2-4b03-a401-1c828e0f2726")
.header("x-auth-token", "870b08c5-b45b-4e7b-95ac-779cad191939")
.header("cache-control", "no-cache")
.header("postman-token", "55419403-25d1-6214-1c4a-42f2bb4870c9")
.asString();
var request = require("request");
var options = { method: 'GET',
url: 'https://demo.bvnk.co/accountByNumber/e0e712e4-b5e2-4b03-a401-1c828e0f2726',
headers:
{ 'postman-token': '4796f3fc-1afc-7ef1-4ee6-a1442ab38181',
'cache-control': 'no-cache',
'x-auth-token': '870b08c5-b45b-4e7b-95ac-779cad191939' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "https://demo.bvnk.co/accountByNumber/e0e712e4-b5e2-4b03-a401-1c828e0f2726"
headers = {
'x-auth-token': "870b08c5-b45b-4e7b-95ac-779cad191939",
'cache-control': "no-cache",
'postman-token': "245cbc92-278c-9ee3-3df9-4f4e47a23a99"
}
response = requests.request("GET", url, headers=headers)
print(response.text)
Successful response:
{
"response": {
"AccountNumber": "e0e712e4-b5e2-4b03-a401-1c828e0f2726",
"BankNumber": "a0299975-b8e2-4358-8f1a-911ee12dbaac",
"AccountHolderName": "bvnk,Alice",
"AccountBalance": "0",
"Overdraft": "0",
"AvailableBalance": "0",
"Type": "cheque",
"Timestamp": 0
}
}
Error response:
{
"error": "User not authorized on this account"
}
This endpoint returns account information for a single account. This information is non-public as it includes balance details, and only the account holder may query their own account.
HTTP Request
GET https://demo.bvnk.co/account/{account number}
Headers
X-Auth-Token: {auth token}
URL Parameters
Parameter | Required | Description |
---|---|---|
AccountNumber | true | The account number to get information against. This must be an account number linked to the user. |
Get Account Holder By Account Number
curl -X GET \
https://demo.bvnk.co/accountHolderByNumber/e0e712e4-b5e2-4b03-a401-1c828e0f2726 \
-H 'cache-control: no-cache' \
-H 'postman-token: cf4dfd83-6ce1-26ce-90b8-f20763ea14a0' \
-H 'x-auth-token: 870b08c5-b45b-4e7b-95ac-779cad191939'
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/accountHolderByNumber/e0e712e4-b5e2-4b03-a401-1c828e0f2726"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-auth-token", "870b08c5-b45b-4e7b-95ac-779cad191939")
req.Header.Add("cache-control", "no-cache")
req.Header.Add("postman-token", "8090499a-a980-2fea-a5cb-f915c3980311")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.get("https://demo.bvnk.co/accountHolderByNumber/e0e712e4-b5e2-4b03-a401-1c828e0f2726")
.header("x-auth-token", "870b08c5-b45b-4e7b-95ac-779cad191939")
.header("cache-control", "no-cache")
.header("postman-token", "781e4fc1-c1ca-7a03-4b2a-ecdfbfe78ff6")
.asString();
var request = require("request");
var options = { method: 'GET',
url: 'https://demo.bvnk.co/accountHolderByNumber/e0e712e4-b5e2-4b03-a401-1c828e0f2726',
headers:
{ 'postman-token': '750e54d1-8180-f07b-e122-d630eb65a3e2',
'cache-control': 'no-cache',
'x-auth-token': '870b08c5-b45b-4e7b-95ac-779cad191939' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "https://demo.bvnk.co/accountHolderByNumber/e0e712e4-b5e2-4b03-a401-1c828e0f2726"
headers = {
'x-auth-token': "870b08c5-b45b-4e7b-95ac-779cad191939",
'cache-control': "no-cache",
'postman-token': "b52f4a80-3b52-cfef-6ce5-2e0bac123157"
}
response = requests.request("GET", url, headers=headers)
print(response.text)
Successful response:
{
"response": {
"AccountNumber": "e0e712e4-b5e2-4b03-a401-1c828e0f2726",
"BankNumber": "a0299975-b8e2-4358-8f1a-911ee12dbaac",
"AccountHolderName": "bvnk,Alice",
"AccountBalance": "0",
"Overdraft": "0",
"AvailableBalance": "0",
"Type": "cheque",
"Timestamp": 0
}
}
Error response:
{
"error": "Account not found"
}
This endpoint returns account details for a given account number with sensitive details removed. Use case: you receive a payment from an unknown source, you use this route to see who the sender is. This route is public, anyone can query for anyone's account number here.
HTTP Request
GET https://demo.bvnk.co/accountHolderByNumber/{account number}
Headers
X-Auth-Token: {auth token}
URL Parameters
Parameter | Required | Description |
---|---|---|
AccountNumber | true | The account number to get information against. This does not have to be an account number linked to the user. |
Get Holding Accounts
curl -X GET \
https://demo.bvnk.co/account/holding \
-H 'Cache-Control: no-cache' \
-H 'Postman-Token: aaa778a1-a48f-24fd-f3b3-77f1ee162675'
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/account/holding"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Cache-Control", "no-cache")
req.Header.Add("Postman-Token", "c9651785-bc4f-6038-9602-f1fada6cf3cf")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.get("https://demo.bvnk.co/account/holding")
.header("Cache-Control", "no-cache")
.header("Postman-Token", "dc489c31-9aee-a909-d21c-3c7e84544eca")
.asString();
var request = require("request");
var options = { method: 'GET',
url: 'https://demo.bvnk.co/account/holding',
headers:
{ 'Postman-Token': 'eea96f45-50bb-2ba0-4aed-11a9ea1438c8',
'Cache-Control': 'no-cache' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "https://demo.bvnk.co/account/holding"
headers = {
'Cache-Control': "no-cache",
'Postman-Token': "c5c7cde8-32b7-c902-9e41-7de6a1e4a6ac"
}
response = requests.request("GET", url, headers=headers)
print(response.text)
Successful response:
{
"response": [
{
"AccountNumber": "1a63e0d8-e20c-4b5b-b0ca-9233c4bdb923",
"BankNumber": "a0299975-b8e2-4358-8f1a-911ee12dbaac",
"AccountHolderName": "BVNK,BVNK",
"AccountBalance": "2.5977299213409424",
"Overdraft": "0",
"AvailableBalance": "2.5977299213409424",
"Type": "",
"Currency": "bct",
"CurrencyType": "",
"Timestamp": 0,
"WalletAddress": "mrsZbMkiJYiPfsDQm5kgWdtg2B8zAtBLt3"
},
...
Error response:
{
"error": "Error retrieving auth headers"
}
This endpoint returns a JSON array of all holding account details including balances. This endpoint requires basic authentication.
HTTP Request
GET https://demo.bvnk.co/account/holding
Headers
X-Auth-Token: {auth token}
Authorization: Basic {basic auth}
URL Parameters
Parameter | Required | Description |
---|
This request requires no parameters.
Add Push Token To User
curl -X POST \
https://demo.bvnk.co/accountPushToken \
-H 'cache-control: no-cache' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-H 'postman-token: f100c048-f95f-9e70-18da-2eb7b84ba993' \
-H 'x-auth-token: 870b08c5-b45b-4e7b-95ac-779cad191939' \
-F PushToken=test-push-token \
-F Platform=ios
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/accountPushToken"
payload := strings.NewReader("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"PushToken\"\r\n\r\ntest-push-token\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Platform\"\r\n\r\nios\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
req.Header.Add("x-auth-token", "870b08c5-b45b-4e7b-95ac-779cad191939")
req.Header.Add("cache-control", "no-cache")
req.Header.Add("postman-token", "e5d7def4-4690-9578-da6f-48e1f5e1666e")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.post("https://demo.bvnk.co/accountPushToken")
.header("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
.header("x-auth-token", "870b08c5-b45b-4e7b-95ac-779cad191939")
.header("cache-control", "no-cache")
.header("postman-token", "09ec05ba-d60a-2a59-06b8-3c4a4f6867b5")
.body("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"PushToken\"\r\n\r\ntest-push-token\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Platform\"\r\n\r\nios\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
.asString();
var request = require("request");
var options = { method: 'POST',
url: 'https://demo.bvnk.co/accountPushToken',
headers:
{ 'postman-token': '6f2eed35-da87-c40d-d7f4-8ac5b482280d',
'cache-control': 'no-cache',
'x-auth-token': '870b08c5-b45b-4e7b-95ac-779cad191939',
'content-type': 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' },
formData: { PushToken: 'test-push-token', Platform: 'ios' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "https://demo.bvnk.co/accountPushToken"
payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"PushToken\"\r\n\r\ntest-push-token\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Platform\"\r\n\r\nios\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
headers = {
'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
'x-auth-token': "870b08c5-b45b-4e7b-95ac-779cad191939",
'cache-control': "no-cache",
'postman-token': "f38f63ff-0cab-01f4-91ab-113057e1a79f"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
Successful response:
{
"response": ""
}
Error response:
{
"error": "Platform invalid"
}
This endpoint adds a push token to an account. This token will be used to send push notifications for any activity on any account the user has. Currently supported platforms are iOS, Android, Windows and BlackBerry.
HTTP Request
POST https://demo.bvnk.co/accountPushToken
Headers
X-Auth-Token: {auth token}
URL Parameters
Parameter | Required | Description |
---|---|---|
PushToken | true | The push token for the device |
Platform | true | The device type, e.g. ios, android, windows, blackberry, other |
Remove Push Token From User
curl -X DELETE \
https://demo.bvnk.co/accountPushToken \
-H 'cache-control: no-cache' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-H 'postman-token: b26ee081-ddf8-b422-9975-98bc089d1948' \
-H 'x-auth-token: 870b08c5-b45b-4e7b-95ac-779cad191939' \
-F PushToken=test-push-token \
-F Platform=ios
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/accountPushToken"
payload := strings.NewReader("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"PushToken\"\r\n\r\ntest-push-token\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Platform\"\r\n\r\nios\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
req, _ := http.NewRequest("DELETE", url, payload)
req.Header.Add("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
req.Header.Add("x-auth-token", "870b08c5-b45b-4e7b-95ac-779cad191939")
req.Header.Add("cache-control", "no-cache")
req.Header.Add("postman-token", "53593915-4b03-4acb-8bf0-c0581dcc36b8")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.delete("https://demo.bvnk.co/accountPushToken")
.header("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
.header("x-auth-token", "870b08c5-b45b-4e7b-95ac-779cad191939")
.header("cache-control", "no-cache")
.header("postman-token", "c47c614e-dae0-adb4-55e6-c2409a0e4190")
.body("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"PushToken\"\r\n\r\ntest-push-token\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Platform\"\r\n\r\nios\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
.asString();
var request = require("request");
var options = { method: 'DELETE',
url: 'https://demo.bvnk.co/accountPushToken',
headers:
{ 'postman-token': '50171080-85e7-566e-52e1-7395c5647e62',
'cache-control': 'no-cache',
'x-auth-token': '870b08c5-b45b-4e7b-95ac-779cad191939',
'content-type': 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' },
formData: { PushToken: 'test-push-token', Platform: 'ios' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "https://demo.bvnk.co/accountPushToken"
payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"PushToken\"\r\n\r\ntest-push-token\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Platform\"\r\n\r\nios\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
headers = {
'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
'x-auth-token': "870b08c5-b45b-4e7b-95ac-779cad191939",
'cache-control': "no-cache",
'postman-token': "d611505a-b26d-f5dc-ad7e-e853c58b1b0a"
}
response = requests.request("DELETE", url, data=payload, headers=headers)
print(response.text)
Successful response:
{
"response": ""
}
Error response:
{
"error": "Platform invalid"
}
This endpoint removes a push token from a user account.
HTTP Request
DEL https://demo.bvnk.co/accountPushToken
Headers
X-Auth-Token: {auth token}
URL Parameters
Parameter | Required | Description |
---|---|---|
PushToken | true | The push token for the device |
Platform | true | The device type, e.g. ios, android, windows, blackberry, other |
Search For An Account
curl -X POST \
https://demo.bvnk.co/account/search \
-H 'cache-control: no-cache' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-H 'postman-token: 5ab072e8-1c95-ac5a-2523-d57f9e5e6ea8' \
-H 'x-auth-token: 870b08c5-b45b-4e7b-95ac-779cad191939' \
-F Search=000000-0000-009
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/account/search"
payload := strings.NewReader("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Search\"\r\n\r\n000000-0000-009\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
req.Header.Add("x-auth-token", "870b08c5-b45b-4e7b-95ac-779cad191939")
req.Header.Add("cache-control", "no-cache")
req.Header.Add("postman-token", "3ca9067f-0a8e-661a-704a-b25194d410d8")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.post("https://demo.bvnk.co/account/search")
.header("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
.header("x-auth-token", "870b08c5-b45b-4e7b-95ac-779cad191939")
.header("cache-control", "no-cache")
.header("postman-token", "2e9143e7-4bf6-3da2-0dc1-8529666d7443")
.body("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Search\"\r\n\r\n000000-0000-009\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
.asString();
var request = require("request");
var options = { method: 'POST',
url: 'https://demo.bvnk.co/account/search',
headers:
{ 'postman-token': '4c98b2ed-b1f3-7505-e1fb-58197ad5405f',
'cache-control': 'no-cache',
'x-auth-token': '870b08c5-b45b-4e7b-95ac-779cad191939',
'content-type': 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' },
formData: { Search: '000000-0000-009' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "https://demo.bvnk.co/account/search"
payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Search\"\r\n\r\n000000-0000-009\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
headers = {
'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
'x-auth-token': "870b08c5-b45b-4e7b-95ac-779cad191939",
'cache-control': "no-cache",
'postman-token': "15ba3ed6-941a-5e31-de7f-a237659d5e44"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
Successful response:
{
"response": [
{
"GivenName": "Test",
"FamilyName": "User1",
"Accounts": [
{
"AccountNumber": "c4bf0336-64f9-4ada-a683-ee1c78ec75af",
"BankNumber": "a0299975-b8e2-4358-8f1a-911ee12dbaac",
"Type": "savings"
}
]
}
]
}
Error response:
{
"error": "Please provide a search term of at least 4 characters."
}
This endpoint performs a fuzzy match search for accounts on ID number, given name and family name, and an exact match search on email address.
HTTP Request
POST https://demo.bvnk.co/account/search
Headers
X-Auth-Token: {auth token}
URL Parameters
Parameter | Required | Description |
---|---|---|
Search | true | Term to search for. Must be at least 4 characters in length. |
Export seed with mnemonic
curl -X GET \
https://demo.bvnk.co/account/seed/7d05ab7f-0caf-4fc5-9381-d2f408575902 \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json' \
-H 'Postman-Token: 8da0fb0a-214c-26e0-37eb-d919e566eb0a' \
-H 'X-Auth-Token: ee2cd9fb-a165-40c7-95af-c05d4d5f8117'
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/account/seed/7d05ab7f-0caf-4fc5-9381-d2f408575902"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Content-Type", "application/json")
req.Header.Add("X-Auth-Token", "ee2cd9fb-a165-40c7-95af-c05d4d5f8117")
req.Header.Add("Cache-Control", "no-cache")
req.Header.Add("Postman-Token", "1acc28eb-ad0b-b835-e958-225eee991152")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.get("https://demo.bvnk.co/account/seed/7d05ab7f-0caf-4fc5-9381-d2f408575902")
.header("Content-Type", "application/json")
.header("X-Auth-Token", "ee2cd9fb-a165-40c7-95af-c05d4d5f8117")
.header("Cache-Control", "no-cache")
.header("Postman-Token", "78f5b49f-3ddc-2420-491b-160f8b5595a2")
.asString();
var request = require("request");
var options = { method: 'GET',
url: 'https://demo.bvnk.co/account/seed/7d05ab7f-0caf-4fc5-9381-d2f408575902',
headers:
{ 'Postman-Token': '84f78466-315c-3a64-5d56-056db5dcb668',
'Cache-Control': 'no-cache',
'X-Auth-Token': 'ee2cd9fb-a165-40c7-95af-c05d4d5f8117',
'Content-Type': 'application/json' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "https://demo.bvnk.co/account/seed/7d05ab7f-0caf-4fc5-9381-d2f408575902"
headers = {
'Content-Type': "application/json",
'X-Auth-Token': "ee2cd9fb-a165-40c7-95af-c05d4d5f8117",
'Cache-Control': "no-cache",
'Postman-Token': "4ababbca-5e84-1a7b-9c05-a658ed53b4e7"
}
response = requests.request("GET", url, headers=headers)
print(response.text)
Successful response:
{
"response": {
"Seed": "fae26ee96db0db2fb77475b0ed0e96a47efaeeab20c021b432e10a1743342e3706127fa07b8f70fceefbeaa58e00aada2594d5af235af428c6c8013c126ad8tb",
"Mnemonic": "miracle hello television custom apple asthma loud cloud middle bundle many retire"
}
}
Error response:
{
"error": "Wallet not found"
}
This endpoint will return a seed for a given cryptocurrency wallet linked to an account.
HTTP Request
GET https://demo.bvnk.co/account/seed/{account}
Headers
X-Auth-Token: {auth token}
URL Parameters
Parameter | Required | Description |
---|---|---|
AccountNumber | true | Account number to get seed for. This account must be a cryptocurrency account. |
Transactions
Credit Transfer
curl -X POST \
https://demo.bvnk.co/transaction/credit \
-H 'cache-control: no-cache' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-H 'postman-token: f7befd14-cd7b-52be-b7f4-f500fde4c55e' \
-H 'x-auth-token: 870b08c5-b45b-4e7b-95ac-779cad191939' \
-F SenderDetails=e0e712e4-b5e2-4b03-a401-1c828e0f2726@ \
-F RecipientDetails=9bd356cd-1c54-498d-b6b5-26a8d0a17940@ \
-F Amount=20 \
-F Lat=11.0 \
-F Lon=12.0 \
-F 'Desc=Test desc'
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/transaction/credit"
payload := strings.NewReader("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"SenderDetails\"\r\n\r\ne0e712e4-b5e2-4b03-a401-1c828e0f2726@\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"RecipientDetails\"\r\n\r\n9bd356cd-1c54-498d-b6b5-26a8d0a17940@\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Amount\"\r\n\r\n20\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Lat\"\r\n\r\n11.0\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Lon\"\r\n\r\n12.0\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Desc\"\r\n\r\nTest desc\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
req.Header.Add("x-auth-token", "870b08c5-b45b-4e7b-95ac-779cad191939")
req.Header.Add("cache-control", "no-cache")
req.Header.Add("postman-token", "775c69ac-4a95-7ec6-69a6-f5be3a2651b7")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.post("https://demo.bvnk.co/transaction/credit")
.header("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
.header("x-auth-token", "870b08c5-b45b-4e7b-95ac-779cad191939")
.header("cache-control", "no-cache")
.header("postman-token", "d19e7517-64fc-4ed4-796c-02138a67b5e9")
.body("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"SenderDetails\"\r\n\r\ne0e712e4-b5e2-4b03-a401-1c828e0f2726@\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"RecipientDetails\"\r\n\r\n9bd356cd-1c54-498d-b6b5-26a8d0a17940@\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Amount\"\r\n\r\n20\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Lat\"\r\n\r\n11.0\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Lon\"\r\n\r\n12.0\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Desc\"\r\n\r\nTest desc\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
.asString();
var request = require("request");
var options = { method: 'POST',
url: 'https://demo.bvnk.co/transaction/credit',
headers:
{ 'postman-token': 'f1f35f94-3486-2c89-2adb-3d4b1f2458a8',
'cache-control': 'no-cache',
'x-auth-token': '870b08c5-b45b-4e7b-95ac-779cad191939',
'content-type': 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' },
formData:
{ SenderDetails: 'e0e712e4-b5e2-4b03-a401-1c828e0f2726@',
RecipientDetails: '9bd356cd-1c54-498d-b6b5-26a8d0a17940@',
Amount: '20',
Lat: '11.0',
Lon: '12.0',
Desc: 'Test desc' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "https://demo.bvnk.co/transaction/credit"
payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"SenderDetails\"\r\n\r\ne0e712e4-b5e2-4b03-a401-1c828e0f2726@\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"RecipientDetails\"\r\n\r\n9bd356cd-1c54-498d-b6b5-26a8d0a17940@\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Amount\"\r\n\r\n20\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Lat\"\r\n\r\n11.0\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Lon\"\r\n\r\n12.0\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Desc\"\r\n\r\nTest desc\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
headers = {
'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
'x-auth-token': "870b08c5-b45b-4e7b-95ac-779cad191939",
'cache-control': "no-cache",
'postman-token': "b96a191b-7635-6214-fd92-0f63875a8ee5"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
Successful response:
{
"response": "490923"
}
Error response:
{
"error": "Insufficient funds available"
}
This endpoint does a credit transfer from one account to another. Both accounts must exist on the system, and the sender account must be an account that is yours.
The sender and recipient accounts can be in any currency and will be automatically converted between them. This allows for the sender to send BTC and the recipient to receive USD or visa-versa.
For cryptocurrency payments, one account must be of CurrencyType
that is a cryptocurrency. External cryptocurrency payments can also be made in this call
by specifying the RecipientDetails
as a wallet address.
HTTP Request
POST https://demo.bvnk.co/transaction/credit
Headers
X-Auth-Token: {auth token}
URL Parameters
Parameter | Required | Description |
---|---|---|
SenderDetails | true | The sender account details. Follows format senderAccountNumber@bankAccountNumber . Bank can be left blank and will default to given instance. This must be your account |
RecipientDetails | true | The recipient account details. Follows format senderAccountNumber@bankAccountNumber . Bank can be left blank and will default to given instance. This can also be a wallet address, e.g. "RecipientDetails":"mpVWwEnRacX3tHwSFxZUKv6D5mF3p9Dr21@" . |
Amount | true | Amount to transfer |
Lat | false | Latitude of transaction |
Lon | false | Longitude of transaction |
Desc | false | Description of transaction, emojis welcome 🎉💵⚡️ |
Deposit
curl -X POST \
https://demo.bvnk.co/transaction/deposit \
-H 'authorization: Basic ZGVtb0J6QSs2Zz09OldTblJpRmFQMHduM2w4M1k5V0I1QTFJS25FN0Jlb3dV' \
-H 'cache-control: no-cache' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-H 'postman-token: 0ccd12db-6487-a26d-e8ac-95ce566789da' \
-F AccountDetails=e0e712e4-b5e2-4b03-a401-1c828e0f2726@ \
-F Amount=120 \
-F Lat=10. \
-F Lon=10. \
-F 'Desc=🍊'
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/transaction/deposit"
payload := strings.NewReader("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountDetails\"\r\n\r\ne0e712e4-b5e2-4b03-a401-1c828e0f2726@\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Amount\"\r\n\r\n120\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Lat\"\r\n\r\n10.\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Lon\"\r\n\r\n10.\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Desc\"\r\n\r\n🍊\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
req.Header.Add("authorization", "Basic ZGVtb0J6QSs2Zz09OldTblJpRmFQMHduM2w4M1k5V0I1QTFJS25FN0Jlb3dV")
req.Header.Add("cache-control", "no-cache")
req.Header.Add("postman-token", "d4b50549-9f26-1d5b-b59e-39f8f96dfa2b")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.post("https://demo.bvnk.co/transaction/deposit")
.header("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
.header("authorization", "Basic ZGVtb0J6QSs2Zz09OldTblJpRmFQMHduM2w4M1k5V0I1QTFJS25FN0Jlb3dV")
.header("cache-control", "no-cache")
.header("postman-token", "5e83779e-fab9-f5b9-6441-e0f0ac7706bd")
.body("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountDetails\"\r\n\r\ne0e712e4-b5e2-4b03-a401-1c828e0f2726@\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Amount\"\r\n\r\n120\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Lat\"\r\n\r\n10.\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Lon\"\r\n\r\n10.\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Desc\"\r\n\r\n🍊\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
.asString();
var request = require("request");
var options = { method: 'POST',
url: 'https://demo.bvnk.co/transaction/deposit',
headers:
{ 'postman-token': '319b6653-5828-03eb-7405-6ca22a36eda4',
'cache-control': 'no-cache',
authorization: 'Basic ZGVtb0J6QSs2Zz09OldTblJpRmFQMHduM2w4M1k5V0I1QTFJS25FN0Jlb3dV',
'content-type': 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' },
formData:
{ AccountDetails: 'e0e712e4-b5e2-4b03-a401-1c828e0f2726@',
Amount: '120',
Lat: '10.',
Lon: '10.',
Desc: '🍊' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "https://demo.bvnk.co/transaction/deposit"
payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountDetails\"\r\n\r\ne0e712e4-b5e2-4b03-a401-1c828e0f2726@\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Amount\"\r\n\r\n120\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Lat\"\r\n\r\n10.\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Lon\"\r\n\r\n10.\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Desc\"\r\n\r\n🍊\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
headers = {
'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
'authorization': "Basic ZGVtb0J6QSs2Zz09OldTblJpRmFQMHduM2w4M1k5V0I1QTFJS25FN0Jlb3dV",
'cache-control': "no-cache",
'postman-token': "15afb644-a65f-cf85-7d2a-ff9fd15e52ad"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
Successfull response:
{
"response": "490922"
}
Error response:
{
"error": "Basic Auth incorrect. Access denied."
}
This endpoint initiates a deposit against an account. Basic Auth is required for this route, as it is an admin route. Any account can be loaded with any amount. Please see basic auth section for more.
The response is the id
number of the transaction.
HTTP Request
POST https://demo.bvnk.co/transaction/deposit
Headers
Authorization: Basic {basic auth}
URL Parameters
Parameter | Required | Description |
---|---|---|
AccountDetails | true | Account to be loaded. Follows format senderAccountNumber@bankAccountNumber . Bank can be left blank and will default to given instance |
Amount | true | Amount to be loaded |
Lat | false | Latitude of transaction |
Lon | false | Longitude of transaction |
Desc | false | Description of transaction |
Withdrawal
curl -X POST \
https://demo.bvnk.co/transaction/withdrawal \
-H 'authorization: Basic ZGVtb0J6QSs2Zz09OldTblJpRmFQMHduM2w4M1k5V0I1QTFJS25FN0Jlb3dV' \
-H 'cache-control: no-cache' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-H 'postman-token: 438c0de4-54f6-d0ff-dc08-b83450021391' \
-F AccountDetails=e0e712e4-b5e2-4b03-a401-1c828e0f2726@ \
-F Amount=8 \
-F Lat=10. \
-F Lon=10. \
-F 'Desc=🍊'
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/transaction/withdrawal"
payload := strings.NewReader("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountDetails\"\r\n\r\ne0e712e4-b5e2-4b03-a401-1c828e0f2726@\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Amount\"\r\n\r\n8\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Lat\"\r\n\r\n10.\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Lon\"\r\n\r\n10.\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Desc\"\r\n\r\n🍊\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
req.Header.Add("authorization", "Basic ZGVtb0J6QSs2Zz09OldTblJpRmFQMHduM2w4M1k5V0I1QTFJS25FN0Jlb3dV")
req.Header.Add("cache-control", "no-cache")
req.Header.Add("postman-token", "b4b7b006-71de-91d5-3479-bb407a73bf43")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.post("https://demo.bvnk.co/transaction/withdrawal")
.header("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
.header("authorization", "Basic ZGVtb0J6QSs2Zz09OldTblJpRmFQMHduM2w4M1k5V0I1QTFJS25FN0Jlb3dV")
.header("cache-control", "no-cache")
.header("postman-token", "e8fd4718-79e5-3aa0-398d-90009d7f6d6d")
.body("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountDetails\"\r\n\r\ne0e712e4-b5e2-4b03-a401-1c828e0f2726@\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Amount\"\r\n\r\n8\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Lat\"\r\n\r\n10.\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Lon\"\r\n\r\n10.\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Desc\"\r\n\r\n🍊\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
.asString();
var request = require("request");
var options = { method: 'POST',
url: 'https://demo.bvnk.co/transaction/withdrawal',
headers:
{ 'postman-token': '4814f39e-8beb-e819-93b2-739c5f62be26',
'cache-control': 'no-cache',
authorization: 'Basic ZGVtb0J6QSs2Zz09OldTblJpRmFQMHduM2w4M1k5V0I1QTFJS25FN0Jlb3dV',
'content-type': 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' },
formData:
{ AccountDetails: 'e0e712e4-b5e2-4b03-a401-1c828e0f2726@',
Amount: '8',
Lat: '10.',
Lon: '10.',
Desc: '🍊' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "https://demo.bvnk.co/transaction/withdrawal"
payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountDetails\"\r\n\r\ne0e712e4-b5e2-4b03-a401-1c828e0f2726@\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Amount\"\r\n\r\n8\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Lat\"\r\n\r\n10.\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Lon\"\r\n\r\n10.\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Desc\"\r\n\r\n🍊\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
headers = {
'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
'authorization': "Basic ZGVtb0J6QSs2Zz09OldTblJpRmFQMHduM2w4M1k5V0I1QTFJS25FN0Jlb3dV",
'cache-control': "no-cache",
'postman-token': "622432f1-6906-6e6f-1d41-f5cafd5c09d7"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
Successfull response:
{
"response": "490925"
}
Error response:
{
"error": "Amount must be present"
}
This endpoint initiates a withdrawal against an account. Basic Auth is required for this route, as it is an admin route. Any account can be unloaded with any amount up to the available balance in the account. Please see basic auth section for more.
The response is the id
number of the transaction.
HTTP Request
POST https://demo.bvnk.co/transaction/withdrawal
Headers
Authorization: Basic {basic auth}
URL Parameters
Parameter | Required | Description |
---|---|---|
AccountDetails | true | Account to be unloaded. Follows format senderAccountNumber@bankAccountNumber . Bank can be left blank and will default to given instance |
Amount | true | Amount to be unloaded |
Lat | false | Latitude of transaction |
Lon | false | Longitude of transaction |
Desc | false | Description of transaction |
Transaction Listing
curl -X GET \
https://demo.bvnk.co/transaction/list/10/0 \
-H 'cache-control: no-cache' \
-H 'postman-token: e179488a-ef39-4c04-724d-55697acb79f7' \
-H 'x-auth-accountnumber: e0e712e4-b5e2-4b03-a401-1c828e0f2726' \
-H 'x-auth-token: 6c2eb753-0ae3-4176-9d3d-d8f723671e78'
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/transaction/list/10/0"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-auth-token", "6c2eb753-0ae3-4176-9d3d-d8f723671e78")
req.Header.Add("x-auth-accountnumber", "e0e712e4-b5e2-4b03-a401-1c828e0f2726")
req.Header.Add("cache-control", "no-cache")
req.Header.Add("postman-token", "31287002-0a01-6dd6-2ad3-a2b6ebf4639c")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.get("https://demo.bvnk.co/transaction/list/10/0")
.header("x-auth-token", "6c2eb753-0ae3-4176-9d3d-d8f723671e78")
.header("x-auth-accountnumber", "e0e712e4-b5e2-4b03-a401-1c828e0f2726")
.header("cache-control", "no-cache")
.header("postman-token", "447d54e2-f8cf-be47-b872-b13512dbe67e")
.asString();
import requests
url = "https://demo.bvnk.co/transaction/list/10/0"
headers = {
'x-auth-token': "6c2eb753-0ae3-4176-9d3d-d8f723671e78",
'x-auth-accountnumber': "e0e712e4-b5e2-4b03-a401-1c828e0f2726",
'cache-control': "no-cache",
'postman-token': "344bc0c3-18a9-0bcb-106a-14c392c4ddaf"
}
response = requests.request("GET", url, headers=headers)
print(response.text)
Successful response:
{
"response": [
{
"ID": 490925,
"PainType": 1002,
"Sender": {
"AccountNumber": "e0e712e4-b5e2-4b03-a401-1c828e0f2726",
"BankNumber": "a0299975-b8e2-4358-8f1a-911ee12dbaac",
"Name": "bvnk,Alice"
},
"Receiver": {
"AccountNumber": "0",
"BankNumber": "0",
"Name": ""
},
"Amount": "-8",
"Fee": "0.0007999999797903001",
"Geo": [
10,
10
],
"Desc": "????",
"Status": "approved",
"Timestamp": 1505652044
},
{
"ID": 490924,
"PainType": 1000,
"Sender": {
"AccountNumber": "0",
"BankNumber": "0",
"Name": ""
},
"Receiver": {
"AccountNumber": "e0e712e4-b5e2-4b03-a401-1c828e0f2726",
"BankNumber": "a0299975-b8e2-4358-8f1a-911ee12dbaac",
"Name": "bvnk,Alice"
},
"Amount": "120",
"Fee": "0.012000000104308128",
"Geo": [
10,
10
],
"Desc": "",
"Status": "approved",
"Timestamp": 1505651801
},
{
"ID": 490923,
"PainType": 1,
"Sender": {
"AccountNumber": "e0e712e4-b5e2-4b03-a401-1c828e0f2726",
"BankNumber": "a0299975-b8e2-4358-8f1a-911ee12dbaac",
"Name": "bvnk,Alice"
},
"Receiver": {
"AccountNumber": "9bd356cd-1c54-498d-b6b5-26a8d0a17940",
"BankNumber": "a0299975-b8e2-4358-8f1a-911ee12dbaac",
"Name": "bvnk,Alice"
},
"Amount": "-20",
"Fee": "0.0020000000949949026",
"Geo": [
11,
12
],
"Desc": "Test desc",
"Status": "approved",
"Timestamp": 1505650285
},
{
"ID": 490922,
"PainType": 1000,
"Sender": {
"AccountNumber": "0",
"BankNumber": "0",
"Name": ""
},
"Receiver": {
"AccountNumber": "e0e712e4-b5e2-4b03-a401-1c828e0f2726",
"BankNumber": "a0299975-b8e2-4358-8f1a-911ee12dbaac",
"Name": "bvnk,Alice"
},
"Amount": "120",
"Fee": "0.012000000104308128",
"Geo": [
10,
10
],
"Desc": "????",
"Status": "approved",
"Timestamp": 1505650282
}
]
}
Error response:
{
"error": "Cannot retrieve more than 100 results per request"
}
This endpoint retrieves a given number of transactions against an account in a paginated manner. The account is determined through the additional header X-Auth-AccountNumber
. This must be an account you own.
HTTP Request
GET https://demo.bvnk.co/transaction/list/{perPage}/{pageNum}
Headers
X-Auth-Token: {auth token}
X-Auth-AccountNumber: {account number}
URL Parameters
Parameter | Required | Description |
---|---|---|
PerPage | true | The number of records to receive per request. This cannot exceed 100. |
PageNum | true | The page number for records to receive. To receive the first page, set this value to 0. |
Transaction Listing After Timestamp
curl -X GET \
https://demo.bvnk.co/transaction/list/10/0/1491139308 \
-H 'cache-control: no-cache' \
-H 'postman-token: 08fc8393-0e96-6492-a812-06371937e759' \
-H 'x-auth-accountnumber: e0e712e4-b5e2-4b03-a401-1c828e0f2726' \
-H 'x-auth-token: 6c2eb753-0ae3-4176-9d3d-d8f723671e78'
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/transaction/list/10/0/1491139308"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-auth-token", "6c2eb753-0ae3-4176-9d3d-d8f723671e78")
req.Header.Add("x-auth-accountnumber", "e0e712e4-b5e2-4b03-a401-1c828e0f2726")
req.Header.Add("cache-control", "no-cache")
req.Header.Add("postman-token", "b00e27c6-7f6d-44db-3d4d-239aef796b02")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.get("https://demo.bvnk.co/transaction/list/10/0/1491139308")
.header("x-auth-token", "6c2eb753-0ae3-4176-9d3d-d8f723671e78")
.header("x-auth-accountnumber", "e0e712e4-b5e2-4b03-a401-1c828e0f2726")
.header("cache-control", "no-cache")
.header("postman-token", "e8385cf5-fbc0-c9eb-763f-04258aa5a021")
.asString();
var request = require("request");
var options = { method: 'GET',
url: 'https://demo.bvnk.co/transaction/list/10/0/1491139308',
headers:
{ 'postman-token': '265135d6-e780-0ffa-4013-1c8446e9a584',
'cache-control': 'no-cache',
'x-auth-accountnumber': 'e0e712e4-b5e2-4b03-a401-1c828e0f2726',
'x-auth-token': '6c2eb753-0ae3-4176-9d3d-d8f723671e78' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "https://demo.bvnk.co/transaction/list/10/0/1491139308"
headers = {
'x-auth-token': "6c2eb753-0ae3-4176-9d3d-d8f723671e78",
'x-auth-accountnumber': "e0e712e4-b5e2-4b03-a401-1c828e0f2726",
'cache-control': "no-cache",
'postman-token': "ac72f7d1-fb13-8b5d-5d2d-7567e13dcd1d"
}
response = requests.request("GET", url, headers=headers)
print(response.text)
Successful response:
{
"response": [
{
"ID": 490926,
"PainType": 1003,
"Sender": {
"AccountNumber": "9bd356cd-1c54-498d-b6b5-26a8d0a17940",
"BankNumber": "a0299975-b8e2-4358-8f1a-911ee12dbaac",
"Name": "bvnk,Alice"
},
"Receiver": {
"AccountNumber": "e0e712e4-b5e2-4b03-a401-1c828e0f2726",
"BankNumber": "a0299975-b8e2-4358-8f1a-911ee12dbaac",
"Name": "bvnk,Alice"
},
"Amount": "4",
"Fee": "0.00039999998989515007",
"Geo": [
0,
0
],
"Desc": "????",
"Status": "requested",
"Timestamp": 1505653122
},
{
"ID": 490925,
"PainType": 1002,
"Sender": {
"AccountNumber": "e0e712e4-b5e2-4b03-a401-1c828e0f2726",
"BankNumber": "a0299975-b8e2-4358-8f1a-911ee12dbaac",
"Name": "bvnk,Alice"
},
"Receiver": {
"AccountNumber": "0",
"BankNumber": "0",
"Name": ""
},
"Amount": "-8",
"Fee": "0.0007999999797903001",
"Geo": [
10,
10
],
"Desc": "????",
"Status": "approved",
"Timestamp": 1505652044
},
{
"ID": 490924,
"PainType": 1000,
"Sender": {
"AccountNumber": "0",
"BankNumber": "0",
"Name": ""
},
"Receiver": {
"AccountNumber": "e0e712e4-b5e2-4b03-a401-1c828e0f2726",
"BankNumber": "a0299975-b8e2-4358-8f1a-911ee12dbaac",
"Name": "bvnk,Alice"
},
"Amount": "120",
"Fee": "0.012000000104308128",
"Geo": [
10,
10
],
"Desc": "",
"Status": "approved",
"Timestamp": 1505651801
},
{
"ID": 490923,
"PainType": 1,
"Sender": {
"AccountNumber": "e0e712e4-b5e2-4b03-a401-1c828e0f2726",
"BankNumber": "a0299975-b8e2-4358-8f1a-911ee12dbaac",
"Name": "bvnk,Alice"
},
"Receiver": {
"AccountNumber": "9bd356cd-1c54-498d-b6b5-26a8d0a17940",
"BankNumber": "a0299975-b8e2-4358-8f1a-911ee12dbaac",
"Name": "bvnk,Alice"
},
"Amount": "-20",
"Fee": "0.0020000000949949026",
"Geo": [
11,
12
],
"Desc": "Test desc",
"Status": "approved",
"Timestamp": 1505650285
},
{
"ID": 490922,
"PainType": 1000,
"Sender": {
"AccountNumber": "0",
"BankNumber": "0",
"Name": ""
},
"Receiver": {
"AccountNumber": "e0e712e4-b5e2-4b03-a401-1c828e0f2726",
"BankNumber": "a0299975-b8e2-4358-8f1a-911ee12dbaac",
"Name": "bvnk,Alice"
},
"Amount": "120",
"Fee": "0.012000000104308128",
"Geo": [
10,
10
],
"Desc": "????",
"Status": "approved",
"Timestamp": 1505650282
}
]
}
Error response:
{
"error": "Sender invalid"
}
This endpoint retrieves a given number of transactions against an account in a paginated manner after a given unix timestamp. The account is determined through the additional header X-Auth-AccountNumber
. This must be an account you own.
HTTP Request
GET https://demo.bvnk.co/transaction/list/{perPage}/{pageNum}/{timestamp}
Headers
X-Auth-Token: {auth token}
X-Auth-AccountNumber: {account number}
URL Parameters
Parameter | Required | Description |
---|---|---|
PerPage | true | The number of records to receive per request. This cannot exceed 100. |
PageNum | true | The page number for records to receive. To receive the first page, set this value to 0. |
Timestamp | true | The time after which to check for transactions. This is a unix timestamp. |
Split Transaction
curl -X POST \
https://demo.bvnk.co/transaction/split/request \
-H 'cache-control: no-cache' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-H 'postman-token: 9f614d89-9d45-ae63-00ce-37c9494855fe' \
-H 'x-auth-token: 6c2eb753-0ae3-4176-9d3d-d8f723671e78' \
-F TransactionNumber=490925 \
-F AccountNumbers=9bd356cd-1c54-498d-b6b5-26a8d0a17940@
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/transaction/split/request"
payload := strings.NewReader("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"TransactionNumber\"\r\n\r\n490925\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountNumbers\"\r\n\r\n9bd356cd-1c54-498d-b6b5-26a8d0a17940@\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
req.Header.Add("x-auth-token", "6c2eb753-0ae3-4176-9d3d-d8f723671e78")
req.Header.Add("cache-control", "no-cache")
req.Header.Add("postman-token", "15b4352a-dc24-3882-883a-01bb6a83afab")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.post("https://demo.bvnk.co/transaction/split/request")
.header("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
.header("x-auth-token", "6c2eb753-0ae3-4176-9d3d-d8f723671e78")
.header("cache-control", "no-cache")
.header("postman-token", "f8186c1d-e112-a181-8acd-bf7d708a76df")
.body("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"TransactionNumber\"\r\n\r\n490925\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountNumbers\"\r\n\r\n9bd356cd-1c54-498d-b6b5-26a8d0a17940@\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
.asString();
var request = require("request");
var options = { method: 'POST',
url: 'https://demo.bvnk.co/transaction/split/request',
headers:
{ 'postman-token': '6a312456-67d0-7b42-9caa-3f408c620429',
'cache-control': 'no-cache',
'x-auth-token': '6c2eb753-0ae3-4176-9d3d-d8f723671e78',
'content-type': 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' },
formData:
{ TransactionNumber: '490925',
AccountNumbers: '9bd356cd-1c54-498d-b6b5-26a8d0a17940@' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "https://demo.bvnk.co/transaction/split/request"
payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"TransactionNumber\"\r\n\r\n490925\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountNumbers\"\r\n\r\n9bd356cd-1c54-498d-b6b5-26a8d0a17940@\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
headers = {
'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
'x-auth-token': "6c2eb753-0ae3-4176-9d3d-d8f723671e78",
'cache-control': "no-cache",
'postman-token': "95f2e21a-a390-004f-8cf8-cc3b8b82b3a2"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
Successful response:
{
"response": "Transaction successfully split"
}
Error response:
{
"error": "Account 9bd356cd-1c54-498d-b6b5-26a8d0a17940-incorrect not found"
}
This endpoint splits a transaction between N number of accounts evenly. This transaction must be one in which you are the sender.
The accounts are sent through in accountNumber@bankNumber,accountNumber@bankNumber,...
format.
If the transaction is worth 50, and there are 4 accounts in this request (making 5 total) each transaction request will be 10.
The recipient of the split request will receive a notification. They can then check the transaction and confirm it using the route confirm split transaction. The transaction will then be approved and balances will be updated.
HTTP Request
POST https://demo.bvnk.co/transaction/split/request
Headers
X-Auth-Token: {auth token}
URL Parameters
Parameter | Required | Description |
---|---|---|
TransactionNumber | true | Transaction number to split. This is the transaction ID of the given transaction. You must be the sender of this transaction. |
AccountNumbers | true | A list of accounts to split the transaction against. Must be in format accountNumber1@bankNumber,accountNumber2@bankNumber,... |
Confirm Split Transaction
curl -X POST \
https://demo.bvnk.co/transaction/split/confirm \
-H 'cache-control: no-cache' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-H 'postman-token: 99042a84-91c0-8bb6-3161-81f2919c79ea' \
-H 'x-auth-token: 6c2eb753-0ae3-4176-9d3d-d8f723671e78' \
-F TransactionNumber=490928
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/transaction/split/confirm"
payload := strings.NewReader("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"TransactionNumber\"\r\n\r\n490928\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
req.Header.Add("x-auth-token", "6c2eb753-0ae3-4176-9d3d-d8f723671e78")
req.Header.Add("cache-control", "no-cache")
req.Header.Add("postman-token", "a10f5345-9885-30d6-d4a7-7258e9b479e4")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.post("https://demo.bvnk.co/transaction/split/confirm")
.header("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
.header("x-auth-token", "6c2eb753-0ae3-4176-9d3d-d8f723671e78")
.header("cache-control", "no-cache")
.header("postman-token", "7e108299-d369-d7ef-922f-5a7dbd29d225")
.body("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"TransactionNumber\"\r\n\r\n490928\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
.asString();
var request = require("request");
var options = { method: 'POST',
url: 'https://demo.bvnk.co/transaction/split/confirm',
headers:
{ 'postman-token': '6e967d76-5fbc-88b5-c0dc-3d7466b9adf5',
'cache-control': 'no-cache',
'x-auth-token': '6c2eb753-0ae3-4176-9d3d-d8f723671e78',
'content-type': 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' },
formData: { TransactionNumber: '490928' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "https://demo.bvnk.co/transaction/split/confirm"
payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"TransactionNumber\"\r\n\r\n490928\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
headers = {
'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
'x-auth-token': "6c2eb753-0ae3-4176-9d3d-d8f723671e78",
'cache-control': "no-cache",
'postman-token': "ae155a2c-31d7-b514-62cd-ff17b9747d79"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
Successful response:
{
"response": ""
}
Error response:
{
"error": "This transaction can no longer be confirmed"
}
This endpoint confirms a split transaction request. This will change the transaction status from "requested" to "approved" and the sender and recipient's balances will be updated accordingly.
HTTP Request
POST https://demo.bvnk.co/transaction/split/confirm
Headers
X-Auth-Token: {auth token}
URL Parameters
Parameter | Required | Description |
---|---|---|
TransactionNumber | true | Transaction number to confirm. This is the transaction ID of the given transaction. You must be the sender of this transaction. |
Request Transaction
curl -X POST \
https://demo.bvnk.co/transaction/request \
-H 'cache-control: no-cache' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-H 'postman-token: dac70b98-9c6d-e7e2-a33f-4ac2e5b86f36' \
-H 'x-auth-token: 01b9798e-81b0-4286-a0d6-c000f607b98f' \
-F TransactionAmount=100 \
-F RequestorAccountNumber=1753e6ca-87d5-424a-bb2e-ba5ec00efe6f@ \
-F RequesteeAccountNumber=3168113d-04fe-467f-b9b8-cdd758a98d00 \
-F 'Description=Requesting payment 4' \
-F Lat=0 \
-F Lon=0
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/transaction/request"
payload := strings.NewReader("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"TransactionAmount\"\r\n\r\n100\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"RequestorAccountNumber\"\r\n\r\n1753e6ca-87d5-424a-bb2e-ba5ec00efe6f@\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"RequesteeAccountNumber\"\r\n\r\n3168113d-04fe-467f-b9b8-cdd758a98d00\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Description\"\r\n\r\nRequesting payment 4\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Lat\"\r\n\r\n0\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Lon\"\r\n\r\n0\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
req.Header.Add("x-auth-token", "01b9798e-81b0-4286-a0d6-c000f607b98f")
req.Header.Add("cache-control", "no-cache")
req.Header.Add("postman-token", "ce2dc7bb-d1fa-6984-a614-2ea952926701")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.post("https://demo.bvnk.co/transaction/request")
.header("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
.header("x-auth-token", "01b9798e-81b0-4286-a0d6-c000f607b98f")
.header("cache-control", "no-cache")
.header("postman-token", "419b0b74-f97a-3d14-4083-32bc7169825c")
.body("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"TransactionAmount\"\r\n\r\n100\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"RequestorAccountNumber\"\r\n\r\n1753e6ca-87d5-424a-bb2e-ba5ec00efe6f@\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"RequesteeAccountNumber\"\r\n\r\n3168113d-04fe-467f-b9b8-cdd758a98d00\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Description\"\r\n\r\nRequesting payment 4\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Lat\"\r\n\r\n0\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Lon\"\r\n\r\n0\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
.asString();
var request = require("request");
var options = { method: 'POST',
url: 'https://demo.bvnk.co/transaction/request',
headers:
{ 'postman-token': '91d13e5c-cdd4-4055-b6d3-da6fcb485222',
'cache-control': 'no-cache',
'x-auth-token': '01b9798e-81b0-4286-a0d6-c000f607b98f',
'content-type': 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' },
formData:
{ TransactionAmount: '100',
RequestorAccountNumber: '1753e6ca-87d5-424a-bb2e-ba5ec00efe6f@',
RequesteeAccountNumber: '3168113d-04fe-467f-b9b8-cdd758a98d00',
Description: 'Requesting payment 4',
Lat: '0',
Lon: '0' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "https://demo.bvnk.co/transaction/request"
payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"TransactionAmount\"\r\n\r\n100\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"RequestorAccountNumber\"\r\n\r\n1753e6ca-87d5-424a-bb2e-ba5ec00efe6f@\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"RequesteeAccountNumber\"\r\n\r\n3168113d-04fe-467f-b9b8-cdd758a98d00\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Description\"\r\n\r\nRequesting payment 4\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Lat\"\r\n\r\n0\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Lon\"\r\n\r\n0\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
headers = {
'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
'x-auth-token': "01b9798e-81b0-4286-a0d6-c000f607b98f",
'cache-control': "no-cache",
'postman-token': "3860af4c-178d-687e-ff1b-b121017026af"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
Successful response:
{
"response": "Transaction successfully requested"
}
Error response:
{
"error": "Recipient account number not found"
}
This endpoint requests a transaction from another account.
HTTP Request
POST https://demo.bvnk.co/transaction/request
Headers
X-Auth-Token: {auth token}
URL Parameters
Parameter | Required | Description |
---|---|---|
TransactionAmount | true | The amount to request |
RequestorAccountNumber | true | The recipient of the requested transaction. This account should be owned by the authenticated user |
RequesteeAccountNumber | true | The sender of the requested transaction |
Description | false | Description for the transaction |
Lat | false | Latitude of transaction |
Lon | false | Longitude of transaction |
Confirm Transaction
curl -X POST \
https://demo.bvnk.co/transaction/confirm \
-H 'cache-control: no-cache' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-H 'postman-token: 86037339-7ba8-b9f8-25b6-a8a97d683227' \
-H 'x-auth-token: 01b9798e-81b0-4286-a0d6-c000f607b98f' \
-F TransactionNumber=2156
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/transaction/confirm"
payload := strings.NewReader("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"TransactionNumber\"\r\n\r\n2156\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
req.Header.Add("x-auth-token", "01b9798e-81b0-4286-a0d6-c000f607b98f")
req.Header.Add("cache-control", "no-cache")
req.Header.Add("postman-token", "98c613fb-6450-4267-ec93-0121bc122bf3")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.post("https://demo.bvnk.co/transaction/confirm")
.header("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
.header("x-auth-token", "01b9798e-81b0-4286-a0d6-c000f607b98f")
.header("cache-control", "no-cache")
.header("postman-token", "04ec963b-2322-c733-db63-b1657b910eac")
.body("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"TransactionNumber\"\r\n\r\n2156\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
.asString();
var request = require("request");
var options = { method: 'POST',
url: 'https://demo.bvnk.co/transaction/confirm',
headers:
{ 'postman-token': 'f29ebcb7-cad2-fd1f-c57e-420868887614',
'cache-control': 'no-cache',
'x-auth-token': '01b9798e-81b0-4286-a0d6-c000f607b98f',
'content-type': 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' },
formData: { TransactionNumber: '2156' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "https://demo.bvnk.co/transaction/confirm"
payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"TransactionNumber\"\r\n\r\n2156\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
headers = {
'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
'x-auth-token': "01b9798e-81b0-4286-a0d6-c000f607b98f",
'cache-control': "no-cache",
'postman-token': "98f401be-1b7b-7f80-0c22-41aca17e0fee"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
Successful response:
{
"response": "Transaction approved"
}
Error response:
{
"error": "Insufficient funds available"
}
This endpoint confirms a requested transaction. The authorized user must be the sender of the transaction (the requestee). The transaction number can be received from a "Get transactions" call.
HTTP Request
POST https://demo.bvnk.co/transaction/confirm
Headers
X-Auth-Token: {auth token}
URL Parameters
Parameter | Required | Description |
---|---|---|
TransactionNumber | true | The transaction number to approve |
Cards
Card issuance and charging depend on the deployment environment and who BVNK is integrated with in that territory. On the demo instance, we generate PANs per card and save them locally.
In live production environments, we don't issue cards ourselves and we currently do not store any PANs.
Card Issuance
curl -X POST \
https://demo.bvnk.co/card \
-H 'cache-control: no-cache' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-H 'postman-token: b882bda7-0051-7aea-c3fc-788dc349da4a' \
-H 'x-auth-token: 6c2eb753-0ae3-4176-9d3d-d8f723671e78' \
-F AccountNumber=e0e712e4-b5e2-4b03-a401-1c828e0f2726@
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/card"
payload := strings.NewReader("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountNumber\"\r\n\r\ne0e712e4-b5e2-4b03-a401-1c828e0f2726@\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
req.Header.Add("x-auth-token", "6c2eb753-0ae3-4176-9d3d-d8f723671e78")
req.Header.Add("cache-control", "no-cache")
req.Header.Add("postman-token", "63fa3d4a-3184-1dbd-8fa6-efc2fb12b3d4")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.post("https://demo.bvnk.co/card")
.header("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
.header("x-auth-token", "6c2eb753-0ae3-4176-9d3d-d8f723671e78")
.header("cache-control", "no-cache")
.header("postman-token", "cf59707c-e0d3-832f-902d-75b951ec64eb")
.body("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountNumber\"\r\n\r\ne0e712e4-b5e2-4b03-a401-1c828e0f2726@\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
.asString();
var request = require("request");
var options = { method: 'POST',
url: 'https://demo.bvnk.co/card',
headers:
{ 'postman-token': '7d0de99b-b56a-8d48-f00a-8c5b271c3e43',
'cache-control': 'no-cache',
'x-auth-token': '6c2eb753-0ae3-4176-9d3d-d8f723671e78',
'content-type': 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' },
formData: { AccountNumber: 'e0e712e4-b5e2-4b03-a401-1c828e0f2726@' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "https://demo.bvnk.co/card"
payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountNumber\"\r\n\r\ne0e712e4-b5e2-4b03-a401-1c828e0f2726@\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
headers = {
'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
'x-auth-token': "6c2eb753-0ae3-4176-9d3d-d8f723671e78",
'cache-control': "no-cache",
'postman-token': "1d2354d9-eab5-ef91-87ab-d7aba26b80ec"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
Successful response:
{
"response": {
"MaskedPAN": "2398-47XX-XXXX-3872",
"DailyLimit": "250",
"MonthlyLimit": "2500",
"State": "initiated",
"PIN": "9427",
"Salt": ""
}
}
Error response:
{
"error": "Could not create card"
}
This endpoint generates a new card against a given account number you control. Card PINs are stored encrypted in the database and can only be seen clear text on card issuance or when requested using 2FA.
HTTP Request
POST https://demo.bvnk.co/card
Headers
X-Auth-Token: {auth token}
URL Parameters
Parameter | Required | Description |
---|---|---|
AccountNumber | true | Account number for card to be linked against. Must be in format accountNumber@bankNumber where bankNumber can be left blank to default to current instance. |
Charge A Card
curl -X POST \
https://demo.bvnk.co/card/charge \
-H 'authorization: Basic ZGVtb0J6QSs2Zz09OldTblJpRmFQMHduM2w4M1k5V0I1QTFJS25FN0Jlb3dV' \
-H 'cache-control: no-cache' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-H 'postman-token: 85482d0b-38c4-eb2e-9d91-1c44a9f1077e' \
-F SenderDetails=2398-47XX-XXXX-3872 \
-F RecipientDetails=9bd356cd-1c54-498d-b6b5-26a8d0a17940@ \
-F Amount=20 \
-F Lat=11.0 \
-F Lon=12.0 \
-F 'Desc=Test desc'
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/card/charge"
payload := strings.NewReader("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"SenderDetails\"\r\n\r\n2398-47XX-XXXX-3872\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"RecipientDetails\"\r\n\r\n9bd356cd-1c54-498d-b6b5-26a8d0a17940@\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Amount\"\r\n\r\n20\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Lat\"\r\n\r\n11.0\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Lon\"\r\n\r\n12.0\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Desc\"\r\n\r\nTest desc\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
req.Header.Add("authorization", "Basic ZGVtb0J6QSs2Zz09OldTblJpRmFQMHduM2w4M1k5V0I1QTFJS25FN0Jlb3dV")
req.Header.Add("cache-control", "no-cache")
req.Header.Add("postman-token", "61a804a7-bdae-494b-a8ad-3564db5f60db")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.post("https://demo.bvnk.co/card/charge")
.header("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
.header("authorization", "Basic ZGVtb0J6QSs2Zz09OldTblJpRmFQMHduM2w4M1k5V0I1QTFJS25FN0Jlb3dV")
.header("cache-control", "no-cache")
.header("postman-token", "95514901-2f7b-7a16-4ec7-31345e408146")
.body("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"SenderDetails\"\r\n\r\n2398-47XX-XXXX-3872\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"RecipientDetails\"\r\n\r\n9bd356cd-1c54-498d-b6b5-26a8d0a17940@\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Amount\"\r\n\r\n20\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Lat\"\r\n\r\n11.0\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Lon\"\r\n\r\n12.0\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Desc\"\r\n\r\nTest desc\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
.asString();
var request = require("request");
var options = { method: 'POST',
url: 'https://demo.bvnk.co/card/charge',
headers:
{ 'postman-token': 'afb71910-e441-9efd-d9f1-50a5ac6179d6',
'cache-control': 'no-cache',
authorization: 'Basic ZGVtb0J6QSs2Zz09OldTblJpRmFQMHduM2w4M1k5V0I1QTFJS25FN0Jlb3dV',
'content-type': 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' },
formData:
{ SenderDetails: '2398-47XX-XXXX-3872',
RecipientDetails: '9bd356cd-1c54-498d-b6b5-26a8d0a17940@',
Amount: '20',
Lat: '11.0',
Lon: '12.0',
Desc: 'Test desc' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "https://demo.bvnk.co/card/charge"
payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"SenderDetails\"\r\n\r\n2398-47XX-XXXX-3872\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"RecipientDetails\"\r\n\r\n9bd356cd-1c54-498d-b6b5-26a8d0a17940@\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Amount\"\r\n\r\n20\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Lat\"\r\n\r\n11.0\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Lon\"\r\n\r\n12.0\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Desc\"\r\n\r\nTest desc\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
headers = {
'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
'authorization': "Basic ZGVtb0J6QSs2Zz09OldTblJpRmFQMHduM2w4M1k5V0I1QTFJS25FN0Jlb3dV",
'cache-control': "no-cache",
'postman-token': "96e8dbac-05e5-c5e3-8411-16da90f519c7"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
Successful response:
{
"response": "490932"
}
Error response:
{
"error": "Account not found"
}
This endpoint issues a charge against a card which follows the same route as credit transaction. The card must be linked to an account you control.
HTTP Request
POST https://demo.bvnk.co/card/charge
Headers
X-Auth-Token: {auth token}
URL Parameters
Parameter | Required | Description |
---|---|---|
SenderDetails | true | The sender card details. This is a masked PAN, e.g. 2398-47XX-XXXX-3872 . This card must be linked to your account |
RecipientDetails | true | The recipient account details. Follows format senderAccountNumber@bankAccountNumber . Bank can be left blank and will default to given instance |
Amount | true | Amount to transfer |
Lat | false | Latitude of transaction |
Lon | false | Longitude of transaction |
Desc | false | Description of transaction, emojis welcome 🎉💵⚡️ |
Beneficiaries
Add Beneficiary
curl -X POST \
https://demo.bvnk.co/account/beneficiary \
-H 'cache-control: no-cache' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-H 'postman-token: 89f8a27e-f87f-4ed8-c958-bf86b196a1d3' \
-H 'x-auth-token: 6c2eb753-0ae3-4176-9d3d-d8f723671e78' \
-F BeneficiaryAccountNumber=9bd356cd-1c54-498d-b6b5-26a8d0a17940 \
-F BeneficiaryBankNumber= \
-F 'BeneficiaryNickname=Jacky Jacks'
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/account/beneficiary"
payload := strings.NewReader("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"BeneficiaryAccountNumber\"\r\n\r\n9bd356cd-1c54-498d-b6b5-26a8d0a17940\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"BeneficiaryBankNumber\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"BeneficiaryNickname\"\r\n\r\nJacky Jacks\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
req.Header.Add("x-auth-token", "6c2eb753-0ae3-4176-9d3d-d8f723671e78")
req.Header.Add("cache-control", "no-cache")
req.Header.Add("postman-token", "6178acd9-7318-7e51-abbb-438d0ca6d20d")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.post("https://demo.bvnk.co/account/beneficiary")
.header("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
.header("x-auth-token", "6c2eb753-0ae3-4176-9d3d-d8f723671e78")
.header("cache-control", "no-cache")
.header("postman-token", "f1f78664-f85c-21cf-0006-2a08a92c3a64")
.body("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"BeneficiaryAccountNumber\"\r\n\r\n9bd356cd-1c54-498d-b6b5-26a8d0a17940\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"BeneficiaryBankNumber\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"BeneficiaryNickname\"\r\n\r\nJacky Jacks\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
.asString();
var request = require("request");
var options = { method: 'POST',
url: 'https://demo.bvnk.co/account/beneficiary',
headers:
{ 'postman-token': '5e74e8ad-10d7-f3f3-94e8-dc0a66632735',
'cache-control': 'no-cache',
'x-auth-token': '6c2eb753-0ae3-4176-9d3d-d8f723671e78',
'content-type': 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' },
formData:
{ BeneficiaryAccountNumber: '9bd356cd-1c54-498d-b6b5-26a8d0a17940',
BeneficiaryBankNumber: '',
BeneficiaryNickname: 'Jacky Jacks' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "https://demo.bvnk.co/account/beneficiary"
payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"BeneficiaryAccountNumber\"\r\n\r\n9bd356cd-1c54-498d-b6b5-26a8d0a17940\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"BeneficiaryBankNumber\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"BeneficiaryNickname\"\r\n\r\nJacky Jacks\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
headers = {
'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
'x-auth-token': "6c2eb753-0ae3-4176-9d3d-d8f723671e78",
'cache-control': "no-cache",
'postman-token': "b23bbdb6-d9ad-0f70-1c26-0eee9f380420"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
Successful response:
{
"response": ""
}
Error response:
{
"error": "Could not add beneficiary: Beneficiary account not found"
}
This endpoint adds a beneficiary to the users beneficiaries list. A nickname can be added for ease of recognition, especially when one user has multiple accounts.
HTTP Request
POST https://demo.bvnk.co/account/beneficiary
Headers
X-Auth-Token: {auth token}
URL Parameters
Parameter | Required | Description |
---|---|---|
BeneficiaryAccountNumber | true | The beneficiary account number. |
BeneficiaryBankNumber | false | The beneficary bank number. |
BeneficiaryNickname | false | A nickname for the beneficiary |
View Beneficiary
curl -X GET \
https://demo.bvnk.co/account/beneficiary/9bd356cd-1c54-498d-b6b5-26a8d0a17940/0 \
-H 'cache-control: no-cache' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-H 'postman-token: 5f9e88fd-629e-dedd-338b-c942d7f6c0b9' \
-H 'x-auth-token: 6c2eb753-0ae3-4176-9d3d-d8f723671e78' \
-F BeneficiaryAccountNumber=85c2b5cb-9820-4e8d-aa24-9e977bbb87b6 \
-F BeneficiaryBankNumber= \
-F BeneficiaryNickname=
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/account/beneficiary/9bd356cd-1c54-498d-b6b5-26a8d0a17940/0"
payload := strings.NewReader("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"BeneficiaryAccountNumber\"\r\n\r\n85c2b5cb-9820-4e8d-aa24-9e977bbb87b6\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"BeneficiaryBankNumber\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"BeneficiaryNickname\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
req, _ := http.NewRequest("GET", url, payload)
req.Header.Add("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
req.Header.Add("x-auth-token", "6c2eb753-0ae3-4176-9d3d-d8f723671e78")
req.Header.Add("cache-control", "no-cache")
req.Header.Add("postman-token", "7a941cea-7880-268b-3db6-b24509be2169")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.get("https://demo.bvnk.co/account/beneficiary/9bd356cd-1c54-498d-b6b5-26a8d0a17940/0")
.header("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
.header("x-auth-token", "6c2eb753-0ae3-4176-9d3d-d8f723671e78")
.header("cache-control", "no-cache")
.header("postman-token", "bc9a90eb-dce2-8909-c16e-8c5ea45e3310")
.body("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"BeneficiaryAccountNumber\"\r\n\r\n85c2b5cb-9820-4e8d-aa24-9e977bbb87b6\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"BeneficiaryBankNumber\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"BeneficiaryNickname\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
.asString();
var request = require("request");
var options = { method: 'GET',
url: 'https://demo.bvnk.co/account/beneficiary/9bd356cd-1c54-498d-b6b5-26a8d0a17940/0',
headers:
{ 'postman-token': 'e9e215f3-5594-02c4-15e7-834b6aabf1b3',
'cache-control': 'no-cache',
'x-auth-token': '6c2eb753-0ae3-4176-9d3d-d8f723671e78',
'content-type': 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' },
formData:
{ BeneficiaryAccountNumber: '85c2b5cb-9820-4e8d-aa24-9e977bbb87b6',
BeneficiaryBankNumber: '',
BeneficiaryNickname: '' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "https://demo.bvnk.co/account/beneficiary/9bd356cd-1c54-498d-b6b5-26a8d0a17940/0"
payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"BeneficiaryAccountNumber\"\r\n\r\n85c2b5cb-9820-4e8d-aa24-9e977bbb87b6\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"BeneficiaryBankNumber\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"BeneficiaryNickname\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
headers = {
'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
'x-auth-token': "6c2eb753-0ae3-4176-9d3d-d8f723671e78",
'cache-control': "no-cache",
'postman-token': "fa497d35-c87b-898b-e3fb-4ce0e02d36e4"
}
response = requests.request("GET", url, data=payload, headers=headers)
print(response.text)
Successful response:
{
"response": {
"AccountNumber": "9bd356cd-1c54-498d-b6b5-26a8d0a17940",
"BankNumber": "a0299975-b8e2-4358-8f1a-911ee12dbaac",
"AccountHolderName": "bvnk,Alice",
"AccountHolderNickname": "Jacky Jacks"
}
}
Error response:
{
"error": "An error occurred retrieving the beneficiary"
}
This endpoint retrieves all details of a given beneficiary linked to your account.
HTTP Request
GET https://demo.bvnk.co/account/beneficiary/{beneficiaryAccountNumber}/{beneficiaryBankNumber}
Headers
X-Auth-Token: {auth token}
URL Parameters
Parameter | Required | Description |
---|---|---|
BeneficiaryAccountNumber | true | The beneficiary account number. |
BeneficiaryBankNumber | false | The beneficary bank number. |
Update A Beneficiary
curl -X PUT \
https://demo.bvnk.co/account/beneficiary \
-H 'cache-control: no-cache' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-H 'postman-token: 55c53f63-f958-9fa5-284f-f62fed29d6f1' \
-H 'x-auth-token: 6c2eb753-0ae3-4176-9d3d-d8f723671e78' \
-F BeneficiaryAccountNumber=9bd356cd-1c54-498d-b6b5-26a8d0a17940 \
-F BeneficiaryBankNumber= \
-F 'BeneficiaryNickname=Jimmy Joe'
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/account/beneficiary"
payload := strings.NewReader("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"BeneficiaryAccountNumber\"\r\n\r\n9bd356cd-1c54-498d-b6b5-26a8d0a17940\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"BeneficiaryBankNumber\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"BeneficiaryNickname\"\r\n\r\nJimmy Joe\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
req.Header.Add("x-auth-token", "6c2eb753-0ae3-4176-9d3d-d8f723671e78")
req.Header.Add("cache-control", "no-cache")
req.Header.Add("postman-token", "bea7cfca-820f-e043-a0b7-951619e9a2d5")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.put("https://demo.bvnk.co/account/beneficiary")
.header("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
.header("x-auth-token", "6c2eb753-0ae3-4176-9d3d-d8f723671e78")
.header("cache-control", "no-cache")
.header("postman-token", "4ed8598a-a406-14a5-fc51-61f4244f4b2a")
.body("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"BeneficiaryAccountNumber\"\r\n\r\n9bd356cd-1c54-498d-b6b5-26a8d0a17940\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"BeneficiaryBankNumber\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"BeneficiaryNickname\"\r\n\r\nJimmy Joe\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
.asString();
var request = require("request");
var options = { method: 'PUT',
url: 'https://demo.bvnk.co/account/beneficiary',
headers:
{ 'postman-token': 'b38279b5-7c74-638c-4188-7682742d93e7',
'cache-control': 'no-cache',
'x-auth-token': '6c2eb753-0ae3-4176-9d3d-d8f723671e78',
'content-type': 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' },
formData:
{ BeneficiaryAccountNumber: '9bd356cd-1c54-498d-b6b5-26a8d0a17940',
BeneficiaryBankNumber: '',
BeneficiaryNickname: 'Jimmy Joe' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "https://demo.bvnk.co/account/beneficiary"
payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"BeneficiaryAccountNumber\"\r\n\r\n9bd356cd-1c54-498d-b6b5-26a8d0a17940\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"BeneficiaryBankNumber\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"BeneficiaryNickname\"\r\n\r\nJimmy Joe\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
headers = {
'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
'x-auth-token': "6c2eb753-0ae3-4176-9d3d-d8f723671e78",
'cache-control': "no-cache",
'postman-token': "1b70503b-2f95-b009-7627-985aef33a3fb"
}
response = requests.request("PUT", url, data=payload, headers=headers)
print(response.text)
Successful response:
{
"response": {
"AccountNumber": "9bd356cd-1c54-498d-b6b5-26a8d0a17940",
"BankNumber": "a0299975-b8e2-4358-8f1a-911ee12dbaac",
"AccountHolderName": "bvnk,Alice",
"AccountHolderNickname": "Jimmy Joe"
}
}
Error response:
{
"error": "An error occurred retrieving the beneficiary"
}
This endpoint allows a user to update a beneficiary. The only field that can currently be updated is the nickname. The endpoint responds with the updated record.
HTTP Request
PUT https://demo.bvnk.co/account/beneficiary
Headers
X-Auth-Token: {auth token}
URL Parameters
Parameter | Required | Description |
---|---|---|
BeneficiaryAccountNumber | true | The beneficiary account number. |
BeneficiaryBankNumber | false | The beneficary bank number. |
BeneficiaryNickname | false | A nickname for the beneficiary |
View All Beneficiaries
curl -X GET \
https://demo.bvnk.co/account/beneficiary/all/0/10 \
-H 'cache-control: no-cache' \
-H 'postman-token: 120cf053-ed0e-2863-bb45-3337767a3346' \
-H 'x-auth-token: 6c2eb753-0ae3-4176-9d3d-d8f723671e78'
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/account/beneficiary/all/0/10"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-auth-token", "6c2eb753-0ae3-4176-9d3d-d8f723671e78")
req.Header.Add("cache-control", "no-cache")
req.Header.Add("postman-token", "fcfe929b-18c0-1f95-bd83-feb85a8c78b2")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.get("https://demo.bvnk.co/account/beneficiary/all/0/10")
.header("x-auth-token", "6c2eb753-0ae3-4176-9d3d-d8f723671e78")
.header("cache-control", "no-cache")
.header("postman-token", "25db8f61-3555-ce62-2bf3-7dc62d1a37a7")
.asString();
var request = require("request");
var options = { method: 'GET',
url: 'https://demo.bvnk.co/account/beneficiary/all/0/10',
headers:
{ 'postman-token': '927aff57-24bd-0a28-6f48-4c80c0cd072b',
'cache-control': 'no-cache',
'x-auth-token': '6c2eb753-0ae3-4176-9d3d-d8f723671e78' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "https://demo.bvnk.co/account/beneficiary/all/0/10"
headers = {
'x-auth-token': "6c2eb753-0ae3-4176-9d3d-d8f723671e78",
'cache-control': "no-cache",
'postman-token': "7509357f-16b7-80d2-abf1-ebaa3ce9251b"
}
response = requests.request("GET", url, headers=headers)
print(response.text)
Successful response:
{
"response": [
{
"AccountNumber": "9bd356cd-1c54-498d-b6b5-26a8d0a17940",
"BankNumber": "a0299975-b8e2-4358-8f1a-911ee12dbaac",
"AccountHolderName": "bvnk,Alice",
"AccountHolderNickname": "Jimmy Joe"
}
]
}
Error response:
{
"error": "An error occurred retrieving the list of beneficiaries"
}
This endpoint returns a list of all beneficiaries in paginated form.
HTTP Request
GET https://demo.bvnk.co/account/beneficiary/all/{pageNum}/{perPage}
Headers
X-Auth-Token: {auth token}
URL Parameters
Parameter | Required | Description |
---|---|---|
PageNum | true | The page number for records to receive. To receive the first page, set this value to 0. |
PerPage | true | The number of records to receive per request. This cannot exceed 100. |
Remove A Beneficiary
curl -X DELETE \
https://demo.bvnk.co/account/beneficiary/9bd356cd-1c54-498d-b6b5-26a8d0a17940/0 \
-H 'cache-control: no-cache' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-H 'postman-token: 2c11fbdd-8a34-c658-ce27-eae4e2282674' \
-H 'x-auth-token: 6c2eb753-0ae3-4176-9d3d-d8f723671e78' \
-F BeneficiaryAccountNumber=85c2b5cb-9820-4e8d-aa24-9e977bbb87b6 \
-F BeneficiaryBankNumber= \
-F BeneficiaryNickname=
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/account/beneficiary/9bd356cd-1c54-498d-b6b5-26a8d0a17940/0"
payload := strings.NewReader("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"BeneficiaryAccountNumber\"\r\n\r\n85c2b5cb-9820-4e8d-aa24-9e977bbb87b6\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"BeneficiaryBankNumber\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"BeneficiaryNickname\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
req, _ := http.NewRequest("DELETE", url, payload)
req.Header.Add("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
req.Header.Add("x-auth-token", "6c2eb753-0ae3-4176-9d3d-d8f723671e78")
req.Header.Add("cache-control", "no-cache")
req.Header.Add("postman-token", "b75a1769-e84f-811e-18c0-d922ae9972c5")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.delete("https://demo.bvnk.co/account/beneficiary/9bd356cd-1c54-498d-b6b5-26a8d0a17940/0")
.header("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
.header("x-auth-token", "6c2eb753-0ae3-4176-9d3d-d8f723671e78")
.header("cache-control", "no-cache")
.header("postman-token", "b845c621-6f9c-3604-0324-3bd193d448cc")
.body("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"BeneficiaryAccountNumber\"\r\n\r\n85c2b5cb-9820-4e8d-aa24-9e977bbb87b6\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"BeneficiaryBankNumber\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"BeneficiaryNickname\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
.asString();
var request = require("request");
var options = { method: 'DELETE',
url: 'https://demo.bvnk.co/account/beneficiary/9bd356cd-1c54-498d-b6b5-26a8d0a17940/0',
headers:
{ 'postman-token': '44ed6e2e-4005-a2b2-d7be-084255aeeeb8',
'cache-control': 'no-cache',
'x-auth-token': '6c2eb753-0ae3-4176-9d3d-d8f723671e78',
'content-type': 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' },
formData:
{ BeneficiaryAccountNumber: '85c2b5cb-9820-4e8d-aa24-9e977bbb87b6',
BeneficiaryBankNumber: '',
BeneficiaryNickname: '' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "https://demo.bvnk.co/account/beneficiary/9bd356cd-1c54-498d-b6b5-26a8d0a17940/0"
payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"BeneficiaryAccountNumber\"\r\n\r\n85c2b5cb-9820-4e8d-aa24-9e977bbb87b6\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"BeneficiaryBankNumber\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"BeneficiaryNickname\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
headers = {
'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
'x-auth-token': "6c2eb753-0ae3-4176-9d3d-d8f723671e78",
'cache-control': "no-cache",
'postman-token': "9b708e73-8785-adeb-275c-3cb1bc8c48c6"
}
response = requests.request("DELETE", url, data=payload, headers=headers)
print(response.text)
Successful response:
{
"response": ""
}
Error response:
{
"error": "An error occurred removing the beneficiary"
}
This endpoint removes a given beneficiary from your list of beneficiaries.
HTTP Request
DEL https://demo.bvnk.co/beneficiary/{beneficiaryAccountNumber}/{beneficiaryBankNumber}
Headers
X-Auth-Token: {auth token}
URL Parameters
Parameter | Required | Description |
---|---|---|
BeneficiaryAccountNumber | true | The account number of the beneficiary to remove. |
BeneficiaryBankNumber | true | The bank number of the benficiary to remove. |
KYC
Upload KYC Documents
curl -X POST \
https://demo.bvnk.co/account/kyc \
-H 'cache-control: no-cache' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-H 'postman-token: 169c8a0d-150b-a65e-36dd-ff8757813e9b' \
-H 'x-auth-token: 6c2eb753-0ae3-4176-9d3d-d8f723671e78' \
-F 'Document=@[object Object]' \
-F DocumentType=IDProof
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/account/kyc"
payload := strings.NewReader("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Document\"; filename=\"[object Object]\"\r\nContent-Type: false\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DocumentType\"\r\n\r\nIDProof\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-auth-token", "6c2eb753-0ae3-4176-9d3d-d8f723671e78")
req.Header.Add("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
req.Header.Add("cache-control", "no-cache")
req.Header.Add("postman-token", "95e0d31b-3799-3690-89da-4d1c71370e3d")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.post("https://demo.bvnk.co/account/kyc")
.header("x-auth-token", "6c2eb753-0ae3-4176-9d3d-d8f723671e78")
.header("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
.header("cache-control", "no-cache")
.header("postman-token", "aa696750-9f71-6110-8c04-f7b58cc0eafe")
.body("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Document\"; filename=\"[object Object]\"\r\nContent-Type: false\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DocumentType\"\r\n\r\nIDProof\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
.asString();
var fs = require("fs");
var request = require("request");
var options = { method: 'POST',
url: 'https://demo.bvnk.co/account/kyc',
headers:
{ 'postman-token': 'c36ddb70-1b54-8c9e-c943-263b6e5ce398',
'cache-control': 'no-cache',
'content-type': 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW',
'x-auth-token': '6c2eb753-0ae3-4176-9d3d-d8f723671e78' },
formData:
{ Document:
{ value: 'fs.createReadStream("[object Object]")',
options: { filename: {}, contentType: null } },
DocumentType: 'IDProof' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "https://demo.bvnk.co/account/kyc"
payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Document\"; filename=\"[object Object]\"\r\nContent-Type: false\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DocumentType\"\r\n\r\nIDProof\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
headers = {
'x-auth-token': "6c2eb753-0ae3-4176-9d3d-d8f723671e78",
'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
'cache-control': "no-cache",
'postman-token': "4f78737e-5de2-29a4-c2ca-869681c755c3"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
Successful response:
{
"response": ""
}
Error response:
{
"error": "Document must be a supported type"
}
This endpoint is used to upload Know-Your-Customer (KYC) documentation. There are several supported types of documention.
HTTP Request
POST https://demo.bvnk.co/account/kyc
Headers
X-Auth-Token: {auth token}
URL Parameters
Parameter | Required | Description |
---|---|---|
Document | true | The file you wish to upload. |
DocumentType | true | The type of document, must be one of IDProof or ResidentialProof. Any number of documents can be uploaded to support these two types. |
Merchants
Merchant Account Create
curl -X POST \
https://demo.bvnk.co/account/merchant \
-H 'cache-control: no-cache' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-H 'postman-token: f10a243b-9a68-11e9-45d4-db02f7819610' \
-H 'x-auth-token: fcb7ae8b-f88f-45fd-8e57-d273a1a014bc' \
-F 'MerchantName=Test Merchant Ltd' \
-F 'MerchantDescription=Supplying the best test since 2016' \
-F MerchantContactGivenName=John \
-F MerchantContactFamilyName=Test \
-F 'MerchantAddressLine1=Office 1' \
-F 'MerchantAddressLine2=Office Road' \
-F 'MerchantAddressLine3=Office County' \
-F MerchantCountry=UK \
-F 'MerchantPostalCode=E14 5EW' \
-F MerchantBusinessSector=Commerce \
-F MerchantWebsite=testwebsite.com \
-F MerchantContactPhone=0800-test-phone \
-F MerchantContactFax=0800-test-fax \
-F 'MerchantContactEmail=john@testwebsite,com' \
-F MerchantLogo= \
-F AccountType=merchant
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/account/merchant"
payload := strings.NewReader("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantName\"\r\n\r\nTest Merchant Ltd\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantDescription\"\r\n\r\nSupplying the best test since 2016\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantContactGivenName\"\r\n\r\nJohn\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantContactFamilyName\"\r\n\r\nTest\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantAddressLine1\"\r\n\r\nOffice 1\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantAddressLine2\"\r\n\r\nOffice Road\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantAddressLine3\"\r\n\r\nOffice County\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantCountry\"\r\n\r\nUK\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantPostalCode\"\r\n\r\nE14 5EW\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantBusinessSector\"\r\n\r\nCommerce\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantWebsite\"\r\n\r\ntestwebsite.com\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantContactPhone\"\r\n\r\n0800-test-phone\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantContactFax\"\r\n\r\n0800-test-fax\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantContactEmail\"\r\n\r\njohn@testwebsite,com\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantLogo\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountType\"\r\n\r\nmerchant\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
req.Header.Add("x-auth-token", "fcb7ae8b-f88f-45fd-8e57-d273a1a014bc")
req.Header.Add("cache-control", "no-cache")
req.Header.Add("postman-token", "f40c77b5-d4bc-187b-e832-e37ffe26934b")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.post("https://demo.bvnk.co/account/merchant")
.header("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
.header("x-auth-token", "fcb7ae8b-f88f-45fd-8e57-d273a1a014bc")
.header("cache-control", "no-cache")
.header("postman-token", "70918fa6-4515-2c01-e705-c5b06adbb72a")
.body("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantName\"\r\n\r\nTest Merchant Ltd\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantDescription\"\r\n\r\nSupplying the best test since 2016\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantContactGivenName\"\r\n\r\nJohn\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantContactFamilyName\"\r\n\r\nTest\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantAddressLine1\"\r\n\r\nOffice 1\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantAddressLine2\"\r\n\r\nOffice Road\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantAddressLine3\"\r\n\r\nOffice County\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantCountry\"\r\n\r\nUK\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantPostalCode\"\r\n\r\nE14 5EW\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantBusinessSector\"\r\n\r\nCommerce\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantWebsite\"\r\n\r\ntestwebsite.com\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantContactPhone\"\r\n\r\n0800-test-phone\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantContactFax\"\r\n\r\n0800-test-fax\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantContactEmail\"\r\n\r\njohn@testwebsite,com\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantLogo\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountType\"\r\n\r\nmerchant\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
.asString();
var request = require("request");
var options = { method: 'POST',
url: 'https://demo.bvnk.co/account/merchant',
headers:
{ 'postman-token': 'f047420b-e6fa-f1a6-47ed-f60f6ac6677f',
'cache-control': 'no-cache',
'x-auth-token': 'fcb7ae8b-f88f-45fd-8e57-d273a1a014bc',
'content-type': 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' },
formData:
{ MerchantName: 'Test Merchant Ltd',
MerchantDescription: 'Supplying the best test since 2016',
MerchantContactGivenName: 'John',
MerchantContactFamilyName: 'Test',
MerchantAddressLine1: 'Office 1',
MerchantAddressLine2: 'Office Road',
MerchantAddressLine3: 'Office County',
MerchantCountry: 'UK',
MerchantPostalCode: 'E14 5EW',
MerchantBusinessSector: 'Commerce',
MerchantWebsite: 'testwebsite.com',
MerchantContactPhone: '0800-test-phone',
MerchantContactFax: '0800-test-fax',
MerchantContactEmail: 'john@testwebsite,com',
MerchantLogo: '',
AccountType: 'merchant' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "https://demo.bvnk.co/account/merchant"
payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantName\"\r\n\r\nTest Merchant Ltd\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantDescription\"\r\n\r\nSupplying the best test since 2016\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantContactGivenName\"\r\n\r\nJohn\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantContactFamilyName\"\r\n\r\nTest\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantAddressLine1\"\r\n\r\nOffice 1\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantAddressLine2\"\r\n\r\nOffice Road\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantAddressLine3\"\r\n\r\nOffice County\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantCountry\"\r\n\r\nUK\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantPostalCode\"\r\n\r\nE14 5EW\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantBusinessSector\"\r\n\r\nCommerce\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantWebsite\"\r\n\r\ntestwebsite.com\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantContactPhone\"\r\n\r\n0800-test-phone\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantContactFax\"\r\n\r\n0800-test-fax\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantContactEmail\"\r\n\r\njohn@testwebsite,com\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantLogo\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountType\"\r\n\r\nmerchant\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
headers = {
'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
'x-auth-token': "fcb7ae8b-f88f-45fd-8e57-d273a1a014bc",
'cache-control': "no-cache",
'postman-token': "b28272b7-621b-0f7a-37f4-809c64804d68"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
Successful response:
{
"response": "cfa74e69-5b5c-4c87-a0f6-4182165d2463"
}
Error response:
{
"error": "Account type not valid for a merchant, must be one of merchant, credit, mortgage, loan"
}
This endpoint creates a merchant account. The response is the account number for the new merchant account.
HTTP Request
POST https://demo.bvnk.co/account/merchant
Headers
X-Auth-Token: {auth token}
URL Parameters
Parameter | Required | Description |
---|---|---|
MerchantName | true | Name of the merchant. |
MerchantDescription | true | Description of the merchant |
MerchantContactGivenName | true | Given name of merchant contact |
MerchantContactFamilyName | true | Family name of merchant contact |
MerchantAddressLine1 | true | First line of address of merchant |
MerchantAddressLine2 | false | Second line of address of merchant |
MerchantAddressLine3 | false | Third line of address of merchant |
MerchantCountry | true | Country of merchant |
MerchantPostalCode | true | Postal code of merchant |
MerchantBusinessSector | false | Business sector of merchant |
MerchantWebsite | false | Website of merchant |
MerchantContactPhone | true | Contact number of merchant |
MerchantContactFax | false | Fax number of merchant |
MerchantContactEmail | true | Email of merchant |
AccountType | true | Type of merchant account. Must be one of merchant, credit, mortgage, loan" |
Update Merchant
curl -X PUT \
https://demo.bvnk.co/account/merchant \
-H 'cache-control: no-cache' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-H 'postman-token: fb0b61fa-793a-dad6-104d-06e7ead7f6f5' \
-H 'x-auth-token: fcb7ae8b-f88f-45fd-8e57-d273a1a014bc' \
-F 'MerchantName=Test Merchant Ltd' \
-F 'MerchantDescription=Supplying the best test since 2017' \
-F MerchantContactGivenName=John \
-F MerchantContactFamilyName=Test \
-F 'MerchantAddressLine1=Office 1' \
-F 'MerchantAddressLine2=Office Road' \
-F 'MerchantAddressLine3=Office County' \
-F MerchantCountry=UK \
-F 'MerchantPostalCode=E14 5EW' \
-F MerchantBusinessSector=Commerce \
-F MerchantWebsite=testwebsite.com \
-F MerchantContactPhone=0800-test-phone \
-F MerchantContactFax=0800-test-fax \
-F 'MerchantContactEmail=john@testwebsite,com' \
-F MerchantLogo= \
-F MerchantID=a66644fe-2a69-4f6b-935d-0d573e9f19fc
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/account/merchant"
payload := strings.NewReader("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantName\"\r\n\r\nTest Merchant Ltd\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantDescription\"\r\n\r\nSupplying the best test since 2017\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantContactGivenName\"\r\n\r\nJohn\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantContactFamilyName\"\r\n\r\nTest\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantAddressLine1\"\r\n\r\nOffice 1\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantAddressLine2\"\r\n\r\nOffice Road\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantAddressLine3\"\r\n\r\nOffice County\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantCountry\"\r\n\r\nUK\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantPostalCode\"\r\n\r\nE14 5EW\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantBusinessSector\"\r\n\r\nCommerce\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantWebsite\"\r\n\r\ntestwebsite.com\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantContactPhone\"\r\n\r\n0800-test-phone\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantContactFax\"\r\n\r\n0800-test-fax\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantContactEmail\"\r\n\r\njohn@testwebsite,com\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantLogo\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantID\"\r\n\r\na66644fe-2a69-4f6b-935d-0d573e9f19fc\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
req.Header.Add("x-auth-token", "fcb7ae8b-f88f-45fd-8e57-d273a1a014bc")
req.Header.Add("cache-control", "no-cache")
req.Header.Add("postman-token", "f75159da-ebbc-84a6-585c-f96b406c88a8")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.put("https://demo.bvnk.co/account/merchant")
.header("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
.header("x-auth-token", "fcb7ae8b-f88f-45fd-8e57-d273a1a014bc")
.header("cache-control", "no-cache")
.header("postman-token", "24383c59-db94-7cb3-3cf7-7854dd54cbd8")
.body("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantName\"\r\n\r\nTest Merchant Ltd\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantDescription\"\r\n\r\nSupplying the best test since 2017\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantContactGivenName\"\r\n\r\nJohn\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantContactFamilyName\"\r\n\r\nTest\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantAddressLine1\"\r\n\r\nOffice 1\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantAddressLine2\"\r\n\r\nOffice Road\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantAddressLine3\"\r\n\r\nOffice County\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantCountry\"\r\n\r\nUK\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantPostalCode\"\r\n\r\nE14 5EW\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantBusinessSector\"\r\n\r\nCommerce\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantWebsite\"\r\n\r\ntestwebsite.com\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantContactPhone\"\r\n\r\n0800-test-phone\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantContactFax\"\r\n\r\n0800-test-fax\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantContactEmail\"\r\n\r\njohn@testwebsite,com\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantLogo\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantID\"\r\n\r\na66644fe-2a69-4f6b-935d-0d573e9f19fc\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
.asString();
var request = require("request");
var options = { method: 'PUT',
url: 'https://demo.bvnk.co/account/merchant',
headers:
{ 'postman-token': '910fe9e5-aaba-174e-4d96-e1d131f09477',
'cache-control': 'no-cache',
'x-auth-token': 'fcb7ae8b-f88f-45fd-8e57-d273a1a014bc',
'content-type': 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' },
formData:
{ MerchantName: 'Test Merchant Ltd',
MerchantDescription: 'Supplying the best test since 2017',
MerchantContactGivenName: 'John',
MerchantContactFamilyName: 'Test',
MerchantAddressLine1: 'Office 1',
MerchantAddressLine2: 'Office Road',
MerchantAddressLine3: 'Office County',
MerchantCountry: 'UK',
MerchantPostalCode: 'E14 5EW',
MerchantBusinessSector: 'Commerce',
MerchantWebsite: 'testwebsite.com',
MerchantContactPhone: '0800-test-phone',
MerchantContactFax: '0800-test-fax',
MerchantContactEmail: 'john@testwebsite,com',
MerchantLogo: '',
MerchantID: 'a66644fe-2a69-4f6b-935d-0d573e9f19fc' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "https://demo.bvnk.co/account/merchant"
payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantName\"\r\n\r\nTest Merchant Ltd\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantDescription\"\r\n\r\nSupplying the best test since 2017\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantContactGivenName\"\r\n\r\nJohn\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantContactFamilyName\"\r\n\r\nTest\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantAddressLine1\"\r\n\r\nOffice 1\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantAddressLine2\"\r\n\r\nOffice Road\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantAddressLine3\"\r\n\r\nOffice County\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantCountry\"\r\n\r\nUK\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantPostalCode\"\r\n\r\nE14 5EW\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantBusinessSector\"\r\n\r\nCommerce\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantWebsite\"\r\n\r\ntestwebsite.com\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantContactPhone\"\r\n\r\n0800-test-phone\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantContactFax\"\r\n\r\n0800-test-fax\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantContactEmail\"\r\n\r\njohn@testwebsite,com\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantLogo\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"MerchantID\"\r\n\r\na66644fe-2a69-4f6b-935d-0d573e9f19fc\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
headers = {
'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
'x-auth-token': "fcb7ae8b-f88f-45fd-8e57-d273a1a014bc",
'cache-control': "no-cache",
'postman-token': "a60515aa-51f1-5681-e1f3-9fa1bf88a24a"
}
response = requests.request("PUT", url, data=payload, headers=headers)
print(response.text)
Successful response:
{
"response": ""
}
Error response:
{
"error": "Could not update merchant"
}
This route updates a given merchant with the new details. Only changed fields need to be included. merchantID
field is the only mandatory field.
HTTP Request
PUT https://demo.bvnk.co/account/merchant
Headers
X-Auth-Token: {auth token}
URL Parameters
Parameter | Required | Description |
---|---|---|
MerchantName | false | Name of the merchant. |
MerchantDescription | false | Description of the merchant |
MerchantContactGivenName | false | Given name of merchant contact |
MerchantContactFamilyName | false | Family name of merchant contact |
MerchantAddressLine1 | false | First line of address of merchant |
MerchantAddressLine2 | false | Second line of address of merchant |
MerchantAddressLine3 | false | Third line of address of merchant |
MerchantCountry | false | Country of merchant |
MerchantPostalCode | false | Postal code of merchant |
MerchantBusinessSector | false | Business sector of merchant |
MerchantWebsite | false | Website of merchant |
MerchantContactPhone | false | Contact number of merchant |
MerchantContactFax | false | Fax number of merchant |
MerchantContactEmail | false | Email of merchant |
MerchantID | true | The account number of the merchant |
View Merchant
curl -X GET \
https://demo.bvnk.co/account/merchant/7c9e7ec0-e18a-4a31-ac8b-8bb226afa06e \
-H 'cache-control: no-cache' \
-H 'postman-token: 52b971e7-ced0-02ce-08ec-b84782b72b5c' \
-H 'x-auth-token: 09c3ced7-6aa7-4705-a069-c1d8bae5b7fa'
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/account/merchant/7c9e7ec0-e18a-4a31-ac8b-8bb226afa06e"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-auth-token", "09c3ced7-6aa7-4705-a069-c1d8bae5b7fa")
req.Header.Add("cache-control", "no-cache")
req.Header.Add("postman-token", "a6d165b9-9769-d2e4-2f84-4c4488decccd")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.get("https://demo.bvnk.co/account/merchant/7c9e7ec0-e18a-4a31-ac8b-8bb226afa06e")
.header("x-auth-token", "09c3ced7-6aa7-4705-a069-c1d8bae5b7fa")
.header("cache-control", "no-cache")
.header("postman-token", "d870e814-a18f-aa53-917b-74bce13650d7")
.asString();
var request = require("request");
var options = { method: 'GET',
url: 'https://demo.bvnk.co/account/merchant/7c9e7ec0-e18a-4a31-ac8b-8bb226afa06e',
headers:
{ 'postman-token': '48c62e5c-5f7d-b6d2-0add-d274ccfeef56',
'cache-control': 'no-cache',
'x-auth-token': '09c3ced7-6aa7-4705-a069-c1d8bae5b7fa' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "https://demo.bvnk.co/account/merchant/7c9e7ec0-e18a-4a31-ac8b-8bb226afa06e"
headers = {
'x-auth-token': "09c3ced7-6aa7-4705-a069-c1d8bae5b7fa",
'cache-control': "no-cache",
'postman-token': "956096a4-d80f-c7b9-2dbd-8ae127cd7f48"
}
response = requests.request("GET", url, headers=headers)
print(response.text)
Successful response:
{
"response": {
"ID": "7c9e7ec0-e18a-4a31-ac8b-8bb226afa06e",
"Name": "Test Merchant Ltd",
"Description": "Supplying the best test since 2017",
"ContactGivenName": "John",
"ContactFamilyName": "Test",
"AddressLine1": "Office 1",
"AddressLine2": "Office Road",
"AddressLine3": "Office County",
"Country": "UK",
"PostalCode": "E14 5EW",
"BusinessSector": "Commerce",
"Website": "testwebsite.com",
"ContactPhone": "0800-test-phone",
"ContactFax": "0800-test-fax",
"ContactEmail": "john@testwebsite,com",
"Logo": "",
"IdentificationNumber": "",
"Timestamp": 1505657292
}
}
Error response:
{
"error": "Could not retrieve merchant from given Merchant ID. No merchant found"
}
This endpoint retrieves details on a given merchant.
HTTP Request
GET https://demo.bvnk.co/account/merchant/{merchantID}
Headers
X-Auth-Token: {auth token}
URL Parameters
Parameter | Required | Description |
---|---|---|
MerchantID | true | The account number of the merchant |
Search For A Merchant
curl -X POST \
https://demo.bvnk.co/account/merchantSearch \
-H 'cache-control: no-cache' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-H 'postman-token: 3e9d6fa1-cf74-d219-33bd-448400636db6' \
-H 'x-auth-token: 09c3ced7-6aa7-4705-a069-c1d8bae5b7fa' \
-F Search=merch
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/account/merchantSearch"
payload := strings.NewReader("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Search\"\r\n\r\nmerch\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
req.Header.Add("x-auth-token", "09c3ced7-6aa7-4705-a069-c1d8bae5b7fa")
req.Header.Add("cache-control", "no-cache")
req.Header.Add("postman-token", "b040dfa1-c95e-13a8-3e7b-952fb7ab7419")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.post("https://demo.bvnk.co/account/merchantSearch")
.header("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
.header("x-auth-token", "09c3ced7-6aa7-4705-a069-c1d8bae5b7fa")
.header("cache-control", "no-cache")
.header("postman-token", "010d8222-db29-ef7e-9c63-727e00920faf")
.body("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Search\"\r\n\r\nmerch\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
.asString();
var request = require("request");
var options = { method: 'POST',
url: 'https://demo.bvnk.co/account/merchantSearch',
headers:
{ 'postman-token': '0d20580a-a8c7-0de8-5ef5-6c4395ba88ae',
'cache-control': 'no-cache',
'x-auth-token': '09c3ced7-6aa7-4705-a069-c1d8bae5b7fa',
'content-type': 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' },
formData: { Search: 'merch' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "https://demo.bvnk.co/account/merchantSearch"
payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Search\"\r\n\r\nmerch\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
headers = {
'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
'x-auth-token': "09c3ced7-6aa7-4705-a069-c1d8bae5b7fa",
'cache-control': "no-cache",
'postman-token': "eadae3bb-47ab-1c47-44b5-57bfc8f6fc12"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
Successful response:
{
"response": [
{
"ID": "f0bc5426-67c0-4427-a36b-587d7ff8c5a7",
"Name": "Test Merchant Ltd",
"Description": "Supplying the best test since 2015",
"ContactGivenName": "",
"ContactFamilyName": "",
"AddressLine1": "",
"AddressLine2": "",
"AddressLine3": "",
"Country": "",
"PostalCode": "",
"BusinessSector": "",
"Website": "",
"ContactPhone": "",
"ContactFax": "",
"ContactEmail": "",
"Logo": "",
"IdentificationNumber": "",
"Timestamp": 0
},
{
"ID": "f03645dc-e898-4e64-bb38-095fd2209b9c",
"Name": "Test Merchant Ltd",
"Description": "Supplying the best test since 2015",
"ContactGivenName": "",
"ContactFamilyName": "",
"AddressLine1": "",
"AddressLine2": "",
"AddressLine3": "",
"Country": "",
"PostalCode": "",
"BusinessSector": "",
"Website": "",
"ContactPhone": "",
"ContactFax": "",
"ContactEmail": "",
"Logo": "",
"IdentificationNumber": "",
"Timestamp": 0
},
{
"ID": "e0838741-a950-41e3-9138-842c3e884ef2",
"Name": "Test Merchant Ltd",
"Description": "Supplying the best test since 2015",
"ContactGivenName": "",
"ContactFamilyName": "",
"AddressLine1": "",
"AddressLine2": "",
"AddressLine3": "",
"Country": "",
"PostalCode": "",
"BusinessSector": "",
"Website": "",
"ContactPhone": "",
"ContactFax": "",
"ContactEmail": "",
"Logo": "",
"IdentificationNumber": "",
"Timestamp": 0
},
{
"ID": "1050d88b-a3d2-4d88-888c-3d5a765682a4",
"Name": "Test Merchant Ltd",
"Description": "Supplying the best test since 2015",
"ContactGivenName": "",
"ContactFamilyName": "",
"AddressLine1": "",
"AddressLine2": "",
"AddressLine3": "",
"Country": "",
"PostalCode": "",
"BusinessSector": "",
"Website": "",
"ContactPhone": "",
"ContactFax": "",
"ContactEmail": "",
"Logo": "",
"IdentificationNumber": "",
"Timestamp": 0
},
{
"ID": "80ecf96f-4824-4d19-a3c6-b7dbe33d0445",
"Name": "Test Merchant Ltd",
"Description": "Supplying the best test since 2015",
"ContactGivenName": "",
"ContactFamilyName": "",
"AddressLine1": "",
"AddressLine2": "",
"AddressLine3": "",
"Country": "",
"PostalCode": "",
"BusinessSector": "",
"Website": "",
"ContactPhone": "",
"ContactFax": "",
"ContactEmail": "",
"Logo": "",
"IdentificationNumber": "",
"Timestamp": 0
},
{
"ID": "be721742-80bd-4a6b-b79b-9b9e269b465c",
"Name": "Test Merchant Ltd",
"Description": "Supplying the best test since 2015",
"ContactGivenName": "",
"ContactFamilyName": "",
"AddressLine1": "",
"AddressLine2": "",
"AddressLine3": "",
"Country": "",
"PostalCode": "",
"BusinessSector": "",
"Website": "",
"ContactPhone": "",
"ContactFax": "",
"ContactEmail": "",
"Logo": "",
"IdentificationNumber": "",
"Timestamp": 0
},
{
"ID": "fac60d6f-ce80-4f2c-8c51-4a4cb4d33976",
"Name": "Test Merchant Ltd",
"Description": "Supplying the best test since 2015",
"ContactGivenName": "",
"ContactFamilyName": "",
"AddressLine1": "",
"AddressLine2": "",
"AddressLine3": "",
"Country": "",
"PostalCode": "",
"BusinessSector": "",
"Website": "",
"ContactPhone": "",
"ContactFax": "",
"ContactEmail": "",
"Logo": "",
"IdentificationNumber": "",
"Timestamp": 0
},
]
}
Error response:
{
"error": "An error occurred searching for the merchant"
}
This endpoint performs a fuzzy match search for merchants on merchant name and merchant description, and an exact search on merchantID.
HTTP Request
POST https://demo.bvnk.co/account/merchantSearch
Headers
X-Auth-Token: {auth token}
URL Parameters
Parameter | Required | Description |
---|---|---|
Search | true | Term to search for. Must be at least 4 characters in length. |
Customers
Create Individual Customer
curl -X POST \
https://demo.bvnk.co/account/single \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json' \
-H 'Postman-Token: d4035df3-2d1e-b376-e5c1-efb6e7752d34' \
-H 'X-Auth-Token: 8400a09e-7676-4aa3-bce0-57a216b7f1b0' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-F AccountHolderGivenName=Test \
-F AccountHolderFamilyName=User1 \
-F AccountHolderDateOfBirth=1900-01-01 \
-F AccountHolderIdentificationNumber=19000101-1234-005 \
-F AccountHolderContactNumber1=555-555-0017 \
-F AccountHolderContactNumber2=0800-test-fax22 \
-F AccountHolderEmailAddress=test17@bvnk.co \
-F 'AccountHolderAddressLine1=Address 1' \
-F 'AccountHolderAddressLine2=Address 2' \
-F 'AccountHolderAddressLine3=Address 3' \
-F AccountHolderCountry=AO \
-F AccountHolderPostalCode=1234 \
-F AccountHolderPassword=password \
-F CustomerTag=cardmanager \
-F CustomerID=9691f2de-f3e4-4a84-bf89-a07c0de69fac
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/account/single"
payload := strings.NewReader("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderGivenName\"\r\n\r\nTest\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderFamilyName\"\r\n\r\nUser1\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderDateOfBirth\"\r\n\r\n1900-01-01\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderIdentificationNumber\"\r\n\r\n19000101-1234-005\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderContactNumber1\"\r\n\r\n555-555-0017\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderContactNumber2\"\r\n\r\n0800-test-fax22\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderEmailAddress\"\r\n\r\ntest17@bvnk.co\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine1\"\r\n\r\nAddress 1\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine2\"\r\n\r\nAddress 2\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine3\"\r\n\r\nAddress 3\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderCountry\"\r\n\r\nAO\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderPostalCode\"\r\n\r\n1234\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderPassword\"\r\n\r\npassword\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerTag\"\r\n\r\ncardmanager\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerID\"\r\n\r\n9691f2de-f3e4-4a84-bf89-a07c0de69fac\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
req.Header.Add("Content-Type", "application/json")
req.Header.Add("X-Auth-Token", "8400a09e-7676-4aa3-bce0-57a216b7f1b0")
req.Header.Add("Cache-Control", "no-cache")
req.Header.Add("Postman-Token", "00f865bf-9413-3708-bd1e-7aeab264af7d")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.post("https://demo.bvnk.co/account/single")
.header("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
.header("Content-Type", "application/json")
.header("X-Auth-Token", "8400a09e-7676-4aa3-bce0-57a216b7f1b0")
.header("Cache-Control", "no-cache")
.header("Postman-Token", "2bd71bdb-9705-b0f9-21bf-7fc4afb7c684")
.body("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderGivenName\"\r\n\r\nTest\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderFamilyName\"\r\n\r\nUser1\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderDateOfBirth\"\r\n\r\n1900-01-01\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderIdentificationNumber\"\r\n\r\n19000101-1234-005\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderContactNumber1\"\r\n\r\n555-555-0017\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderContactNumber2\"\r\n\r\n0800-test-fax22\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderEmailAddress\"\r\n\r\ntest17@bvnk.co\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine1\"\r\n\r\nAddress 1\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine2\"\r\n\r\nAddress 2\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine3\"\r\n\r\nAddress 3\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderCountry\"\r\n\r\nAO\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderPostalCode\"\r\n\r\n1234\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderPassword\"\r\n\r\npassword\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerTag\"\r\n\r\ncardmanager\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerID\"\r\n\r\n9691f2de-f3e4-4a84-bf89-a07c0de69fac\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
.asString();
var data = new FormData();
data.append("AccountHolderGivenName", "Test");
data.append("AccountHolderFamilyName", "User1");
data.append("AccountHolderDateOfBirth", "1900-01-01");
data.append("AccountHolderIdentificationNumber", "19000101-1234-005");
data.append("AccountHolderContactNumber1", "555-555-0017");
data.append("AccountHolderContactNumber2", "0800-test-fax22");
data.append("AccountHolderEmailAddress", "test17@bvnk.co");
data.append("AccountHolderAddressLine1", "Address 1");
data.append("AccountHolderAddressLine2", "Address 2");
data.append("AccountHolderAddressLine3", "Address 3");
data.append("AccountHolderCountry", "AO");
data.append("AccountHolderPostalCode", "1234");
data.append("AccountHolderPassword", "password");
data.append("CustomerTag", "cardmanager");
data.append("CustomerID", "9691f2de-f3e4-4a84-bf89-a07c0de69fac");
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://demo.bvnk.co/account/single");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.setRequestHeader("X-Auth-Token", "8400a09e-7676-4aa3-bce0-57a216b7f1b0");
xhr.setRequestHeader("Cache-Control", "no-cache");
xhr.setRequestHeader("Postman-Token", "d69142f5-d471-0440-a5e6-fb4b795f8330");
xhr.send(data);
import requests
url = "https://demo.bvnk.co/account/single"
payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderGivenName\"\r\n\r\nTest\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderFamilyName\"\r\n\r\nUser1\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderDateOfBirth\"\r\n\r\n1900-01-01\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderIdentificationNumber\"\r\n\r\n19000101-1234-005\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderContactNumber1\"\r\n\r\n555-555-0017\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderContactNumber2\"\r\n\r\n0800-test-fax22\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderEmailAddress\"\r\n\r\ntest17@bvnk.co\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine1\"\r\n\r\nAddress 1\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine2\"\r\n\r\nAddress 2\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine3\"\r\n\r\nAddress 3\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderCountry\"\r\n\r\nAO\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderPostalCode\"\r\n\r\n1234\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderPassword\"\r\n\r\npassword\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerTag\"\r\n\r\ncardmanager\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerID\"\r\n\r\n9691f2de-f3e4-4a84-bf89-a07c0de69fac\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
headers = {
'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
'Content-Type': "application/json",
'X-Auth-Token': "8400a09e-7676-4aa3-bce0-57a216b7f1b0",
'Cache-Control': "no-cache",
'Postman-Token': "365110b7-0ba4-cb8c-ebea-5c6e098a60ed"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
Successful response:
{
"response": "cfa74e69-5b5c-4c87-a0f6-4182165d2463"
}
Error response:
{
"error": "error message"
}
This endpoint creates an individual customer for a merchant. The response is the account number for the new customer account. The individual customer is a person (not business) and therefore does not have the extra KYC requirements besides the standard KYC for all BVNK users.
HTTP Request
POST https://demo.bvnk.co/account/single
Headers
X-Auth-Token: {auth token}
URL Parameters
Parameter | Required | Description |
---|---|---|
AccountHolderGivenName | true | Given or first name of account holder |
AccountHolderFamilyName | true | Family name of account holder |
AccountHolderDateOfBirth | true | Date of birth of account holder in the format dd-mm-yyyy |
AccountHolderIdentificationNumber | true | Identification or passport number of account holder |
AccountHolderContactNumber1 | true | Primary contact number for account holder |
AccountHolderContactNumber2 | false | Secondary contact number for account holder |
AccountHolderEmailAddress | true | Email address for account holder |
AccountHolderAddressLine1 | true | First line of address for account holder |
AccountHolderAddressLine2 | false | Second line of address for account holder |
AccountHolderAddressLine3 | false | Third line of address for account holder |
AccountHolderPostalCode | true | Postal code of address for account holder |
AccountHolderCountry | true | Valid ISO2 code for country. List of countries can be retrieved from /countries . |
AccountHolderPassword | true | Password for the users account |
CustomerTag | true | A tag to identify the merchant's business product |
CustomerID | true | A unique ID provided by the merchant to identify the customer in their own system |
Create Merchant Customer
curl -X POST \
https://demo.bvnk.co/account/customer \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json' \
-H 'Postman-Token: 80d75c8d-3c58-c896-c594-09058605b3fd' \
-H 'X-Auth-Token: 8400a09e-7676-4aa3-bce0-57a216b7f1b0' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-F DirectorGivenName=Customer \
-F DirectorFamilyName=Director \
-F DirectorDateOfBirth=1900-01-01 \
-F DirectorIdentificationNumber=19000101-1234-007 \
-F DirectorPassword=password \
-F DirectorEmailAddress=test7@bvnk.co \
-F DirectorContactNumber1=555-555-0007 \
-F DirectorContactNumber2=0800-test-fax2 \
-F DirectorContactnumberMobile=555-555-0008 \
-F 'DirectorAddressLine1=Address 1' \
-F 'DirectorAddressLine2=Address 2' \
-F 'DirectorAddressLine3=Address 3' \
-F DirectorPostalCode=1234 \
-F DirectorCountry=AO \
-F 'CustomerName=CardManager Customer One' \
-F CustomerType=master \
-F CustomerTag=cardmanager \
-F CustomerID=9691f2de-f3e4-4a84-bf89-a07c0de69f58 \
-F CustomerMerchant=e46d3ff7-6bfc-437e-ab2b-ceb875537b22 \
-F CustomerAddressCity=Test \
-F 'CustomerAddressCountry=United States' \
-F 'CustomerAddressLine1=Office 1B' \
-F 'CustomerAddressLine2=Office Road 1B' \
-F 'CustomerAddressLine3=Office Road 1C' \
-F CustomerAddressPostalCode=12345 \
-F CustomerAddressProvince=Test \
-F CustomerAddressStreetName=Test \
-F CustomerAddressStreetNumber=Test \
-F CustomerBusinessSector=Transportation \
-F CustomerContactEmail=test10@bvnk.co \
-F CustomerContactFamilyName=Doe \
-F CustomerContactFax=0800-test-fax2 \
-F CustomerContactGivenName=John \
-F CustomerContactPhone=555-555-0011 \
-F CustomerCorrespondenceType=Email \
-F 'CustomerDescription=The first Card Manager Customer' \
-F CustomerAccountCurrency=usd \
-F CustomerLogo= \
-F CustomerRegistrationDate=2017-02-09 \
-F CustomerRegistrationNumber=thisisaregistrationnumber \
-F CustomerStatementDelivery=Email \
-F CustomerStatementFrequency=Annually \
-F CustomerTaxNumber=some_tax_number \
-F CustomerWebsite=uber.com
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/account/customer"
payload := strings.NewReader("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorGivenName\"\r\n\r\nCustomer\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorFamilyName\"\r\n\r\nDirector\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorDateOfBirth\"\r\n\r\n1900-01-01\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorIdentificationNumber\"\r\n\r\n19000101-1234-007\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorPassword\"\r\n\r\npassword\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorEmailAddress\"\r\n\r\ntest7@bvnk.co\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorContactNumber1\"\r\n\r\n555-555-0007\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorContactNumber2\"\r\n\r\n0800-test-fax2\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorContactnumberMobile\"\r\n\r\n555-555-0008\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorAddressLine1\"\r\n\r\nAddress 1\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorAddressLine2\"\r\n\r\nAddress 2\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorAddressLine3\"\r\n\r\nAddress 3\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorPostalCode\"\r\n\r\n1234\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorCountry\"\r\n\r\nAO\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerName\"\r\n\r\nCardManager Customer One\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerType\"\r\n\r\nmaster\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerTag\"\r\n\r\ncardmanager\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerID\"\r\n\r\n9691f2de-f3e4-4a84-bf89-a07c0de69f58\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerMerchant\"\r\n\r\ne46d3ff7-6bfc-437e-ab2b-ceb875537b22\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressCity\"\r\n\r\nTest\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressCountry\"\r\n\r\nUnited States\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressLine1\"\r\n\r\nOffice 1B\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressLine2\"\r\n\r\nOffice Road 1B\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressLine3\"\r\n\r\nOffice Road 1C\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressPostalCode\"\r\n\r\n12345\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressProvince\"\r\n\r\nTest\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressStreetName\"\r\n\r\nTest\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressStreetNumber\"\r\n\r\nTest\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerBusinessSector\"\r\n\r\nTransportation\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerContactEmail\"\r\n\r\ntest10@bvnk.co\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerContactFamilyName\"\r\n\r\nDoe\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerContactFax\"\r\n\r\n0800-test-fax2\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerContactGivenName\"\r\n\r\nJohn\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerContactPhone\"\r\n\r\n555-555-0011\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerCorrespondenceType\"\r\n\r\nEmail\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerDescription\"\r\n\r\nThe first Card Manager Customer\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAccountCurrency\"\r\n\r\nusd\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerLogo\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerRegistrationDate\"\r\n\r\n2017-02-09\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerRegistrationNumber\"\r\n\r\nthisisaregistrationnumber\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerStatementDelivery\"\r\n\r\nEmail\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerStatementFrequency\"\r\n\r\nAnnually\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerTaxNumber\"\r\n\r\nsome_tax_number\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerWebsite\"\r\n\r\nuber.com\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
req.Header.Add("Content-Type", "application/json")
req.Header.Add("X-Auth-Token", "8400a09e-7676-4aa3-bce0-57a216b7f1b0")
req.Header.Add("Cache-Control", "no-cache")
req.Header.Add("Postman-Token", "495148d8-6c39-b375-7f3e-c30671c7f6cb")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.post("https://demo.bvnk.co/account/customer")
.header("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
.header("Content-Type", "application/json")
.header("X-Auth-Token", "8400a09e-7676-4aa3-bce0-57a216b7f1b0")
.header("Cache-Control", "no-cache")
.header("Postman-Token", "a3678804-5067-bc9f-83af-c05925e2f665")
.body("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorGivenName\"\r\n\r\nCustomer\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorFamilyName\"\r\n\r\nDirector\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorDateOfBirth\"\r\n\r\n1900-01-01\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorIdentificationNumber\"\r\n\r\n19000101-1234-007\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorPassword\"\r\n\r\npassword\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorEmailAddress\"\r\n\r\ntest7@bvnk.co\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorContactNumber1\"\r\n\r\n555-555-0007\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorContactNumber2\"\r\n\r\n0800-test-fax2\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorContactnumberMobile\"\r\n\r\n555-555-0008\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorAddressLine1\"\r\n\r\nAddress 1\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorAddressLine2\"\r\n\r\nAddress 2\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorAddressLine3\"\r\n\r\nAddress 3\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorPostalCode\"\r\n\r\n1234\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorCountry\"\r\n\r\nAO\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerName\"\r\n\r\nCardManager Customer One\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerType\"\r\n\r\nmaster\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerTag\"\r\n\r\ncardmanager\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerID\"\r\n\r\n9691f2de-f3e4-4a84-bf89-a07c0de69f58\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerMerchant\"\r\n\r\ne46d3ff7-6bfc-437e-ab2b-ceb875537b22\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressCity\"\r\n\r\nTest\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressCountry\"\r\n\r\nUnited States\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressLine1\"\r\n\r\nOffice 1B\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressLine2\"\r\n\r\nOffice Road 1B\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressLine3\"\r\n\r\nOffice Road 1C\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressPostalCode\"\r\n\r\n12345\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressProvince\"\r\n\r\nTest\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressStreetName\"\r\n\r\nTest\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressStreetNumber\"\r\n\r\nTest\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerBusinessSector\"\r\n\r\nTransportation\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerContactEmail\"\r\n\r\ntest10@bvnk.co\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerContactFamilyName\"\r\n\r\nDoe\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerContactFax\"\r\n\r\n0800-test-fax2\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerContactGivenName\"\r\n\r\nJohn\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerContactPhone\"\r\n\r\n555-555-0011\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerCorrespondenceType\"\r\n\r\nEmail\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerDescription\"\r\n\r\nThe first Card Manager Customer\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAccountCurrency\"\r\n\r\nusd\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerLogo\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerRegistrationDate\"\r\n\r\n2017-02-09\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerRegistrationNumber\"\r\n\r\nthisisaregistrationnumber\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerStatementDelivery\"\r\n\r\nEmail\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerStatementFrequency\"\r\n\r\nAnnually\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerTaxNumber\"\r\n\r\nsome_tax_number\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerWebsite\"\r\n\r\nuber.com\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
.asString();
var data = new FormData();
data.append("DirectorGivenName", "Customer");
data.append("DirectorFamilyName", "Director");
data.append("DirectorDateOfBirth", "1900-01-01");
data.append("DirectorIdentificationNumber", "19000101-1234-007");
data.append("DirectorPassword", "password");
data.append("DirectorEmailAddress", "test7@bvnk.co");
data.append("DirectorContactNumber1", "555-555-0007");
data.append("DirectorContactNumber2", "0800-test-fax2");
data.append("DirectorContactnumberMobile", "555-555-0008");
data.append("DirectorAddressLine1", "Address 1");
data.append("DirectorAddressLine2", "Address 2");
data.append("DirectorAddressLine3", "Address 3");
data.append("DirectorPostalCode", "1234");
data.append("DirectorCountry", "AO");
data.append("CustomerName", "CardManager Customer One");
data.append("CustomerType", "master");
data.append("CustomerTag", "cardmanager");
data.append("CustomerID", "9691f2de-f3e4-4a84-bf89-a07c0de69f58");
data.append("CustomerMerchant", "e46d3ff7-6bfc-437e-ab2b-ceb875537b22");
data.append("CustomerAddressCity", "Test");
data.append("CustomerAddressCountry", "United States");
data.append("CustomerAddressLine1", "Office 1B");
data.append("CustomerAddressLine2", "Office Road 1B");
data.append("CustomerAddressLine3", "Office Road 1C");
data.append("CustomerAddressPostalCode", "12345");
data.append("CustomerAddressProvince", "Test");
data.append("CustomerAddressStreetName", "Test");
data.append("CustomerAddressStreetNumber", "Test");
data.append("CustomerBusinessSector", "Transportation");
data.append("CustomerContactEmail", "test10@bvnk.co");
data.append("CustomerContactFamilyName", "Doe");
data.append("CustomerContactFax", "0800-test-fax2");
data.append("CustomerContactGivenName", "John");
data.append("CustomerContactPhone", "555-555-0011");
data.append("CustomerCorrespondenceType", "Email");
data.append("CustomerDescription", "The first Card Manager Customer");
data.append("CustomerAccountCurrency", "usd");
data.append("CustomerLogo", "");
data.append("CustomerRegistrationDate", "2017-02-09");
data.append("CustomerRegistrationNumber", "thisisaregistrationnumber");
data.append("CustomerStatementDelivery", "Email");
data.append("CustomerStatementFrequency", "Annually");
data.append("CustomerTaxNumber", "some_tax_number");
data.append("CustomerWebsite", "uber.com");
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://demo.bvnk.co/account/customer");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.setRequestHeader("X-Auth-Token", "8400a09e-7676-4aa3-bce0-57a216b7f1b0");
xhr.setRequestHeader("Cache-Control", "no-cache");
xhr.setRequestHeader("Postman-Token", "0a32f06d-0842-373d-498a-9c6aaae25784");
xhr.send(data);
import requests
url = "https://demo.bvnk.co/account/customer"
payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorGivenName\"\r\n\r\nCustomer\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorFamilyName\"\r\n\r\nDirector\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorDateOfBirth\"\r\n\r\n1900-01-01\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorIdentificationNumber\"\r\n\r\n19000101-1234-007\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorPassword\"\r\n\r\npassword\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorEmailAddress\"\r\n\r\ntest7@bvnk.co\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorContactNumber1\"\r\n\r\n555-555-0007\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorContactNumber2\"\r\n\r\n0800-test-fax2\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorContactnumberMobile\"\r\n\r\n555-555-0008\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorAddressLine1\"\r\n\r\nAddress 1\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorAddressLine2\"\r\n\r\nAddress 2\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorAddressLine3\"\r\n\r\nAddress 3\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorPostalCode\"\r\n\r\n1234\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"DirectorCountry\"\r\n\r\nAO\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerName\"\r\n\r\nCardManager Customer One\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerType\"\r\n\r\nmaster\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerTag\"\r\n\r\ncardmanager\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerID\"\r\n\r\n9691f2de-f3e4-4a84-bf89-a07c0de69f58\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerMerchant\"\r\n\r\ne46d3ff7-6bfc-437e-ab2b-ceb875537b22\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressCity\"\r\n\r\nTest\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressCountry\"\r\n\r\nUnited States\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressLine1\"\r\n\r\nOffice 1B\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressLine2\"\r\n\r\nOffice Road 1B\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressLine3\"\r\n\r\nOffice Road 1C\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressPostalCode\"\r\n\r\n12345\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressProvince\"\r\n\r\nTest\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressStreetName\"\r\n\r\nTest\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressStreetNumber\"\r\n\r\nTest\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerBusinessSector\"\r\n\r\nTransportation\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerContactEmail\"\r\n\r\ntest10@bvnk.co\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerContactFamilyName\"\r\n\r\nDoe\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerContactFax\"\r\n\r\n0800-test-fax2\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerContactGivenName\"\r\n\r\nJohn\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerContactPhone\"\r\n\r\n555-555-0011\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerCorrespondenceType\"\r\n\r\nEmail\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerDescription\"\r\n\r\nThe first Card Manager Customer\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAccountCurrency\"\r\n\r\nusd\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerLogo\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerRegistrationDate\"\r\n\r\n2017-02-09\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerRegistrationNumber\"\r\n\r\nthisisaregistrationnumber\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerStatementDelivery\"\r\n\r\nEmail\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerStatementFrequency\"\r\n\r\nAnnually\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerTaxNumber\"\r\n\r\nsome_tax_number\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerWebsite\"\r\n\r\nuber.com\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
headers = {
'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
'Content-Type': "application/json",
'X-Auth-Token': "8400a09e-7676-4aa3-bce0-57a216b7f1b0",
'Cache-Control': "no-cache",
'Postman-Token': "fb208070-36dd-eb61-c4ef-9512e5847330"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
Successful response:
{
"response": "cfa74e69-5b5c-4c87-a0f6-4182165d2463"
}
Error response:
{
"error": "error message"
}
This endpoint creates a business customer for a merchant. The customer may be the final customer or it may be a reseller with the ability to create subaccounts for its final customers. The response is the account number for the new customer account. This customer requires additional KYC information (FICA details) as opposed to the Individual Customer
HTTP Request
POST https://demo.bvnk.co/account/customer
Headers
X-Auth-Token: {auth token}
URL Parameters
Parameter | Required | Description |
---|---|---|
DirectorGivenName | true | |
DirectorFamilyName | true | |
DirectorDateOfBirth | true | |
DirectorIdentificationNumber | true | |
DirectorPassword | true | |
DirectorEmailAddress | true | |
DirectorContactNumber1 | true | |
DirectorContactNumber2 | true | |
DirectorContactnumberMobile | true | |
DirectorAddressLine1 | true | |
DirectorAddressLine2 | true | |
DirectorAddressLine3 | true | |
DirectorPostalCode | true | |
DirectorCountry | true | |
CustomerName | true | |
CustomerType | true | single or master (determines if customer can have subaccounts) |
CustomerTag | true | A tag to identify the merchant's business product |
CustomerID | true | A unique ID provided by the merchant to identify the customer in their own system |
CustomerMerchant | true | |
CustomerAddressCity | true | |
CustomerAddressCountry | true | |
CustomerAddressLine1 | true | |
CustomerAddressLine2 | true | |
CustomerAddressLine3 | true | |
CustomerAddressPostalCode | true | |
CustomerAddressProvince | true | |
CustomerAddressStreetName | true | |
CustomerAddressStreetNumber | true | |
CustomerBusinessSector | true | |
CustomerContactEmail | true | |
CustomerContactFamilyName | true | |
CustomerContactFax | true | |
CustomerContactGivenName | true | |
CustomerContactPhone | true | |
CustomerCorrespondenceType | true | |
CustomerDescription | true | |
CustomerAccountCurrency | true | |
CustomerLogo | true | |
CustomerRegistrationDate | true | |
CustomerRegistrationNumber | true | |
CustomerStatementDelivery | true | |
CustomerStatementFrequency | true | |
CustomerTaxNumber | true | |
CustomerWebsite | true |
Create Individual Subaccount
curl -X POST \
https://demo.bvnk.co/account/cardholder \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json' \
-H 'Postman-Token: e7c09178-2294-fb0e-7ab1-abd4dd39fcc1' \
-H 'X-Auth-Token: 8400a09e-7676-4aa3-bce0-57a216b7f1b0' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-F AccountHolderGivenName=Test \
-F AccountHolderFamilyName=User1 \
-F AccountHolderDateOfBirth=1900-01-01 \
-F AccountHolderIdentificationNumber=19000101-1234-009 \
-F AccountHolderContactNumber1=555-555-0015 \
-F AccountHolderContactNumber2=0800-test-fax22 \
-F AccountHolderEmailAddress=test13@bvnk.co \
-F 'AccountHolderAddressLine1=Address 1' \
-F 'AccountHolderAddressLine2=Address 2' \
-F 'AccountHolderAddressLine3=Address 3' \
-F AccountHolderCountry=AO \
-F AccountHolderPostalCode=1234 \
-F AccountHolderPassword=password \
-F 'CustomerName=CardManager Company Customer Three' \
-F 'CustomerDescription=The third Card Manager Customer' \
-F AccountCurrency=usd \
-F CustomerType=subaccount \
-F CustomerTag=cardmanager \
-F CustomerID=9691f2de-f3e4-4a84-bf89-a07c0de69f58 \
-F Unique_CompanyCardNumber=cardnumber3 \
-F 'CustomerIDType=Driver License' \
-F CustomerIDexipiry=2020-01-01 \
-F CustomerGender=Female \
-F 'HollardAccountPolicy=hollard account policy' \
-F CustomerBusinessSector=Transportation
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/account/cardholder"
payload := strings.NewReader("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderGivenName\"\r\n\r\nTest\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderFamilyName\"\r\n\r\nUser1\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderDateOfBirth\"\r\n\r\n1900-01-01\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderIdentificationNumber\"\r\n\r\n19000101-1234-009\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderContactNumber1\"\r\n\r\n555-555-0015\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderContactNumber2\"\r\n\r\n0800-test-fax22\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderEmailAddress\"\r\n\r\ntest13@bvnk.co\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine1\"\r\n\r\nAddress 1\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine2\"\r\n\r\nAddress 2\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine3\"\r\n\r\nAddress 3\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderCountry\"\r\n\r\nAO\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderPostalCode\"\r\n\r\n1234\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderPassword\"\r\n\r\npassword\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerName\"\r\n\r\nCardManager Company Customer Three\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerDescription\"\r\n\r\nThe third Card Manager Customer\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountCurrency\"\r\n\r\nusd\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerType\"\r\n\r\nsubaccount\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerTag\"\r\n\r\ncardmanager\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerID\"\r\n\r\n9691f2de-f3e4-4a84-bf89-a07c0de69f58\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Unique_CompanyCardNumber\"\r\n\r\ncardnumber3\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerIDType\"\r\n\r\nDriver License\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerIDexipiry\"\r\n\r\n2020-01-01\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerGender\"\r\n\r\nFemale\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"HollardAccountPolicy\"\r\n\r\nhollard account policy\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerBusinessSector\"\r\n\r\nTransportation\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
req.Header.Add("Content-Type", "application/json")
req.Header.Add("X-Auth-Token", "8400a09e-7676-4aa3-bce0-57a216b7f1b0")
req.Header.Add("Cache-Control", "no-cache")
req.Header.Add("Postman-Token", "1d12d380-5e2d-aa4a-9720-e9b57b87a4ce")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.post("https://demo.bvnk.co/account/cardholder")
.header("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
.header("Content-Type", "application/json")
.header("X-Auth-Token", "8400a09e-7676-4aa3-bce0-57a216b7f1b0")
.header("Cache-Control", "no-cache")
.header("Postman-Token", "bf4fc55f-5f3b-9814-560f-5a372d38d6f1")
.body("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderGivenName\"\r\n\r\nTest\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderFamilyName\"\r\n\r\nUser1\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderDateOfBirth\"\r\n\r\n1900-01-01\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderIdentificationNumber\"\r\n\r\n19000101-1234-009\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderContactNumber1\"\r\n\r\n555-555-0015\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderContactNumber2\"\r\n\r\n0800-test-fax22\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderEmailAddress\"\r\n\r\ntest13@bvnk.co\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine1\"\r\n\r\nAddress 1\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine2\"\r\n\r\nAddress 2\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine3\"\r\n\r\nAddress 3\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderCountry\"\r\n\r\nAO\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderPostalCode\"\r\n\r\n1234\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderPassword\"\r\n\r\npassword\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerName\"\r\n\r\nCardManager Company Customer Three\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerDescription\"\r\n\r\nThe third Card Manager Customer\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountCurrency\"\r\n\r\nusd\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerType\"\r\n\r\nsubaccount\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerTag\"\r\n\r\ncardmanager\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerID\"\r\n\r\n9691f2de-f3e4-4a84-bf89-a07c0de69f58\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Unique_CompanyCardNumber\"\r\n\r\ncardnumber3\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerIDType\"\r\n\r\nDriver License\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerIDexipiry\"\r\n\r\n2020-01-01\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerGender\"\r\n\r\nFemale\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"HollardAccountPolicy\"\r\n\r\nhollard account policy\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerBusinessSector\"\r\n\r\nTransportation\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
.asString();
var data = new FormData();
data.append("AccountHolderGivenName", "Test");
data.append("AccountHolderFamilyName", "User1");
data.append("AccountHolderDateOfBirth", "1900-01-01");
data.append("AccountHolderIdentificationNumber", "19000101-1234-009");
data.append("AccountHolderContactNumber1", "555-555-0015");
data.append("AccountHolderContactNumber2", "0800-test-fax22");
data.append("AccountHolderEmailAddress", "test13@bvnk.co");
data.append("AccountHolderAddressLine1", "Address 1");
data.append("AccountHolderAddressLine2", "Address 2");
data.append("AccountHolderAddressLine3", "Address 3");
data.append("AccountHolderCountry", "AO");
data.append("AccountHolderPostalCode", "1234");
data.append("AccountHolderPassword", "password");
data.append("CustomerName", "CardManager Company Customer Three");
data.append("CustomerDescription", "The third Card Manager Customer");
data.append("AccountCurrency", "usd");
data.append("CustomerType", "subaccount");
data.append("CustomerTag", "cardmanager");
data.append("CustomerID", "9691f2de-f3e4-4a84-bf89-a07c0de69f58");
data.append("Unique_CompanyCardNumber", "cardnumber3");
data.append("CustomerIDType", "Driver License");
data.append("CustomerIDexipiry", "2020-01-01");
data.append("CustomerGender", "Female");
data.append("HollardAccountPolicy", "hollard account policy");
data.append("CustomerBusinessSector", "Transportation");
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://demo.bvnk.co/account/cardholder");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.setRequestHeader("X-Auth-Token", "8400a09e-7676-4aa3-bce0-57a216b7f1b0");
xhr.setRequestHeader("Cache-Control", "no-cache");
xhr.setRequestHeader("Postman-Token", "9c73b12d-9e52-bd84-7c39-dd03d0f26609");
xhr.send(data);
import requests
url = "https://demo.bvnk.co/account/cardholder"
payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderGivenName\"\r\n\r\nTest\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderFamilyName\"\r\n\r\nUser1\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderDateOfBirth\"\r\n\r\n1900-01-01\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderIdentificationNumber\"\r\n\r\n19000101-1234-009\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderContactNumber1\"\r\n\r\n555-555-0015\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderContactNumber2\"\r\n\r\n0800-test-fax22\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderEmailAddress\"\r\n\r\ntest13@bvnk.co\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine1\"\r\n\r\nAddress 1\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine2\"\r\n\r\nAddress 2\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine3\"\r\n\r\nAddress 3\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderCountry\"\r\n\r\nAO\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderPostalCode\"\r\n\r\n1234\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderPassword\"\r\n\r\npassword\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerName\"\r\n\r\nCardManager Company Customer Three\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerDescription\"\r\n\r\nThe third Card Manager Customer\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountCurrency\"\r\n\r\nusd\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerType\"\r\n\r\nsubaccount\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerTag\"\r\n\r\ncardmanager\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerID\"\r\n\r\n9691f2de-f3e4-4a84-bf89-a07c0de69f58\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Unique_CompanyCardNumber\"\r\n\r\ncardnumber3\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerIDType\"\r\n\r\nDriver License\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerIDexipiry\"\r\n\r\n2020-01-01\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerGender\"\r\n\r\nFemale\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"HollardAccountPolicy\"\r\n\r\nhollard account policy\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerBusinessSector\"\r\n\r\nTransportation\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
headers = {
'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
'Content-Type': "application/json",
'X-Auth-Token': "8400a09e-7676-4aa3-bce0-57a216b7f1b0",
'Cache-Control': "no-cache",
'Postman-Token': "0fa88cd9-c3ae-21ac-a3b7-bb4b4b095e97"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
Successful response:
{
"response": "cfa74e69-5b5c-4c87-a0f6-4182165d2463"
}
Error response:
{
"error": "error message"
}
This endpoint creates a subaccount under a merchant's customer, meant for an individual (not company) and therefore, without the additional KYC/FICA requirements. The response is the account number for the new subaccount.
HTTP Request
POST https://demo.bvnk.co/account/cardholder
Headers
X-Auth-Token: {auth token}
URL Parameters
Parameter | Required | Description |
---|---|---|
AccountHolderGivenName | true | |
AccountHolderFamilyName | true | |
AccountHolderDateOfBirth | true | |
AccountHolderIdentificationNumber | true | |
AccountHolderContactNumber1 | true | |
AccountHolderContactNumber2 | true | |
AccountHolderEmailAddress | true | |
AccountHolderAddressLine1 | true | |
AccountHolderAddressLine2 | true | |
AccountHolderAddressLine3 | true | |
AccountHolderCountry | true | |
AccountHolderPostalCode | true | |
AccountHolderPassword | true | |
CustomerName | true | |
CustomerDescription | true | |
AccountCurrency | true | |
CustomerType | true | |
CustomerTag | true | |
CustomerID | true | |
Unique_CompanyCardNumber | true | |
CustomerIDType | true | |
CustomerIDexipiry | true | |
CustomerGender | true | |
HollardAccountPolicy | true | |
CustomerBusinessSector | true |
Create Enterprise Subaccount
curl -X POST \
https://demo.bvnk.co/account/subaccount \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json' \
-H 'Postman-Token: fba6e25b-878b-e546-ac91-f287b0ef7046' \
-H 'X-Auth-Token: 8400a09e-7676-4aa3-bce0-57a216b7f1b0' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-F AccountHolderIdentificationNumber=19000101-1234-010 \
-F AccountHolderContactNumber1=555-555-0012 \
-F AccountHolderContactNumber2=0800-test1-fax2 \
-F AccountHolderEmailAddress=test11@bvnk.co \
-F 'AccountHolderAddressLine1=Address 1' \
-F 'AccountHolderAddressLine2=Address 2' \
-F 'AccountHolderAddressLine3=Address 3' \
-F AccountHolderCountry=AO \
-F AccountHolderPostalCode=1234 \
-F AccountHolderPassword=password \
-F 'CustomerName=CardManager Company Customer One' \
-F 'CustomerDescription=The first Card Manager Customer' \
-F CustomerContactGivenName=John \
-F CustomerContactFamilyName=Doe \
-F 'CustomerAddressLine1=Office 1B' \
-F 'CustomerAddressLine2=Office Road 1B' \
-F 'CustomerAddressLine3=Office Road 1C' \
-F 'CustomerAddressCountry=United States' \
-F CustomerWebsite=uber.com \
-F CustomerContactPhone=555-555-0014 \
-F CustomerContactFax=0800-test-fax3 \
-F CustomerContactEmail=test12@bvnk.co \
-F CustomerLogo= \
-F AccountCurrency=usd \
-F CustomerType=subaccount \
-F CustomerTag=cardmanager \
-F CustomerID=9691f2de-f3e4-4a84-bf89-a07c0de69f58 \
-F CustomerMerchant=e46d3ff7-6bfc-437e-ab2b-ceb875537b22 \
-F 'CustomerAddressCountry=United States' \
-F CustomerAddressPostalCode=12345 \
-F CustomerBusinessSector=Transportation \
-F CustomerWebsite=uber.com \
-F CustomerContactPhone=555-555-0014 \
-F CustomerContactFax=0800-test-fax3 \
-F CustomerContactEmail=test12@bvnk.co \
-F CustomerRegistrationDate=2017-02-09 \
-F CustomerStatementDelivery=Email \
-F CustomerCorrespondenceType=Email \
-F CustomerStatementFrequency=Annually
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/account/subaccount"
payload := strings.NewReader("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderIdentificationNumber\"\r\n\r\n19000101-1234-010\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderContactNumber1\"\r\n\r\n555-555-0012\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderContactNumber2\"\r\n\r\n0800-test1-fax2\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderEmailAddress\"\r\n\r\ntest11@bvnk.co\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine1\"\r\n\r\nAddress 1\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine2\"\r\n\r\nAddress 2\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine3\"\r\n\r\nAddress 3\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderCountry\"\r\n\r\nAO\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderPostalCode\"\r\n\r\n1234\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderPassword\"\r\n\r\npassword\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerName\"\r\n\r\nCardManager Company Customer One\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerDescription\"\r\n\r\nThe first Card Manager Customer\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerContactGivenName\"\r\n\r\nJohn\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerContactFamilyName\"\r\n\r\nDoe\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressLine1\"\r\n\r\nOffice 1B\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressLine2\"\r\n\r\nOffice Road 1B\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressLine3\"\r\n\r\nOffice Road 1C\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressCountry\"\r\n\r\nUnited States\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerWebsite\"\r\n\r\nuber.com\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerContactPhone\"\r\n\r\n555-555-0014\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerContactFax\"\r\n\r\n0800-test-fax3\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerContactEmail\"\r\n\r\ntest12@bvnk.co\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerLogo\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountCurrency\"\r\n\r\nusd\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerType\"\r\n\r\nsubaccount\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerTag\"\r\n\r\ncardmanager\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerID\"\r\n\r\n9691f2de-f3e4-4a84-bf89-a07c0de69f58\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerMerchant\"\r\n\r\ne46d3ff7-6bfc-437e-ab2b-ceb875537b22\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressCountry\"\r\n\r\nUnited States\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressPostalCode\"\r\n\r\n12345\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerBusinessSector\"\r\n\r\nTransportation\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerWebsite\"\r\n\r\nuber.com\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerContactPhone\"\r\n\r\n555-555-0014\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerContactFax\"\r\n\r\n0800-test-fax3\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerContactEmail\"\r\n\r\ntest12@bvnk.co\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerRegistrationDate\"\r\n\r\n2017-02-09\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerStatementDelivery\"\r\n\r\nEmail\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerCorrespondenceType\"\r\n\r\nEmail\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerStatementFrequency\"\r\n\r\nAnnually\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
req.Header.Add("Content-Type", "application/json")
req.Header.Add("X-Auth-Token", "8400a09e-7676-4aa3-bce0-57a216b7f1b0")
req.Header.Add("Cache-Control", "no-cache")
req.Header.Add("Postman-Token", "c7b6d716-36ed-70bc-9f69-7e4b087673cd")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.post("https://demo.bvnk.co/account/subaccount")
.header("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
.header("Content-Type", "application/json")
.header("X-Auth-Token", "8400a09e-7676-4aa3-bce0-57a216b7f1b0")
.header("Cache-Control", "no-cache")
.header("Postman-Token", "dbd1c595-500d-233a-0bc8-41599e973a97")
.body("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderIdentificationNumber\"\r\n\r\n19000101-1234-010\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderContactNumber1\"\r\n\r\n555-555-0012\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderContactNumber2\"\r\n\r\n0800-test1-fax2\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderEmailAddress\"\r\n\r\ntest11@bvnk.co\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine1\"\r\n\r\nAddress 1\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine2\"\r\n\r\nAddress 2\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine3\"\r\n\r\nAddress 3\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderCountry\"\r\n\r\nAO\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderPostalCode\"\r\n\r\n1234\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderPassword\"\r\n\r\npassword\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerName\"\r\n\r\nCardManager Company Customer One\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerDescription\"\r\n\r\nThe first Card Manager Customer\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerContactGivenName\"\r\n\r\nJohn\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerContactFamilyName\"\r\n\r\nDoe\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressLine1\"\r\n\r\nOffice 1B\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressLine2\"\r\n\r\nOffice Road 1B\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressLine3\"\r\n\r\nOffice Road 1C\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressCountry\"\r\n\r\nUnited States\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerWebsite\"\r\n\r\nuber.com\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerContactPhone\"\r\n\r\n555-555-0014\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerContactFax\"\r\n\r\n0800-test-fax3\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerContactEmail\"\r\n\r\ntest12@bvnk.co\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerLogo\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountCurrency\"\r\n\r\nusd\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerType\"\r\n\r\nsubaccount\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerTag\"\r\n\r\ncardmanager\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerID\"\r\n\r\n9691f2de-f3e4-4a84-bf89-a07c0de69f58\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerMerchant\"\r\n\r\ne46d3ff7-6bfc-437e-ab2b-ceb875537b22\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressCountry\"\r\n\r\nUnited States\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressPostalCode\"\r\n\r\n12345\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerBusinessSector\"\r\n\r\nTransportation\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerWebsite\"\r\n\r\nuber.com\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerContactPhone\"\r\n\r\n555-555-0014\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerContactFax\"\r\n\r\n0800-test-fax3\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerContactEmail\"\r\n\r\ntest12@bvnk.co\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerRegistrationDate\"\r\n\r\n2017-02-09\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerStatementDelivery\"\r\n\r\nEmail\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerCorrespondenceType\"\r\n\r\nEmail\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerStatementFrequency\"\r\n\r\nAnnually\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
.asString();
var data = new FormData();
data.append("AccountHolderIdentificationNumber", "19000101-1234-010");
data.append("AccountHolderContactNumber1", "555-555-0012");
data.append("AccountHolderContactNumber2", "0800-test1-fax2");
data.append("AccountHolderEmailAddress", "test11@bvnk.co");
data.append("AccountHolderAddressLine1", "Address 1");
data.append("AccountHolderAddressLine2", "Address 2");
data.append("AccountHolderAddressLine3", "Address 3");
data.append("AccountHolderCountry", "AO");
data.append("AccountHolderPostalCode", "1234");
data.append("AccountHolderPassword", "password");
data.append("CustomerName", "CardManager Company Customer One");
data.append("CustomerDescription", "The first Card Manager Customer");
data.append("CustomerContactGivenName", "John");
data.append("CustomerContactFamilyName", "Doe");
data.append("CustomerAddressLine1", "Office 1B");
data.append("CustomerAddressLine2", "Office Road 1B");
data.append("CustomerAddressLine3", "Office Road 1C");
data.append("CustomerAddressCountry", "United States");
data.append("CustomerWebsite", "uber.com");
data.append("CustomerContactPhone", "555-555-0014");
data.append("CustomerContactFax", "0800-test-fax3");
data.append("CustomerContactEmail", "test12@bvnk.co");
data.append("CustomerLogo", "");
data.append("AccountCurrency", "usd");
data.append("CustomerType", "subaccount");
data.append("CustomerTag", "cardmanager");
data.append("CustomerID", "9691f2de-f3e4-4a84-bf89-a07c0de69f58");
data.append("CustomerMerchant", "e46d3ff7-6bfc-437e-ab2b-ceb875537b22");
data.append("CustomerAddressCountry", "United States");
data.append("CustomerAddressPostalCode", "12345");
data.append("CustomerBusinessSector", "Transportation");
data.append("CustomerWebsite", "uber.com");
data.append("CustomerContactPhone", "555-555-0014");
data.append("CustomerContactFax", "0800-test-fax3");
data.append("CustomerContactEmail", "test12@bvnk.co");
data.append("CustomerRegistrationDate", "2017-02-09");
data.append("CustomerStatementDelivery", "Email");
data.append("CustomerCorrespondenceType", "Email");
data.append("CustomerStatementFrequency", "Annually");
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://demo.bvnk.co/account/subaccount");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.setRequestHeader("X-Auth-Token", "8400a09e-7676-4aa3-bce0-57a216b7f1b0");
xhr.setRequestHeader("Cache-Control", "no-cache");
xhr.setRequestHeader("Postman-Token", "d54c54fa-6ea5-c7a6-ce81-9db3cf3fb591");
xhr.send(data);
import requests
url = "https://demo.bvnk.co/account/subaccount"
payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderIdentificationNumber\"\r\n\r\n19000101-1234-010\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderContactNumber1\"\r\n\r\n555-555-0012\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderContactNumber2\"\r\n\r\n0800-test1-fax2\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderEmailAddress\"\r\n\r\ntest11@bvnk.co\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine1\"\r\n\r\nAddress 1\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine2\"\r\n\r\nAddress 2\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderAddressLine3\"\r\n\r\nAddress 3\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderCountry\"\r\n\r\nAO\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderPostalCode\"\r\n\r\n1234\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountHolderPassword\"\r\n\r\npassword\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerName\"\r\n\r\nCardManager Company Customer One\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerDescription\"\r\n\r\nThe first Card Manager Customer\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerContactGivenName\"\r\n\r\nJohn\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerContactFamilyName\"\r\n\r\nDoe\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressLine1\"\r\n\r\nOffice 1B\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressLine2\"\r\n\r\nOffice Road 1B\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressLine3\"\r\n\r\nOffice Road 1C\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressCountry\"\r\n\r\nUnited States\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerWebsite\"\r\n\r\nuber.com\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerContactPhone\"\r\n\r\n555-555-0014\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerContactFax\"\r\n\r\n0800-test-fax3\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerContactEmail\"\r\n\r\ntest12@bvnk.co\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerLogo\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"AccountCurrency\"\r\n\r\nusd\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerType\"\r\n\r\nsubaccount\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerTag\"\r\n\r\ncardmanager\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerID\"\r\n\r\n9691f2de-f3e4-4a84-bf89-a07c0de69f58\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerMerchant\"\r\n\r\ne46d3ff7-6bfc-437e-ab2b-ceb875537b22\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressCountry\"\r\n\r\nUnited States\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerAddressPostalCode\"\r\n\r\n12345\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerBusinessSector\"\r\n\r\nTransportation\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerWebsite\"\r\n\r\nuber.com\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerContactPhone\"\r\n\r\n555-555-0014\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerContactFax\"\r\n\r\n0800-test-fax3\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerContactEmail\"\r\n\r\ntest12@bvnk.co\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerRegistrationDate\"\r\n\r\n2017-02-09\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerStatementDelivery\"\r\n\r\nEmail\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerCorrespondenceType\"\r\n\r\nEmail\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CustomerStatementFrequency\"\r\n\r\nAnnually\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
headers = {
'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
'Content-Type': "application/json",
'X-Auth-Token': "8400a09e-7676-4aa3-bce0-57a216b7f1b0",
'Cache-Control': "no-cache",
'Postman-Token': "7622abe6-04dd-092e-12f2-4bde03ddfd8d"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
Successful response:
{
"response": "cfa74e69-5b5c-4c87-a0f6-4182165d2463"
}
Error response:
{
"error": "error message"
}
This endpoint creates a subaccount under a merchant's customer, meant for a company, requiring additional KYC/FICA information. The response is the account number for the new subaccount.
HTTP Request
POST https://demo.bvnk.co/account/subaccount
Headers
X-Auth-Token: {auth token}
URL Parameters
Parameter | Required | Description |
---|---|---|
AccountHolderIdentificationNumber | true | |
AccountHolderContactNumber1 | true | |
AccountHolderContactNumber2 | true | |
AccountHolderEmailAddress | true | |
AccountHolderAddressLine1 | true | |
AccountHolderAddressLine2 | true | |
AccountHolderAddressLine3 | true | |
AccountHolderCountry | true | |
AccountHolderPostalCode | true | |
AccountHolderPassword | true | |
CustomerName | true | |
CustomerDescription | true | |
CustomerContactGivenName | true | |
CustomerContactFamilyName | true | |
CustomerAddressLine1 | true | |
CustomerAddressLine2 | true | |
CustomerAddressLine3 | true | |
CustomerAddressCountry | true | |
CustomerWebsite | true | |
CustomerContactPhone | true | |
CustomerContactFax | true | |
CustomerContactEmail | true | |
CustomerLogo | true | |
AccountCurrency | true | |
CustomerType | true | |
CustomerTag | true | |
CustomerID | true | |
CustomerMerchant | true | |
CustomerAddressCountry | true | |
CustomerAddressPostalCode | true | |
CustomerBusinessSector | true | |
CustomerWebsite | true | |
CustomerContactPhone | true | |
CustomerContactFax | true | |
CustomerContactEmail | true | |
CustomerRegistrationDate | true | |
CustomerStatementDelivery | true | |
CustomerCorrespondenceType | true | |
CustomerStatementFrequency | true |
Exchange
Get countries
curl -X GET \
https://demo.bvnk.co/countries \
-H 'Cache-Control: no-cache' \
-H 'Postman-Token: 0b2361d5-8847-1332-34d6-8e064df61c44' \
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/countries"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Cache-Control", "no-cache")
req.Header.Add("Postman-Token", "8873f14e-bd7a-030c-4402-6d1f7c2819d3")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
var request = require("request");
var options = { method: 'GET',
url: 'https://demo.bvnk.co/countries',
headers:
{ 'Postman-Token': '5c74b03f-c58c-23de-83f3-8bbb90a174c4',
'Cache-Control': 'no-cache'} };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "https://demo.bvnk.co/countries"
headers = {
'Cache-Control': "no-cache",
}
response = requests.request("GET", url, headers=headers)
print(response.text)
HttpResponse<String> response = Unirest.get("https://demo.bvnk.co/countries")
.header("Cache-Control", "no-cache")
.header("Postman-Token", "a7d7840f-ad30-654e-5019-50c491f25d75")
.asString();
Successful response:
{
"response": [
{
"Name": "Afghanistan",
"ISO2": "AF",
"ISO3": "AFG",
"ISONum": "004"
},
{
"Name": "ALA Aland Islands",
"ISO2": "AX",
"ISO3": "ALA",
"ISONum": "248"
},
...
}
Error response:
{
"error": "Countries could not be retrieved"
}
This endpoint returns a list of countries. One of these countries must be used when creating a new user.
HTTP Request
GET https://demo.bvnk.co/countries
Headers
This request requires no headers.
URL Parameters
This request takes no parameters.
Get currencies
curl -X GET \
https://demo.bvnk.co/currencies \
-H 'Cache-Control: no-cache' \
-H 'Postman-Token: 777af451-3b5c-3250-95d4-a48a94af7404' \
-H 'X-Auth-Token: d382f67c-5bcc-4d3d-b3a9-9a0253114d33'
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/currencies"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Auth-Token", "d382f67c-5bcc-4d3d-b3a9-9a0253114d33")
req.Header.Add("Cache-Control", "no-cache")
req.Header.Add("Postman-Token", "1b31660b-cc65-1cdc-ed91-7bb7482a4c69")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
var request = require("request");
var options = { method: 'GET',
url: 'https://demo.bvnk.co/currencies',
headers:
{ 'Postman-Token': 'fb18d8ae-ceca-651e-c669-bec629a40b9e',
'Cache-Control': 'no-cache',
'X-Auth-Token': 'd382f67c-5bcc-4d3d-b3a9-9a0253114d33' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "https://demo.bvnk.co/currencies"
headers = {
'X-Auth-Token': "d382f67c-5bcc-4d3d-b3a9-9a0253114d33",
'Cache-Control': "no-cache",
'Postman-Token': "e3063cd0-5ddf-c7ec-8a4a-e8a1eea594b0"
}
response = requests.request("GET", url, headers=headers)
print(response.text)
HttpResponse<String> response = Unirest.get("https://demo.bvnk.co/currencies")
.header("X-Auth-Token", "d382f67c-5bcc-4d3d-b3a9-9a0253114d33")
.header("Cache-Control", "no-cache")
.header("Postman-Token", "9ce05e22-78c6-45c2-b9a7-1309c4886302")
.asString();
Successful response:
{
"response": {
"bct": {
"Name": "Bitcoin Test",
"Code": "bct",
"Type": "crypto",
"UnitsPerCoin": 100000000,
"Timestamp": ""
},
"btc": {
"Name": "Bitcoin",
"Code": "btc",
"Type": "crypto",
"UnitsPerCoin": 100000000,
"Timestamp": ""
},
"gbp": {
"Name": "British Pounds",
"Code": "gbp",
"Type": "fiat",
"UnitsPerCoin": 100,
"Timestamp": ""
},
"usd": {
"Name": "United States Dollar",
"Code": "usd",
"Type": "fiat",
"UnitsPerCoin": 100,
"Timestamp": ""
},
"zar": {
"Name": "South African Rand",
"Code": "zar",
"Type": "fiat",
"UnitsPerCoin": 100,
"Timestamp": ""
}
}
}
Error response:
{
"error": "Token invalid"
}
This endpoint returns a list of currencies available on the deploy. The user must be logged in.
HTTP Request
GET https://demo.bvnk.co/currencies
Headers
X-Auth-Token: {auth token}
URL Parameters
This request takes no parameters.
Get quote
curl -X GET \
https://demo.bvnk.co/exchange/quote/btc/zar/1 \
-H 'Cache-Control: no-cache' \
-H 'Postman-Token: 769a5f45-3b56-e0fc-43db-2b1c9b47b6b8' \
-H 'X-Auth-Token: ee2cd9fb-a165-40c7-95af-c05d4d5f8117'
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/exchange/quote/btc/zar/1"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Auth-Token", "ee2cd9fb-a165-40c7-95af-c05d4d5f8117")
req.Header.Add("Cache-Control", "no-cache")
req.Header.Add("Postman-Token", "edf6f1a0-20d4-3ca9-33af-850a005fb746")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
var request = require("request");
var options = { method: 'GET',
url: 'https://demo.bvnk.co/exchange/quote/btc/zar/1',
headers:
{ 'Postman-Token': '11bd6b7a-01bc-a8c4-27d2-56e2c3dd9346',
'Cache-Control': 'no-cache',
'X-Auth-Token': 'ee2cd9fb-a165-40c7-95af-c05d4d5f8117' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "https://demo.bvnk.co/exchange/quote/btc/zar/1"
headers = {
'X-Auth-Token': "ee2cd9fb-a165-40c7-95af-c05d4d5f8117",
'Cache-Control': "no-cache",
'Postman-Token': "bac9b10c-9df6-3cd9-4449-89de28a96013"
}
response = requests.request("GET", url, headers=headers)
print(response.text)
HttpResponse<String> response = Unirest.get("https://demo.bvnk.co/exchange/quote/btc/zar/1")
.header("X-Auth-Token", "ee2cd9fb-a165-40c7-95af-c05d4d5f8117")
.header("Cache-Control", "no-cache")
.header("Postman-Token", "d0608718-1821-a391-2382-aaa105035fac")
.asString();
Successful response:
{
"response": {
"SourceCurrency": "BTC",
"DestinationCurrency": "ZAR",
"SourceAmount": "2",
"DestinationAmount": "223245.637648",
"ConversionRate": "111622.818824"
}
}
Error response:
{
"error": "Destination currency NA is invalid"
}
This route returns a quote for the given currency pair and amount.
HTTP Request
GET https://demo.bvnk.co/exchange/quote/{sourceCurrency}/{destinationCurrency}/{amount}
Headers
X-Auth-Token: {auth token}
URL Parameters
Parameter | Required | Description |
---|---|---|
SourceCurrency | true | The source currency to convert from. This currency must be supported by the deploy, retrieved from GET /currencies . |
DestinationCurrency | true | The destination currency to convert to. This currency must be supported by the deploy, retrieved from GET /currencies . |
Amount | true | The amount to convert. |
Get rates
curl -X GET \
https://demo.bvnk.co/exchange/rates/btc/zar/hour \
-H 'Cache-Control: no-cache' \
-H 'Postman-Token: 874ce447-2a99-e848-1e61-829cee013b8d' \
-H 'X-Auth-Token: d382f67c-5bcc-4d3d-b3a9-9a0253114d33'
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/exchange/rates/btc/zar/hour"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Auth-Token", "d382f67c-5bcc-4d3d-b3a9-9a0253114d33")
req.Header.Add("Cache-Control", "no-cache")
req.Header.Add("Postman-Token", "ea4a2a13-e561-e198-5c82-58d4b8c6f694")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
var request = require("request");
var options = { method: 'GET',
url: 'https://demo.bvnk.co/exchange/rates/btc/zar/hour',
headers:
{ 'Postman-Token': '420b140b-2473-f317-bef0-f5907791e184',
'Cache-Control': 'no-cache',
'X-Auth-Token': 'd382f67c-5bcc-4d3d-b3a9-9a0253114d33' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "https://demo.bvnk.co/exchange/rates/btc/zar/hour"
headers = {
'X-Auth-Token': "d382f67c-5bcc-4d3d-b3a9-9a0253114d33",
'Cache-Control': "no-cache",
'Postman-Token': "714b0b8c-f946-ad74-5859-66a1a9f0cfaa"
}
response = requests.request("GET", url, headers=headers)
print(response.text)
HttpResponse<String> response = Unirest.get("https://demo.bvnk.co/exchange/rates/btc/zar/hour")
.header("X-Auth-Token", "d382f67c-5bcc-4d3d-b3a9-9a0253114d33")
.header("Cache-Control", "no-cache")
.header("Postman-Token", "6b44ae48-388b-d6d4-c2d7-2ab0b17081cc")
.asString();
Successful response:
{
"response": [
{
"SourceCurrency": "BTC",
"DestinationCurrency": "ZAR",
"SourceAmount": "1",
"DestinationAmount": "12840.95984863280423557421875",
"ConversionRate": "12840.9598486328042356",
"Timestamp": "2018-02-13 05:35:36"
},
{
"SourceCurrency": "BTC",
"DestinationCurrency": "ZAR",
"SourceAmount": "1",
"DestinationAmount": "12537.90984206437235657421875",
"ConversionRate": "12537.9098420643723566",
"Timestamp": "2018-02-13 06:35:36"
},
...
]
}
Error response:
{
"error": "Could not retrieve rates"
}
This route returns market rate data for a given user for two currency pairs. The market rate period is passed through the URL, and a total of fifty data points are returned.
HTTP Request
GET https://demo.bvnk.co/exchange/rates/{sourceCurrency}/{destinationCurrency}/{period}
Headers
X-Auth-Token: {auth token}
URL Parameters
Parameter | Required | Description |
---|---|---|
SourceCurrency | true | The source currency to convert from. This currency must be supported by the deploy, retrieved from GET /currencies . |
DestinationCurrency | true | The destination currency to convert to. This currency must be supported by the deploy, retrieved from GET /currencies . |
Period | false | The period to get rates for. Currently supported values: minute , 15minute , hour , 4hour , day , week , month . Default: hour . |
Register customer
curl -X POST \
https://demo.bvnk.co/exchange/customer \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json' \
-H 'Postman-Token: 8a150947-6b5f-24f7-512b-662074f258ca' \
-H 'X-Auth-Token: ee2cd9fb-a165-40c7-95af-c05d4d5f8117' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-F CardToken=tok_visa
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/exchange/customer"
payload := strings.NewReader("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CardToken\"\r\n\r\ntok_visa\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
req.Header.Add("Content-Type", "application/json")
req.Header.Add("X-Auth-Token", "ee2cd9fb-a165-40c7-95af-c05d4d5f8117")
req.Header.Add("Cache-Control", "no-cache")
req.Header.Add("Postman-Token", "869b655f-1df8-cd6a-2bc1-2bb94888414c")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
var request = require("request");
var options = { method: 'POST',
url: 'https://demo.bvnk.co/exchange/customer',
headers:
{ 'Postman-Token': '1d254da4-6873-50eb-273c-b0315cae210c',
'Cache-Control': 'no-cache',
'X-Auth-Token': 'ee2cd9fb-a165-40c7-95af-c05d4d5f8117',
'Content-Type': 'application/json',
'content-type': 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' },
formData: { CardToken: 'tok_visa' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
import requests
url = "https://demo.bvnk.co/exchange/customer"
payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CardToken\"\r\n\r\ntok_visa\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
headers = {
'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
'Content-Type': "application/json",
'X-Auth-Token': "ee2cd9fb-a165-40c7-95af-c05d4d5f8117",
'Cache-Control': "no-cache",
'Postman-Token': "6ac13232-1bd0-98ea-18d5-35ddff04fb01"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
HttpResponse<String> response = Unirest.post("https://demo.bvnk.co/exchange/customer")
.header("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
.header("Content-Type", "application/json")
.header("X-Auth-Token", "ee2cd9fb-a165-40c7-95af-c05d4d5f8117")
.header("Cache-Control", "no-cache")
.header("Postman-Token", "de609277-55f5-822e-6039-86abee25103e")
.body("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"CardToken\"\r\n\r\ntok_visa\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
.asString();
Successful response:
{
"response": ""
}
Error response:
{
"error": "Invalid token provided"
}
This route registers a user account as an exchange customer. This is a prerequisite for any transactions on the exchange.
HTTP Request
POST /exchange/customer
Headers
X-Auth-Token: {auth token}
URL Parameters
Parameter | Required | Description |
---|---|---|
CardToken | true | The tokenized PAN of the card to register against the user. This token is retrieved from the integration when adding a card, either through mobile SDKs or web pages. |
Purchase request
curl -X POST \
https://demo.bvnk.co/exchange/request \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json' \
-H 'Postman-Token: 424eb496-3e45-12b3-7f10-cb53b5e547ec' \
-H 'X-Auth-Token: ee2cd9fb-a165-40c7-95af-c05d4d5f8117' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-F Currency=bct \
-F Amount=0.001 \
-F Lat=11.0 \
-F Lon=12.0
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://demo.bvnk.co/exchange/request"
payload := strings.NewReader("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Currency\"\r\n\r\nbct\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Amount\"\r\n\r\n0.001\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Lat\"\r\n\r\n11.0\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"Lon\"\r\n\r\n12.0\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
req.Header.Add("Content-Type", "application/json")
req.Header.Add("X-Auth-Token", "ee2cd9fb-a165-40c7-95af-c05d4d5f8117")
req.Header.Add("Cache-Control", "no-cache")
req.Header.Add("Postman-Token", "3a8f7ec9-3d05-9720-8900-c512ea4f0be7")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
var request = require("request");
var options = { method: 'POST',
url: 'https://demo.bvnk.co/exchange/request',
headers:
{ 'Postman-Token': '4646621c-eb8d-fc11-bb9c-decbeb752d42',
'Cache-Control': 'no-cache',
'X-Auth-Token': 'ee2cd9fb-a165-40c7-95af-c05d4d5f8117',
'Content-Type': 'application/json',
'content-type': 'multipart/form-data; boundary=