NAV Navbar
shell go java javascript python
  • Introduction
  • Defaults
  • Contact
  • Users
  • Authorization
  • Accounts
  • Transactions
  • Cards
  • Beneficiaries
  • KYC
  • Merchants
  • Customers
  • Exchange
  • Notifications
  • Integrations
  • Introduction

    All calls result in either success 200 or failure 400. 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=