A multi-plugin repository for BTCPay Server, built as an evolution of the official btcpayserver-plugin-template.
While the official template provides a starting point for a single plugin, this repository adds the structure needed to develop, test, and maintain multiple plugins in one place:
- ConfigBuilder - a CLI tool that auto-generates
appsettings.dev.jsonby scanning thePlugins/directory and resolving each plugin's built DLL. No more manually updatingDEBUG_PLUGINSpaths when adding or removing plugins. - Multi-plugin solution - all plugins, the BTCPay Server submodule, and the shared test project live in one
.sln. Build everything at once. - Shared test infrastructure - a single
BTCPayServer.Plugins.Testsproject with Playwright-based UI tests covering multiple plugins. - CI/CD - GitHub Actions workflow that builds the full solution, runs ConfigBuilder, and executes Playwright tests against a Docker-based BTCPay Server instance.
| Plugin | Description |
|---|---|
| AdminPassReset | Reset administrator password from the command line |
| BitcoinStacker | Auto-purchase Bitcoin on exchanges (Strike) from fiat income platforms (Stripe) |
| MarkPaidCheckout | Mark invoices as paid/settled manually from the checkout page |
| Payroll | Manage and process payroll payments via BTCPay Server |
| RockstarStrikeUtils | Collection of Strike platform utilities |
| Stripe | Stripe payment integration for BTCPay Server |
| TransactionCounter | Track and display transaction counts |
| Vouchers | Create and manage payment vouchers |
| WalletHistoryReload | Reload wallet transaction history from the blockchain |
| WalletSweeper | Sweep funds from external wallets into BTCPay Server |
| XpubExtractor | Extract extended public keys from wallet configurations |
Each plugin in Plugins/ has its own README with details specific to that plugin.
- .NET 10.0 SDK (or compatible version)
- Docker (for running tests)
- Git with submodule support
git clone --recurse-submodules https://github.com/rockstardev/BTCPayServerPlugins.RockstarDev.git
cd BTCPayServerPlugins.RockstarDev
dotnet buildRun ConfigBuilder to generate appsettings.dev.json with all plugin DLL paths:
dotnet run --project ConfigBuilderThis writes submodules/btcpayserver/BTCPayServer/appsettings.dev.json with the DEBUG_PLUGINS value pointing to every plugin's built DLL. BTCPay Server picks this up on startup and loads your plugins.
cd submodules/btcpayserver
dotnet run --project BTCPayServerYour plugins will be loaded automatically.
# Start the test infrastructure
docker compose -f submodules/btcpayserver/BTCPayServer.Tests/docker-compose.yml up -d dev
# Run Playwright UI tests
dotnet test BTCPayServer.Plugins.Tests --filter "Category=PlaywrightUITest"
# Cleanup
docker compose -f submodules/btcpayserver/BTCPayServer.Tests/docker-compose.yml down --volumes- Create a new folder under
Plugins/(e.g.,Plugins/BTCPayServer.RockstarDev.Plugins.MyPlugin/) - Add your
.csprojreferencingBTCPayServer.Abstractions - Add the project to
BTCPayServerPlugins.RockstarDev.sln - Run
dotnet run --project ConfigBuilderto auto-detect the new plugin - Build and test
See the BTCPay Server Plugin Development Guide for details on plugin APIs, database integration, UI extensions, and publishing.
The btcpayserver-plugin-template is a great starting point for your first plugin. This repository takes it further:
| Plugin Template | This Repository | |
|---|---|---|
| Plugins per repo | 1 | Many |
DEBUG_PLUGINS setup |
Manual path in appsettings.dev.json |
Auto-generated by ConfigBuilder |
| Test infrastructure | None | Shared Playwright test project |
| CI/CD | None | GitHub Actions with Docker |
| BTCPay Server reference | Git submodule | Git submodule |
If you are building a single plugin, start with the template. If you are maintaining multiple plugins or want a batteries-included development setup, fork this repository.