Keep 100% Self-Custody · Retire Docker Node Sync & Disk Crashes

Migrate from Self-Hosted Servidor BTCPay to Managed Non-Custodial XPayr

Keep 100% self-custody of your keys while retiring $150+/month multi-chain full nodes, pruned disk alerts, broken altcoin plugins, and manual upgrades. Unlock 12 chains (Solana, Base, Arbitrum, TRON, TON, BTC, Arc) Instantly at 0.5%.

Cutover Time~15 Minutes (Parallel Safe)
Servidor BTCPay Fee$0 software fee + $80–$350/mo VPS/RPC/DevOps maintenance
XPayr Comisión de PasarelaFlat 0.5% ($0/mo · $0 Sweep)
XPayr Modelo de custodia100% Sin Custodia (99.5% Direct)

Why Engineering & Finance Teams Switch Away From Servidor BTCPay

Running Bitcoin + Monero + TRON + Solana + EVM indexers inside Docker consumes hundreds of GBs of NVMe storage and DevOps hours.
Community altcoin plugins frequently break during BTCPay major version upgrades, causing silent checkout downtime.
BTCPay lacks built-in ERC-2612 Permit sin gass, 21-tool MCP server endpoints, and ES256 wallet software licensing.

Field-by-Field API & Webhook Mapping (Servidor BTCPay → XPayr v1)

Keep your existing database order schema intact — map these 6 fields to cut over cleanly.

Integration Layer Servidor BTCPay (Legacy) XPayr Non-Custodial v1
Create Invoice (Greenfield) POST /api/v1/stores/{storeId}/invoices (token ...) POST https://xpayr.com/api/v1/payments (Bearer sk_live_...)
Amount & Currency amount + currency + metadata.orderId amount + currency + order_id + metadata
Redirect URL checkout.redirectURL -> checkoutLink success_url -> data.checkout_url
Webhook Header BTCPay-Sig: sha256=<hex> X-XPayr-Signature: <hex> (identical HMAC-SHA256 algorithm!)
Settled Evento Webhook type === "InvoiceSettled" event === "payment.completed" / "payment.underpaid_accepted"
Modelo de custodia Self-hosted xpub / wallet addresses 100% Non-Custodial wallet addresses (Safe, Ledger, Trezor)

Drop-In Migration Adapter (Python / FastAPI)

Copy-paste replacement ready for Testnet (sk_test_...) and Mainnet (sk_live_...).
import hmac
import hashlib
from fastapi import FastAPI, Request, HTTPException

app = FastAPI()

def verify_xpayr_or_btcpay_hmac(raw_body: bytes, sig_header: str, secret: str) -> bool:
    """Identical SHA-256 HMAC verification logic as BTCPay-Sig Greenfield webhooks."""
    clean_sig = sig_header.replace("sha256=", "").strip()
    expected = hmac.new(secret.encode("utf-8"), raw_body, hashlib.sha256).hexdigest()
    return hmac.compare_digest(expected, clean_sig)

@app.post("/webhooks/xpayr")
async def xpayr_webhook(request: Request):
    raw = await request.body()
    sig = request.headers.get("X-XPayr-Signature", "")
    if not verify_xpayr_or_btcpay_hmac(raw, sig, "whsec_your_secret"):
        raise HTTPException(status_code=401, detail="Invalid signature")
    event = await request.json()
    if event.get("event") in ("payment.completed", "payment.underpaid_accepted"):
        # Same fulfillment handler previously triggered by BTCPay InvoiceSettled
        pass
    return {"ok": True}

4-Step Zero-Downtime Canary Cutover Checklist

1

Connect non-custodial wallets & generate sk_test_ API keys

Register at /merchant/register, paste your destination EVM, Solana, TRON, or multisig wallet addresses, and generate a free API de red de prueba key.

2

Deploy the X-XPayr-Signature HMAC-SHA256 webhook adapter

Add the raw-body HMAC-SHA256 verification handler alongside your existing Servidor BTCPay callback endpoint and test events in /tools/webhook-tester.

3

Canary 10%–25% of live checkout sessions in parallel

Route a slice of live crypto orders to POST /api/v1/payments (or enable the XPayr storefront plugin) to verify instant liquidación directa del 99.5% en su billetera.

4

Cut over 100% of traffic & export clean ERP ledgers

Switch primary crypto checkout routing to XPayr, withdraw any remaining custodial float from Servidor BTCPay, and export QuickBooks/Xero CSVs via /accounting.

Preguntas frecuentes — Switching From Servidor BTCPay

Do we sacrifice non-custodial security when moving from Servidor BTCPay to XPayr?

Never. XPayr never holds private keys or pools funds. Configure your own Ledger, Trezor, or Safe{Wallet} multisig addresses and receive 99.5% directly on-chain.

When is XPayr 0.5% cheaper than "free" self-hosted Servidor BTCPay?

Up to ~$30,000–$50,000/month in crypto volume, 0.5% ($150–$250) costs less than multi-chain VPS servers, commercial RPC nodes, and a single hour of DevOps maintenance — while supporting 12 chains out of the box.

Can we keep BTCPay for Bitcoin Lightning and use XPayr for multi-chain USDT/USDC?

Absolutely. Many teams route EVM, Solana, TRON, and TON stablecoins through XPayr with zero conflict.

Explore All 10 guías de migración de proveedores