> For the complete documentation index, see [llms.txt](https://docs.allbridge.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.allbridge.io/allbridge-overview/under-the-hood-of-allbridge-classic/xrpl-bridge.md).

# XRPL Bridge

{% hint style="warning" %}

## Allbridge Classic is deprecated and will be stopped in mid-2026. You can find information on our current bridge Allbridge Core [here](https://docs-core.allbridge.io/).

{% endhint %}

{% embed url="<https://www.youtube.com/watch?t=6s&v=eQucgiziWSU>" %}

#### **There are several types of token transfer possible between the XRPL and other chains:**

1. Send **Native** tokens and receive **Native** tokens.
2. Send **Native** tokens and receive **Wrapped** (or minted) tokens.
3. Send **Wrapped** (or minted) tokens and receive **Native** tokens.
4. Send **Wrapped** (or minted) tokens and Receive **Wrapped** (or minted) tokens.

#### **5 entities in the cross-chain token transfer process**

1. **User (Sender / Receiver)** - EOA (Externally Owned Account) / Wallet from which the token X is transferred from one chain to another.
2. **Non-XRPL chain smart contract** - a bridge smart contract on the blockchains other than XRPL.
3. **Outgoing Transactions Ledger on NEAR** - a bridge smart contract on the NEAR blockchain.
4. **Allbridge Validator** - an offchain entity that is responsible for verifying Lock, Unlock, Mint, and Burn transactions on the bridge smart contracts.
5. **XRPL Sender** - an offchain entity that is responsible for verifying Lock, Unlock, Mint, and Burn transactions on the bridge smart contracts for XRPL transfers.

### **Non-XRPL => XRPL**

<figure><img src="/files/QGRNL7mdHn7jMNEWgmf9" alt=""><figcaption></figcaption></figure>

1. With the Send transaction, the **User** sends a request to the **non-XRPL chain smart contract,**  where the address of the wallet on the XRPL and the amount of token X that must be sent to the wallet is specified. **Non-XRPL chain smart contract** locks/burns the received tokens from the **User.**
2. When a user clicks “Receive” button on the bridge UI, the **User** asks **Validator** to receive the X tokens on the XRPL.
3. **Validator** checks if funds were actually locked/burnt on the **non-XRPL chain smart contract.**
4. If they were, the **Validator** sends an Unlock/Mint transaction to the **Outgoing Transaction Ledger on NEAR.**
5. After that, **Validator** triggers **XRPL Sender.**
6. **XRPL Sender** checks the finality of the Unlock/Mint transaction on **NEAR OTL.**
7. If **XRPL Sender** finds an Unlock/Mint transaction on the **NEAR OTL,** it unlocks/mints the requested amount of X tokens and sends them to the **User** right away.

### **XRPL => non-XRPL**

![](/files/FHHjJt9wXEDi6rI5Tz7U)

1. With the Send transaction, the **User** sends a request to the **XRPL,** where the address of the wallet on the **non-XRPL chain** and the amount of token X that must be sent to the wallet is specified. The assets get locked/burnt.
2. With the **Receive** transaction, the **User** asks **Validator** to check the request log.
3. **Validator** checks if funds were actually sent (locked/burnt) to the **XRPL**.
4. If they were, the **Validator** sends its signature to the **User**.
5. **User** sends the signature to the **non-XRPL chain smart contract.**
6. **Non-XRPL chain smart contract** unlocks/mints the requested amount of X tokens and sends them to the **User** right away.
