Skip to content

Changelog

WoompaLoompa edited this page Jul 12, 2026 · 1 revision

v1.0.1

New Features

  • nDebit Subscription Auto-Pay — Customers can enter an ndebit1... string at checkout to enable automatic payment for subscription invoices. The plugin stores the nDebit linked to the buyer's email and auto-pays future subscription invoices without manual intervention.
  • Server-Side Nostr Bridge — New ClinkNostrBridge service spawns a Node.js process to handle all Nostr communication (NIP-44 encrypted kind 21001/21002 events) server-side, replacing the previous client-side browser approach.
  • Full ILightningClient ImplementationClinkLightningClient now implements BTCPay Server's ILightningClient interface, making CLINK a first-class Lightning backend with native invoice creation, payment polling, and listener support.
  • Lightning Connection String Support — CLINK can now be configured as a Lightning node connection string: type=clink-noffer;noffer=noffer1...;ndebit=ndebit1...
  • Lightning Node Setup UI — CLINK nOffer appears as an option in the store's Lightning node configuration page.
  • Standalone nDebit Setup Page — Customers can set up auto-pay via /clink/ndebit-setup, linkable from subscription confirmation emails or the customer portal.
  • New API Endpoints:
    • POST /clink/store-ndebit — Store nDebit for a customer email and auto-pay
    • GET /clink/ndebit-setup — Standalone nDebit setup page
    • GET /clink/check-subscription-invoice — Check if invoice is a subscription

Improvements

  • Plugin DI OverhaulPlugin.cs now registers ClinkNostrBridge, NostrEventStore, NdebitRegistry, EmailNdebitStore, ILightningConnectionStringHandler, and three UI extension points.
  • Simplified ClinkService — Removed CoinGecko API integration and BTC exchange rate conversion logic. Sats conversion now handled natively by BTCPay Server's Lightning infrastructure.
  • Razor SDK — Project migrated from Microsoft.NET.Sdk to Microsoft.NET.Sdk.Razor with nullable and implicit usings enabled.
  • Nostr Bridgeclink-bridge.mjs now supports pay-invoice command for nDebit payments, in addition to request-invoice and check-payment.

Removed

  • Fixed/Live BTC Exchange Rate — The FixedBtcRate setting and CoinGecko API integration (ConvertToSats, FetchBtcPrice) have been removed. Stores relying on fixed BTC rates will now use BTCPay Server's native Lightning exchange rate handling.
  • Client-Side CLINK SDK Checkout — The checkout view no longer loads @shocknet/clink-sdk via import maps in the browser. Invoice generation is now entirely server-side.

Breaking Changes

  • ClinkSettings.FixedBtcRate property removed. Existing store configurations with a fixed rate will silently ignore the value after upgrade.
  • The checkout view behavior changed from client-side SDK integration to server-side invoice generation with nDebit injection for subscription invoices.
  • Node.js 22+ is now required at runtime (for the Nostr bridge). v1.0.0 handled Nostr communication in-browser.

v1.0.0

Initial release.

Features

  • CLINK Offer (noffer) based Lightning payments via Nostr
  • Admin configuration page for store-level settings
  • Client-side invoice generation using the CLINK SDK
  • QR code display for mobile payment
  • Payment polling via Nostr kind 21001/21002 events
  • NIP-44 encrypted communication
  • Configurable invoice timeout and poll interval
  • Multiple Nostr relay support for redundancy
  • Fixed or live (CoinGecko) BTC exchange rate support

Supported Wallets

  • ShockWallet (mobile + browser extension) — nOffer
  • ZEUS (mobile) — nOffer
  • Amethyst (mobile) — nOffer
  • Lightning.Pub (self-hosted) — nOffer

Requirements

  • BTCPay Server v2.4.0+
  • .NET SDK 10.0+

Clone this wiki locally