Published 2026-10-12 · 7 min read
The problem with traditional invoices
PDF invoices are fine for banks, but they don't tell a crypto client exactly what to send. A "crypto invoice" should be a page the client opens, clicks, and pays — no copy-paste of addresses, no decimal confusion.
What a crypto invoice generator does
It turns amount + token + your address + chain into a single payment link and a scannable QR code. The client scans or clicks, their wallet opens pre-filled, they confirm. You both get a clear record.
Minimal free template
Here is a self-contained snippet you can drop into any HTML file. It builds an EIP-681 link for USDC on Base:
<input id="amt" placeholder="Amount in USDC">
<button onclick="gen()">Generate link</button>
<div id="out"></div>
<script>
const SELLER="0xYOUR_ADDRESS";
function gen(){const a=document.getElementById('amt').value*1e6;
const uri=`ethereum:0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913@8453?function=transfer(address,uint256)(${SELLER},${a})`;
document.getElementById('out').innerHTML='<a href="'+uri+'">'+uri+'</a>';}
</script>
Swap the token contract for USDT or another chain and you have a multi-chain generator. The CryptoCheckout Kit ships a polished, reusable version with a Cloudflare Worker verifier that unlocks a download only after payment is confirmed on-chain.
Going further
- Add a QR code (a tiny JS library) so mobile wallets can scan.
- Log each invoice with its tx hash in a spreadsheet for taxes.
- Use the no-KYC methods guide to pick the right chain for your client's location.