Recovering CELO from an Ethereum Address

In this guide, steps are outlined to help you recover your CELO (previously Celo Gold) if you accidentally transferred them to an Ethereum address.


This guide assumes that you have access to the following:

There are risks associated with using a recovery phrase or a private key. Please do not share them with anyone else.


Please follow the instructions below closely, because missteps can lead to errors or permanent loss of your tokens. To understand these steps, please read What is Ethereum and Celo Overview.

Prepare your recovery phases

Write your recovery phrase to a file using the following commands:

  1. nano recovery.txt

  2. Paste <word1> <word2> … <word24>

  3. Replace the <word>s in brackets with the 24 words from your recovery phrase

  4. Press ctrl-o to save

  5. Press ctrl-x to exit

Recover your Ethereum address on Celo

Recover your Ethereum address on the Celo network:

celocli account:new --indexAddress 0 --mnemonicPath recovery.txt --derivationPath "m/44'/60'/0'/0" --node

This command will return you with:

  • accountAddress: the same address as your Ethereum address

  • privateKey: the private key associated with your address -- please record this private key on paper and not share with anyone else

  • publicKey: the public key associated with your address

Check your CELO balanace

Check your Celo account balance using this command:

celocli account:balance <accountAddress> --node

Replace <accountAddress> with the accountAddress you got from the previous step.

Transfer CELO

Now, you can transfer your CELO to an address of choice:

celocli transfer:celo --from <accountAddress> --to <addressOfChoice> --value <valueInCeloWei> --privateKey <privateKey> --node
  • Replace <accountAddress> with the accountAddress you got from the previous step.

  • Replace <addressOfChoice> with the address that you want to send CELO to.

  • Replace <valueInCeloWei> with the amount you want to send, but this number needs to be slightly lower than your balance, as there’s a transaction fee.

Note that the value has a unit of CELO Wei (1 CELO = 10^18 CELO Wei), so if you want to send 1 CELO, the <valueInCeloWei> should be 1000000000000000000.