2026-11-24
How Nonprofits Can Accept Crypto Donations in Stablecoins

Giving Tuesday is December 1 this year, and for a lot of nonprofits it's the biggest online fundraising day of the year. If you've had a donor ask whether they can give in crypto, this is a good week to decide how you'd say yes.
The Giving Block, one of the larger crypto donation platforms, reported more than $100 million in crypto donations in 2025, across 22,343 gifts. The average gift was $11,019. Stablecoins made up more than $32 million of it. Bitcoin was still close to half the volume, but a donor giving in dollar-pegged tokens is now an ordinary case.
Why stablecoins are the easy part
A gift in Bitcoin or ETH has a price problem. Its dollar value changes between the moment the donor sends it and the moment you sell it, and someone has to record which value goes on the receipt. Most nonprofits that take volatile crypto sell it right away for that reason.
A gift in USDC or USDT doesn't have that problem. 500 USDC is worth about $500 when it arrives and when you spend it. You can hold it, pay a grantee in it, or move it to a bank through an exchange, without the gift changing size in between.
That's also why the rest of this post is about stablecoins. If you need to accept Bitcoin or dozens of other coins, a donation platform like The Giving Block is the better fit, and it'll convert everything to dollars for you.
Option 1: post a wallet address
The simplest setup is a wallet address on your donate page. Anyone can send to it, it costs nothing, and the money is in your wallet the moment it lands.
The problems show up afterwards. Every donation lands at the same address, so you can't tell which transfer came from which donor without asking them. You can't send a receipt automatically, because you don't know who sent what. And the address is public, so anyone can look up every gift you've received and your current balance. For a small organization taking a handful of gifts a year, that might be fine. For a campaign, it means matching gifts to donors by hand.
Option 2: a custodial donation platform
Platforms built for nonprofits take the donation into their own account, convert it if you want, issue tax receipts and pay you out in dollars. They handle a lot of coins and a lot of the paperwork, and you never manage a wallet.
The cost is custody. The money sits in the platform's account until it pays you, on its schedule and under its rules. And you pay for the service, typically as a percentage of each gift, so check the current fee before you sign.
Option 3: one address per donation
The third way is what a payment API does for a store: every donation gets its own address, created for that gift, and the transfer to it is matched to the donor automatically.
You'd build it like a checkout. The donor picks an amount on your page, your backend creates a charge for it, and the donor pays that charge's address:
const charge = await klap.charges.create({amount: donation.amountUsd,expiresIn: 1800,acceptedPayments: [{ token: 'USDC', network: 'base' },{ token: 'USDC', network: 'polygon' },{ token: 'USDT', network: 'polygon' },],externalRef: donation.id,})
When the gift confirms, a signed charge.confirmed webhook tells your server which donation it was, so the thank-you email and the receipt can go out right away. The funds pay out from that charge's contract straight to your wallet. Klap never holds them. If a gift should be shared, say between a coalition's member organizations, the charge can split it between up to five wallets as it pays out.
This is more work than a posted address, and you manage your own wallet. Self-custody crypto payments covers what that involves.
Klap Give
We're building Klap Give for exactly this case, so you don't have to write the page yourself. You publish a page with your story, a minimum gift and the tokens you accept, and share the link. Donors don't need an account. They pick an amount, leave a name and a message if they want, and pay from their wallet.
A few decisions we made along the way:
- A goal is optional, and only informational. Going past it doesn't close the page, and falling short doesn't refund anyone. Every gift goes to the recipients when it confirms.
- Up to five recipients per page, with the shares fixed before anyone gives, so donors can see who gets what.
- Public anonymity is the donor's choice. A donor can hide their name and message from the public page. The organization still sees them, and the blockchain transfer is public either way, so we don't call it anonymous giving.
- The fee is 0.5% of each gift, taken from the recipients' share, with nothing monthly.
It takes USDC and USDT on the EVM networks Klap supports, plus USDC on Arc. It doesn't do recurring gifts yet.
Klap Give isn't open yet. If you want to hear when it is, write to hi@klappay.com.
Before December 1
Whichever option you pick, a few things are worth settling before the day:
- Which tokens and networks you'll accept. USDC on Base and Polygon covers a lot of donors, and adding USDT matters if your donors are outside the US. USDC vs USDT for merchants has the network-by-network picture, and it applies to donations the same way.
- What your receipts say. Tax rules for crypto gifts vary by country, and in the US crypto is treated as property, which brings extra rules for larger gifts. Ask your accountant how to value and receipt a stablecoin gift before you get one.
- Who holds the keys. A wallet with one person's seed phrase on one laptop isn't a treasury. Decide who can sign, and how you'd recover if that person left.
- What donors need to know. A line on the page saying donors need a little ETH on Base to send USDC there saves a lot of failed attempts. Does USDC have gas fees? explains why.