DEV Community

send21
send21

Posted on Originally published at send21.io

How to send a crypto invoice and get paid straight to your wallet

Disclosure: this is written by the team behind send21.

Most crypto invoices are a PDF with a wallet address pasted at the bottom. Then the questions start. Which rate turns your EUR 1,200 into USDC? Which network should the client use? Did the money arrive? And what if an exchange withdrawal lands a few euros short?

This guide walks through sending a crypto invoice as a pay link instead, with send21, so the client pays from their own wallet straight into yours. send21 is non-custodial software: it prepares the payment instructions and watches the chain, but it never holds keys or funds. The short version is on the crypto invoice generator page.

What you need before you start

  • A wallet you control for each network you want to accept. For example a Solana wallet for USDC or EURC on Solana, an Ethereum wallet for Ethereum or Base, a Bitcoin wallet for on-chain BTC, or a Lightning wallet with a Lightning address (it looks like name@wallet.com).
  • A send21 account. Sign-up is free with an email address. There is no subscription and no KYC step, because send21 never holds your money. The rules that apply to your own business still apply to you.

Step 1: Price the invoice in your own currency

Open Get paid in the app and enter the amount in the currency your books are kept in: EUR, USD, SEK or any of 161 fiat currencies. You can also ask for an exact crypto amount instead.

Add a message the client will see, such as "Invoice 2026-041, logo design", and your invoice number as the order id. The order id comes back with every notification.

Step 2: Choose what you accept

Pick the currencies and networks you are happy to receive, each with your own receiving address:

Currency Networks
BTC Bitcoin on-chain, or Lightning to your Lightning address
USDC Solana, Ethereum, Base, Arbitrum, Polygon (native USDC only on Arbitrum and Polygon)
USDT Solana and Ethereum only
EURC Solana, Ethereum, Base
SOL Solana
ETH Ethereum, Base, Arbitrum

Offer only what you want to hold. If your clients are in the EU, USDC and EURC are usually the easiest choice, since EU exchanges delisted USDT.

Step 3: Send the link

Send the pay link by email or chat, or show its QR code. When the client opens it, they see:

  • your amount in your currency, your message, and the currencies you accept;
  • after picking one, a single QR code with the exact crypto amount, which network to use, and how long the rate is locked.

The rate locks for 15 minutes when the client picks a currency, and the rate, its source and the time are recorded. So a price in EUR stays a price in EUR, and you can see later exactly how it was converted.

The client pays from any wallet or exchange that can send to an address. They sign in their own wallet, and the money goes from their wallet to yours. Nothing passes through send21.

Ask the client to compare the address in their wallet with the one on the pay page. send21 highlights its start and end, the parts a look-alike address from clipboard malware would have to copy.

Step 4: Get told when it is paid

send21 watches the chain and tells you by email, in the app and, if you set one up, by a signed webhook to your own system. You hear when the payment is seen and again when it is confirmed. Before marking a payment confirmed, send21 looks the transaction up once more at a second source.

Each pay link is for one payment.

Step 5: Handle a payment that arrives a little short

Exchanges often deduct their withdrawal fee from the amount, so EUR 1,200 arrives as EUR 1,198.50.

When a transfer within 10% of the billed amount reaches your address, send21 flags it instead of ignoring it. You get an alert, and you decide: accept it as paid, or decline it with a reason. The client sees a notice not to pay again. If you have not decided 2 hours before the payment expires, you get a reminder. You can also choose to accept small short payments automatically (up to 10%, and you absorb the difference). Overpayments always wait for you.

Two honest limits: a transfer more than 10% off is not flagged, and the money is already in your wallet either way, so any refund is a new payment you make yourself.

Step 6: Keep the records

Each paid invoice keeps the amount, the rate with its source and time, the transaction and your order id, and you can download a PDF of the payment. send21 does not convert crypto to fiat or pay out to a bank, so taxes and bookkeeping in your country stay with you.

What it costs

Creating and sending invoices is free. When one is paid, send21 bills a fee to your account: 0.49% on the smallest payments, falling by tier to 0.01% above $100,000, never more than $100 per payment. The fee is never taken out of the payment, so you receive the full amount. Fees add up on your account, and you settle them in one payment at $10 or after 30 days. The full schedule is on the pricing page.

A few things to know first

  • Crypto payments cannot be reversed. A refund is a new payment from your wallet.
  • Lightning confirms automatically only when your wallet provider supports it (LUD-21). Otherwise the payment is confirmed with the proof of payment that the paying wallet shows.
  • ETH seen only as a balance increase (where no block explorer is available) waits for you to confirm it.

Try it without real money

To see the flow from both sides first, the testnet demo runs a real payment with test coins, with no account and no email.

From your own software, the same pay link is one call to POST /api/v1/payment-requests (see the quickstart).

Start here: send21 crypto invoice generator. Questions or corrections are welcome at info@send21.io.

Top comments (0)