How to Accept XRP Payments for Your Business in 2026

Published February 21, 2026 · 8 min read

Accepting XRP payments isn't like integrating a traditional payment processor. There's no merchant account to apply for, no 2% + $0.30 per transaction, no 30-day hold on funds. You give customers a wallet address (and optionally a destination tag), they send XRP or RLUSD, and the payment arrives in your wallet in 3 seconds.

That simplicity is also the challenge: without a tool to handle invoicing, payment matching, and confirmation, you're doing a lot manually. This guide covers four approaches — from completely manual to fully automated.

What You Need to Get Started

  • An XRPL wallet address — Create one in Xaman (free). Your wallet address is your "merchant account." Any XRP or RLUSD sent to it arrives immediately.
  • A destination tag system — Destination tags are 32-bit integers you append to payment requests. Use them to match incoming payments to specific orders or invoices. Without them, distinguishing one customer's XRP from another's is a manual headache.
  • A way to verify payments — Query XRPL's account_tx endpoint to confirm a specific payment arrived. Takes about 10 lines of code.

Method 1: Manual (Zero Setup)

Manual — For freelancers and low volume

Share your wallet address and destination tag per invoice. Customer pays in Xaman. You check your wallet on XRPScan or Bithomp to confirm.

✓ Zero setup. Works today. Free.

✗ Doesn't scale. Manual verification every payment. No automation.

The XRPL payment URI format makes this slightly more professional:

xrpl:rYourWalletAddress?amount=50000000&dt=1001&sl=Invoice%20%231

Where amount is in XRP drops (1 XRP = 1,000,000 drops) and dt is the destination tag. Clicking this URI opens Xaman pre-filled with payment details.

Method 2: QR Code Payment Page

QR Codes — For in-person or one-time payments

Generate a QR code from the XRPL payment URI and display it at checkout or on your invoice PDF. Customer scans, pays, done.

✓ Professional. Scannable. Works with any QR library.

✗ Still manual verification. No real-time confirmation UI.

Any QR code library can encode the XRPL payment URI. For web-based checkout:

// Using qrcode.js
const paymentUri = `xrpl:rYourWallet?amount=${drops}&dt=${tag}`
new QRCode(document.getElementById('qr'), paymentUri)

For a Xaman deep link (opens the app directly on mobile):

https://xaman.app/detect/pay?to=rYourWallet&amount=${xrp}&dt=${tag}

Method 3: XRPL Payment Verification API

Automated verification — For e-commerce and SaaS

Query XRPL's JSON-RPC API to verify payment arrival programmatically. Poll account_tx every few seconds after showing the customer your payment details.

✓ Reliable. Works with any stack. Real-time confirmation.

✗ Requires backend code. Need to handle polling or webhooks.

// Verify XRP payment via XRPL JSON-RPC
const response = await fetch('https://xrplcluster.com', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    method: 'account_tx',
    params: [{
      account: 'rYourWalletAddress',
      limit: 20,
      ledger_index_min: -1  // recent transactions
    }]
  })
})
const data = await response.json()
const payments = data.result.transactions.filter(t =>
  t.tx.TransactionType === 'Payment' &&
  t.tx.DestinationTag === YOUR_EXPECTED_TAG &&
  t.tx.Amount === String(EXPECTED_DROPS)  // XRP payments
  // For RLUSD: t.tx.Amount.currency === 'USD' && t.tx.Amount.issuer === RLUSD_ISSUER
)
if (payments.length > 0) { /* confirmed */ }

RLUSD vs XRP: For business payments, RLUSD is often preferable — you receive exactly $X regardless of XRP price volatility. The verification logic is slightly different: check tx.Amount.currency === 'USD' and tx.Amount.issuer === 'rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh' (Ripple's RLUSD issuer address).

Method 4: InvoiceDLT (Fully Managed)

Managed invoicing — For freelancers, agencies, and B2B

InvoiceDLT handles the entire flow: create invoice → generate payment page with QR code + Xaman link → monitor XRPL for confirmation → mark paid. No backend code needed.

✓ No-code. Professional invoice pages. Automatic payment monitoring. API available.

✗ Requires InvoiceDLT account (free tier available).

The InvoiceDLT Workflow

  1. Sign up at app.invoicedlt.com → receive your API key
  2. Create an invoice via API or dashboard (amount, currency, client email, due date)
  3. Share the generated payment URL with your client
  4. Client opens the page, sees QR code + Xaman deep link, pays in their wallet
  5. InvoiceDLT monitors XRPL for payment → updates invoice status → sends confirmation emails
// Create an invoice via InvoiceDLT API
const response = await fetch('https://api.invoicedlt.com/api/invoice/create', {
  method: 'POST',
  headers: { 
    'Content-Type': 'application/json',
    'X-API-Key': 'your-api-key'
  },
  body: JSON.stringify({
    title: 'Web Design — March 2026',
    amount: '250',
    currency: 'RLUSD',
    clientEmail: 'client@company.com',
    dueDate: '2026-03-01'
  })
})
const { invoice } = await response.json()
console.log('Payment URL:', invoice.paymentUrl)
// Share invoice.paymentUrl with your client

Tax and Accounting Considerations

In the US, cryptocurrency payments are generally treated as property transactions. When you receive XRP as payment, you recognize income equal to the fair market value of XRP at the time of receipt. Keep records of each payment with timestamp and XRP price at time of receipt.

RLUSD payments are simpler: $1 in = $1 income. No exchange rate variance. This is one reason many businesses prefer RLUSD for invoicing even if they ultimately hold XRP.

All XRPL transactions are immutable and timestamped — your entire payment history is on-chain and auditable. Export via the XRPL Analytics API for accounting software integration.

Common Setup Mistakes

  • Reusing destination tags. If two customers have the same tag, you can't tell their payments apart. Generate a unique tag per invoice (any integer from 0 to 4,294,967,295).
  • Not requiring destination tags. Without tags, matching payments to invoices is manual. Always require a destination tag and make it visible in your payment UI.
  • Verifying only the tag, not the amount. Customers can underpay. Always verify both the destination tag AND the exact amount.
  • Waiting for "enough confirmations." XRPL's consensus is probabilistic-free — every closed ledger is final. A payment in a validated ledger is as confirmed as it gets. No waiting for multiple confirmations.

Start accepting XRPL payments today

InvoiceDLT gives you professional payment pages, automatic verification, and email notifications — no backend code required.

Create Your First Invoice →