Zero-Downtime Switch Β· Parallel Cutover Ready

Migrate to 0.5% non-custodial settlement in 15 minutes.

Switching away from processor-held balances, 1%–1.5% fees, or deprecated hosted commerce APIs does not require rewriting your order database. Map 4 JSON fields, verify raw-body HMAC-SHA256 webhooks on Testnet, and route 99.5% straight to your own wallets.

NOWPayments IPN β†’ XPayr API v1 & HMAC-SHA256 Adapter

Replace sorted-key `x-nowpayments-sig` callbacks and custodial payout queues with raw-body `X-XPayr-Signature` verification and instant merchant-wallet settlement.

ConceptNOWPaymentsXPayr Equivalent
Create SessionPOST /v1/invoice (x-api-key)POST /api/v1/payments (Authorization: Bearer sk_live_...)
Amount & Order Refprice_amount, price_currency, order_idamount, currency, order_id, metadata
Webhook Signaturex-nowpayments-sig (HMAC-SHA512 sorted JSON)X-XPayr-Signature (HMAC-SHA256 over raw body β€” zero JSON key-sort bugs)
Fulfillment Statesfinished / partially_paidpayment.completed / payment.underpaid_accepted (1% tolerance)
// Drop-in Node.js Express webhook adapter (XPayr raw-body HMAC-SHA256)
import crypto from 'node:crypto';

export function verifyXpayrWebhook(rawBodyBuffer, signatureHeader, webhookSecret) {
  const expected = crypto.createHmac('sha256', webhookSecret).update(rawBodyBuffer).digest('hex');
  const provided = String(signatureHeader || '').replace(/^sha256=/i, '');
  if (expected.length !== provided.length) return false;
  return crypto.timingSafeEqual(Buffer.from(expected, 'utf8'), Buffer.from(provided, 'utf8'));
}

Coinbase Commerce Charges β†’ XPayr Dual Checkout Sessions

Restore TRON TRC-20 USDT, Exchange QR transfers, and global merchant availability while keeping familiar `metadata` and `hosted_url` semantics.

ConceptCoinbase CommerceXPayr Equivalent
Create CheckoutPOST /charges (X-CC-Api-Key)POST /api/v1/payments (Authorization: Bearer sk_live_...)
Pricing Typelocal_price.amount + pricing_type: fixed_priceamount + currency: "USD"
Hosted Redirectdata.hosted_urldata.checkout_url (supports Modal SDK or full redirect)
Webhook Eventcharge:confirmed / charge:resolvedpayment.completed / payment.underpaid_accepted
// Replace Coinbase Charge creation with @xpayr/node-sdk (v0.2.0)
import { XPayrClient } from '@xpayr/node-sdk';

const xpayr = new XPayrClient({ apiKey: process.env.XPAYR_SECRET_KEY });
const session = await xpayr.payments.create({
  amount: '49.00',
  currency: 'USD',
  order_id: 'ord_90812',
  success_url: 'https://app.example.com/billing/success',
  metadata: { workspace_id: 'ws_441', plan: 'pro_annual' }
});

BitPay / CoinGate (1%–2% Custodial) β†’ XPayr (0.5% Direct Wallet)

Cut gateway fees by 50%–75% and eliminate T+2 custodial bank settlement batches by receiving native USDT/USDC straight into your own multisig or hardware wallet.

ConceptBitPay / CoinGateXPayr Equivalent
Checkout Fee1.0%–2.0% + settlement/FX rulesFlat 0.5% (50 bps), $0 monthly, $0 rolling reserve
E-Commerce PluginsLegacy custodial cart modules6 open-source v1.0.0 plugins at /integrations
Callback VerificationUnauthenticated token or fetch-back requiredCryptographic X-XPayr-Signature + @xpayr/payment-evidence
Treasury OutputHeld in processor balance until payoutImmediate 99.5% on-chain transfer to your wallet
# Verify live XPayr session creation in 5 seconds via cURL:
curl -sS -X POST https://xpayr.com/api/v1/payments \
  -H "Authorization: Bearer sk_test_your_key" \
  -H "Content-Type: application/json" \
  -d '{"amount":"100.00","currency":"USD","order_id":"mig_test_01","network":"tron","token":"USDT"}'

Add XPayr Alongside Stripe (0.5% Global Crypto vs 1.5% Stripe Crypto)

Keep Stripe for domestic cards if you like, and add XPayr as your global Pay with Crypto (0.5%) button to unlock TRON TRC-20 USDT, Solana, and native stablecoin retention in 180+ markets.

DimensionStripe Pay with CryptoXPayr Parallel Crypto Rail
Stablecoin Fee1.5% per transactionFlat 0.5% (save 66% on every crypto order)
TRON TRC-20 & Exchange QRUnsupportedFull TRON TRC-20 USDT + Exchange QR support
Treasury AssetAuto-converted to fiat bank balanceRetain native USDC/USDT in your own treasury wallet
AI & MCP AutomationFiat-centric agent tools21-tool MCP server (/api/mcp) + HTTP 402 paywalls (/x402)
<!-- Embed alongside Stripe Checkout on any pricing or cart page -->
<script src="https://xpayr.com/public/sdk/xpayr-pay-button.js" defer></script>
<div data-xpayr-pay-button
     data-amount="99.00"
     data-currency="USD"
     data-label="Pay with USDT / USDC (Save FX Fees)"></div>
1

Connect Wallets on Testnet

Register at `/merchant/register`, configure your EVM, TRON, and Solana addresses, and generate a `sk_test_...` key.

2

Validate Webhook Parity

Simulate `payment.completed` and `payment.underpaid_accepted` signatures in `/tools/webhook-tester` before deploying.

3

Canary 10% Checkout Traffic

Expose XPayr alongside your legacy button or plugin so real customers settle 99.5% straight into your wallet.

4

Reconcile & Cut Over 100%

Export QuickBooks/Xero/NetSuite CSV ledgers (`/accounting`) and retire high-fee custodial balances permanently.

Frequently Asked Questions β€” Migrating to XPayr

Can we run XPayr in parallel with our existing gateway before full cutover?

Yes. Because XPayr charges $0 monthly fees and requires no exclusivity lock-in, most engineering teams deploy XPayr on Testnet first, then route 10%–25% of live crypto checkout traffic to XPayr while verifying webhook parity and 99.5% direct wallet settlement.

How do NOWPayments IPN callbacks map to XPayr webhooks?

NOWPayments sends x-nowpayments-sig (sorted JSON HMAC-SHA512) with statuses such as finished and partially_paid. XPayr sends X-XPayr-Signature (raw-body HMAC-SHA256 with timestamp replay protection) with deterministic events: payment.completed, payment.underpaid_accepted, payment.failed, and license.issued.

What happens to existing WooCommerce, Magento 2, PrestaShop, or Shopware stores?

Install the official open-source XPayr plugin alongside your existing gateway plugin (/integrations), paste your Testnet API key to verify order state transitions, and switch the active checkout method in one click.

Do we have to migrate custodial balances out of our old processor first?

No. Simply withdraw any remaining balance from your legacy custodial processor on your own schedule; every new XPayr payment settles 99.5% directly into your own wallet immediately upon confirmation.