Skip to main content
GET
/
balances
/
{balance_id}
/
at
Historical balances
curl --request GET \
  --url http://localhost:5001/balances/{balance_id}/at \
  --header 'X-blnk-key: <api-key>'
import requests

url = "http://localhost:5001/balances/{balance_id}/at"

headers = {"X-blnk-key": "<api-key>"}

response = requests.get(url, headers=headers)

print(response.text)
const options = {method: 'GET', headers: {'X-blnk-key': '<api-key>'}};

fetch('http://localhost:5001/balances/{balance_id}/at', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_PORT => "5001",
CURLOPT_URL => "http://localhost:5001/balances/{balance_id}/at",
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-blnk-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 := "http://localhost:5001/balances/{balance_id}/at"

req, _ := http.NewRequest("GET", url, nil)

req.Header.Add("X-blnk-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("http://localhost:5001/balances/{balance_id}/at")
.header("X-blnk-key", "<api-key>")
.asString();
require 'uri'
require 'net/http'

url = URI("http://localhost:5001/balances/{balance_id}/at")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Get.new(url)
request["X-blnk-key"] = '<api-key>'

response = http.request(request)
puts response.read_body
Use blnk.ledger_balances.get_at to retrieve a balance at a specific point in time.
1

Call the method

blnk.ledger_balances.get_at
response = blnk.ledger_balances.get_at(
  "bln_5ce86029-3c2e-4e2a-aae2-7fb931ca4c4f",
  {
    "timestamp": "2025-02-24T08:55:26Z",
  },
)
FieldTypeDescription
balanceIdstrBalance ID to query.
timestampstrSpecifies the exact date and time for which a historical balance is requested. Use ISO 8601 format (for example 2025-02-24T08:55:26Z).
from_sourceboolWhen True, reconstruct from transactions instead of snapshots.
2

Use the historical amounts

Read response.data["balance"] for net, credit, and debit totals at the requested timestamp. Compare with current balance if you are auditing or reconciling.
3

Response

200 OK
{
  "timestamp": "2025-02-24T08:55:26Z",
  "from_source": false,
  "balance": {
    "balance_id": "bln_5ce86029-3c2e-4e2a-aae2-7fb931ca4c4f",
    "balance": 5000,
    "credit_balance": 5000,
    "debit_balance": 0,
    "currency": "USD"
  }
}
FieldTypeDescription
timestampstrPoint in time you queried (ISO 8601).
from_sourceboolWhether the balance was reconstructed from transactions.
balance.balance_idstrBalance you queried.
balance.balancenumberNet amount at that timestamp.
balance.credit_balancenumberTotal credits at that timestamp.
balance.debit_balancenumberTotal debits at that timestamp.
balance.currencystrCurrency of the balance.

Retrieving historical balances

How point-in-time balance queries work.

Historical balances

HTTP request and response schema.

Need help?

We are very happy to help you make the most of Blnk, regardless of whether it is your first time or you are switching from another tool. To ask questions or discuss issues, please contact us or join our Discord community.