Agent documentation index: llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Skip to main content

FAssets Cycle

In this guide, we will walk you through all aspects of the FAssets 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, 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. 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

First, mint FXRP via 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 guide (or mint-and-action via a 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 -
Expected output
sent bridge instruction transaction: 404EE0470152513277B10E5ADB6388175010634CDAF1815979ED418CDBAD0C45
404EE0470152513277B10E5ADB6388175010634CDAF1815979ED418CDBAD0C45

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 -
Expected output
sent bridge instruction transaction: 33B08253AE3907A8CE07EA3F5C9BE91EBCC6089339725A8BCFF371ED86F26238
33B08253AE3907A8CE07EA3F5C9BE91EBCC6089339725A8BCFF371ED86F26238

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 -
Expected output
sent bridge instruction transaction: 8D81F5A2625A927A6759646806BC8217147523F069899A4A2586562D6E0F105E
8D81F5A2625A927A6759646806BC8217147523F069899A4A2586562D6E0F105E

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 -
Expected output
sent bridge instruction transaction: FE9D00397D8F11364C6E2792D62F801AA8BEF3499EB5068B624CAD1477ED7721
FE9D00397D8F11364C6E2792D62F801AA8BEF3499EB5068B624CAD1477ED7721