envelope_hash (the SHA-256 hash of the RFC 8785–canonicalized envelope) and a prev_hash (the envelope_hash of its parent). You can export this entire chain as a single JSON file and verify it offline — without any network access — using the tally verify-ledger CLI command.
Export a subject’s ledger
CallGET /v1/subjects/:subject_type/:subject_id/export to download all snapshots for a subject in a single JSON document. Save the response to a file — this is your audit artifact.
The export endpoint has a server-configured maximum size. If a subject has more snapshots than the configured limit (1,000 by default), the request returns
400 with a validation_error rather than a truncated result — this prevents you from unknowingly verifying an incomplete chain.Install the CLI
Install the Tally CLI globally with npm:Verify a ledger file
Runtally verify-ledger <path> against your export file:
0:
1 and prints one line per error:
What the verifier checks
The CLI performs the following checks in order:Confirms that
canonicalization_method is "rfc8785" and hash_algorithm is "sha-256". If either is wrong, the tool cannot reliably verify hashes and halts.Confirms that snapshots are ordered ascending by
(snapshot_version, snapshot_id). A gap or out-of-order entry is flagged as a structural error.For each snapshot, re-computes
SHA-256(RFC 8785 canonicalize(envelope)) and compares it to the stored envelope_hash. A mismatch means the envelope content was modified after the hash was recorded.What verification proves
A successfulverify-ledger run proves that the export file you hold is internally consistent and has not been tampered with since it was produced. Specifically, it proves:
- Every envelope’s content matches the hash recorded at write time.
- The snapshots form an unbroken chain from the root to the most recent version — no version has been silently deleted, reordered, or substituted.
- Compliance audits — provide the export file and a
verify-ledgerrun log as evidence that your identity records are unmodified. - Regulatory submissions — demonstrate the provenance and integrity of KYC/KYB data submitted to regulators.
- Third-party sharing — share an export with a counterparty or auditor who can verify it independently without needing API access to your tenant.