Bitcoin + Lightning
Use descriptor-based on-chain receive addresses, Phoenixd-backed Lightning, or both for each configured store.
Open-source Bitcoin payments
qpayd creates Bitcoin and Lightning invoices, locks fiat prices through configured pricing sources, watches payments, and sends signed webhooks without making you run a heavy commerce stack.
$ qpayd serve --config qpayd.toml
ok migrated sqlite:///data/qpayd.db
ok loaded stores: main, docs, side-projects
ok pricing source: kraken BTC/USD
http listening on 0.0.0.0:8080
invoice.created store=docs currency=USD amount=10.00
invoice.addressed method=bitcoin index=184
invoice.settled method=lightning confirmations=0
webhook.delivered status=200 attempt=1
qpayd keeps the payment boundary boring: durable invoices, idempotent state changes, signed webhooks, fiat pricing, and wallet watching through public or private infrastructure.
Use descriptor-based on-chain receive addresses, Phoenixd-backed Lightning, or both for each configured store.
Quote in USD or another configured currency while qpayd locks the BTC amount from third-party pricing sources.
Your app receives payment events with HMAC signatures, retry handling, and durable delivery tracking.
Static sites can create configured payment-link invoices from JSON, while private API tokens stay on servers where they belong.
Sequential migrations make fresh deploys and long-lived installs predictable across SQLite and Postgres.
MIT licensed Rust glueware that can run anywhere a small daemon and a database can run.
Each store owns its API token, wallet descriptor, webhook target, and configured payment links.
Start with one personal project. Add more stores when you need separate wallets, webhooks, or payment links.
[[stores]]
id = "docs"
name = "Docs Donations"
api_token_env = "QPAYD_DOCS_API_TOKEN"
webhook_url = "https://example.com/qpayd"
webhook_secret_env = "QPAYD_DOCS_WEBHOOK_SECRET"
[[stores.payment_links]]
id = "donate-10"
amount = "10.00"
currency = "USD"
This button uses the qpayd JS modal with a public JSON payment link. The invoice is created only when you click.