Get Statement
curl --request GET \
--url https://api.rolla.xyz/api/v1/external/wallet/statement \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.rolla.xyz/api/v1/external/wallet/statement"
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/wallet/statement', 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/wallet/statement",
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/wallet/statement"
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/wallet/statement")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rolla.xyz/api/v1/external/wallet/statement")
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": "Statement data retrieved successfully",
"success": true,
"data": {
"businessName": "Acme Corp Ltd",
"currency": "NGN",
"openingBalance": 500000,
"closingBalance": 1000000,
"totalCredits": 750000,
"totalDebits": 250000,
"transactions": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"transaction_type": "deposit",
"status": "completed",
"description": "Wallet funding",
"external_reference": "ref_abc123",
"fee_amount": 0,
"source_amount": 750000,
"destination_amount": 750000,
"source_currency": "NGN",
"destination_currency": "NGN",
"created_at": "2026-01-10T09:15:00.000Z",
"updated_at": "2026-01-10T09:15:30.000Z"
}
]
}
}{
"status": 400,
"message": "Currency is required"
}{
"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)"
}
]
}Transactions & Statements
Get Statement
Opening and closing balances, period totals and the transactions behind them, for one currency. currency, startDate and endDate are all required.
GET
/
wallet
/
statement
Get Statement
curl --request GET \
--url https://api.rolla.xyz/api/v1/external/wallet/statement \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.rolla.xyz/api/v1/external/wallet/statement"
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/wallet/statement', 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/wallet/statement",
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/wallet/statement"
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/wallet/statement")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rolla.xyz/api/v1/external/wallet/statement")
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": "Statement data retrieved successfully",
"success": true,
"data": {
"businessName": "Acme Corp Ltd",
"currency": "NGN",
"openingBalance": 500000,
"closingBalance": 1000000,
"totalCredits": 750000,
"totalDebits": 250000,
"transactions": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"transaction_type": "deposit",
"status": "completed",
"description": "Wallet funding",
"external_reference": "ref_abc123",
"fee_amount": 0,
"source_amount": 750000,
"destination_amount": 750000,
"source_currency": "NGN",
"destination_currency": "NGN",
"created_at": "2026-01-10T09:15:00.000Z",
"updated_at": "2026-01-10T09:15:30.000Z"
}
]
}
}{
"status": 400,
"message": "Currency is required"
}{
"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)"
}
]
}Retrieve a wallet statement summary including opening/closing balances, totals, and the transactions behind them for a given period.
Balances, totals and amounts are all in minor units —
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
currency | string | Yes | Currency of the account to draw the statement for (e.g. NGN, USD) |
startDate | string | Yes | Inclusive start of the period (YYYY-MM-DD) |
endDate | string | Yes | Inclusive end of the period (YYYY-MM-DD) |
accountType | string | No | wallet or loan. Omitted, wallets and credit lines of that currency are reported together. |
Example Request
curl -X GET "https://api.rolla.xyz/api/v1/external/wallet/statement?currency=NGN&startDate=2026-01-01&endDate=2026-01-31&accountType=wallet" \
-H "X-API-Key: your_api_key_here"
Example Response
{
"status": 200,
"message": "Statement data retrieved successfully",
"success": true,
"data": {
"businessName": "Acme Corp Ltd",
"currency": "NGN",
"openingBalance": 500000,
"closingBalance": 1000000,
"totalCredits": 750000,
"totalDebits": 250000,
"transactions": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"transaction_type": "deposit",
"status": "completed",
"description": "Wallet funding",
"external_reference": "ref_abc123",
"fee_amount": 0,
"source_amount": 750000,
"destination_amount": 750000,
"source_currency": "NGN",
"destination_currency": "NGN",
"created_at": "2026-01-10T09:15:00.000Z",
"updated_at": "2026-01-10T09:15:30.000Z"
}
]
}
}
500000 is ₦5,000.00. The
transactions are listed oldest first, in the order the statement prints.
A statement row reports
transaction_type as the movement affected this account, so a row
can read received or sent where the underlying transaction is a withdrawal, fee or deposit.
Read id if you need to tie a row back to the transaction itself.Error Response
A missingcurrency, or a currency you hold no account in, returns 400:
{
"status": 400,
"message": "Currency is required"
}
Use this endpoint to generate periodic account statements for your records or for compliance reporting.
Authorizations
Your Rolla API key
Query Parameters
Currency of the account to draw the statement for. Required.
Example:
"NGN"
Inclusive start of the period, YYYY-MM-DD.
Example:
"2026-01-01"
Inclusive end of the period, YYYY-MM-DD.
Example:
"2026-01-31"
Which side of the book to draw the statement of. Omitted, wallets and credit lines of that currency are reported together.
Available options:
wallet, loan Example:
"wallet"