
The DID entry
4 minDifficulty Checked 2026-11-10- A DID reads did:xrpl, then a network ID, then the account address or master public key.
- The DID entry holds a URI, a small document or attestation data. Each is 256 bytes at most.
- DIDSet creates or updates the entry. DIDDelete removes it and frees one owner reserve.
A DID on the XRP Ledger is a short line of text:
did:xrpl:1:rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn
Read it left to right:
didsays it is a decentralized identifier.xrplsays it lives on an XRP Ledger network.1says which network.- The last part is the account.
Behind the DID sits a small card on the ledger, the DID entry. Your account can have one. The card has three slots, all optional:
- URI. A link to your DID document, kept somewhere else. It can be a web address or an IPFS address.
- DIDDocument. A tiny DID document stored right on the card.
- Data. Public attestations tied to the DID.
Each slot holds 256 bytes at most. That is a few lines of text. Most real DID documents are bigger, so the usual pattern is to store the document elsewhere and put the link in the URI slot.
At least one slot must be filled. The ledger does not read what you put in. It checks size, nothing more.
Keeping the card costs one owner reserve, 0.2 XRP today. Delete the card and the reserve unlocks.
You can also have a DID with no card at all. In that case the DID stands for the key itself, and that one key is all it can vouch for.
Format. XLS-40 defines did:xrpl:<network-id>:<xrpl-specific-idstring>. The prefix must be lowercase. The last part is the AccountID or the hex of the account's master public key. Both forms resolve to the same DID entry.
The DID entry.
| Field | Meaning |
|---|---|
Account | The account that controls the DID |
URI | Points to the DID document or related data. HTTP(S) URL or IPFS URI |
DIDDocument | A W3C DID document |
Data | Public attestations of identity credentials |
URI, DIDDocument and Data are blobs, each up to 256 bytes, none checked for validity. The entry has no flags. Its ID is a hash of the DID space key (0x0049) and the account ID, which is why an account holds at most one.
DIDSet creates the entry or updates it. Include at least one of URI, DIDDocument or Data. To clear a field on an existing entry, send it as an empty string.
temEMPTY_DID: the transaction carries none of the three fields.tecEMPTY_DID: the update would leave the entry with no fields. This check came with the fixEmptyDID amendment (enabled 2024-09-27).
DIDDelete uses only the common fields. It deletes the sender's DID entry. With no entry, the result is tecNO_ENTRY.
Linking a document. xrpl.org lists three ways:
- Put a reference in
URIto a document on another decentralized storage network, such as IPFS. - Store a minimal document in
DIDDocument. - Use an implicit document built from the DID and public information. An implicit document for a public-key DID lets only that single key authorize changes or sign credentials in the DID's name.
Reading. ledger_entry with "did": "<address>" returns the entry.
Reserve. The creating account incurs one owner reserve. XLS-40 quotes 2 XRP, the figure when it was written. The owner reserve is 0.2 XRP today.
Related: Owner reserve.
- DIDRead 2026-11-10
- DIDSetRead 2026-11-10
- DIDDeleteRead 2026-11-10
- XLS-40 Decentralized Identity on XRP LedgerRead 2026-11-10
- Decentralized IdentifiersRead 2026-11-10
