List Wallet Transactions
curl --request GET \
--url https://api.rolla.xyz/api/v1/external/wallet/transactions \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.rolla.xyz/api/v1/external/wallet/transactions"
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/transactions', 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/transactions",
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/transactions"
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/transactions")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rolla.xyz/api/v1/external/wallet/transactions")
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": "Transaction history retrieved successfully",
"success": true,
"data": {
"transactions": [
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"transaction_type": "withdrawal",
"status": "completed",
"description": "Vendor payment",
"external_reference": "ref-abc123",
"fee_amount": 53,
"source_amount": 500000,
"destination_amount": 499947,
"source_currency": "NGN",
"destination_currency": "NGN",
"created_at": "2024-01-15T10:30:00.000Z",
"updated_at": "2024-01-15T10:30:45.000Z"
},
{
"id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"transaction_type": "deposit",
"status": "completed",
"description": "Inbound transfer",
"external_reference": "NG-DEP-9F2K1A",
"fee_amount": 0,
"source_amount": 1000000,
"destination_amount": 1000000,
"source_currency": "NGN",
"destination_currency": "NGN",
"virtual_account": {
"id": "2b0f3d84-8c1a-4c7e-9f0b-1a2b3c4d5e6f",
"currency": "NGN",
"method": "bank_transfer",
"bank_name": "GTBank",
"account_number": "0123456789",
"account_name": "Acme Ltd / Rolla"
},
"payer": {
"name": "John Doe",
"account_number": "1234567890",
"bank_name": "Access Bank"
},
"created_at": "2024-01-14T09:00:00.000Z",
"updated_at": "2024-01-14T09:01:00.000Z"
}
],
"totalCount": 150,
"page": 1,
"pageSize": 20,
"totalPages": 8
}
}{
"status": 400,
"message": "Validation failed",
"errors": [
{
"code": "too_big",
"maximum": 100,
"type": "number",
"inclusive": true,
"path": [
"pageSize"
],
"message": "Number must be less than or equal to 100"
}
]
}{
"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
List Wallet Transactions
A page of the wallet transactions on your account, newest first, filterable by currency, type, status, date range and reference.
Transactions with status failed are left out unless you ask for them with status=failed.
GET
/
wallet
/
transactions
List Wallet Transactions
curl --request GET \
--url https://api.rolla.xyz/api/v1/external/wallet/transactions \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.rolla.xyz/api/v1/external/wallet/transactions"
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/transactions', 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/transactions",
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/transactions"
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/transactions")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rolla.xyz/api/v1/external/wallet/transactions")
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": "Transaction history retrieved successfully",
"success": true,
"data": {
"transactions": [
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"transaction_type": "withdrawal",
"status": "completed",
"description": "Vendor payment",
"external_reference": "ref-abc123",
"fee_amount": 53,
"source_amount": 500000,
"destination_amount": 499947,
"source_currency": "NGN",
"destination_currency": "NGN",
"created_at": "2024-01-15T10:30:00.000Z",
"updated_at": "2024-01-15T10:30:45.000Z"
},
{
"id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"transaction_type": "deposit",
"status": "completed",
"description": "Inbound transfer",
"external_reference": "NG-DEP-9F2K1A",
"fee_amount": 0,
"source_amount": 1000000,
"destination_amount": 1000000,
"source_currency": "NGN",
"destination_currency": "NGN",
"virtual_account": {
"id": "2b0f3d84-8c1a-4c7e-9f0b-1a2b3c4d5e6f",
"currency": "NGN",
"method": "bank_transfer",
"bank_name": "GTBank",
"account_number": "0123456789",
"account_name": "Acme Ltd / Rolla"
},
"payer": {
"name": "John Doe",
"account_number": "1234567890",
"bank_name": "Access Bank"
},
"created_at": "2024-01-14T09:00:00.000Z",
"updated_at": "2024-01-14T09:01:00.000Z"
}
],
"totalCount": 150,
"page": 1,
"pageSize": 20,
"totalPages": 8
}
}{
"status": 400,
"message": "Validation failed",
"errors": [
{
"code": "too_big",
"maximum": 100,
"type": "number",
"inclusive": true,
"path": [
"pageSize"
],
"message": "Number must be less than or equal to 100"
}
]
}{
"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 paginated list of wallet transactions, newest first, with optional filtering by currency, type, status, date range, and search term.
Transactions with status
Amounts are in minor units —
Example Request
curl -X GET "https://api.rolla.xyz/api/v1/external/wallet/transactions?currency=NGN&status=completed&page=1&pageSize=20" \
-H "X-API-Key: your_api_key_here"
Query Parameters
| Parameter | Type | Description |
|---|---|---|
currency | string | Filter by source currency code (e.g. NGN, USD), so a swap is listed under the currency it was sold from rather than under both |
transactionType | string | Filter by type: deposit, withdrawal, swap, card_funding, payin, fee |
status | string | Filter by status: pending, completed, failed, rejected, sent, negotiating, cancelled |
page | integer | Page number, starting at 1 (default: 1) |
pageSize | integer | Results per page (default: 20, max: 100) |
startDate | string | Inclusive start (YYYY-MM-DD) |
endDate | string | Inclusive end (YYYY-MM-DD) |
search | string | Case-insensitive substring match on external_reference |
failed are left out unless you ask for them with status=failed.
status=completed also returns pending transactions our operations team has already claimed,
which are reported as completed; status=pending excludes them.
Example Response
{
"status": 200,
"message": "Transaction history retrieved successfully",
"success": true,
"data": {
"transactions": [
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"transaction_type": "withdrawal",
"status": "completed",
"description": "Vendor payment",
"external_reference": "ref-abc123",
"fee_amount": 53,
"source_amount": 500000,
"destination_amount": 499947,
"source_currency": "NGN",
"destination_currency": "NGN",
"created_at": "2024-01-15T10:30:00.000Z",
"updated_at": "2024-01-15T10:30:45.000Z"
},
{
"id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"transaction_type": "deposit",
"status": "completed",
"description": "Inbound transfer",
"external_reference": "NG-DEP-9F2K1A",
"fee_amount": 0,
"source_amount": 1000000,
"destination_amount": 1000000,
"source_currency": "NGN",
"destination_currency": "NGN",
"virtual_account": {
"id": "2b0f3d84-8c1a-4c7e-9f0b-1a2b3c4d5e6f",
"currency": "NGN",
"method": "bank_transfer",
"bank_name": "GTBank",
"account_number": "0123456789",
"account_name": "Acme Ltd / Rolla"
},
"payer": {
"name": "John Doe",
"account_number": "1234567890",
"bank_name": "Access Bank"
},
"created_at": "2024-01-14T09:00:00.000Z",
"updated_at": "2024-01-14T09:01:00.000Z"
}
],
"totalCount": 150,
"page": 1,
"pageSize": 20,
"totalPages": 8
}
}
500000 is ₦5,000.00. Fields that do not apply to a
transaction are omitted rather than returned as null: exchange_rate appears on swaps
only, virtual_account, payer and payment_rail on deposits only, and uetr only once a
cross-border payout has been assigned one.
Use date range filters to export transaction data for specific periods. Combine with the
status filter to find failed transactions that may need to be retried.Authorizations
Your Rolla API key
Query Parameters
Filter by source currency, so a swap is listed under the currency it was sold from rather than under both.
Required string length:
3 - 4Example:
"NGN"
Filter by type. fee lists fees booked as transactions of their own.
Available options:
deposit, withdrawal, swap, card_funding, payin, fee Example:
"withdrawal"
Filter by status. completed also returns pending transactions operations have already claimed; pending excludes them.
Available options:
pending, completed, failed, rejected, sent, negotiating, cancelled Example:
"completed"
Page number, starting at 1.
Required range:
x >= 1Rows per page. Caps at 100.
Required range:
1 <= x <= 100Inclusive start, YYYY-MM-DD.
Example:
"2024-01-01"
Inclusive end, YYYY-MM-DD.
Example:
"2024-01-31"
Match on external reference, case-insensitive substring.
Example:
"ref-abc"