Releases: Such-Software/btcpayserver-grin-plugin
v1.0.9 — Auto-redirect on payment broadcast
Auto-redirects customer to the store's order page on payment broadcast (detection), instead of making them wait for 10 confirmations. The order is already created in Medusa via the InvoiceProcessing webhook (v1.0.8).
v1.0.8 — Instant redirect on payment broadcast
Dispatches InvoiceProcessing webhook when customer's slatepack is broadcast, enabling instant order creation before confirmations complete.
v1.0.7 — Return-to-store redirect on payment complete
Fix
After payment confirmation, the checkout complete page now shows a Return to store button and auto-redirects after 5 seconds (when redirectUrl was provided in the invoice creation request).
Previously, customers were stuck on the green checkmark page with no way to get back to the store.
Installation
tar xf btcpayserver-grin-plugin-1.0.7.tar.xz -C /var/lib/docker/volumes/generated_btcpay_pluginsdir/_data/BTCPayServer.Plugins.Grin/
# Restart BTCPay Server
v1.0.6 — Fiat Conversion, Webhook Support
What's New
Fiat currency conversion
- The
POST /stores/{storeId}/plugins/grin/invoicesendpoint now accepts acurrencyfield (e.g.,"USD") - Automatically converts fiat amounts to GRIN using the Gate.io GRIN/USDT rate
- Rounds up to nearest whole GRIN to prevent undercharging
- Previously, passing
amount: 11withcurrency: "USD"would charge 11 GRIN instead of ~300 GRIN
Webhook support (from v1.0.5)
- HTTP webhooks dispatched on invoice confirmation and expiry
- BTCPay-compatible payload format with HMAC-SHA256 signature (
btcpay-sigheader) - Configurable Webhook URL and Secret in Grin store settings
Settings UI
- Added Webhook URL and Webhook Secret fields to the Grin store settings page
Installation
Extract the tarball into your BTCPay Server plugins directory:
tar xf btcpayserver-grin-plugin-1.0.6.tar.xz -C /var/lib/docker/volumes/generated_btcpay_pluginsdir/_data/BTCPayServer.Plugins.Grin/
Then restart BTCPay Server. Database migrations run automatically.
v1.0.5
Webhook support for payment notifications
The Grin plugin now dispatches HTTP webhooks when invoice status changes, enabling real-time integration with e-commerce platforms and other systems.
- Payment confirmed webhook (InvoicePaymentSettled) — fired when a Grin transaction reaches the configured minimum confirmations
- Invoice expired webhook (InvoiceExpired) — fired when an unpaid invoice exceeds the 24-hour expiry window
- Webhooks are signed with HMAC-SHA256 (btcpay-sig header) for verification
- Payload format matches BTCPay Server's standard webhook schema — works with any integration that consumes BTCPay webhooks
- Invoice metadata
Invoices now store SessionId, OrderId, and RedirectUrl from the creating system
SessionId is included in webhook payloads so the receiving system can match the payment to its internal records
Configuration
In your Grin plugin store settings, configure:
Webhook URL — the endpoint to receive payment notifications (e.g., https://your-api.com/hooks/payment/grin_grin)
Webhook Secret — shared secret for HMAC-SHA256 signature verification
v1.0.4
Release notes for v1.0.4:
What's New
- Node API URL setting: Optional field to point at your Grin node's API endpoint for detailed sync monitoring
- Sync percentage: When node URL is configured, shows sync progress (e.g. "Node syncing... 72%") with sync phase info (header_sync, body_sync, etc.)
- Improved footer panel: GRIN sync indicator now shows percentage and sync phase when available
- Updated SETUP.md: Accurate documentation that owner_api_listen_interface is ignored by grin-wallet (hardcodes 127.0.0.1), socat proxy is the correct approach for Docker
Upgrade Notes
- New NodeApiUrl database column is added automatically via migration
- If running your own grin node, enter http://127.0.0.1:3413 (or your node's address) in the new Node API URL field to see sync progress
- If using a public node, leave Node API URL empty — wallet-only sync check still works
v1.0.3
v1.0.3
- Node sync status in BTCPay footer panel (appears alongside BTC/LTC in "Your nodes are syncing" indicator)
- Live node status on Grin settings page (synced/syncing/unreachable with block height)
- Remote node guidance on settings page (public nodes: grincoin.org, grinnode.live:3413)
- Remove Grin logo from sidebar navigation (standard green/grey status dot)
- Add SETUP.md deployment guide (node options, Docker networking, encrypted API, troubleshooting)
v1.0.2
v1.0.2
- Remove Grin logo from sidebar navigation (use standard green/grey status indicator)
- Add SETUP.md with full deployment guide (node options, wallet config, Docker networking, troubleshooting)
- BTCPay Server v2.3.5 compatibility (EF Core factory update)
v1.0.0.1
Initial release
Fix confirmation count race condition Capture node height BEFORE retrieve_txs in both the status endpoint and the background monitor to prevent a +1 discrepancy when a block arrives between the two RPC calls.