payrail

USDC invoices · Non-custodial · Verified onchain

Know exactly which invoice got paid.

Create a USDC invoice, send a payment link, and let Payrail match the onchain payment to the right invoice. Funds land in your wallet, not ours.

No holding account. No matching bank statements by hand.

Getting paid is easy.
Knowing which invoice got paid is not.

A USDC transfer carries an amount and a sender, and nothing else. Try matching one yourself: that step is the whole product.

Your invoiceAcme Studio250.00 USDCINV-0231 · onchain ID 0x7f3a…c21ePENDING
Wallet history · which one paid it?

Tap the transfer you think is Acme's.

Send the link.
Receive USDC. Marked paid.

payrailbeta0x7bE3…72Cf

‹ Invoices

Pay INV-0231

Acme Studio is billing250.00 USDCRobinhood

Payment progress

1. Approve USDCwaiting
2. pay(invoiceId)waiting
3. Verify onchainwaiting
4. Status PAIDwaiting
  1. 1Approve USDCThe wallet grants the contract an allowance for exactly this amount.
  2. 2pay(invoiceId)One call. USDC goes straight to the merchant; the contract keeps nothing.
  3. 3Verify onchainThe backend reads the receipt and the PaymentReceived event, never the browser's claim.
  4. 4Marked PAIDID, merchant and amount match. The invoice closes itself.

Three steps.
One transaction.

You write the invoice. The buyer pays from their wallet. Payrail matches the ID, merchant and amount from the onchain event, then closes the invoice without you touching anything.

Create your first invoice

Verified from the chain,
not from anyone's word.

Screenshots can be faked. Bank statements can be misread. An onchain event can be neither, and it is the only source of truth Payrail trusts.

Stop matching statements.
Start sending links.