DEV Community

send21
send21

Posted on

How to invoice in EUR or SEK and get paid in EURC to your own wallet

Disclosure: this is written by the team behind send21.

You have a client in another country who is happy to pay in stablecoins. You invoice in EUR or SEK, because that is what your books are kept in. Then the questions start. Which rate turns the invoice into a stablecoin amount? What exactly should the client send? What if the amount that arrives is a little short?

This guide shows how to handle that with send21, non-custodial software that creates pay links and prepares payment instructions. The payer signs in their own wallet, and the funds go from their wallet straight to yours. send21 never holds keys or funds.

The problem

Card and bank fees on cross-border payments add up. Stablecoins avoid some of that, but bring bookkeeping questions:

  • The invoice says 10 000 SEK. The client pays in EURC. What rate was used?
  • When was that rate taken, and from which source?
  • Which document goes into your books?

A wallet address pasted into an email answers none of these.

What you need

  • A self-custody wallet that can receive EURC or USDC on Solana, Ethereum or Base.
  • A send21 account. You sign in with a passkey, or with email and password plus a second factor.
  • A client who can pay in EURC or USDC from a wallet or an exchange.

If you want to see the whole flow first, the testnet demo at send21.io/demo runs a real payment with test coins. No account and no email needed.

Step by step: a pay link priced in EUR or SEK

New accounts start on a "Get paid" screen. It helps you create your first pay link. The steps:

  1. Start a new payment request from the "Get paid" screen.
  2. Set the price in your invoice currency, such as EUR or SEK. Prices work in 165 fiat currencies.
  3. Choose where you want to be paid: your own wallet, on the network you use for EURC or USDC.
  4. Create the link and send it to your client together with your invoice.

For clients in the EU, EURC is the natural first choice, with USDC as the alternative. EURC and USDC both work on Solana, Ethereum and Base.

What your client sees

The client opens the link and picks a currency. They scan one QR code and pay from any wallet. They do not need a special wallet or a send21 account.

The client signs the payment in their own wallet. send21 does not sign anything and does not broadcast anything.

The rate is locked and recorded

The fiat price is converted at an exchange rate that is locked for 15 minutes. send21 records the rate source and the time.

send21 also creates a branded PDF with the payment details. Keep it with your invoice. Rules for recording stablecoin payments differ between countries, so check your bookkeeping with your accountant.

When an exchange withdrawal arrives a bit short

Exchanges often deduct a withdrawal fee from the amount sent. Your invoice says one amount and slightly less arrives.

send21 flags this. When a payment within 10% of the billed amount reaches your receiving address after the pay link was created, send21 alerts you by email, in the app and by webhook. You decide what happens next. You can accept it as paid with one click, or ask the client for the difference. The client sees a notice not to pay again, so they do not pay twice.

This has limits. A payment more than 10% off is not flagged, and neither is one that could belong to several open payments on the same address. Then you check your wallet yourself.

What it costs

The fee is 0.49% on payments under $10, falling by tier to 0.01% above $100,000. The minimum is $0.01 and the maximum is $100 per payment. On pay links the fee is billed to your account and settled later in one payment. It is never taken out of the client's payment, so you receive the exact amount. There is no subscription, no setup fee and no exchange-rate spread. The full schedule is at send21.io/pricing.

For developers

If you build tools for freelancers, the same flow is available in code:

  • MCP server at https://send21.io/mcp (Streamable HTTP), with tools for drafts, payment requests, rates and fees. An AI agent can create and track a pay link. It cannot pay, because no key send21 issues can move funds. A human signs.
  • REST API with scoped keys, idempotency keys and batch creation of up to 25 per call. Docs are at send21.io/swagger.
  • Webhooks signed with HMAC, so your backend can verify that an event came from send21 before marking an invoice as paid.
  • A machine-readable overview at send21.io/llms.txt.

The public examples repo at github.com/send21io/send21-examples has a script that creates a pay link through MCP and a webhook receiver that verifies the signature.

Honest limits

Know what send21 does not do:

  • No payouts to bank accounts and no conversion to fiat. You receive stablecoins in your own wallet.
  • A human always signs. Neither send21 nor an agent using its API can pay on anyone's behalf.
  • Payments that are more than 10% off, or that could match several open payments, are not flagged and need a manual check.
  • This guide covers EURC and USDC, the stablecoins we suggest for EU clients.
  • It is for people who are comfortable holding stablecoins and looking after their own wallet.

Try it

Run a test payment in the demo at send21.io/demo. No account needed. Then create a real pay link from the "Get paid" screen for your next invoice.

Questions, or a workflow we do not cover yet? Write to info@send21.io.

Top comments (0)