Create Account
curl --request POST \
--url https://api.rolla.xyz/api/v1/external/accounts \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"email": "jsmith@example.com",
"name": "<string>",
"firstName": "<string>",
"lastName": "<string>"
}
'import requests
url = "https://api.rolla.xyz/api/v1/external/accounts"
payload = {
"email": "jsmith@example.com",
"name": "<string>",
"firstName": "<string>",
"lastName": "<string>"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
email: 'jsmith@example.com',
name: '<string>',
firstName: '<string>',
lastName: '<string>'
})
};
fetch('https://api.rolla.xyz/api/v1/external/accounts', 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",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'email' => 'jsmith@example.com',
'name' => '<string>',
'firstName' => '<string>',
'lastName' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.rolla.xyz/api/v1/external/accounts"
payload := strings.NewReader("{\n \"email\": \"jsmith@example.com\",\n \"name\": \"<string>\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.rolla.xyz/api/v1/external/accounts")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"jsmith@example.com\",\n \"name\": \"<string>\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rolla.xyz/api/v1/external/accounts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"email\": \"jsmith@example.com\",\n \"name\": \"<string>\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Account created successfully",
"data": {
"account": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "Beta Logistics LLC",
"email": "jsmith@example.com",
"entityType": "business",
"applicationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"applicationStatus": "draft",
"currentStep": 1,
"isComplete": true,
"createdAt": "2023-11-07T05:31:56Z"
},
"applicationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"applicationStatus": "draft"
}
}{
"success": false,
"message": "<string>"
}{
"success": false,
"message": "<string>"
}{
"status": 403,
"message": "Account onboarding is available to white-label partners only. Contact Rolla to enable white-label for your business."
}{
"success": false,
"message": "An account with this email already exists for this owner.",
"code": "ACCOUNT_EMAIL_EXISTS"
}Account Onboarding
Create Account
Creates an additional business or individual account under the same owner as your API key’s business. The new account starts as a draft KYB/KYC application that you complete via the other account onboarding endpoints.
POST
/
accounts
Create Account
curl --request POST \
--url https://api.rolla.xyz/api/v1/external/accounts \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"email": "jsmith@example.com",
"name": "<string>",
"firstName": "<string>",
"lastName": "<string>"
}
'import requests
url = "https://api.rolla.xyz/api/v1/external/accounts"
payload = {
"email": "jsmith@example.com",
"name": "<string>",
"firstName": "<string>",
"lastName": "<string>"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
email: 'jsmith@example.com',
name: '<string>',
firstName: '<string>',
lastName: '<string>'
})
};
fetch('https://api.rolla.xyz/api/v1/external/accounts', 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",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'email' => 'jsmith@example.com',
'name' => '<string>',
'firstName' => '<string>',
'lastName' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.rolla.xyz/api/v1/external/accounts"
payload := strings.NewReader("{\n \"email\": \"jsmith@example.com\",\n \"name\": \"<string>\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.rolla.xyz/api/v1/external/accounts")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"jsmith@example.com\",\n \"name\": \"<string>\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rolla.xyz/api/v1/external/accounts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"email\": \"jsmith@example.com\",\n \"name\": \"<string>\",\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Account created successfully",
"data": {
"account": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "Beta Logistics LLC",
"email": "jsmith@example.com",
"entityType": "business",
"applicationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"applicationStatus": "draft",
"currentStep": 1,
"isComplete": true,
"createdAt": "2023-11-07T05:31:56Z"
},
"applicationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"applicationStatus": "draft"
}
}{
"success": false,
"message": "<string>"
}{
"success": false,
"message": "<string>"
}{
"status": 403,
"message": "Account onboarding is available to white-label partners only. Contact Rolla to enable white-label for your business."
}{
"success": false,
"message": "An account with this email already exists for this owner.",
"code": "ACCOUNT_EMAIL_EXISTS"
}Creates an additional business or individual account under the same owner as your API key’s business. The new account starts as a draft application that you complete with the other account onboarding endpoints.
White-label partners only. The entire account onboarding API (this endpoint and everything under
/accounts) is available only to businesses activated as white-label tenants. A non-tenant API key receives 403 Forbidden.Example Request
Business account
curl -X POST "https://api.rolla.xyz/api/v1/external/accounts" \
-H "X-API-Key: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"type": "business",
"name": "Beta Logistics LLC",
"email": "ops@betalogistics.com"
}'
Individual account
curl -X POST "https://api.rolla.xyz/api/v1/external/accounts" \
-H "X-API-Key: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"type": "individual",
"firstName": "Jane",
"lastName": "Doe",
"email": "jane.doe@example.com"
}'
Example Response
{
"success": true,
"message": "Account created successfully",
"data": {
"account": {
"id": "eec3cbed-79d8-4370-87a0-b6be9e287337",
"name": "Beta Logistics LLC",
"email": "ops@betalogistics.com",
"status": "created",
"entityType": "business"
},
"applicationId": "fbb45236-881a-4c58-8954-22759499eab4",
"applicationStatus": "draft"
}
}
Parameters
| Field | Type | Required | Description |
|---|---|---|---|
type | string | Yes | business or individual |
name | string | For business | Legal or trading name of the business |
firstName | string | No | Account holder first name (individual accounts); defaults to the owner’s name |
lastName | string | No | Account holder last name (individual accounts); defaults to the owner’s name |
email | string | Yes | The account’s own contact email. Required, and must be unique across your accounts — every account you onboard is a distinct customer with its own email. |
email is required and must be unique. Omitting it returns 400. Creating a
second account with the same email under your business returns 409 Conflict
with code: "ACCOUNT_EMAIL_EXISTS".Authorizations
Your Rolla API key
Body
application/json
Type of account to create
Available options:
business, individual The account's own contact email. REQUIRED, and must be unique among your accounts — every account you onboard is a distinct customer with its own email. A duplicate (same owner) returns 409 with code ACCOUNT_EMAIL_EXISTS; omitting it returns 400.
Business name. Required when type is business.
Account holder first name (individual accounts). Defaults to the owner's name.
Account holder last name (individual accounts). Defaults to the owner's name.
⌘I