don't trust,
verify.
Hand vrfy a receipt. It checks the signature, the issuer key and the numbers, gives one answer, and keeps nothing.
Change one number. Watch it fail. preview
Pick a receipt, edit any field, and vrfy recomputes the digest the issuer signed. One changed character and the math stops matching.
| receipt | rail | amount | verdict |
|---|
It answers, then forgets.
Every check lands, resolves to one word, and the oldest row falls off. The log never grows. There is no directory to search.
Receipts, never people.
vrfy checks the object you hand it. It has no lookup by name, account or wallet.
You can check the checker.
Receipt bytes plus the issuer's public key give the same verdict on any machine, without vrfy.
The check is free. Forever.
A paid checker is a conflict. The money lives around the answer, never on the verdict.
Check a receipt.
Paste a receipt or load a reference one. The check runs in this page. Nothing is sent and nothing is kept.
Pull the network. The check still answers.
The check is math on the receipt you hold and the public keys. Turn the network off, then check. Nothing leaves the tab, nothing is looked up, nothing is kept. Change one character and it fails, still offline.
| the check needs | where it is |
|---|---|
| the receipt | in your hand |
| vrfy-keys.json | in this tab · 3 keys |
| a server | not needed |
The keys are public.
You don't need to trust the issuer to check the issuer. Fetch the key file yourself, then check any receipt you hold.
| key | alg | status | receipts it signed |
|---|
Tap a key to retire it. Receipts signed after a key retires stop holding. Receipts signed before still check, because the math has not changed.
One call. One word back.
vrfy has one job, so it has one endpoint. Send the receipt, get the verdict and the reasons.
Quickstart
No key, no account. The check is open to anyone who holds a receipt.
Verdicts
| verdict | means |
|---|---|
| valid | The signature, key, digest and chain all hold. |
| not valid | At least one check failed. The response names which. |
| listed | The receipt records a counterparty that was listed at screening time. |
| clear | The receipt records screening that came back clear. |
| unknown | Not enough to answer. Never shown as red, never as green. |
Receipt shape
The issuer signs the digest. The digest covers every other field. Change any field and the digest moves.
What is kept
Nothing from the receipt. vrfy caches public keys, which are public already. Every response carries "stored": false.
The check is free. Forever.
A paid checker is a conflict. Anyone can check any receipt they hold, at no cost. The money lives around the answer.
Every verdict, for anyone, always.
- Key service elsewhere, per key$1 / mo
- Key service elsewhere, requests$0.03 / 10k
- vrfy, extra key with rotation$10 / mo
- Checking a receipt, anywhere$0
The check never costs anything. The prices are for issuers who sign.
| line | price | cost to serve | margin | state |
|---|---|---|---|---|
| The checkEvery verdict, for anyone, always. | $0 · forever | fractions of a cent / M | - | SET |
| Issuer tooling, indie1 hosted key and 1M signings a month, libraries, the test bench. | $99 / mo | $4 | SET | |
| Issuer tooling, team5 keys and 10M signings a month, shared keys, the test bench for everyone. | $499 / mo | $35 | SET | |
| Extra key hostingEach key past your plan, with rotation and history. | $10 / key / mo | $2 | SET | |
| Extra signingsSignings past your plan. | $0.10 / 10k | $0.03 / 10k | SET | |
| Verified-issuer markAn automated key binding plus one review, each year. | $249 / yr | ~$4.17 | SET | |
| AssuranceUptime terms and support, in an enterprise contract. | from $12k / yr | - | - | SET |
The mark answers.
The green square, stamped with the check. Drawn at every size, never scaled down from the wordmark.
Answered. Then forgotten.
Checks arrive, get one word back, and leave nothing behind. Each row keeps its verdict for three seconds, then the receipt is gone from this page too.
| time | receipt | rail | verdict | kept |
|---|
The whole rail. Not just ours.
vrfy checks standard x402 receipts the same way it checks WAVE's. Same four checks, same one word back. The rail is a field, not a favor.
| check | x402 | wave |
|---|
The gateway acts. vrfy proves it did.
Protection and screening happen in the gateway, before anything moves. vrfy never blocks anyone. It checks the receipt that says the stream was protected or the counterparty was screened.
| who | does |
|---|---|
| WAVE gateway | protects the stream, screens the counterparty |
| vrfy | checks the receipt that says so |
Sign it here. Check it here.
Build a receipt, sign it with your key, and run the same check anyone will run on it. Break it on purpose and see what they'd see.
sign a receipt to see it
| check | result |
|---|
$ vrfy sign receipt.json --key k1_9f2a $ vrfy check receipt.json
Rotate a key. Old receipts still hold.
Your key file is served at your own address, with every change kept. Rotate and watch which receipts still check.
| version | time | change |
|---|
| receipt | key | signed | verdict |
|---|
The mark says who. The math says yes.
A verified issuer has shown it serves its key file from its own domain. The mark names the issuer. It never changes a verdict.
| step | what vrfy checks |
|---|---|
| 01 domain | the key file is served from the issuer's own domain |
| 02 keys | the keys in that file sign the issuer's receipts |
| 03 history | every rotation is kept, so old receipts still check |
| 04 recheck | the file is read again on every check, nothing is cached |
Assurance buys uptime. Never a different answer.
Teams that check at volume can pay for uptime terms and support. The verdict is the same one anyone gets for free. Pick a receipt and check it both ways.
| what assurance adds | terms |
|---|---|
| uptime terms for the check endpoint | with assurance |
| support for teams that check at volume | with assurance |
| a different verdict, or a softer one | never |
Sign in to vrfy.
For issuers. Checking a receipt never needs an account.
- issuer toolingSign receipts and test them on the bench.
- key hostingPublish and rotate your vrfy-keys.json, with history.
- verified issuerThe issuer mark on your receipts, backed by a key check.
- assuranceUptime terms and support for teams that check at volume.
$ vrfy check rcpt_41c7VERIFIED$ vrfy check rcpt_41c7VERIFIEDA thousand receipts. One word each.
Hand vrfy a whole batch. Every receipt gets its own answer, the same one it would get alone. The tally is the sum of the rows, and nothing is kept.
Put your key where anyone can check it.
An issuer account hosts your key file at your own address. Checking a receipt still never needs an account.
Is it answering? Every part, every day.
Every part of vrfy, day by day. When a part ran slow or stopped, it gets a plain note: what happened, what the answers lost, and what they kept. vrfy keeps nothing, so the answer to the last one is always the same.
Keys rotate.
Old windows remain.
Rotate the issuer key. Select a receipt to see whether it was signed inside that key's published window.