# Add donation support to your Sage app

> Let users send XCH through Sage’s built-in support flow without adding wallet code to your app.

Sage can provide the complete donation interface for an installed app. Add a receive address to the manifest, finalize and publish the build, and Sage will expose its own support action while your app is open.

## Add a donation address

Add `donation.address` to `sage-manifest.json` and replace the placeholder with a receive address you control. Use an `xch` address for mainnet or a `txch` address for testnet, matching the network on which people will support the app.

That is all the app needs. Donation support does not require Sage Bridge code, a wallet permission, or a custom payment screen.

**Add to sage-manifest.json**

```json
{
  "donation": {
    "address": "xch1..."
  }
}
```

## Finalize and publish the change

Run your existing production build, then finalize its manifest again. The donation metadata becomes part of the installable manifest in the build output. Inspect that finalized file and confirm the full receive address before publishing it.

Deploy the rebuilt output and update the app in Sage. You do not need to bump the app version just for this change: the finalized manifest changes, so its hash changes and Sage can detect the update.

**Finalize after your build**

```shell
npm run sage:finalize
```

## Test the Sage support flow

Open the updated app in Sage. A `Support developer` action should appear in the app bar. It opens Sage’s own donation dialog, where the user chooses an amount in USD or XCH, reviews the fee, and sends XCH from the active wallet.

The transaction is created by Sage’s system interface, not by your frontend. Your app never receives wallet access or donation details, and it does not need to track the transaction.

- Confirm the support action appears only after the updated manifest is installed
- Check the receive address in the finalized manifest before accepting support
- Test with the same Chia network the donation address belongs to

## Optional: identify the developer

Without author metadata, Sage labels the recipient using the app name. Add `author.name` if you want the donation dialog to identify the developer, and optionally add a square avatar from the app’s build output.

If you include an avatar, build and finalize again so the image is present in the file inventory.

**Optional author metadata**

```json
{
  "author": {
    "name": "Your name",
    "avatar": "img/avatar.png"
  }
}
```

## Builder's note

Bridge APIs and client behavior can evolve. Verify implementation details against the Sage version you support, then test in both Sage and a normal browser.

---

Human-readable page: https://fancybudgie.com/sage/guides/support-your-app

Guide index: [llms.txt](https://fancybudgie.com/llms.txt)
