Repository moved. The final combined plugin is makepay-io/btcpayserver-digital-products, released as
v1.0.0. This repository and its interimv2.0.0migration build are superseded. Do not install both plugin identifiers at the same time.
One self-hosted BTCPay Server plugin for selling protected digital downloads and generated software licenses. Customers browse one branded storefront, pay a normal BTCPay invoice, and receive either an expiring download link or a protected license key after payment.
Version 2 combines MakePay Digital Downloads and MakePay License Manager into one installable plugin. Existing per-store settings, products, orders, issued licenses, and API credentials use their original storage keys and migrate in place.
- One Digital Products BTCPay integration entry with Downloads and License keys sections.
- One responsive, branded storefront with logo, accent color, descriptions, covers, pricing, and separate download/license catalogs.
- MakePay.io promotion area for enabling decentralized acceptance of 90+ currencies.
- Local protected uploads, S3-compatible private objects, or authenticated custom source URLs.
- Files stream through BTCPay Server; origin paths, credentials, and object URLs are never exposed.
- Cryptographically random delivery tokens, SHA-256 token hashes, encrypted recoverable tokens, expiration, download limits, revocation, and optional first-IP locking.
- Remote-origin SSRF protection with HTTPS/public-address validation, DNS checks, disabled redirects, and validated custom authentication headers.
- Delivery through the BTCPay store SMTP configuration with editable HTML and placeholders.
- Configurable serial formats with
{A:n},{N:n},{X:n},{HEX:n}, and{YEAR}tokens. - Encrypted recoverable license keys plus normalized hashes for lookup.
- Manual issuance and invoice-based fulfillment with activation count and validity controls.
- Verify, activate, deactivate, and heartbeat endpoints at
/api/v1/stores/{storeId}/licenses/{action}. - Configurable custom
X-headers, HMAC-SHA256 request/response signatures, constant-time comparison, timestamp windows, nonce replay protection, rate limiting, activation limits, and bounded audit history.
- BTCPay Server 2.3.5 or newer.
- .NET 8 SDK to build.
- BTCPay store email settings if email delivery is enabled.
git submodule update --init --recursive
dotnet test tests/BTCPayServer.Plugins.MakePay.DigitalDownloads.Tests/BTCPayServer.Plugins.MakePay.DigitalDownloads.Tests.csproj -c Release
dotnet publish src/BTCPayServer.Plugins.MakePay.DigitalDownloads/BTCPayServer.Plugins.MakePay.DigitalDownloads.csproj -c ReleaseInstall the published plugin folder in the BTCPay Server plugin directory, restart BTCPay Server, then open Store → Integrations → Digital Products.
- Back up the BTCPay data directory.
- Remove the standalone
BTCPayServer.Plugins.MakePay.LicenseManagerplugin folder. - Upgrade
BTCPayServer.Plugins.MakePay.DigitalDownloadsto version 2.0.0 or newer. - Restart BTCPay Server. The combined plugin reads the existing License Manager store settings and data without a migration.
Use private S3 buckets and dedicated read-only credentials. The optional IP lock is useful against casual link sharing but can inconvenience mobile users whose network address changes. Download and license delivery defaults to settled/confirmed invoices; enabling delivery at Processing accepts additional payment risk.
Created by MakePay.io — accept 90+ currencies in a decentralized way in BTCPay Server.