Get Issuance Requirements
curl --request GET \
--url https://api.rolla.xyz/api/v1/external/accounts/{accountId}/bank-accounts/requirements \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.rolla.xyz/api/v1/external/accounts/{accountId}/bank-accounts/requirements"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.rolla.xyz/api/v1/external/accounts/{accountId}/bank-accounts/requirements', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.rolla.xyz/api/v1/external/accounts/{accountId}/bank-accounts/requirements",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.rolla.xyz/api/v1/external/accounts/{accountId}/bank-accounts/requirements"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.rolla.xyz/api/v1/external/accounts/{accountId}/bank-accounts/requirements")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rolla.xyz/api/v1/external/accounts/{accountId}/bank-accounts/requirements")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"status": 200,
"message": "Bank account requirements retrieved successfully",
"success": true,
"data": {
"currency": "NGN",
"applicationApproved": true,
"requiredFields": [
"businessName",
"businessIdentifier",
"mobileNum",
"bvn"
],
"missingFields": [
"bvn"
],
"prefilled": {
"businessName": "Beta Logistics LLC",
"businessIdentifier": "LLC-123987",
"mobileNum": "+13025550124",
"bvn": ""
}
}
}{
"status": 400,
"message": "Validation failed",
"code": "ACCOUNT_RESTRICTED",
"errors": [
{
"path": [
"amount"
],
"message": "amount must be a whole number of smallest currency units (e.g. cents)"
}
]
}{
"status": 400,
"message": "Validation failed",
"code": "ACCOUNT_RESTRICTED",
"errors": [
{
"path": [
"amount"
],
"message": "amount must be a whole number of smallest currency units (e.g. cents)"
}
]
}{
"status": 400,
"message": "Validation failed",
"code": "ACCOUNT_RESTRICTED",
"errors": [
{
"path": [
"amount"
],
"message": "amount must be a whole number of smallest currency units (e.g. cents)"
}
]
}Bank Accounts
Get Issuance Requirements
Shows the details prefilled from the account’s application for the given currency and anything still missing before a bank account can be issued. Use this to know exactly what to pass in accountData when issuing.
GET
/
accounts
/
{accountId}
/
bank-accounts
/
requirements
Get Issuance Requirements
curl --request GET \
--url https://api.rolla.xyz/api/v1/external/accounts/{accountId}/bank-accounts/requirements \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.rolla.xyz/api/v1/external/accounts/{accountId}/bank-accounts/requirements"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.rolla.xyz/api/v1/external/accounts/{accountId}/bank-accounts/requirements', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.rolla.xyz/api/v1/external/accounts/{accountId}/bank-accounts/requirements",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.rolla.xyz/api/v1/external/accounts/{accountId}/bank-accounts/requirements"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.rolla.xyz/api/v1/external/accounts/{accountId}/bank-accounts/requirements")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rolla.xyz/api/v1/external/accounts/{accountId}/bank-accounts/requirements")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"status": 200,
"message": "Bank account requirements retrieved successfully",
"success": true,
"data": {
"currency": "NGN",
"applicationApproved": true,
"requiredFields": [
"businessName",
"businessIdentifier",
"mobileNum",
"bvn"
],
"missingFields": [
"bvn"
],
"prefilled": {
"businessName": "Beta Logistics LLC",
"businessIdentifier": "LLC-123987",
"mobileNum": "+13025550124",
"bvn": ""
}
}
}{
"status": 400,
"message": "Validation failed",
"code": "ACCOUNT_RESTRICTED",
"errors": [
{
"path": [
"amount"
],
"message": "amount must be a whole number of smallest currency units (e.g. cents)"
}
]
}{
"status": 400,
"message": "Validation failed",
"code": "ACCOUNT_RESTRICTED",
"errors": [
{
"path": [
"amount"
],
"message": "amount must be a whole number of smallest currency units (e.g. cents)"
}
]
}{
"status": 400,
"message": "Validation failed",
"code": "ACCOUNT_RESTRICTED",
"errors": [
{
"path": [
"amount"
],
"message": "amount must be a whole number of smallest currency units (e.g. cents)"
}
]
}Shows everything needed to issue a bank account for the given currency: the details prefilled from the account’s application, and anything still missing. Whatever is missing can be supplied via
accountData when calling Issue Bank Account.
Example Request
curl -X GET "https://api.rolla.xyz/api/v1/external/accounts/eec3cbed-79d8-4370-87a0-b6be9e287337/bank-accounts/requirements?currency=NGN" \
-H "X-API-Key: your_api_key_here"
Example Response
NGN
{
"status": 200,
"message": "Bank account requirements retrieved successfully",
"success": true,
"data": {
"currency": "NGN",
"applicationApproved": true,
"requiredFields": ["businessName", "businessIdentifier", "mobileNum", "bvn"],
"missingFields": ["bvn"],
"prefilled": {
"businessName": "Beta Logistics LLC",
"businessIdentifier": "LLC-123987",
"mobileNum": "+13025550124",
"bvn": ""
}
}
}
USD
{
"status": 200,
"message": "Bank account requirements retrieved successfully",
"success": true,
"data": {
"currency": "USD",
"applicationApproved": true,
"onboardingState": null,
"prefilled": {
"onboardingDetails": {
"businessInfo": { "name": "Beta Logistics LLC", "taxId": "98-7654321" },
"businessAddress": { "line1": "77 Commerce Ave", "city": "Wilmington", "state": "DE", "postalCode": "19801", "country": "US" }
},
"representatives": [
{ "firstName": "Jane", "lastName": "Doe", "relatedPersonId": "a3d4f21e-f499-488f-8508-43228dfea485", "ownershipPercentage": 75, "isSigner": true }
],
"kybDocs": [
{ "id": "0c95b2a1-7a93-4a3a-9a52-2a1f0b9b3c11", "type": "certificate_of_incorporation", "source": "rolla" }
]
},
"availableDocuments": {
"business": [],
"representatives": []
}
}
}
Response Fields
| Field | Description |
|---|---|
currency | The currency you asked about (NGN or USD) |
applicationApproved | Bank accounts can only be issued once the application is approved |
requiredFields / missingFields | NGN: fields the provider requires and which are still empty |
onboardingState | USD: provider onboarding state, null until first submission |
prefilled | The payload that will be sent, built from the account’s application. For USD business accounts this holds onboardingDetails, representatives and kybDocs; for USD individual accounts, onboardingDetails and personalDocs |
availableDocuments | USD: documents that will be attached, from the application and identity verification. Keyed business and representatives for business accounts, personal for individual accounts |
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
currency | string | Yes | NGN or USD. Any other value returns 400 with "message": "Validation failed" |
Authorizations
Your Rolla API key
Path Parameters
Identifier of an account owned by the same user as your API key's business
Example:
"eec3cbed-79d8-4370-87a0-b6be9e287337"
Query Parameters
Currency of the account you intend to issue
Available options:
NGN, USD Example:
"NGN"