Disaster Recovery
Learn how to recover access to your vault if signing devices or credentials have been lost. Step-by-step guide including tool download, integrity check, and wallet recovery.
| This article is relevant for all io.vault and io.network subscriptions. |
Responsibility
Before you start
Recovery tool
- Browser UI mode
- CLI mode (Terminal)
Next steps after disaster recovery
Troubleshooting
Responsibility
Each user is responsible for maintaining the following for each of their registered signers:
- Their signer passphrase or PIN — stored securely at the time of device registration
- An up-to-date encrypted backup file — downloaded after every vault creation, reshare, or signing configuration change
- Their 24-word seed phrase — stored offline in a physically secure location
If any of these is missing when access is lost, recovery may not be possible. For full setup guidance, see the Backup & Recovery Setup article or our FAQs
When to use this process
Use this process only when you cannot withdraw funds from a vault because you are unable to generate a signed transaction through the io.vault app. This may happen due to:
- Critical software malfunction
- Malicious DDOS attack
- Service shutdown
- Critical loss of access to signing devices or user secret shares
- Compromise of a signer that requires re-creation of the vault
First: identify your scenario
Before starting the full DR process, check which scenario applies to you:
| A | Device lost — cloud sync active + passphrase known Download the app on a new device, log in, select Restore Signer, and enter your signer passphrase. No further steps needed. |
| B | Device lost — passphrase unknown, but threshold still reachable If remaining devices hold enough shares to meet the vault threshold, create a reshare request to issue new shares to a newly registered device. |
| C | Threshold not reachable, or io.vault service unavailable Full offline disaster recovery is required. Follow the steps below. |
Before you start
Have these ready before running any command: your backup file(s) — one per device registered under your email — and the 24-word seed phrase for each device. If you have multiple email addresses, zip all backup files from all accounts into a single folder first.
The person running the recovery tool will obtain the full private key and have complete access to the vault's assets. Only a trusted operator should run this process.
Downloading the disaster recovery backup file
If you require to further back up your disaster recovery file, the following steps need to be completed:
- Open the mobile app and log in
- Once logged in, click on the settings button at the top right-hand corner of the app
- Select “Download encrypted backup file” and then “Continue”
- Specify the file name, select the destination you would like to save the file and then select “Save”
- Verify that file was successfully saved to the selected location (preferably on the cloud)
Warning: For reliable disaster recovery, always back up your files to the cloud instead of storing them directly on the device. This way, if the handset is lost, you can easily access and recover your backup without needing the physical phone
Re-exporting your 24-word seed phrase
If you need to re-export your 24-word seed phrase while your signer is still active and accessible:
- Open the io.vault app and log in
- Tap the Settings icon in the top right-hand corner
- Tap "Export disaster recovery info again"
- Write down the 24-word phrase displayed and store it securely offline — never digitally
Recovery tool — two modes:
The io.finnet recovery tool can be run in two ways:
- Browser UI mode (coming soon): a visual interface launched with ./recovery-tool -web. Recommended for users less comfortable with the terminal.
- CLI mode (terminal): detailed steps below. Use this if you are comfortable with the command line.
1. Browser UI mode
A browser UI version of this process is also available. For the visual interface guide, refer to docs.iofinnet.com.
2. CLI MODE (Terminal)
A.Recover your private key
Step 1 Download the recovery tool
Download the correct binary for your operating system from the GitHub releases page.
- Apple Silicon Mac (M1/M2/M3): recovery-tool-mac
- Linux / FreeBSD: recovery-tool-linux
- Windows (x86-64): recovery-tool.exe
- Intel Mac or other platforms: build from source — see Troubleshooting below
Not sure which Mac you have? Click the Apple logo > About This Mac. It will show "Intel" or "Apple M1/M2/M3".
Step 2 Open your terminal
Open Terminal (macOS / Linux) or Command Prompt / PowerShell (Windows) and navigate to the folder where you downloaded the recovery tool:
cd ~/Downloads
For more help refer to the Apple Terminal Guide or Windows Command Prompt guide.
Step 3 Verify the integrity of the downloaded file
Compare the output with the SHA256 hash published on the GitHub releases page:
- macOS:
shasum -a 256 recovery-tool-[XX-VERSION].tar.gz - Linux / FreeBSD:
sha256sum recovery-tool-[XX-VERSION] - Windows (PowerShell):
sha256sum recovery-tool-[XX-VERSION]
If hashes match — the file is authentic and safe to use. If they do not match — re-download and restart from the beginning.
Step 4 Extract and allow permissions
Extract the tool: tar -xvzf recovery-tool-[XX-VERSION].tar.gz
Make it executable: chmod +x recovery-tool-mac
If you see a macOS security popup, go to System Settings > Privacy & Security and click Allow Anyway, then try again.
Step 5 Run the recovery tool
Replace [Backupfilename] with the name of your backup ZIP file. Wrap filenames in quotes if they contain spaces.
- Mac:
./recovery-tool-mac [Backupfilename].zip - Linux:
./recovery-tool-linux [Backupfilename].zip - Windows:
recovery-tool.exe [Backupfilename].zip
Your backup ZIP contains one .json file per device registered under the email address used.
Step 6 Enter the 24-word seed phrase
The tool will request the 24-word seed phrase for each device. Enter the words separated by a single space, then press Enter. Repeat for each signer device.
After all phrases are entered, the tool will attempt to reconstruct the private key(s). The output shows (x/y) — signing power vs threshold. If signing power is equal to or greater than the threshold, the vault can be restored. If not, ensure all backup files are included in the zip.
The tool will attempt to auto-detect the correct nonce and threshold. If unsuccessful, proceed to the next step.
Step 7 Re-run with vault details if needed
If the tool cannot auto-detect vault parameters, re-run with explicit values:
./recovery-tool-mac -vault-id YOURVAULTID -nonce [NONCE] -threshold [THRESHOLD] [Backupfilename].zip
- Vault ID: found in the dashboard URL — https://app.iofinnet.com/vaults/YOURVAULTID
- Nonce: vault creation = 0, each reshare increments by 1
- Threshold: available in vault settings on the dashboard
If successful, the tool displays a success message and outputs the private keys. If failed, check that the backup filename is correctly quoted, the 24-word phrases were entered correctly for each device, the correct vault was selected, and all signers' backup files are included in the zip.
B. Reallocate your asset
Before proceeding: confirm with the Customer Office that the recovered address matches the vault address shown in your dashboard.
Bitcoin (BTC) — Electrum Wallet
- Download and install Electrum Wallet for your operating system
- Accept the Terms of Use
- Enter a name for the wallet you are importing
- Select "Import Bitcoin addresses or private keys"
- Prefix the private key with
p2wpkh:then paste it — example:p2wpkh:yourprivatekeyhere - Set a password to encrypt your wallet if prompted
- Your wallet transaction history and balance will appear
- You may keep assets in Electrum or transfer them to a new io.finnet vault
Testnet: if recovering a testnet key (tb1 prefix), run Electrum with the --testnet flag. On Mac: open -n /Applications/Electrum.app --args --testnet
Ethereum & EVM-compatible assets — MetaMask
- Open the MetaMask app (mobile) or browser extension
- Click your profile icon and select "Add account", then "Import account"
- Ensure "Private Key" is selected
- Paste the private key provided by the recovery tool
- The imported account will appear with its associated assets
- You may keep the assets in MetaMask or transfer them to a new io.finnet vault to restore the MPC security layer
Tron (TRX) — TronLink
- Open TronLink app or browser extension
- Select "Import Wallet"
- Paste the private key output by the recovery tool
- Name your wallet and select assets to import
- You may keep assets in TronLink or transfer them to a new io.finnet vault
Solana (SOL),
Use your recovered EdDSA private key to recover Solana assets. This process requires npm functionality in your terminal.
1. Check if Node.js is installed
From your Downloads folder, run: node -v
If a version is displayed, Node.js is installed. If command not found is displayed, go to nodejs.org, install it, then restart your terminal.
2. Run the Solana tool
The Solana tool is a separate script included in the recovery tool package. Navigate to its directory, install dependencies, and run it:
cd ~/Downloads/io-vault-disaster-recovery-cli/scripts/solana-tool npm install npm start
The Solana Transfer Tool will start.
If Node.js was just installed, restart your terminal before running the above commands.
3. Manage your SOL assets
You will be prompted to:
- Choose the network — Mainnet is used for real environments
- Input your private key — for Solana (EdDSA asset type), paste the private key obtained in Part A. The tool will display the derived Solana address, which must match the Solana public address shown in Part A.
- Check balance [y/n] — note you will not be able to send the entire balance
- Send SOL [y/n] — enter the destination address (must be a valid Solana address), enter the amount, and confirm the transaction [y]
The tool will display the sender address, receiver address, amount and network. Confirm broadcast of the transaction [y].
If you see: Error fetching recent blockhash: failed to get recent blockhash: TypeError: fetch failed — open a new terminal tab (without closing the current one) and run:curl -s https://api.mainnet-beta.solana.com \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"getLatestBlockhash"}'Copy the displayed blockhash and paste it into the running Solana tool. Use Solana Explorer to verify the transaction on-chain. The result will always display a transaction signature and transaction URL.
Ripples (XRP)
Use your recovered EdDSA private and public key to recover XRP assets. This process requires npm functionality.
1. Check if Node.js is installed
You may skip this step if Node.js was already installed for Solana recovery. Otherwise, follow the same installation steps as above.
2. Run the XRPL tool
The XRPL tool is a separate script included in the recovery tool package:
cd ~/Downloads/io-vault-disaster-recovery-cli/scripts/xrpl-tool npm install npm start
The XRP Transfer Tool will start.
Restart your terminal if Node.js was just installed.
3. Manage your XRP assets
You will be prompted to:
- Confirm the network — Mainnet is used for real environments
- Input your keys — for XRP (EdDSA asset type), first paste the public key, then the private key obtained in Part A. The displayed wallet address must match the XRP address shown in Part A.
- Check balance [y/n] — note you will not be able to send the entire balance
- Send XRP [y/n] — the destination address must be a valid XRP address and already hold at least 1 XRP, which is required by the XRP Ledger to create and maintain an account. Enter the amount and confirm the transaction [y].
On the XRP Ledger, every account must keep a minimum reserve of 1 XRP.
The tool will display the transaction details while preparing the transfer. Confirm broadcast of the transaction [y].
Troubleshooting
Permission denied error
Run the following command then retry:
chmod +x recovery-tool-mac
Security popup on macOS
- Go to System Settings > Privacy & Security
- Click "Allow Anyway" next to the recovery tool
- Try running the tool again
Bad CPU type error (Mac only)
The precompiled binary only supports Apple Silicon. Run uname -m to check — x86_64 = Intel. Intel Mac users must build from source:
- Download and install Go from go.dev
- Restart your terminal
cd ~/Downloads git clone https://github.com/IoFinNet/io-vault-disaster-recovery-cli.git cd io-vault-disaster-recovery-cli GOARCH=amd64 go build -o recovery-tool-mac
Verify the binary exists:
ls -lh recovery-tool-mac
If you see ls: recovery-tool-mac: No such file or directory — you are in the wrong folder, or the build did not complete. Restart from the clone step.
Then move your backup zip into the same folder and return to the Run step in Part A.
Recovery file does not work
- Ensure you are using the most recently exported version of the file
- Verify all recent vault changes occurred before the last export
- Check all signers' backup files are included in the zip
- Contact support if the issue persists
Need help?
Contact us at customer@iofinnet.com or submit a support request via the Help Center.