$389,125 leaves escrow on a human signature, not an email.
Emailed payoff instructions can’t move money on their own. The disbursement is bound to the exact amount and destination, signed by the officer on their own device.
Written for Escrow operations · Title agencies · Underwriting counsel · Closing software
A payoff letter arrives from the lender’s domain. It is a spoof; the thread was compromised weeks ago.
The disbursement queue is full and the callback line is busy. The officer’s phone shows the file, the amount, and the destination account: the one on record, not the one in the email.
She signs the real one. The spoofed instructions are inert, because nothing can sign for them. The receipt is attached to the file.
Each button is a real attack on this action. Press one. The signature stops verifying.
Nothing you press here leaves this tab. In this demo, a keypair generated in your browser signs the receipt. In production, the receipt is signed with Manav's published Ed25519 key after the approver's passkey check, and your gate verifies it offline.
This is the wire everyone remembers losing.
Account-verification tools check the destination once. Callbacks authenticate a voice that deepfakes now imitate. Neither binds a human signature to the exact disbursement, which is the gate missing when a wire leaves escrow on emailed instructions from a compromised thread.
What each person gets from the same receipt.
A short on-device signature replaces the callback queue at cutoff, and it is the same step for every file. Callback stays as fallback.
“Signed disbursement” as the tier above account verification.
A receipt that says who saw what and signed, reviewable without a vendor in the room.
Cash-to-close signed from their own phone: enrolled at contract, verified at closing, no app to install.
Check it on a machine we have never seen.
Download the receipt and verify it yourself with any Ed25519 library, offline, on your own machine. Verification needs only the published public key.
// Verify offline (Node 20+). Any Ed25519 library works. // npm i @noble/ed25519 then save as verify.mjs import * as ed from '@noble/ed25519'; // pub: "x" from the published JWKS. msg: the receipt's canonical bytes. // sig: the receipt signature. All three as Uint8Array. console.log(await ed.verifyAsync(sig, msg, pub) ? 'valid' : 'INVALID');
What this receipt does not cover.
We complement account verification rather than replace it: they vet the destination once; we sign the disbursement every time. A destination that was wrong at enrolment stays wrong.
The closing wire that ignores emailed instructions.
Disbursement release, instruction changes and consumer-side signing. No wire leaves escrow on emailed instructions alone.
Bring the action you would gate first. We issue a real receipt on your payload, live on the call.
You verify it on your own machine, then change one byte and see it fail.
Where it sits in your stack and what the auditor re-performs. Then a plain yes, no, or not yet.
An engineer, not an SDR. No slides. Your email goes to one inbox and nowhere else.