Guide

How to accept XRP payments on your website (without an exchange or custodian)

XRP settles in 3–5 seconds for a fraction of a cent, which makes it one of the most practical coins for actual commerce. This guide shows how to accept XRP payments directly into a wallet you control, how destination tags work, and how to automate order fulfilment.

What you need

Using an exchange deposit address? Exchanges require their own destination tag to credit your account, so per-invoice tags can't be used. Enter that fixed tag in Settings → XRP destination tag and CryptoInvoice switches to unique-amount matching instead (each invoice gets a slightly different amount). It works, but a self-custody wallet is still the better choice: no exchange minimums, no address changes, no withdrawal delays.

Why destination tags matter

On the XRP Ledger, one account typically receives many payments. A destination tag is a 32-bit number attached to a payment that tells the receiver what the payment is for. CryptoInvoice assigns a unique tag to every invoice, so a single address can take unlimited simultaneous payments and each is matched to the right order automatically. The checkout page shows the tag prominently and warns payers that it's required.

If a customer forgets the tag, the XRP still arrives in your wallet — nothing is lost. You simply attach the transaction to the invoice manually with Reconcile in the dashboard (or POST /api/invoices/:id/reconcile).

Step by step

  1. Create a workspace. Open the dashboard, enter a name and paste your r… address. You'll receive a secret key (your login and API key).
  2. Create an invoice or share your pay page. Price it in USD, EUR, GBP or XRP. You get a link like /i/7kq2m9x4p1zt with a QR code, the exact XRP amount, your address and the destination tag.
  3. Customer pays from any wallet. Xaman, Ledger Live, Trust Wallet, Bitstamp/Uphold/Kraken withdrawals — anything that supports destination tags (all major ones do).
  4. Detection in seconds. The XRP Ledger validates in ~4 seconds; the checkout page flips to “Confirmed”, the customer is redirected, and your server gets a signed webhook.

Automating fulfilment

Set a webhook URL in the dashboard. When an invoice is paid you receive invoice.paid and, because XRPL validation is final, invoice.confirmed immediately after. Verify the HMAC signature (examples in the docs) and mark the order as paid using the metadata you attached when creating the invoice.

curl -X POST https://cryptoinvoice.dev/api/invoices \
  -H "Authorization: Bearer sk_live_…" -H "Content-Type: application/json" \
  -d '{"amount":"49.00","currency":"USD","asset":"XRP","memo":"Order 2201","metadata":{"order":2201}}'

Pricing in dollars, receiving XRP

Most merchants price in fiat. CryptoInvoice converts at the live rate when the invoice is created and locks that XRP amount for the invoice lifetime (default one hour). Overpayments count as paid; underpayments below 99% stay pending so you can decide.

Taxes and records

Each invoice records the fiat amount, the rate used and the transaction hash — export via the API for your accountant. CryptoInvoice never files anything for you; you remain responsible for your own reporting.

FAQ

Can I accept XRP without running a node?

Yes. CryptoInvoice reads public XRPL nodes for you. There is nothing to host.

Is there a minimum payment?

0.01 XRP per invoice. Network fees are paid by the sender and are around 0.00001 XRP.

What about XRP on other networks (e.g. wrapped XRP on Ethereum)?

Only native XRP on the XRP Ledger is detected. The checkout page says so to payers.

Start accepting payments today

Create a workspace, paste your address, and send your first payment link. Free for 50 invoices a month, no sign-up form.

Open the dashboard API docs

More guides: XRP · Cardano · Ethereum · USDC & USDT