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

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

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}/lineage', 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}/lineage",
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}/lineage"

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}/lineage")
.header("X-blnk-key", "<api-key>")
.asString();
require 'uri'
require 'net/http'

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

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.LedgerBalances.getLineage to inspect a balance’s fund breakdown.
Fund lineage must be enabled on the balance when it was created. See Fund lineage.
1

Call the method

blnk.LedgerBalances.getLineage
const response = await blnk.LedgerBalances.getLineage(
  'bln_5ce86029-3c2e-4e2a-aae2-7fb931ca4c4f',
);
FieldTypeDescription
balanceIdstringBalance ID with fund lineage enabled.
2

Use the provider breakdown

Read response.data.providers to see how much each provider contributed, spent, and has available. Use total_with_lineage for the aggregate tracked amount.
3

Response

200 OK
{
  "balance_id": "bln_5ce86029-3c2e-4e2a-aae2-7fb931ca4c4f",
  "aggregate_balance_id": "bln_aggregate_shadow_balance_id",
  "total_with_lineage": "7500",
  "providers": [
    {
      "provider": "stripe",
      "amount": "10000",
      "available": "7500",
      "spent": "2500",
      "shadow_balance_id": "bln_shadow_balance_id"
    }
  ]
}
FieldTypeDescription
balance_idstringBalance you queried.
aggregate_balance_idstringInternal aggregate balance ID for combined provider funds.
total_with_lineagestringTotal available funds tracked by lineage (minor units).
providersobject[]Provider-by-provider breakdown of received and spent funds.

Fund lineage

Tagged funds and allocation strategies.

View balance lineage

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.