XRP Destination Tags: What Happens If You Forget One
7 min read · Updated
What a destination tag is
A destination tag is a number you send alongside an XRP address. On the XRP Ledger it is a field called DestinationTag on a Payment transaction, and it holds a 32-bit unsigned integer: any whole number from 0 to 4,294,967,295.
That is the entire technical story. The tag carries no money and no instructions. The ledger records it, and that is all it does. Whatever meaning the number has is added by whoever receives the payment.
Why exchanges need one
An exchange does not open an XRP Ledger account for every customer. Each account costs a reserve and adds bookkeeping, so exchanges pool deposits into a small number of addresses, called an omnibus account, and track who owns what in their own database.
That leaves one problem. If two hundred thousand people deposit XRP to the same address, how does the exchange know whose is whose? The destination tag. Every customer is issued a different number, the deposit arrives carrying that number, and the exchange credits the matching account.
So the address says which company receives the XRP. The tag says which customer inside that company gets credited. The exchange only ever sees the half you actually sent.
Address, tag and X-address compared
Three things get confused with one another. Here is what each one is.
| Field | What it is | Who issues it | Is it required? |
|---|---|---|---|
| Address | A string starting with r that identifies one account on the XRP Ledger | Whoever controls the account: your wallet, or the exchange | Always. Nothing moves without it. |
| Destination tag | A number from 0 to 4,294,967,295 attached to the payment | The receiving service, one number per customer | Only when the receiver asks for one, which in practice means every custodial deposit |
| X-address | A single string starting with X that encodes an address and a tag together | Derived from the address and the tag by a wallet, exchange or converter | Never. It is an alternative packaging, not a third thing to send. |
Tag, memo and address are not the same thing
The address and the tag are separate fields, and neither substitutes for the other. Pasting the tag into the address box does not work. Sticking it on the end of the address does not work either.
A memo is a third thing. The XRP Ledger has a Memos field for arbitrary attached data, and it is not what exchanges read when they credit an XRP deposit. The confusion comes from other networks: Stellar, Cosmos and several others call their equivalent routing field a memo, and all-coin support pages use the words interchangeably.
The practical rule: on an XRP deposit screen, a field labelled memo, tag, MEMO/TAG or payment ID almost certainly means the destination tag. Copy the exchange's value into whichever field your wallet calls the destination tag.
When you need one and when you do not
Sending to an exchange or custodian
Assume you need a tag. Any deposit to a centralized exchange, broker, custodian, payment service or lending platform goes into shared infrastructure, which is why the major exchanges publish a per-customer tag on the XRP deposit screen. If a service hands you a tag, it needs the tag.
Sending to your own self-custody wallet
You do not need one. A wallet where you hold the keys, such as Xaman or a Ledger device, is your own account on the ledger. There is no other customer to tell you apart from.
Xaman says as much itself: no destination tag is required when sending to a non-custodial XRP Ledger account, and if a form insists on a number, any number will do. Some wallets show the field on every withdrawal regardless. Leaving it blank is correct, and if the form refuses, a tag your own account ignores does no harm.
The RequireDest flag
The ledger has a built-in guard against this mistake. An account can set the RequireDest flag — asfRequireDest, value 1, on an AccountSet transaction. Once set, any payment arriving without a destination tag is rejected with the result code tecDST_TAG_NEEDED.
A rejection sounds bad. It is the good outcome. The XRP never leaves your balance, nobody has to fish it out of a pooled account, and you simply send again with the tag. Only the transaction cost is spent.
The catch: setting the flag is the receiving account's choice, and not every exchange does. A tagless deposit that goes through without complaint is no proof anything was routed correctly. Never treat a successful transaction as your check.
What happens if you forget or mistype it
If the destination does not require a tag, an untagged payment succeeds. The XRP lands in the exchange's omnibus account and sits there with everybody else's. Nothing is burnt and nothing is lost, but no customer account is credited and your balance does not move.
A mistyped tag can be worse. If the number happens to be a valid tag belonging to another customer, the deposit is credited to that person, automatically and correctly as far as the exchange's software knows.
What you do next is open a support ticket with the receiving exchange, not the sending one. Have this ready:
- the transaction hash, which your wallet shows once the payment goes through
- the exact amount sent, down to the last decimal
- the date and time
- the address you sent from
- the destination tag you should have used
Here is the honest part. Recovery is a manual favour, not a right, and the exchange sets the terms. Published policies vary and change, so read the one that applies to you. They commonly involve a recovery fee, a minimum amount below which nobody will investigate, a wait of days or weeks, and a plain statement that recovery is not guaranteed. Kraken's help page says an omitted tag causes significant delays and can make the deposit impossible to recover.
What a source tag does
There is a mirror-image field, the SourceTag, also a 32-bit unsigned integer. It identifies the customer at the sending institution, so a payment that has to be returned reaches the right person. As an individual sender you will almost never fill it in. If your wallet exposes the field, leave it empty.
Finding your tag on a deposit screen
Screens differ between exchanges. The sequence rarely does.
- Open the receiving exchange and go to Deposit, sometimes called Receive or Funding.
- Choose XRP as the asset. Do this first, because the deposit details differ for every asset.
- Choose the network. Pick the XRP Ledger, shown on some exchanges as XRPL. Sending XRP over another network sends it where the exchange is not looking.
- Read both values. You should see an address starting with r and a separate destination tag, usually a long number. If you only see an address, look for a show tag or advanced toggle before concluding there is none.
- Copy each value with its copy button, one at a time, into the matching field in your sending wallet. Do not retype either by hand.
- Send a small test amount first. Wait for it to be credited, then send the rest.
The X-address format
The X-address format solves the two-values problem by making it one value. It packs the classic address and the destination tag into a single string starting with X on the main network, or T on test networks, with a checksum built in.
The advantage is that nothing is left to forget. A mistyped X-address fails its checksum and is rejected before anything is sent, whereas a mistyped destination tag is a perfectly valid number and goes straight through.
The catch is support. The ledger protocol itself only understands classic addresses, so X-addresses are a client-side convenience that wallets and libraries translate. Xaman and the Bithomp explorer handle them; adoption elsewhere is uneven, and plenty of exchanges still hand out an address and a tag and accept nothing else. Use whichever form the receiving service gives you.
Checklist before you send
- Decide whether a tag is needed at all — custodial destination, yes; your own wallet, no
- Use the copy buttons for both the address and the tag, and paste each into its own field
- Check the network is the XRP Ledger at both ends
- Compare the first and last four characters of the pasted address against the deposit screen; clipboard-hijacking malware exists
- Send a small test amount and wait until it is credited before sending the rest
- Keep the transaction hash — the first thing support asks for if anything goes wrong
The bottom line
A destination tag is a routing number for one customer inside a shared account. Getting it right costs you ten seconds of copying and pasting. Getting it wrong costs a support ticket, a fee, a wait, and sometimes the money.
The one habit that covers most of the risk: send a test transaction first, every time, to any destination you have not used before. Little else in crypto buys that much safety for that little.