Crypto checkout that runs on a .onion. One file. No KYC.

GhostPay gives every order its own BTC/LTC address straight from your own wallet, watches the chain through Tor, and calls your shop with a signed webhook when the money confirms. No accounts, no processor, no fees, nobody in the middle.

1 file · Python stdlib only 0 dependencies 119 automated checks that pass watch-only xpub Tor-native SOCKS5h

What you get

Your keys, your box

Addresses are derived from an xpub/zpub — the server never holds a private key. Funds land in your wallet, not in someone's clearing account.

Tor-native by design

Built-in SOCKS5h client (no DNS leak), ships with .onion blockchain explorers, GHOSTPAY_TOR=1 and it's done. Checkout page loads with zero external assets.

Real money plumbing

Per-invoice addresses, expiry, underpayment detection with top-ups, overpay safety, confirmation thresholds, cancel, SQLite ledger, and redeem-code vouchers for digital delivery.

Signed webhooks

HMAC-SHA256 over the exact body, X-GhostPay-Signature, 6 retries with backoff and a delivery log. Your shop trusts data, not vibes.

Server-rendered QR

Own pure-python QR encoder emitted as SVG — no CDN, no JS library, no third-party request from your customer's Tor Browser.

Ops included

doctor checks config, crypto, explorers and Tor in one go. selftest verifies the protocol vectors. systemd unit, Dockerfile and installer shipped.

Pricing

TierPriceIncludes
Single Shop$791 shop, BTC or LTC, source, 12 months of updates
Unlimited ⭐$149Unlimited shops, BTC + LTC, Tor-first profile, priority support
Reseller$299Rebrand and resell it as your own, lifetime updates

A hosted no-KYC processor takes ~1% forever. On $30k/month that's $300 every month — Unlimited is $149 once. Add-ons: +$19 done-for-you VPS setup, $15/mo hosted instance.

Don't trust, verify

# 5 seconds, no coins, no network:
python3 ghostpay.py selftest     # 68 protocol vectors (BIP32/39/44/84/86, bech32m, taproot, QR)
sh tests/run_all.sh              # 119 checks: crypto, QR audit vs an independent lib, e2e, live mainnet+Tor
python3 ghostpay.py doctor       # config + explorer + Tor connectivity report
python3 ghostpay.py serve --demo # whole shop offline against a fake chain

The addresses the tests assert are the same addresses the live tests fetch back off mainnet. The QR encoder is compared cell-for-cell against the battle-tested qrcode library across every version, ECC level and mask.

Live in three minutes

export GHOSTPAY_BTC_XPUB=zpub6rFR7y4Q2Aij…
export GHOSTPAY_API_KEY=$(python3 -c 'import secrets;print("gp_"+secrets.token_hex(16))')
export GHOSTPAY_BRAND=YourShop GHOSTPAY_TOR=1

python3 ghostpay.py doctor          # all green?
python3 ghostpay.py serve --port 8899

# your shop now creates invoices with one call:
curl -X POST localhost:8899/api/v1/invoices -H "X-API-Key: $GHOSTPAY_API_KEY" \
  -d '{"amount_fiat":25,"memo":"Seed box","webhook_url":"http://127.0.0.1:9000/hook"}'