Skip to main content
Find answers to common questions about Borrow Recovery, its features, and how to use it safely.

General Questions

Borrow Recovery is a recovery UI for discovering and operating EVM ZeroDev Kernel loan wallets if Sats Terminal ceases to exist or the hosted service is unavailable.It’s a frontend-only application that:
  • Has no backend signer
  • Has no database
  • Has no paymaster abstraction
  • Requires all signatures to happen in your connected wallet
The app allows you to:
  • Derive deterministic ZeroDev Kernel v3.3 smart account addresses from your EOA + wallet index
  • Scan index ranges across chains to find deployed loan wallets
  • Read balances and loan data from Aave and Morpho
  • Submit rescue actions through ERC-4337 UserOperations
Scope: EVM loans only. Solana loans are not supported.
Borrow Recovery currently supports the following EVM chains:
  • Ethereum (Chain ID: 1)
  • Base (Chain ID: 8453)
  • Arbitrum (Chain ID: 42161)
  • BNB Chain (Chain ID: 56)
All chains use ZeroDev Kernel v3.3 smart accounts with EntryPoint v0.7.
Borrow Recovery supports the following lending protocols:Aave V3:
  • Full support for reading positions and executing rescue actions
  • Available on all supported chains
  • Actions: Repay debt, Withdraw collateral
Morpho Blue:
  • Full support for reading positions and executing rescue actions
  • Market ID: 0x9103c3b4e834476c9a62ea009ba2c884ee42e94e6e314a26f04d312434191836
  • Actions: Repay debt, Withdraw collateral
Additional actions:
  • Transfer collateral token balances out of the loan wallet
No. Never paste or type private keys into Borrow Recovery.Here’s the correct workflow:
  1. Export your private key from the Sats Terminal dashboard
  2. Import that private key into MetaMask, Rabby, or another EIP-1193 compatible wallet
  3. Connect that imported wallet to the Borrow Recovery UI using the wallet connection button
Private keys should only be imported into your wallet application, never pasted into web applications.
A wallet index (also called wallet ID) is a number used to deterministically derive your loan wallet address from your EOA (Externally Owned Account).
  • Each index generates a unique ZeroDev Kernel smart account address
  • You receive this wallet ID in the loan activation email when your loan is completed
  • If you don’t know your wallet index, use the /scan page to discover it
  • You can scan up to 2,000 indices per scan
  • Once you know the index, you can navigate directly to /wallet/<wallet-id> (e.g., /wallet/12)
A ZeroDev Project ID is required to submit rescue UserOperations (transactions) through the ERC-4337 bundler infrastructure.You need it for:
  • Executing repay actions
  • Executing withdraw actions
  • Transferring tokens from the loan wallet
You don’t need it for:
  • Connecting your wallet
  • Scanning for wallet indices
  • Viewing loan positions and balances
How to get one:
  1. Go to https://dashboard.zerodev.app/projects/general and sign in
  2. Open your project (or create one if none exists)
  3. Copy the Project ID from the top-right of the project page
Alternatively, you can paste a full bundler RPC URL instead of just the Project ID.
If your loan wallet doesn’t have enough native gas tokens, rescue actions will fail.To fix this:
  1. Copy the loan wallet address from the /wallet/<index> page
  2. Send native gas tokens to that address from another wallet:
    • Ethereum: ETH
    • Base: ETH
    • Arbitrum: ETH
    • BNB Chain: BNB
  3. Wait for the transaction to confirm
  4. Reload positions to verify the gas balance
  5. Execute your rescue action
No API key is required for reading positions onchain. Gas is only needed when executing rescue actions.
Yes, but it’s optional. WalletConnect support requires setting a project ID:
  1. Get a WalletConnect Project ID from https://cloud.walletconnect.com/
  2. Add it to your .env.local file:
    NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID=your_walletconnect_project_id
    
If you don’t set this, injected wallets (MetaMask, Rabby, etc.) will still work normally.
Repay actions send 2 separate UserOperations:
  1. Approve: Approves the repay token to the lending pool
  2. Repay: Executes the actual repay transaction
Important notes:
  • When using “Repay all”, keep a little extra loan token in the wallet
  • Interest accrues in real time, so debt increases slightly before execution
  • Consider adding 0.5-1% extra to account for accrued interest
  • You’ll need to sign both UserOperations in your wallet
Withdraw actions send 1 UserOperation to withdraw collateral from the lending protocol.
  • You can choose to withdraw all collateral or a custom amount
  • Ensure the withdrawal won’t leave your position unhealthy (if you still have debt)
  • The collateral will be withdrawn to your loan wallet address
  • After withdrawing, use the “Transfer all to connected wallet” button to move tokens to your EOA

Build docs developers (and LLMs) love