# Requires: npm i -g @infinite_dev/cli && export INFINITE_API_KEY=sk_sandbox_...
# Escape hatch for any endpoint: infinite api <METHOD> <path>
infinite api GET /v1/accounts/acc_abc123/statement \
--query month=2026-08Get monthly account statement (acc_abc123, month 2026-08).import requests
url = "https://sandbox.api.infinite.dev/v1/accounts/{id}/statement"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://sandbox.api.infinite.dev/v1/accounts/{id}/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://sandbox.api.infinite.dev/v1/accounts/{id}/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 => [
"Authorization: Bearer <token>"
],
]);
$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://sandbox.api.infinite.dev/v1/accounts/{id}/statement"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://sandbox.api.infinite.dev/v1/accounts/{id}/statement")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.api.infinite.dev/v1/accounts/{id}/statement")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"accountId": "vba_abc123",
"accountName": "Acme Inc.",
"month": "2026-08",
"openingBalance": "1000000",
"closingBalance": "900000",
"data": [
{
"transactionId": "tfr_abc123",
"timestamp": "2026-08-15T10:30:00Z",
"status": "COMPLETED",
"type": "PAYIN",
"currency": "USD",
"amount": "-100000",
"balance": "900000",
"description": "<string>",
"reference": "<string>",
"senderName": "<string>",
"beneficiaryName": "<string>"
}
],
"currency": "USD"
}Get monthly account statement
Returns monthly activity for balance accounts, virtual accounts, and virtual addresses. Balance accounts are ledger-backed. Virtual accounts and addresses are pass-through: each completed transfer appears as an in-leg and an out-leg.
# Requires: npm i -g @infinite_dev/cli && export INFINITE_API_KEY=sk_sandbox_...
# Escape hatch for any endpoint: infinite api <METHOD> <path>
infinite api GET /v1/accounts/acc_abc123/statement \
--query month=2026-08Get monthly account statement (acc_abc123, month 2026-08).import requests
url = "https://sandbox.api.infinite.dev/v1/accounts/{id}/statement"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://sandbox.api.infinite.dev/v1/accounts/{id}/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://sandbox.api.infinite.dev/v1/accounts/{id}/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 => [
"Authorization: Bearer <token>"
],
]);
$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://sandbox.api.infinite.dev/v1/accounts/{id}/statement"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://sandbox.api.infinite.dev/v1/accounts/{id}/statement")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.api.infinite.dev/v1/accounts/{id}/statement")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"accountId": "vba_abc123",
"accountName": "Acme Inc.",
"month": "2026-08",
"openingBalance": "1000000",
"closingBalance": "900000",
"data": [
{
"transactionId": "tfr_abc123",
"timestamp": "2026-08-15T10:30:00Z",
"status": "COMPLETED",
"type": "PAYIN",
"currency": "USD",
"amount": "-100000",
"balance": "900000",
"description": "<string>",
"reference": "<string>",
"senderName": "<string>",
"beneficiaryName": "<string>"
}
],
"currency": "USD"
}Authorizations
API Key in Bearer format (e.g., Bearer sk_test_...)
Headers
API key
Path Parameters
Balance account, virtual account, or virtual address ID
Query Parameters
Calendar month in UTC
"2026-08"
Response
Monthly account statement
Account ID, or customer ID for the combined non-balance statement
"vba_abc123"
Account holder or customer name
"Acme Inc."
Statement month
"2026-08"
Balance at the beginning of the month, in minor units
"1000000"
Balance at the end of the month, in minor units
"900000"
Show child attributes
Show child attributes
Balance currency. Null on pass-through statements, which may mix currencies.
"USD"
Was this page helpful?