Chained history
The event stores the hash of the record before it, so every accepted fact holds its place in a tamper-evident chain.
previous_event_hash: 8c1f…22e0Payments, consent, approvals, and handoffs get challenged by customers, auditors, and partners. The Event Ledger records each one the moment it happens, hash-linked to the record before it, timestamped, and signed with Ed25519, so the record can defend itself.
Your application stays the system of action. The Event Ledger keeps the signed, ordered history beside it, with nothing to migrate and no pipeline to rewrite.
An ordinary log can be updated, deleted, backfilled, or exported without any cryptographic evidence of what changed. That weakness appears precisely when the event matters outside your engineering team.
“I never approved that payment.”
Your application log says they did. Because your team controls that log, the customer, card network, or court still has to take your word for it.
Customer cust_482 approved invoice INV-2841 at 14:32 UTC.
Share a signed receipt instead of assembling screenshots and exports.
The Event Ledger does not replace your logs, your warehouse, or anything else you run. It preserves the small set of business facts whose integrity may matter outside your team.
The Event Ledger adds an ordered position, deterministic payload fingerprint, and issuer signature to the business event your application already produced.
The event stores the hash of the record before it, so every accepted fact holds its place in a tamper-evident chain.
previous_event_hash: 8c1f…22e0The canonical event payload is hashed with SHA-256. Change one field later and the fingerprint no longer matches.
payload_hash: 9f21…d40aThe payload hash, event identity, and ingestion time are signed with the issuer's Ed25519 key and returned with the record.
signature: ed25519:5d39…ae08Call the Event Ledger after the critical action succeeds in your application. Store the returned event ID and ingestion time beside the record you already own.
POST /v1/eventsfrom invoance import InvoanceClient
client = InvoanceClient()
event = await client.events.ingest(
event_type="order.shipped",
payload={"order_id": "ord_8f2a", "carrier": "fedex"},
)
print(event.event_id, event.ingested_at)You do not need to sign every debug line. Anchor the facts a customer, partner, reviewer, or regulator may ask you to prove later.
payment.approved · refund.issued · payout.completedterms.accepted · consent.granted · access.changedorder.shipped · delivery.confirmed · custody.transferredrelease.deployed · key.rotated · feature.enabledMove the conversation from competing screenshots to one independently verifiable record.
Less manual evidence workGive security, compliance, and legal teams evidence that does not depend on dashboard access.
Portable audit evidencePreserve approvals, custody transfers, and operational milestones when two parties may disagree later.
Clear chain of eventsPut proof links in your product so customers can check important events without opening a support ticket.
Trust built into UXNo. Keep your logs for operations and debugging. Send only the business events whose integrity needs to survive outside your own systems.
No. A proof link can be checked publicly, and supported SDKs can verify exported records offline.
You decide which payload fields to send. The public proof surface exposes verification material, not your private application context.
The ledger is append-only. A changed payload no longer matches its SHA-256 hash or Ed25519 signature.
Start with a payment, consent change, approval, or handoff. Keep your existing system and add a signed, append-only record beside it.