# Issue fungible tokens on the XRP Ledger

Fungible tokens are issued on the XRP Ledger when an owner account distributes the tokens to other, trusted accounts.

In this tutorial you'll learn how to issue stablecoin tokens on the XRP Ledger with Ripple Custody.

## Learning objectives

By the end of this tutorial, you should be able to:

- Create a token issuer account and mint tokens.
- Link the issuer account to trusted holder accounts.
- Issue tokens on the XRP Ledger.
- Describe the difference between authorized and unauthorized transfers.
- Understand reserves and balances in Ripple Custody and on the XRP Ledger.


## Issue tokens — flow

The workflow to issue fungible tokens on the XRP Ledger is as follows:

1. **Create an issuer account** — Create a new account on the XRP Ledger to issue the tokens and fund the account with native currency.
2. **Mint the token** — Register and validate a token asset.
3. **Create a holder account** — Create a new account on the XRP Ledger to hold the tokens and fund the account with native currency.
4. **Link the issuer and holder accounts** — Create a trust line between the issuer and holder accounts.
5. **Issue some tokens** — Send tokens from the issuer to the holder account.


## Issue tokens - instructions

### Create an XRPL issuer account

Create account **Issuer** and fund it with enough XRP to cover the transactions and reserves.

The XRP Ledger has some specific requirements in terms of reserved amounts for accounts. For more information, see Reserves in the XRPL documentation.

To create a new account:

- With the UI, see [Ripple Custody UI > Create accounts](/products/custody/v1.26/ui/accounting-entities/account/create)
- With the API, see [Ripple Custody API > Create accounts](/products/custody/v1.26/api/accounting-entities/account/create)


To fund the account:

- With the UI, see [Ripple Custody UI > Receive assets](/products/custody/v1.26/ui/accounting/receive-assets)
- With the API. see [Ripple Custody API > Receive assets](/products/custody/v1.26/api/accounting/receive-assets)


![](/assets/xrpl-ft-issuer.81b8b1652789db369b6a7ef407044d2d4945be5a3b5e4d5f41fa77ca60710dd1.e9339c29.png)

Tip
For more information about the different types of account balances in Ripple Custody, see [View account balances](#view-account-balances).

#### (Optional) Update the account to require authorization

If required, update the issuer account settings to require authorization, that is, the account needs an **authorized** trust line to issue tokens. This provides an extra level of trust: if you don't enable this setting, the account only needs a standard trust line. For more information, see [Link the issuer and holder accounts with a trust line](#link-the-issuer-and-holder-accounts-with-a-trust-line).

To update the account settings:

- With the UI, see [Ripple Custody UI > Update XRPL account settings](/products/custody/v1.26/ui/accounting/account-settings/xrpl)
- With the API, see [Ripple Custody API > Update XRPL accounts settings](/products/custody/v1.26/api/accounting/account-settings/xrpl)


### Mint the token

Register and validate a new token asset with currency code **FSC**.

#### Register a stablecoin token asset for the issuer account

To register a token asset:

- With the UI, see [Ripple Custody UI > Register assets](/products/custody/v1.26/ui/accounting-entities/asset/register)
- With the API, see [Ripple Custody API > Register assets](/products/custody/v1.26/api/accounting-entities/asset/register)


#### Validate the asset

To validate the asset:

- With the UI, see [Ripple Custody UI > Validate assets](/products/custody/v1.26/ui/accounting-entities/asset/validate)
- With the API, see [Ripple Custody API > Validate assets](/products/custody/v1.26/api/accounting-entities/asset/validate)


![](/assets/xrpl-ft-issue-asset.f3f2a1376fdadef200d5218d557bc9fcac700e31fa28109aef2a8be872577f37.e9339c29.png)

**Decimals** is always automatically set to 81 and you can't update it.

For more information, see [XRPL token decimals and amounts](/products/custody/v1.26/api/accounting/tokens/xrpl#xrpl-token-decimals-and-amounts).

### Create an XRPL holder account

Create account **Holder** and fund it with XRP, in the same way as the issuer account in [Create an XRPL issuer account](#create-an-xrpl-issuer-account).

![](/assets/xrpl-ft-holder.7e48d6fbf6105b4e4ea02f8f8d370d3d518fc10de7317910c6f3f5bb89e8eeb3.e9339c29.png)

### Link the issuer and holder accounts with a trust line

Create a trust line between **Issuer** and **Holder**, to enable the issuer account to transfer FSC tokens to the holder account.

If you updated **Issuer** to require authorization in [(Optional) Update the account to require authorization](#optional-update-the-account-to-require-authorization), you need to create an **authorized** trust line.

To create a trust line:

- With the UI, see [Ripple Custody UI > Create a trust line](/products/custody/v1.26/ui/accounting/tokens/xrpl#create-a-trust-line)
- With the API, see [Ripple Custody API > Create a trust line](/products/custody/v1.26/api/accounting/tokens/xrpl#create-a-trust-line)


To create an authorized trust line:

- With the UI, see [Ripple Custody UI > Create an authorized trust line](/products/custody/v1.26/ui/accounting/tokens/xrpl#create-an-authorized-trust-line)
- With the API, see [Ripple Custody API > Create an authorized trust line](/products/custody/v1.26/api/accounting/tokens/xrpl#create-an-authorized-trust-line)


The following image shows the creation of an authorized trust line:

![](/assets/xrpl-ft-issue-trustline.faaeeb26b127acf5629b47c3de50297b02d5ad8cc951d5dfcba3de37e2f992cd.e9339c29.png)

### Issue some tokens

Transfer 10 FSC from **Issuer** to **Holder** with a transfer order.

The number of tokens you can transfer is limited by the trust line **Limit** amount.

To transfer tokens:

- With the UI, see [Ripple Custody UI > Send assets](/products/custody/v1.26/ui/accounting/send-assets)
- With the API, see [Ripple Custody API > Send assets](/products/custody/v1.26/api/accounting/send-assets)


The resulting transaction is shown below:

![](/assets/xrpl-ft-transfer.a0c63e6f3e173a1c79bc84f9b991abf2778d5ff53fab780c1881dd9c1ee957b6.e9339c29.png)

Tip
After the transfer, the account balances appear on the ledger as follows:

- The balance of **Issuer** is -10 FSC
- The balance of **Holder** is +10 FSC


The token holder now owns 10 FSC, which the holder is free to hold on to, transfer to another trusted account, or trade on the DEX, as required.

For more information on trading tokens on the DEX, see tutorial [Trade fungible tokens in the XRP Decentralized Exchange](/products/custody/v1.26/resources/tutorials/xrpl-ft-trade).

## Further reading

### XRPL documentation

- Issue a Fungible Token
- Reserves


### Ripple Custody documentation

#### View account balances

- [Ripple Custody UI > Check account balances](/products/custody/v1.26/ui/accounting-entities/account/view#check-account-balances)
- [Ripple Custody API > Check account balances](/products/custody/v1.26/api/accounting-entities/account/balances#check-an-account-balance)