Search Psychevus

12 results available.
↑ ↓ to navigate ↵ to open · esc to close

Open proposal / payment-policy.txt

Let customers check your bank details before they pay.

A small file on your own domain says how you change bank details, where your invoices come from, and which accounts are really yours, as fingerprints rather than numbers. Anyone about to pay you, or an AI agent paying for them, can check it in a second.

Paying a supplier? Check their policy

Compared in your browser with the fingerprints the supplier publishes. Nothing about the number is sent.

Getting paid? Publish yours in five minutes

Your own domain is always included.

Each number becomes a slow fingerprint in your browser and is never sent anywhere. List only accounts you already print on your invoices: a fingerprint hides the number from casual reading, not from someone willing to spend hours of computing guessing it.

Who publishes one

1 domain publishes a valid payment policy. A domain appears here once any check finds its policy, and is re-checked every day. Open data (JSON)

psychevus.com
We never change our bank details by email. Treat any such email as fraud. Pinned in DNS. Since 2026-11-08.

The format (version 1)

A UTF-8 text file served over HTTPS at https://<domain>/.well-known/payment-policy.txt, at most 16 KB, without redirects. Each line is Field: value; lines starting with # are comments. Field names aren’t case-sensitive.

Version: 1
Domain: initech.com
Bank-Details-Changes: never-by-email
Invoices-From: initech.com
Invoices-From: xero.com
Account: pbkdf2:9b0e…(64 hex characters)
Verify-At: https://initech.com/payments
Contact: mailto:accounts@initech.com
Expires: 2027-11-08

Fields

Version (required, 1) and Domain (required, must equal the domain serving the file). Bank-Details-Changes: one of never-by-email, phone-callback, portal-only, in-writing-signed. Invoices-From (repeatable, up to 10): domains your invoices come from. Account (repeatable, up to 20): fingerprints. Verify-At: an https page on your domain. Contact and Expires (a date; a policy past it doesn’t count).

Fingerprints

pbkdf2: followed by 32 bytes of PBKDF2-HMAC-SHA256 (600,000 iterations) in hex. The password is the account with everything except letters and digits removed, in upper case; the salt is payment-policy:v1, a newline and the lower-case domain. The same account gives a different fingerprint on every domain. The work factor makes guessing slow, not impossible: list only accounts you already give your customers. Older sha256: lines are still read, with a warning.

Pinning in DNS

Optional: a TXT record at _payment-policy.<domain> with v=PP1; sha256=<hex of the file>. A checker compares the two and reports a mismatch. Checkers also read the _iban TXT convention (a plain SHA-256 of the IBAN) from iban-check.org.

It’s used automatically by the payment-change check. For developers and AI agents: GET /api/v1/payment-policy?domain=… and the check_payment_policy tool on the MCP server. The format is free to implement (CC BY 4.0).

Questions

What problem does payment-policy.txt solve?

When a supplier’s real mailbox is hacked, a fake “our bank details have changed” email comes from their genuine address and passes every email check. Until now nothing let a customer confirm an account except a phone call. With a payment policy, the supplier has already said, on its own domain, how it changes bank details and which accounts are really theirs.

Does it publish our bank account numbers?

Not in readable form. Each account appears as a slow fingerprint (PBKDF2-SHA256, 600,000 rounds) bound to your domain. Anyone who already has the number can check it, and a fingerprint copied to another domain doesn’t match there. It doesn’t make the number secret, though: account numbers are short, so someone who knows your bank could recover one with hours of computing per account. Only list accounts you already print on your invoices.

What if a fraudster copies the file to a lookalike domain?

It doesn’t count. A policy is only valid on the domain it names, read over HTTPS from that domain. Customers check the domain they already know, not one taken from an email.

What if someone hacks our website and edits the file?

Pin it in DNS: a TXT record named _payment-policy with the file’s hash. Changing the file without also changing your DNS then shows up as a mismatch. It still isn’t a substitute for a call: the policy makes a bank change easy to doubt, and a phone call settles it.

Is this an official standard?

Not yet. It’s an open proposal, published here with a reference checker, generator, API and MCP tool, free to implement. It reads the existing _iban DNS convention from iban-check.org too, and works alongside bank-side checks such as Verification of Payee in the EU and Confirmation of Payee in the UK.

YOUR VISIT, YOUR CHOICE

Privacy, by intention.

You decide what stays on your device. You can change your choice at any time.

Essential

Saves your privacy choice. Administrator sign-in uses a secure session cookie.

Always on
Full privacy notice ↗