{"templateId":"markdown","versions":[{"version":"v1.39","label":"v1.39 STS","link":"/products/custody/accounts-and-assets/tokenization/ledger-specific/issue-xrpl-fungible-token","default":true,"active":true,"folderId":"c15a2701"},{"version":"v1.38","label":"v1.38 STS","link":"/products/custody/v1.38/accounts-and-assets/tokenization/ledger-specific/issue-xrpl-fungible-token","default":false,"active":false,"folderId":"c15a2701"},{"version":"v1.34","label":"v1.34 LTS","link":"/products/custody/v1.34/accounts-and-assets/tokenization/ledger-specific/issue-xrpl-fungible-token","default":false,"active":false,"folderId":"c15a2701"},{"version":"v1.26","label":"v1.26 LTS","link":"/products/custody/v1.26/accounts-and-assets/tokenization/ledger-specific/issue-xrpl-fungible-token","default":false,"active":false,"folderId":"c15a2701"},{"version":"v1.19","label":"v1.19 LTS","link":"/products/custody/v1.19/accounts-and-assets/tokenization/ledger-specific/issue-xrpl-fungible-token","default":false,"active":false,"folderId":"c15a2701"},{"version":"v1.15","label":"v1.15 LTS","link":"/products/custody/v1.15/accounts-and-assets/tokenization/ledger-specific/issue-xrpl-fungible-token","default":false,"active":false,"folderId":"c15a2701"}],"sharedDataIds":{"sidebar":"sidebar-products/custody/@v1.15/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition"]},"type":"markdown"},"seo":{"title":"Issue fungible tokens on the XRP Ledger","description":"User guides, API reference, and support resources.","siteUrl":"https://docs.ripple.com","lang":"en-US","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"issue-fungible-tokens-on-the-xrp-ledger","__idx":0},"children":["Issue fungible tokens on the XRP Ledger"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Fungible tokens are issued on the XRP Ledger when an owner account distributes the tokens to other, trusted accounts."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In this tutorial you'll learn how to issue stablecoin tokens on the XRP Ledger with ","Ripple Custody","."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"learning-objectives","__idx":1},"children":["Learning objectives"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["By the end of this tutorial, you should be able to:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Create a token issuer account and mint tokens."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Link the issuer account to trusted holder accounts."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Issue tokens on the XRP Ledger."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Describe the difference between authorized and unauthorized transfers."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Understand reserves and balances in ","Ripple Custody"," and on the XRP Ledger."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"issue-tokens--flow","__idx":2},"children":["Issue tokens — flow"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The workflow to issue fungible tokens on the XRP Ledger is as follows:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Create an issuer account"]}," — Create a new account on the XRP Ledger to issue the tokens and fund the account with native currency."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Mint the token"]}," — Register and validate a token asset."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Create a holder account"]}," — Create a new account on the XRP Ledger to hold the tokens and fund the account with native currency."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Link the issuer and holder accounts"]}," — Create a trust line between the issuer and holder accounts."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Issue some tokens"]}," — Send tokens from the issuer to the holder account."]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"issue-tokens---instructions","__idx":3},"children":["Issue tokens - instructions"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"create-an-xrpl-issuer-account","__idx":4},"children":["Create an XRPL issuer account"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Create account ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Issuer"]}," and fund it with enough XRP to cover the transactions and reserves."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The XRP Ledger has some specific requirements in terms of reserved amounts for accounts. For more information, see ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://xrpl.org/docs/concepts/accounts/reserves","target":"_blank"},"children":["Reserves"]}," in the XRPL documentation."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To create a new account:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["With the UI, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/accounts-and-assets/accounts/manage-accounts-ui#create-an-account-in-the-ui"},"children":["Create an account in the UI"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["With the API, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/accounts-and-assets/accounts/manage-accounts-api#create-an-account-with-the-api"},"children":["Create an account with the API"]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To fund the account:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["With the UI, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/transactions/send-and-receive/receive-assets-ui"},"children":["Ripple Custody UI > Receive assets"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["With the API, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/transactions/send-and-receive/receive-assets-api"},"children":["Ripple Custody API > Receive assets"]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"/assets/xrpl-ft-issuer.81b8b1652789db369b6a7ef407044d2d4945be5a3b5e4d5f41fa77ca60710dd1.256af345.png","alt":""},"children":[]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Tip"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For more information about the different types of account balances in ","Ripple Custody",", see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#view-account-balances"},"children":["View account balances"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"optional-update-the-account-to-require-authorization","__idx":5},"children":["(Optional) Update the account to require authorization"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If required, update the issuer account settings to require authorization, that is, the account needs an ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["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 ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#link-the-issuer-and-holder-accounts-with-a-trust-line"},"children":["Link the issuer and holder accounts with a trust line"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To update the account settings:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["With the UI, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/accounts-and-assets/accounts/ledger-specific-settings/xrpl-ui"},"children":["Ripple Custody UI > Update XRPL account settings"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["With the API, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/accounts-and-assets/accounts/ledger-specific-settings/xrpl-api"},"children":["Ripple Custody API > Update XRPL accounts settings"]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"mint-the-token","__idx":6},"children":["Mint the token"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Register and validate a new token asset with currency code ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["FSC"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"register-a-stablecoin-token-asset-for-the-issuer-account","__idx":7},"children":["Register a stablecoin token asset for the issuer account"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To add a token:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["With the UI, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/accounts-and-assets/tokenization/token-management/ui/add-custom-token"},"children":["Add tokens (UI)"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["With the API, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/accounts-and-assets/tokenization/token-management/api/add-custom-token"},"children":["Add tokens (API)"]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"allowlist-the-token","__idx":8},"children":["Allowlist the token"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To allowlist the token:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["With the UI, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/accounts-and-assets/tokenization/token-management/ui/allowlist-token"},"children":["Allowlist tokens (UI)"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["With the API, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/accounts-and-assets/tokenization/token-management/api/allowlist-token"},"children":["Allowlist tokens (API)"]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"/assets/xrpl-ft-issue-asset.f3f2a1376fdadef200d5218d557bc9fcac700e31fa28109aef2a8be872577f37.256af345.png","alt":""},"children":[]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Decimals"]}," is always automatically set to 81 and you can't update it."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For more information, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/accounts-and-assets/tokenization/ledger-specific/xrpl-api#xrpl-token-decimals-and-amounts"},"children":["XRPL token decimals and amounts"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"create-an-xrpl-holder-account","__idx":9},"children":["Create an XRPL holder account"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Create account ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Holder"]}," and fund it with XRP, in the same way as the issuer account in ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#create-an-xrpl-issuer-account"},"children":["Create an XRPL issuer account"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"/assets/xrpl-ft-holder.7e48d6fbf6105b4e4ea02f8f8d370d3d518fc10de7317910c6f3f5bb89e8eeb3.256af345.png","alt":""},"children":[]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"link-the-issuer-and-holder-accounts-with-a-trust-line","__idx":10},"children":["Link the issuer and holder accounts with a trust line"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Create a trust line between ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Issuer"]}," and ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Holder"]},", to enable the issuer account to transfer FSC tokens to the holder account."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If you updated ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Issuer"]}," to require authorization in ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#optional-update-the-account-to-require-authorization"},"children":["(Optional) Update the account to require authorization"]},", you need to create an ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["authorized"]}," trust line."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To create a trust line:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["With the UI, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/accounts-and-assets/tokenization/ledger-specific/xrpl-ui#create-a-trust-line"},"children":["Ripple Custody UI > Create a trust line"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["With the API, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/accounts-and-assets/tokenization/ledger-specific/xrpl-api#create-a-trust-line"},"children":["Ripple Custody API > Create a trust line"]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To create an authorized trust line:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["With the UI, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/accounts-and-assets/tokenization/ledger-specific/xrpl-ui#create-an-authorized-trust-line"},"children":["Ripple Custody UI > Create an authorized trust line"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["With the API, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/accounts-and-assets/tokenization/ledger-specific/xrpl-api#create-an-authorized-trust-line"},"children":["Ripple Custody API > Create an authorized trust line"]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The following image shows the creation of an authorized trust line:"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"/assets/xrpl-ft-issue-trustline.faaeeb26b127acf5629b47c3de50297b02d5ad8cc951d5dfcba3de37e2f992cd.256af345.png","alt":""},"children":[]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"issue-some-tokens","__idx":11},"children":["Issue some tokens"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Transfer 10 FSC from ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Issuer"]}," to ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Holder"]}," with a transfer order."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The number of tokens you can transfer is limited by the trust line ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Limit"]}," amount."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To transfer tokens:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["With the UI, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/transactions/send-and-receive/send-assets-ui"},"children":["Ripple Custody UI > Send assets"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["With the API, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/transactions/send-and-receive/send-assets-api"},"children":["Ripple Custody API > Send assets"]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The resulting transaction is shown below:"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"/assets/xrpl-ft-transfer.a0c63e6f3e173a1c79bc84f9b991abf2778d5ff53fab780c1881dd9c1ee957b6.256af345.png","alt":""},"children":[]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Tip"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["After the transfer, the account balances appear on the ledger as follows:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The balance of ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Issuer"]}," is -10 FSC"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The balance of ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Holder"]}," is +10 FSC"]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"success"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["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."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For more information on trading tokens on the DEX, see tutorial ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/accounts-and-assets/tokenization/ledger-specific/trade-xrpl-fungible-token"},"children":["Trade fungible tokens in the XRP Decentralized Exchange"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"further-reading","__idx":12},"children":["Further reading"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"xrpl-documentation","__idx":13},"children":["XRPL documentation"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://xrpl.org/docs/tutorials/how-tos/use-tokens/issue-a-fungible-token","target":"_blank"},"children":["Issue a Fungible Token"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://xrpl.org/docs/concepts/accounts/reserves","target":"_blank"},"children":["Reserves"]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"ripple-custody-documentation","__idx":14},"children":["Ripple Custody documentation"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"view-account-balances","__idx":15},"children":["View account balances"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/accounts-and-assets/accounts/manage-accounts-ui#check-account-balances"},"children":["Check account balances"]}]}]}]},"headings":[{"value":"Issue fungible tokens on the XRP Ledger","id":"issue-fungible-tokens-on-the-xrp-ledger","depth":1},{"value":"Learning objectives","id":"learning-objectives","depth":2},{"value":"Issue tokens — flow","id":"issue-tokens--flow","depth":2},{"value":"Issue tokens - instructions","id":"issue-tokens---instructions","depth":2},{"value":"Create an XRPL issuer account","id":"create-an-xrpl-issuer-account","depth":3},{"value":"(Optional) Update the account to require authorization","id":"optional-update-the-account-to-require-authorization","depth":4},{"value":"Mint the token","id":"mint-the-token","depth":3},{"value":"Register a stablecoin token asset for the issuer account","id":"register-a-stablecoin-token-asset-for-the-issuer-account","depth":4},{"value":"Allowlist the token","id":"allowlist-the-token","depth":4},{"value":"Create an XRPL holder account","id":"create-an-xrpl-holder-account","depth":3},{"value":"Link the issuer and holder accounts with a trust line","id":"link-the-issuer-and-holder-accounts-with-a-trust-line","depth":3},{"value":"Issue some tokens","id":"issue-some-tokens","depth":3},{"value":"Further reading","id":"further-reading","depth":2},{"value":"XRPL documentation","id":"xrpl-documentation","depth":3},{"value":"Ripple Custody documentation","id":"ripple-custody-documentation","depth":3},{"value":"View account balances","id":"view-account-balances","depth":4}],"frontmatter":{"seo":{"title":"Issue fungible tokens on the XRP Ledger"}},"lastModified":"2026-08-04T20:25:11.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/products/custody/accounts-and-assets/tokenization/ledger-specific/issue-xrpl-fungible-token","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}