Transaction Proof

Cryptographic proof for every transaction.

Not blockchain. Not a financial instrument. Compliance infrastructure. Every collection and every payout gets a SHA-256 hash, batched into a Merkle root, and exposed via a public verify endpoint. Immutable, verifiable, audit-ready — without bolting a ledger onto your stack.

How it works

Three steps.

1

Transaction settles

A collection or payout completes via the licensed operator.

2

Receipt minted

FinVeil canonically encodes the event, hashes it (SHA-256), and writes it to the receipt ledger.

3

Anyone can verify

Hit GET /verify/:receiptId — re-derive the Merkle proof and confirm the transaction independently.

Benefits

Why teams choose Transaction Proof.

Audit-ready by default

Every payment carries a tamper-evident receipt — no extra integration, no extra storage on your side.

Independently verifiable

A regulator, auditor, or counterparty can verify a receipt without your servers being online.

Not a financial instrument

Receipts are cryptographic proofs only. NOT transferable, NOT redeemable for funds, NOT a store of value, NOT a token.

NGB / SARB / SARS-friendly

Receipt chains map cleanly onto regulator audit asks — pull the receipt, attach to your filing, done.

Who it's for

Compliance officersiGaming operatorsAuditorsRegulated fintechs

Developer-friendly

Drop it into your stack.

REST API, typed SDKs in 9 languages, and a sandbox environment you can explore in 30 seconds. No calls with sales to get keys.

Read the docs
transaction-proof.bashbash
# Anyone — regulator, auditor, counterparty — can verify
curl https://api.finveil.money/api/v1/verify/rcpt_dis_9f3a1c... \
  -H "Accept: application/json"

# => {
#      "valid":          true,
#      "receiptId":      "rcpt_dis_9f3a1c...",
#      "eventType":      "DISBURSEMENT_SETTLED",
#      "amount":         5000.00,
#      "currency":       "ZAR",
#      "rail":           "VISA_DIRECT",
#      "issuedAt":       "2026-04-18T20:14:02Z",
#      "merkleRoot":     "0xabc123...",
#      "merkleProof":    [ "0x...", "0x...", "0x..." ]
#    }

Ready to try Transaction Proof?