BTCPAY SERVER PLUGIN

Stablecoins in your BTCPay checkout.

Add Wholly Crypto for USDC, USDT and other store-accepted assets. Keep your existing BTCPay Bitcoin and Lightning methods.

Get the plugin

v1.0.1

BTCPay Server 2.4.4+ and a separate Wholly Crypto installation. Tested with BTCPay 2.4.4; test newer versions on your deployment.

MIT licensed · Independent connector, not a BTCPay endorsement or directory listing.

Your checkout, more choices

  • Hosted checkout or optional embedded iframe
  • Choose from the Wholly store's accepted networks and assets
  • Signed IPN plus authenticated API checks
  • Searchable linked payments and connection diagnostics

Payments go to your Wholly project wallets. The connector needs no wallet keys. Wholly processing-credit rules apply; the plugin adds no percentage fee.

Install

  1. Download BTCPayServer.Plugins.WhollyCrypto.btcpay and check it against the release's SHA256SUMS. Use the plugin file, not GitHub's source ZIP.
  2. As a BTCPay admin, open Manage Plugins → Upload Plugin, upload the file and restart BTCPay.
  3. Select a store → Plugins → Wholly Crypto. Installation alone does not connect a store.

Updates use the same upload process. Updating Wholly merchant software does not update the BTCPay plugin.

Connect a store

  1. In Wholly, create an enabled project/store with accepted methods, backed-up wallets, rates and confirmations. Use a current merchant installation; this connector targets the 6.4.5 API.
  2. Copy the project/store UUIDs from Store → Basic → API IDs. Create a project-restricted read/write API credential. Enable Store → IPN and copy its signing secret, not a webhook secret.
  3. In BTCPay's Wholly settings, enter those values plus your API and checkout origins, such as https://api.example.com and https://pay.example.com. Use public HTTPS on port 443; no paths.
  4. Enable Offer Wholly Crypto at checkout, save, then Test read access. Optionally choose a subset of the store's accepted methods.

Allow HTTPS callbacks from your Wholly server to BTCPay through both firewalls. The plugin supplies the callback URL. Keep browser logins, CAPTCHA and Basic Auth off that route; signature checks must stay enabled.

Embedded checkout

Full-page checkout is the default, especially useful for mobile wallet apps. For an iframe:

  1. In Wholly's Store → Advanced, enable Allow embedded checkout. Add your exact BTCPay HTTPS origin to Allowed HTTPS origins, without a path or wildcard.
  2. In BTCPay's plugin settings, choose Customer checkout → Embedded checkout (iframe) and save.
  3. Test a new invoice. Existing invoices keep their original display mode. Open full checkout remains available for the same invoice if the frame cannot load.

Browser messages and return links are navigation, never proof of payment.

Check the payment flow

Create a small, positive fiat invoice in a test store. Select Stablecoins & crypto · Wholly. Verify checkout, signed IPN and API verification through confirmation. Fulfil only from BTCPay's settled invoice, once per order.

Test read access does not test invoice creation or IPN. Use Connection and Linked payments for safe errors, order references and payment checks.

Limits & delivery problems

Fixed positive fiat invoices only: up to eight decimals, with 5 minutes to 24 hours remaining when initialized. Crypto-priced/top-up invoices, mixed-method fulfilment and refunds are outside this connector. Late or ambiguous payments require review.

For Delivery failed, check Wholly's Store → IPN → History → Details. Check network access and the signing secret. Do not create another invoice to work around an uncertain result.

Low processing credits can pause IPN even while customers can still pay. Keep credit and providers healthy. Credit rules → · IPN guide →