Skip to main content
GET
/
receipt
/
latest
/
{businessTransactionId}
Get latest Receipt
curl --request GET \
  --url http://localhost:3000/receipt/latest/{businessTransactionId} \
  --header 'Authorization: Bearer <token>'
import requests

url = "http://localhost:3000/receipt/latest/{businessTransactionId}"

headers = {"Authorization": "Bearer <token>"}

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

print(response.text)
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

fetch('http://localhost:3000/receipt/latest/{businessTransactionId}', 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 => "3000",
CURLOPT_URL => "http://localhost:3000/receipt/latest/{businessTransactionId}",
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 := "http://localhost:3000/receipt/latest/{businessTransactionId}"

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("http://localhost:3000/receipt/latest/{businessTransactionId}")
.header("Authorization", "Bearer <token>")
.asString();
require 'uri'
require 'net/http'

url = URI("http://localhost:3000/receipt/latest/{businessTransactionId}")

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

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
{
  "receiptId": "ec0e71e6-e5af-4e14-8f65-13949fca9c6d",
  "businessTransactionId": "44b34a79-e0f2-49d7-a48e-e52fff88182e",
  "trustRecordHash": "e20a8861864f1a0a6c5fe00e64abca04de18a7d165a82ef9d7beb458c2096b3f",
  "receiptHash": "d443df31a6ad94e8d9758d5143afd0859984b935f3209c35a7d93aaf8cd9f0d0",
  "issuedAt": "2026-07-13T17:42:11.094Z",
  "algorithm": "ed25519",
  "signature": "uchgXRFJnByGu3F+NZSoq1Hwt6bBr3rRJjQGpLOULKJ7jR4NfE/P4g7loD4L5aADdYxUqLh6Yn7ngfnz2peCCA=="
}
{
"error": "authentication required"
}
{
"error": "Execution Trust Record not found."
}

Authorizations

Authorization
string
header
required

Caller API key issued by scripts/generate-api-key.ts. Sent as Authorization: Bearer . Verified against a stored SHA-256 hash in constant time by packages/api/src/auth/StaticKeyAuthenticator.ts. Required on every route except GET /health. See /api-reference/authentication.

Path Parameters

businessTransactionId
string
required

Response

Receipt found.

Cryptographically signed, immutable Execution Trust Receipt proving the outcome of an Execution Trust Record at the time it was issued.

receiptId
string
required

Unique Receipt identifier.

businessTransactionId
string
required

Business Transaction represented by this Receipt.

trustRecordHash
string
required

Canonical hash of the Execution Trust Record, used for independent verification.

receiptHash
string
required

Hash of this Receipt.

signature
string
required

Base64-encoded digital signature over the Receipt.

algorithm
string
required

Signing algorithm.

Example:

"ed25519"

issuedAt
string<date-time>
required

UTC timestamp when the Receipt was generated.

executionId
string

Execution represented by this Receipt. Absent when the Receipt represents the latest transaction state; every Receipt currently produced by ReceiptService omits this field.