Automated, trust-minimised bounty payouts for open-source contributions. Fund with USDC on Base or MUSD on Mezo and let BountyPay handle the rest.
-
Install the GitHub App
-
Open a New Issue and click the
Create a bountybutton from the BountyPay bot. -
Choose Your Network & Fund
- Base Sepolia: Fund with USDC (EVM standard)
- Mezo Testnet: Fund with MUSD (Bitcoin L2)
Funds sit safely in escrow.
- Merge the winning PR — BountyPay automatically pays the contributor once the PR closes the issue.
That's it. No invoices, no manual transfers, no spreadsheets.
- Open an issue describing the work needed
- Click "Create a bounty" in the bot comment
- Connect your wallet and approve USDC spending
- Fund the bounty (minimum amount required)
- Set a deadline for when the work should be completed
- Wait for contributors to submit PRs
For a detailed quick-start guide for maintainers, see our wiki:
- Go to bountypay.luccilabs.xyz to create your account and browse available bounties
- Find an issue with a bounty attached
- Link your GitHub account to your wallet at
/link-wallet - Submit a PR that addresses the issue
- When your PR is merged and closes the issue, payment is automatic
- Funds are sent to your linked wallet address
Key environment variables required for deployment:
SESSION_SECRET— Secret for session encryption (iron-session)FRONTEND_URL— Base URL for OAuth callbacksENV_TARGET— Environment target:stageorprod
GITHUB_APP_ID— GitHub App IDGITHUB_PRIVATE_KEYorGITHUB_PRIVATE_KEY_PATH— GitHub App private keyGITHUB_WEBHOOK_SECRET— Secret for GitHub App webhooksGITHUB_MARKETPLACE_WEBHOOK_SECRET— Secret for GitHub Marketplace webhooks (plan changes)GITHUB_CLIENT_ID— OAuth client IDGITHUB_CLIENT_SECRET— OAuth client secret
DATABASE_URL— PostgreSQL connection string (pooled)DIRECT_DATABASE_URL— Direct connection for migrations
BLOCKCHAIN_SUPPORTED_*_ALIASES— Enabled network aliases (e.g.,BASE_SEPOLIA,MEZO_TESTNET)BLOCKCHAIN_DEFAULT_MAINNET_ALIAS/BLOCKCHAIN_DEFAULT_TESTNET_ALIAS— Default networks<ALIAS>_OWNER_WALLET/<ALIAS>_OWNER_PRIVATE_KEY— Resolver wallets per network
For full configuration details, see server/config.js and docs/reference/.
Use at your own risk. BountyPay is provided "as is" without warranties. You are responsible for the funds you deposit and the security practices you follow.