Skip to main content

Balance Transfers

Balance transfers are used to send a balance from one account to another account. To start transferring a balance, we will begin by using Polkadot-JS UI. This guide assumes that you've already created an account and have some funds that are ready to be transferred.

We support only the use of the Polkadot-JS UI

together with the browser extension, ledger and parity signer for signing transactions. We do not provide support for third party applications.

Most of the content on this page has been moved to several support pages. See the links


Signing Transactions with Parity Signerโ€‹

This information is complementary to the

If you directly import your Parity Signer account to Polkadot-JS UI, you will see a pop-up window with a QR code and a camera window, as shown below. Open the QR scanner on Parity Signer and scan the QR code. You may be prompted to enter your PIN to sign the transaction. The signed extrinsic will then be available as a QR code that needs to be shown in front of your computer's camera (as shown in the red square window shown to the right in the screenshot below).

Companion transfer

If your account was setup on Parity Signer Companion instead of Polkadot-JS UI, you will see a pop-up window with a QR code, as shown below for this transaction.

Companion transfer

Scan the QR code using Parity Signer. You will see a QR code consisting of the signed extrinsic for this transaction. Click on the next to signing button in the pop-up window, as shown above. You can then show the QR code on your phone within the red square window.

Companion transfer

Keep-Alive Checksโ€‹

In Polkadot there are two main ways to transfer funds from one account to another:

  • transfer keep-alive (default option) will not allow you to send an amount that would allow the sending account to be removed due to it going below the existential deposit of .
  • transfer will allow you to send DOT regardless of the consequence. If the balance drops below the existential deposit your account will be reaped. It may be that you do not want to keep the account alive (for example, because you are moving all of your funds to a different address). To switch the keep-alive check off visit this support article.

Attempting to send less than the existential deposit to an account with 0 DOT will always fail, no matter if the keep-alive check is on or not.

For instance, attempting to transfer 0.1 DOT to an account you just generated (and thus has no DOT) will fail, since 0.1 is less than the existential deposit of 1 DOT and the account cannot be initialized with such a low balance.


Even if the transfer fails due to a keep-alive check, the transaction fee will be deducted from the sending account if you attempt to transfer.

Existing Reference Errorโ€‹

If you are trying to reap an account and you receive an error similar to "There is an existing reference count on the sender account. As such the account cannot be reaped from the state", then you have existing references to this account that must be first removed before it can be reaped. References may still exist from:

  • Bonded tokens (most likely)
  • Unpurged session keys (if you were previously a validator)
  • Token locks
  • Existing recovery info
  • Existing assets

Bonded Tokensโ€‹

If you have tokens that are bonded, you will need to unbond them before you can reap your account. Follow the instructions at Unbonding and Rebonding to check if you have bonded tokens, stop nominating (if necessary) and unbond your tokens.

Purging Session Keysโ€‹

If you used this account to set up a validator and you did not purge your keys before unbonding your tokens, you need to purge your keys. You can do this by seeing the How to Stop Validating page. This can also be checked by checking session.nextKeys in the chain state for an existing key.

Checking for Locksโ€‹

Check out this support page to learn how to check for locks.

You can also check for locks by querying system.account(AccountId) in Chain state tab under the Developer drop-down menu in the Polkadot-JS UI. Select your account, then click the "+" button next to the dropdowns, and check the relative data JSON object. If you see a non-zero value for anything other than free, you have locks on your account that need to get resolved.

Existing Recovery Infoโ€‹

Currently, Polkadot does not use the Recovery Pallet, so this is probably not the reason for your tokens having existing references.

Existing Non-DOT Assetsโ€‹

Currently, Polkadot does not use the Assets Pallet, so this is probably not the reason for your tokens having existing references.