Crypto Donation Page, Non-Custodial: A Public URL to Your Wallets
If you want a crypto donation page that is non-custodial, you want a public URL. A supporter opens it, picks an amount, pays on that page, and the gift lands in wallets you control.
That is a different job from a 501(c)(3) tax processor. It is also a different job from posting three static QR codes on a blog.
Quick answer: FinCobra Checkout donation pages are that URL: https://fincobra.com/donate/:slug. You can publish up to three pages. Every page uses the same Receiving wallets. The donor submits an amount on the donation page; FinCobra starts the payment flow there and records the result in Donations. Put a button on your site with donate-button.js — not an iframe. If you need IRS tax receipts and crypto converted to cash in a bank, use The Giving Block. If you want to run the software yourself (including Lightning), use BTCPay Server.
This page is not an invoice how-to.
What “non-custodial donation page” means here
Three products get searched as if they were one.
Tax processor. The Giving Block’s own homepage is “Accept crypto donations for your nonprofit.” Official docs: the donor can get a tax receipt by email; crypto is automatically converted to cash (auto-conversion can be turned off); transfers go out weekly on Tuesday once the total meets $50; ACH can take 3–5 days. That is the right tool for a qualified charity that needs receipts and a bank. FinCobra donation pages do not issue tax receipts, do not process 501(c)(3) gifts, and do not convert crypto to fiat.
Static QR listicle. A page that prints an address and a QR. No amount mode, no public slug you can share as a campaign, no record in a Donations app, easy address reuse. Fine for a personal tip jar. It is not a donation page.
Public donate URL to wallets you control. You publish a page. The supporter chooses a USD amount. Payment happens on that page. Settlement uses Receiving wallets you configured. You still do not hand FinCobra spend keys. FinCobra hosts the public page and the payment flow. Prefer “settles to wallets you control” over “as sovereign as running your own node.”
If the word you care about is deduction, stop and use a tax processor. If the word is my wallets, keep reading.
Create the page
Official path, from the donation pages docs:
- Open Donations → Settings.
- Choose Create page while you have fewer than three pages, or pick an existing tab.
- Open Donation page.
You get a separate public identity per page. Configure:
- Public name, tagline, and description
- Avatar and page background (PNG, JPEG, or WebP; each page keeps its own active visuals)
- Public slug →
https://fincobra.com/donate/:slug - Button label
- Amount mode
- Three suggested USD amounts
- Enabled state
Three pages is the cap. Use them as separate public faces (a campaign, a personal page, a project) — not as three different wallet stacks.
Receiving wallets are shared. Public copy is not.
All donation pages use the wallets under Donations → Settings → Receiving.
Change Receiving and the available currencies update on every page. Public name, tagline, description, visuals, slug, button label, and amounts do not change with that edit.
That is the split: one settlement set, up to three public pages.
Documented rails you can attach as Receiving wallets (not an invoice state machine):
- Bitcoin via your xpub
- USDT and USDC on Ethereum
- USDC on Arbitrum One and Base (not USDT on those two)
- USDT and USDC on Solana
Not any token. Not native ETH. Not Lightning. Not Arbitrum USDT.
Amount modes
The donor’s amount UI is one of three modes:
| Mode | What the donor sees |
|---|---|
| Suggestions and custom | Three quick USD amount buttons plus a custom amount field |
| Custom only | A custom amount field. No preset buttons |
| Suggestions only | They must pick one of the three amounts you set |
Suggestions are USD amounts you configure on that page. They are not tax-deductible presets and not a fundraising goal tracker.
What the donor does
The public page is:
https://fincobra.com/donate/:slugShare that link. When a supporter submits an amount, FinCobra starts the payment flow on the donation page and records the result in Donations. Gifts from every page land in the same Donations app.
Deleting a page disables its public link and frees one of the three slots. History stays. You are not wiping received donations by retiring a slug.
Embed the button — not an iframe
Under Donations → Settings, open Embed and copy that page’s snippet.
<script
async
src="https://fincobra.com/donate-button.js"
data-fincobra-donate="https://fincobra.com/donate/alice"
data-label="Donate"
></script>Two attributes matter: data-fincobra-donate (the public page URL) and data-label (the button text). Each snippet points at the page you selected.
The hosted payment page should open directly in the browser. It is not designed for iframe embedding. If a theme or “embed donate form” tutorial wants an iframe, that is a different product (The Giving Block embeds a giving form; BTCPay embeds a payment button on your own instance). Do not iframe fincobra.com/donate/:slug.
Choose the other tool if that is the job
Choose The Giving Block if you are a nonprofit that needs tax receipts, auto-convert to cash, and a weekly bank transfer. Their official pages sell that job. FinCobra does not.
Choose BTCPay Server if you want to self-host a donation surface. Official Apps docs: a Payment Button for tips and donations, a Crowdfunding app with funds to the creator’s wallet, and a Point of Sale that can take donations. You run the instance. Lightning is theirs. FinCobra is hosted and has no Lightning.
Choose a static QR if one address is enough and you do not need a public slug, amount modes, or a Donations history.
Choose FinCobra donation pages if most of these are true:
- You want a public donate URL, not an invoice you create per supporter.
- Settlement must hit Receiving wallets you control.
- Three pages, separate public copy, one wallet set, is enough.
- A script button on your site is enough. You do not need an iframe form or a WordPress.org plugin this week.
- You can live on the documented rails above.
FinCobra still hosts the page. “Non-custodial” here means no spend keys and no FinCobra-held balance — not “we disappeared from the stack.”
Create the page, attach your wallets
Open Donations → Settings, create a page, set the slug, and attach Receiving wallets you control. Docs: Donation pages. Marketing shell: fincobra.com/donations.
If you needed a tax processor or a QR, you already know. Do not stretch this product into either.