Integrate BTCPay Server in Your Website for Bitcoin and Lightning Payments ⚡
Introduction
Want to accept Bitcoin and Lightning payments on your website-for products, subscriptions, or donations? This guide shows you how to Integrate BTCPay Server for Bitcoin using an AWS EC2 instance, even if you run a self-hosted node.
You’ll learn to:
- Deploy BTCPay Server on AWS
- Enable Bitcoin + Lightning support
- Set up a store and payment button
- Handle API authentication and webhooks
- Resolve inbound liquidity issues
- Withdraw Lightning funds
🚀 Why Use BTCPay Server?
BTCPay Server is a free, open-source payment processor:
- Supports Bitcoin (on-chain) and Lightning (off-chain)
- Works without third parties (non-custodial)
- Integrates with your node or an internal hot wallet
- Ideal for privacy-conscious businesses and developers
Flyyer uses this method to accept Lightning payments.
🛠️ Install BTCPay Server on AWS EC2
Recommended Adjustments
Step 4: Storage Size
- Use 500–600 GB, not 250 GB as some guides suggest
- Bitcoin node size in 2024 exceeds 420 GB
Enable pruning if needed:
bash
CopyEdit
export BTCPAYGEN_ADDITIONAL_FRAGMENTS=”opt-more-memory;opt-save-storage”
Step 6: Security Groups
Open the following ports in your instance’s Security Group:
- 8333 for Bitcoin
- 9735 for Lightning
Pre-Setup Environment Variables
bash
CopyEdit
export BTCPAY_HOST=”your-btcpay.hostname.com”
export NBITCOIN_NETWORK=”mainnet”
export BTCPAYGEN_CRYPTO1=”btc”
export BTCPAYGEN_REVERSEPROXY=”nginx”
export BTCPAYGEN_LIGHTNING=”lnd”
export LIGHTNING_ALIAS=”your-lightning-node-alias”
export BTCPAYGEN_ADDITIONAL_FRAGMENTS=”opt-more-memory”
. ./btcpay-setup.sh -i
🏪 Configure Your Store
After blockchain sync (3–5 days):
- Create a store
- Enable Bitcoin and/or Lightning
- Allow invoice creation
- (Optional) Use a watch-only or hot wallet
🔄 Webhooks: Automate Actions After Payments
Go to: Store → Webhooks → Create New
Set to send all events (e.g. InvoiceSettled), and configure a POST URL in your backend to handle confirmations.
Sample payload:
json
CopyEdit
{
“type”: “InvoiceSettled”,
“invoiceId”: “123XYZ”,
“storeId”: “ABCStore123”
}
🔐 Authenticate With BTCPay API
You need:
- Private API key
- Store ID
Use the following libraries:
- Node.js SDK
- Python SDK
API lets you fetch invoices, track payments, and link to user accounts.
💳 Create a Payment Button
Here’s a sample Bitcoin + Lightning payment form:
html
CopyEdit
<form method=”POST” action=”https://your-btcpay.hostname.com/api/v1/invoices”>
<input type=”hidden” name=”storeId” value=”Store123″ />
<input type=”hidden” name=”orderId” value=”Order001″ />
<input type=”hidden” name=”price” value=”15″ />
<input type=”hidden” name=”currency” value=”USD” />
<input type=”hidden” name=”redirectURL” value=”https://yourdomain.com/thanks” />
<button type=”submit”>Pay with Bitcoin ⚡</button>
</form>
ℹ️ Customer info (email, name) is collected via BTCPay’s hosted checkout page.
⚡ Fix Inbound Liquidity (Lightning Payments)
To receive Lightning payments:
- Open channels with inbound liquidity
- Share your public node info (under Lightning tab)
- Connect to other nodes or use services like Bitrefill or Voltage
📌 Consider connecting your own node if liquidity exists there.
💰 Manage Your Lightning Wallet (RTL)
Go to: Server Settings → Services → Ride The Lightning
From here, you can:
- Send/receive payments
- Withdraw funds to another wallet
- Monitor channels and balances
To withdraw, create an invoice from your mobile Lightning wallet and pay it using RTL.
🔗 Open a Lightning Channel With Flyyer
Steps via Ride The Lightning:
- Go to: Lightning → Peers
- Add this peer:
- Set channel size (150k–2M sats)
- Spend unconfirmed outputs ✅
- Click Open Channel
✅ Summary
| Task | Status |
| EC2 Setup | ✅ Completed |
| Bitcoin + Lightning Enabled | ✅ Active |
| Store + Webhook Configured | ✅ Ready |
| API + Payment Button Added | ✅ Working |
| Inbound Liquidity Managed | ✅ Confirmed |
| Lightning Wallet Access | ✅ Enabled |
🧭 Next Steps
- Configure variables with @flyyer/variables for dynamic previews
- Monitor invoices via API and webhooks
- Deploy templates on Flyyer Community
📚 Resources
- 🔗 BTCPay Docs
- 📘 Flyyer Docs
- 💬 Flyyer Discord
- 🐦 Follow Flyyer on Twitter
✉️ Need Help?
Contact Flyyer or post questions in our Discord community.
Start accepting Bitcoin & Lightning today.
