XRP
Accept native XRP on XRP Ledger mainnet and testnet. One classic address - each invoice gets a unique destination tag.
XRP is account-based. Paste a single classic XRPL address. Each invoice gets a unique destination tag for disambiguation. Funds land directly in your XRPL account.
Availability. XRP is live on NoHoldPay. If XRP does not appear in your wallet picker, contact support.
Networks
| Network | Chain key | Finality | Min invoice |
|---|---|---|---|
| XRP Ledger | XRP | BFT single-slot (1 validated ledger, ~4s) | $1.00 |
| XRP Ledger Testnet | XRP_TESTNET | BFT single-slot (~4s) | $0.10 |
XRPL has no reorgs - a validated ledger is final.
Supported coins
Native XRP only.
IOUs, issued currencies, and MPT tokens are explicitly not credited - they route to manual reconciliation with IOU_RECEIVED_NOT_SUPPORTED or MPT_RECEIVED_NOT_SUPPORTED.
Wallet setup
Paste a classic XRPL address - starts with r, 25-35 characters. NoHoldPay also accepts an untagged X-Address (X... mainnet / T... testnet) and normalises it to the classic form.
Do not paste:
- A tagged X-Address - NoHoldPay generates the destination tag per payment.
- A custodial exchange deposit address. Exchanges already use destination tags to route deposits - your customers' payments would funnel into the exchange's deposit logic.
- An address already bound to another NoHoldPay account, including a second account of your own. Two accounts watching one address share a single inbound stream, so one payment could be credited against an order in each. The second bind is rejected.
Compatible wallets:
- Hodlall - NoHoldPay's multi-coin wallet, which adds XRP support so you can hold it alongside your Bitcoin, Litecoin, and Monero keys
- Xaman (formerly Xumm)
- Crossmark
- Ledger Live
- Self-hosted rippled accounts
Account preflight
Before saving the wallet, NoHoldPay probes your XRPL account:
| Account state | Result |
|---|---|
| Account not funded above the XRPL base reserve | Blocked - fund the account, then retry |
DepositAuth enabled | Blocked - ordinary customer Payments cannot reach DepositAuth accounts |
RequireDestTag disabled | Warning only - NoHoldPay generates tags anyway |
DisallowXRP enabled | Warning only - this account flag is advisory |
Open your wallet and copy your classic XRPL address (r...).
Screenshot
XRP wallet receive screen showing the classic r-address
add image at public/images/guides/xrp-receive-address.png
XRP or XRP_TESTNET.Destination tags
Every payment gets a unique 32-bit destination tag derived deterministically with up to 8 retries to avoid collisions across active invoices.
The checkout shows:
- An X-Address (
X...on mainnet,T...on testnet) that encodes the classic address and destination tag into one copyable address for wallets that support it. - A QR/deep-link using the generated
payment_urifor compatible wallets. - The classic address and destination tag as first-class copyable fields for older wallets and manual senders.
Customers must include the destination tag. Without a tag, the platform tries to match by exact amount. If it cannot disambiguate, the payment lands in manual reconciliation.
How payments match
| Tier | Match condition | Result |
|---|---|---|
| 1 | Correct destination tag | Confirmed |
| 2 | No tag, exact amount matches a single open invoice | Confirmed |
| 3 | Wrong tag but exact amount | Manual reconciliation (TAG_MISMATCH_AMOUNT_MATCH) |
| 4 | No tag, multiple invoices share the amount | Manual reconciliation (TAG_MISSING_AMBIGUOUS_CANDIDATES) |
Customers who paste only the classic address can still match via tier 2 when the amount is unique among open invoices.
Not supported
- IOUs and issued currencies - non-XRP
Paymenttransactions reject asIOU_RECEIVED_NOT_SUPPORTED. - MPT tokens (XLS-46d) - reject as
MPT_RECEIVED_NOT_SUPPORTED. - DepositAuth accounts - cannot receive ordinary customer Payments.
- Custodial exchange deposit addresses.
Testnet (XRP_TESTNET)
- XRPL Testnet Faucet - funds an account with test XRP.
- Bithomp testnet explorer
- xrpscan testnet explorer
Common errors
| Code | When |
|---|---|
XRPL_ACCOUNT_NOT_FUNDED | Account doesn't exist on-ledger - fund above the base reserve |
XRPL_DEPOSIT_AUTH_ENABLED | DepositAuth flag is set - disable it or use another account |
XRPL_DEST_TAG_EXHAUSTED | All 8 destination-tag retries collided - retry the payment (extremely rare) |
IOU_RECEIVED_NOT_SUPPORTED | Customer sent an IOU instead of native XRP |
MPT_RECEIVED_NOT_SUPPORTED | Customer sent an MPT token instead of native XRP |
XRPL_TX_FAILED | The transaction was validated but failed on-chain |
Recovery
Your Recovery Kit lists your XRP wallet as an informational entry only - there is no platform-side secret to recover, because funds always land directly in your XRPL account. NoHoldPay never controls a forwarder or operator wallet for XRP - if the platform is offline, you can still see and spend your XRP from your own wallet or any XRPL explorer.