# FAssets Cycle

> An overview of the FAssets cycle with the use of Flare Smart Accounts.

> For the complete documentation index, see [llms.txt](/llms.txt). Markdown versions of documentation pages are available by appending `.md` to the page URL.

Source: https://dev.flare.network/smart-accounts/guides/cli/fassets-cycle

In this guide, we will walk you through all aspects of the [FAssets](/fassets/overview) process. We will start with an account on XRPL, convert some of the XRP to FXRP on Flare, deposit it into an Upshift-type vault, redeem it from the vault, and then redeem FXRP back to XRP. The steps we will take will be as follows:

1.  **mint and deposit:** convert XRP to FXRP via [FAssets minting](/fassets/minting), then deposit to an Upshift-type vault
2.  **request redeem:** start the withdrawal process of the deposited FXRP from the Upshift-type vault
3.  **claim:** finish the withdrawal process of FXRP from the Upshift-type vault
4.  **redeem:** convert FXRP back to XRP

We will do the deposit, withdraw, and redeem steps through the [Flare Smart Accounts CLI](/smart-accounts/guides/cli/introduction). The CLI allows us to make XRPL transactions through terminal commands.

note

The idea behind the Flare Smart Accounts is that we perform actions on the Flare chain through instructions sent on XRPL.

The same process can be repeated for a Firelight-type vault, but in this guide, we will only focus on an Upshift-type vault.

## Mint and deposit[​](#mint-and-deposit "Direct link to Mint and deposit")

First, mint FXRP via [FAssets minting](/fassets/minting): send an XRPL `Payment` to the Core Vault with a memo or destination tag that credits your personal account. Follow the [Mint FXRP](/fassets/developer-guides/fassets-mint) guide (or mint-and-action via a [memo-field custom instruction](/smart-accounts/memo-field-custom-instruction)).

Legacy

Do not use `upshift-cr-deposit` or `fxrp-cr` with `bridge mint-tx` as the primary mint path. Those encode the deprecated collateral-reservation (CRT) flow. External CLI encode commands for CRT may still exist in `smart_accounts.py`, but they are not the recommended user mint path.

After FXRP is in the personal account, deposit `10` FXRP into the Upshift-type vault registered with the `MasterAccountController` with the ID `2`:

```
./smart_accounts.py encode upshift-deposit --wallet-id 0 --value 10 --vault-id 2 \  | ./smart_accounts.py bridge instruction -
```

<details>
<summary>Expected output</summary>

Expected output

```
sent bridge instruction transaction: 404EE0470152513277B10E5ADB6388175010634CDAF1815979ED418CDBAD0C45404EE0470152513277B10E5ADB6388175010634CDAF1815979ED418CDBAD0C45
```

</details>

## Request redeem[​](#request-redeem "Direct link to Request redeem")

We withdraw the same number of FXRP tokens that we have just deposited from the vault (`10`). The same flow applies to both Upshift-type and Firelight-type vaults. The process involves two steps. Before we can withdraw the tokens, we need to request their withdrawal. In a production build, the tokens stay locked for a specified time.

To request the withdrawal of `10` FXRP from the Upshift-type vault with ID `2`, we use the command:

```
./smart_accounts.py encode upshift-request-redeem --wallet-id 0 --value 10 --vault-id 2 \  | ./smart_accounts.py bridge instruction -
```

<details>
<summary>Expected output</summary>

Expected output

```
sent bridge instruction transaction: 33B08253AE3907A8CE07EA3F5C9BE91EBCC6089339725A8BCFF371ED86F2623833B08253AE3907A8CE07EA3F5C9BE91EBCC6089339725A8BCFF371ED86F26238
```

</details>

## Claim[​](#claim "Direct link to Claim")

After the waiting period has passed, we can claim the FXRP we requested. This is the second step of the withdrawal process. We need to specify the date when the redemption request was put in. We made the request on 28 Dec 2025, so the value parameter should be `20251228`. But in general, the value should be `YYYYMMDD`, where `YYYY` is the year, `MM` the month, and `DD` the date.

To complete the withdrawal from the Upshift-type vault with ID `2`, we use the command:

```
./smart_accounts.py encode upshift-claim --wallet-id 0 --value 20251228 --vault-id 2 \  | ./smart_accounts.py bridge instruction -
```

<details>
<summary>Expected output</summary>

Expected output

```
sent bridge instruction transaction: 8D81F5A2625A927A6759646806BC8217147523F069899A4A2586562D6E0F105E8D81F5A2625A927A6759646806BC8217147523F069899A4A2586562D6E0F105E
```

</details>

## Redeem[​](#redeem "Direct link to Redeem")

The last step is to convert FXRP back to XRP. We will redeem the `1` lot of FXRP we minted in the first step back to XRP. We will invoke the CLI with the following command:

```
./smart_accounts.py encode fxrp-redeem --wallet-id 0 --value 1 \  | ./smart_accounts.py bridge instruction -
```

<details>
<summary>Expected output</summary>

Expected output

```
sent bridge instruction transaction: FE9D00397D8F11364C6E2792D62F801AA8BEF3499EB5068B624CAD1477ED7721FE9D00397D8F11364C6E2792D62F801AA8BEF3499EB5068B624CAD1477ED7721
```

</details>
