> For the complete documentation index, see [llms.txt](https://docs.lumia.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.lumia.org/build-on-lumia/bridge/bridge-assets-to-from-lumia-l2.md).

# Bridge assets to from Lumia L2

**Who this is for:** developers moving assets between Ethereum and Lumia, either through the bridge UI or by calling the bridge contract directly.

**Prerequisites:** a wallet with funds on the source chain. See [Accounts & Wallets on Lumia](https://app.gitbook.com/s/chmhPiVNAafGw48c4oU2/build-on-lumia/wallets/accounts-and-wallets-on-lumia).

**Time:** deposits are typically fast; withdrawals include a delay (see below).

### Steps: bridge UI

{% stepper %}
{% step %}
**Open the bridge URL**

Listed in [`/reference/networks`](https://app.gitbook.com/s/chmhPiVNAafGw48c4oU2/reference/networks-and-endpoints). Do not use a URL from an old tutorial or a different chain's docs.
{% endstep %}

{% step %}
**Connect the wallet holding the asset you want to move**
{% endstep %}

{% step %}
**Choose the direction**

**Deposit** (Ethereum → Lumia) or **withdraw** (Lumia → Ethereum).
{% endstep %}

{% step %}
**Select the asset and amount**

Then confirm the transaction in your wallet.
{% endstep %}

{% step %}
**Wait for the transaction to be picked up on the destination chain**

Deposits are usually visible quickly; withdrawals are not final until the challenge/finality window closes (see below).
{% endstep %}
{% endstepper %}

### Steps: contract-level bridge

If you're integrating the bridge directly rather than through the UI, you call the unified bridge contract's deposit/withdraw (claim) functions. Do not hardcode an address from another chain's AggLayer deployment, even though the bridge contract shape is shared across AggLayer member chains. See [How Lumia settles and bridges to Ethereum](https://app.gitbook.com/s/chmhPiVNAafGw48c4oU2/ecosystem/lumia/architecture/polygon-cdk-and-agglayer/how-lumia-settles-and-bridges-to-ethereum) for why Lumia shares this bridge model with other chains.

### Verify it worked

Check the transaction on the source chain's explorer, then confirm the corresponding mint/release on the destination chain's explorer. Both are listed in [`/reference/explorers`](https://app.gitbook.com/s/chmhPiVNAafGw48c4oU2/reference/block-explorers-reference). A deposit or withdrawal isn't complete until it's visible and confirmed on both sides.

### Withdrawal delay

Lumia settles through Polygon's shared AggLayer, and AggLayer withdrawals are not instant. There is a finality/challenge window before a withdrawal from Lumia can be claimed on Ethereum. Plan around a delay, not an instant transfer, when you design anything that depends on withdrawal timing.

### Troubleshooting

<details>

<summary>Deposit doesn't appear on Lumia</summary>

Confirm the source-chain transaction actually confirmed first; a deposit can't appear on Lumia before it's final on Ethereum.

</details>

<details>

<summary>Withdrawal stuck as "pending" / "not claimable yet"</summary>

This is expected during the challenge/finality window described above, not necessarily an error.

</details>

<details>

<summary>Wrong asset or wrong network selected in the bridge UI</summary>

Re-check both the source and destination network shown in the bridge UI against [`/reference/networks`](https://app.gitbook.com/s/chmhPiVNAafGw48c4oU2/reference/networks-and-endpoints) before confirming.

</details>
