Prove which version of a file existed, and when.
A customer, auditor or counterparty produces a different version of a file you sent, and the argument becomes which copy is real. Anchor the SHA-256 hash when the file goes out. Later, anyone can hash the copy they hold and compare. A match proves it is byte for byte the same file.
One check settles which copy is real.
You anchored invoice_1042.pdf on 2 March, the day it went out. In June the customer sends back a copy with a different total and says it is the one they received. Each file is hashed and compared with the anchor. Yours matches. Theirs does not. The anchor was signed in March, so it cannot have been made after the dispute began.
9b74c98e…5d21af069b74c98e…5d21af06Hashes match41e07fa2…c8836b1ddocument_hash | SHA-256 of the file, computed on your side |
|---|---|
document_ref | Your label, for example Invoice #1042 |
event_type | Optional category, for example invoice |
| metadata | Optional JSON, for example amount and currency |
| original bytes | Optional. Stored encrypted so it can be retrieved |
trace_id | Optional. Attach to a trace |
import { InvoanceClient } from "invoance";
const client = new InvoanceClient();
const result = await client.documents.anchorFile({
file: "./invoice.pdf",
documentRef: "Invoice #1042",
eventType: "invoice",
metadata: { amount: 5230, currency: "USD" },
skipOriginal: true, // anchor the hash only
});
console.log(result.event_id);
- Hash-only mode. The file never leaves your system.
- Optional encrypted storage of the original for later retrieval.
- A signed anchor record with the time it was created.
- A public proof page where anyone can drop the file and check it.
| Who | Anyone with the file and the proof link. No account. |
|---|---|
| Sees | Your organization, whether its domain is verified, the time of the anchor, and match or no match. |
| Never sees | The file. It is hashed in their browser and only the hash is compared. |
| Receives | The 64-character hash, your label and any metadata you add. |
|---|---|
| Never receives | The file, unless you choose to store the original. Then it is stored encrypted. |
| Keeps | The signed anchor record, append-only. |
Invoices and statements
Show the version that was sent, not a later edit.
Contracts and board packs
Fix the signed version at a point in time.
Reports to lenders and regulators
Prove what was submitted on the filing date.
Hash the file
The SDK reads the file and computes SHA-256 locally.
Anchor the hash
Send the hash, a reference and optional metadata. Include the bytes only if you want them stored.
Sign and store
The anchor is signed with your Ed25519 key and appended to the ledger.
Re-hash to verify
Anyone with the file can hash it and compare against the anchor.
Does this prove the document is genuine?
Do you need the file?
What if a PDF is re-saved with no visible change?
Is this an e-signature?
Send your first record.
Free on the Developer plan.