XRPL Escrow Explained: Time-Locks, Conditions & Real Business Use Cases

Published February 21, 2026 · 9 min read

Most blockchains implement escrow via smart contracts — custom code that holds funds and releases them based on conditions. The XRP Ledger takes a different approach: escrow is a first-class protocol feature, built directly into the ledger itself. No Solidity, no audits, no gas spikes.

XRPL escrow has been live since 2017. It powers a portion of Ripple's own XRP distribution schedule. And it's available to any developer or business with a wallet address and 12 drops of XRP.

Two Types of XRPL Escrow

XRPL supports two escrow mechanisms that can be used independently or combined:

  • Time-lock escrow: Funds release automatically after a specified date and time. Nobody needs to take action — the ledger releases the funds at the target time.
  • Crypto-condition escrow: Funds release when a specific secret (called a "fulfillment") is revealed. This enables trustless escrow between strangers — only the party who knows the secret can unlock the funds.

When you combine both, you get an escrow that requires both a specific time to pass AND the correct fulfillment to be provided. This is the most flexible and secure form of XRPL escrow.

Ripple's own XRP escrow: In 2017, Ripple locked 55 billion XRP into 55 monthly escrow contracts, releasing 1 billion XRP per month. Any unused XRP from each monthly release gets locked back into new escrow. This mechanism — running entirely on-chain — is why you can verify Ripple's XRP supply in real time.

The Three Escrow Transactions

Every XRPL escrow involves three transactions:

1. EscrowCreate

Locks XRP into escrow and defines the release conditions:

{
  "TransactionType": "EscrowCreate",
  "Account": "rSenderWallet",
  "Destination": "rRecipientWallet",
  "Amount": "1000000",           // 1 XRP in drops
  "FinishAfter": 1800000000,     // Ripple epoch timestamp
  "CancelAfter": 1900000000,     // Optional: auto-cancel if not finished by this time
  "Condition": "A0258020...",    // Optional: crypto-condition hex
  "DestinationTag": 12345        // Optional: route to specific account
}

After this transaction, the 1 XRP is locked. Neither the sender nor recipient can spend it until conditions are met.

2. EscrowFinish

Releases the escrowed funds to the destination. Anyone can submit this transaction once the time condition is met (for time-lock escrow). For crypto-condition escrow, the fulfillment must be provided:

{
  "TransactionType": "EscrowFinish",
  "Account": "rAnyWallet",         // Anyone can finish a time-lock escrow
  "Owner": "rSenderWallet",
  "OfferSequence": 12,             // The sequence of the EscrowCreate tx
  "Condition": "A0258020...",      // Required for crypto-condition escrow
  "Fulfillment": "A0228020..."     // The secret that satisfies the condition
}

3. EscrowCancel

Returns funds to the sender if conditions are not met before the CancelAfter time. Only available if a cancel time was set at creation:

{
  "TransactionType": "EscrowCancel",
  "Account": "rSenderWallet",
  "Owner": "rSenderWallet",
  "OfferSequence": 12
}

Time: The Ripple Epoch

XRPL timestamps use "Ripple time" — seconds since January 1, 2000 (not Unix epoch). To convert: ripple_time = unix_timestamp - 946684800. Always double-check your timestamp conversions. Setting FinishAfter to a past time or incorrect epoch is a common mistake that locks funds until manual resolution.

Real Business Use Cases

Real Estate Earnest Money

Lock buyer's deposit in escrow until closing date. If deal falls through before deadline, auto-cancel returns funds to buyer. No title company fees.

Contractor Milestone Payments

Release payment when contractor provides delivery proof (fulfillment hash of signed delivery document). Trustless — neither party needs to trust the other.

Gaming & NFT Reveals

Lock prize funds in escrow; release to winner when secret game outcome is revealed. Provably fair without a trusted intermediary.

Token Vesting Schedules

Lock employee/investor token allocations in time-based escrow. Each vesting cliff becomes an EscrowFinish transaction — fully automated on-chain.

Cross-Border Trade Finance

Classic Letter of Credit reimagined on-chain. Goods ship → document hash provided as fulfillment → payment releases. Cuts trade finance time from weeks to hours.

M&A Holdback Arrangements

Lock post-acquisition holdback funds in escrow. Release to seller if representations and warranties hold through the holdback period.

Crypto-Condition Escrow: How It Works

The crypto-condition mechanism uses a preimage (a secret piece of data) and its SHA-256 hash. Here's the flow:

  1. Seller generates a secret (32 random bytes) and computes its SHA-256 hash.
  2. Buyer creates escrow using that hash as the Condition. Funds are locked.
  3. Seller delivers goods/services and reveals the secret (the Fulfillment).
  4. Buyer (or anyone) submits EscrowFinish with the fulfillment. XRPL verifies SHA-256(fulfillment) == condition. If correct, funds release.

The elegance: no oracle, no third party, no trust required. The math enforces the contract.

Note on crypto-conditions (RFC 3965): XRPL's implementation follows the Interledger crypto-conditions spec. The condition and fulfillment are encoded in a specific binary format — not just raw hex SHA-256. Use a library or the EscrowDLT wizard to generate properly formatted conditions.

Reserve Requirements

Each open escrow object costs 2 XRP in reserve from the creating account. This reserve is returned when the escrow is finished or cancelled. For large batches of escrow contracts (like Ripple's 55-month lockup), this reserve requirement scales linearly. Plan your XRP reserve budget accordingly.

Querying Escrow on XRPL

To see all escrows for a given account, query the XRPL's account_objects method with type "escrow":

POST https://xrplcluster.com
{
  "method": "account_objects",
  "params": [{
    "account": "rYourWallet",
    "type": "escrow",
    "ledger_index": "validated"
  }]
}

The response includes all escrow objects with their amounts, conditions, and timing. The XRPL Analytics API wraps this into a cleaner JSON format with human-readable dates.

Limitations to Know

  • XRP only: Current XRPL escrow only supports XRP, not issued tokens (IOUs). RLUSD and other tokens cannot be escrowed using native XRPL escrow — this requires a custom solution or off-chain arrangement.
  • No modification: Once created, an escrow cannot be modified. Get your amounts, conditions, and timing right before submitting EscrowCreate.
  • Finish fee scales with condition size: EscrowFinish transactions with crypto-conditions require extra XRP fees proportional to the fulfillment size (10 drops per 16 bytes).
  • No oracle: XRPL escrow cannot query external data. Conditions must be hash preimages. For oracle-based conditions (e.g., "release if BTC > $100K"), you need an off-chain component to generate the fulfillment.

Explore Your XRPL Escrows

EscrowDLT lets you view, analyze, and create XRPL escrow transactions using a guided wizard. No code required — just your wallet address and Xaman.

Open EscrowDLT →