Skip to main content
GET
/
transactions
/
{transaction_id}
/
lineage
Get transaction lineage
curl --request GET \
  --url http://localhost:5001/transactions/{transaction_id}/lineage \
  --header 'X-blnk-key: <api-key>'
import requests

url = "http://localhost:5001/transactions/{transaction_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/transactions/{transaction_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/transactions/{transaction_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/transactions/{transaction_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/transactions/{transaction_id}/lineage")
.header("X-blnk-key", "<api-key>")
.asString();
require 'uri'
require 'net/http'

url = URI("http://localhost:5001/transactions/{transaction_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.transactions.get_lineage to inspect a transaction’s fund breakdown.
1

Call the method

blnk.transactions.get_lineage
response = blnk.transactions.get_lineage(
  "txn_8d2ce2f0-0d75-4a91-9d43-2ad2c2e6b9ad",
)
FieldTypeDescription
transactionIdstrTransaction ID with fund lineage enabled.
2

Use the provider breakdown

Read fund_allocation for how much came from each provider. Read shadow_transactions for the internal records Blnk created to track each provider’s share.
3

Response

200 OK
{
  "transaction_id": "txn_8d2ce2f0-0d75-4a91-9d43-2ad2c2e6b9ad",
  "fund_allocation": [
    {
      "provider": "stripe",
      "amount": "2500"
    }
  ],
  "shadow_transactions": [
    {
      "transaction_id": "txn_shadow_123",
      "reference": "ref_002_release_stripe_0",
      "precise_amount": "2500",
      "currency": "USD",
      "status": "APPLIED"
    }
  ]
}
FieldTypeDescription
transaction_idstrTransaction you queried.
fund_allocationlist[dict]How much of the spend came from each provider. Amounts are strings in minor units. May be empty when no tagged funds were used.
shadow_transactionslist[dict]Internal records Blnk creates to track each provider’s share of the spend. May be empty.

Fund lineage

Tagged funds, allocation strategies, and shadow transactions.

View transaction 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.