
Token escrow
4 minDifficulty Checked 2026-11-10- Tokens can be escrowed only if their issuer switched that on.
- Every token escrow must have an expiration.
- The transfer fee is fixed when the escrow is created.
For years an escrow could hold only XRP. Since February 2026 it can also hold tokens: trust line tokens and Multi-Purpose Tokens (MPTs). A stablecoin payment can now wait in escrow the same way XRP can.
Tokens have an issuer, and the issuer has a say. That adds rules.
- The issuer must allow it. Each issuer decides whether its token can be escrowed. If it has not switched this on, the escrow fails.
- An end date is required. Every token escrow needs an expiration, so tokens cannot be locked forever.
- Issuers cannot escrow their own token. An issuer can be the recipient of one.
- Approved-holder tokens stay approved-only. If the token needs the issuer's approval to hold, the sender must be approved to create the escrow. The recipient must be approved before it can be finished.
- A hard freeze blocks delivery. If the recipient is deep frozen, the escrow cannot finish. It can still be canceled once it expires, and the tokens go back to the sender.
Some tokens charge a transfer fee. For an escrow, the fee is fixed on the day the escrow is made. If the issuer changes its fee later, the escrow still uses the old one. The recipient knows in advance what will arrive.
The TokenEscrow amendment (XLS-85) was enabled on mainnet on 2026-02-12. It changes EscrowCreate, EscrowFinish and EscrowCancel to accept token amounts.
Issuer opt-in
| Trust line token | MPT | |
|---|---|---|
| Switch | asfAllowTrustLineLocking (17) on the issuer's account | tfMPTCanEscrow and tfMPTCanTransfer on the issuance |
| Stored as | lsfAllowTrustLineLocking (0x40000000) | lsfMPTCanEscrow, lsfMPTCanTransfer |
| If missing | tecNO_PERMISSION | tecNO_PERMISSION |
The trust line flag is not permanent. If the issuer turns it off, new escrows fail. Existing ones can still be finished or canceled.
Create. CancelAfter is mandatory for token escrows. Further failures:
tecNO_AUTH: the token needs authorization and the sender lacks it.tecFROZEN: the token is frozen or locked for the sender.tecUNFUNDED: not enough spendable balance.
Where the tokens sit. For MPTs, the amount leaves the sender's balance and is counted in LockedAmount on the sender's MPToken and on the MPTokenIssuance. OutstandingAmount does not change.
Transfer fee. The Escrow entry stores TransferRate: the issuer's TransferRate for a trust line token, or TransferFee for an MPT, as it stood at creation. Settlement uses that stored value.
Finish
- A missing trust line or
MPTokenfor the recipient can be created automatically when authorization is not required. The recipient then needs the reserve for it, or the result istecINSUFFICIENT_RESERVEortecNO_LINE_INSUF_RESERVE. tecNO_AUTHif the recipient needs authorization and lacks it. It cannot be granted during the finish.tecFROZENif the recipient is deep frozen (trust line token) or the token is locked (MPT).
Freeze matrix
| State | Finish | Cancel |
|---|---|---|
| Individual or global freeze (trust line token) | Allowed | Allowed |
| Deep freeze (trust line token) | Blocked | Allowed |
| Locked (MPT) | Blocked | Allowed |
Cancel returns tokens to the sender. If the token needs authorization, the sender must still be authorized to receive them back.
Related: Multi-Purpose Tokens, Freeze, Deep Freeze and Clawback, Stablecoins on the XRPL.
- EscrowRead 2026-11-10
- XLS-85 Token EscrowRead 2026-11-10
- EscrowCreateRead 2026-11-10
- EscrowFinishRead 2026-11-10
- AccountSetRead 2026-11-10
- EscrowRead 2026-11-10
- Known AmendmentsRead 2026-11-10
