XRP Ledger Transfer Fees

Beyond the network transaction fee, issuers of tokens on the XRP Ledger can optionally charge transfer fees — a percentage taken when their issued currency changes hands.

What Are Transfer Fees?

Transfer fees are optional percentage fees that token issuers set on the XRP Ledger. When a user transfers a token to another address, the issuer's transfer fee is automatically deducted. Importantly, XRP itself never has a transfer fee because XRP has no issuer.

How Transfer Fees Work

Transfer fees work backwards from the delivery amount. If ACME Bank sets a 1% transfer fee on their EUR stablecoin, and Alice wants to send Charlie 100 EUR.ACME, Alice must send 101 EUR.ACME. The extra 1 EUR.ACME is burned (destroyed) on the ledger. ACME's outstanding obligations decrease by 1€, reducing the backing they need to hold.

Transfer Fee Limits

The maximum transfer fee is 100% (a TransferRate value of 2,000,000,000), established after the fix1201 amendment in November 2017. The minimum is 0% (no fee). Transfer fees that were set above 100% before that amendment still apply at their stated rate for existing balances.

Transfer Fees and NFTs

Non-fungible tokens (NFTs) on the XRP Ledger can also have transfer fees, but the mechanism works differently from fungible token transfers. NFT transfer fees are paid in XRP to the NFT's original minter, rather than being burned. Consult the XRPL documentation for NFT-specific transfer fee details.

When Transfer Fees Don't Apply

Transfer fees do not apply when sending or receiving directly to and from the issuing account. If Alice sends EUR.ACME directly back to ACME Bank (the issuer), no transfer fee is charged. The fee only applies when moving tokens between non-issuing accounts.

Setting a Transfer Fee

Issuers set the TransferRate field using an AccountSet transaction. The value represents the fee as a rational number scaled to 1,000,000,000. A 0.5% fee = 1,005,000,000. Use the xrpl.percentToTransferRate() utility in xrpl.js to convert percentages to the correct TransferRate integer.

Leave a Comment