How to accept crypto donations with an open amount
To accept a donation in stablecoins, create a payment link without an amount on Stellar or Solana: the donor opens it, chooses the amount in their wallet and pays your address directly. Each link takes one payment and stays open for a limited time, so create one per donor, for example when someone presses Donate on your site. Cosmos Pay marks the link as paid once the network confirms the donation.

How an open-amount link works
- Leave the amount empty when you create the link, in the dashboard or with the API. The checkout shows Any amount and tells the donor to choose it in their wallet.
- The donor’s wallet sets the amount: any positive amount of the link’s asset settles it, on Stellar with the link’s memo.
- A message of up to 300 characters, such as a thank-you, shows in the donor’s wallet.
Limits to plan for
- Stellar and Solana only: a Monad link needs an amount.
- One link takes one donation. Once paid it cannot be paid again, so a single link printed on a poster serves only the first donor.
- A link is open for a limited time, shown on the checkout as a countdown.
- Your own fee on a payment needs a fixed amount, so it does not apply to open-amount links.
Take your first donation
Switch to Sandbox
Choose Sandbox in the dashboard: links run on Stellar Testnet or Solana Devnet and move no real money.
Create an open-amount link
In Payments, choose Create payment link, pick Stellar or Solana and the asset, leave the amount empty and, if you like, add a thank-you message.
Share it
Send the checkout page, show its QR code, or embed it on your page.
Donate from a wallet
Open the link in a wallet on the same network, enter an amount and approve. The checkout turns to Paid once the network confirms it.
Confirm it on your server
When PAYMENT_INTENT_SUCCEEDED arrives, read the transaction to learn the amount, and thank the donor.
Reading what was donated
An open-amount link keeps no amount: when it is paid, Cosmos Pay records the transaction hash and the donor’s address, and the webhook carries them. Read the amount donated from that transaction on the network, for example to thank the donor or issue a receipt.
A Donate button on your site
When a visitor presses Donate, have your server create an open-amount link and show it with the embedded checkout, or send the visitor to its checkout page. Each visitor then gets a fresh link. In the browser, a Stellar wallet can also pay it through the SDK’s WebClient with the amount the donor chose: webClient.pay(intent, { amount }).
Add a pay button or checkout to your sitePayment intents API
Can one link collect many donations?
No. A link is paid once. Create a new link for each donor, for example from your server when someone presses Donate.
Can I take open-amount donations on Monad?
No. A Monad link needs an amount. Use Stellar or Solana for open amounts.
How do I know how much was donated?
Read the payment’s transaction on the network: the link itself keeps no amount for an open-amount payment.
Which assets can donors give?
The asset set on the link, such as USDC or the network’s coin (XLM or SOL). The donor chooses only the amount.
