Sending money to a paper wallet is the easy part. Getting it out is a little more complicated. So here’s a step-by-step guide.
Below is a paper wallet containing 0.36477 BTC (at the time of this writing). The paper wallet was made with bitaddress.org, using BIP38 encryption for the private key. (To see more about creating paper wallets, read my previous post called "Creating a Bitcoin paper wallet for cold storage.")
I'm confidant the paper wallet contains the funds because I pasted that 12WwoV… address into blockchain.info, and can see the "Final Balance" – see below.
The overall process is to import the private key into Electrum, then send the complete contents of the paper wallet to another address in my wallet. This is super important: Any time you take funds from a paper wallet, you have to take out all the money. The reason has to do with change addresses and you can read more about it here. The bottom line, remove everything from a paper wallet when you want to retrieve its funds.
Decrypt the Private Key
Before I import my private key into Electrum, I need to decrypt it. For this, I use bit2factor.org. (If you're paranoid you can run it from a local copy you can download from its GitHub page.) Enter your BIP38 Passphrase (the one you used when creating the paper wallet with bitaddress.org) and paste your encrypted private key, then press the blue button.
If your passphrase is correct, the Address and Private Key fields will automatically get filled in. Notice that 12WwoV… address? That's the same address as the paper wallet – and it was able to figure that out from only the passphrase and encrypted private key. Cool! Copy the private key to your clipboard and go to Electrum.
Import Private Key into Electrum
In the screenshot above, notice how my balance is still 0 BTC. That's going to change when you import your private key and the paper wallet's funds get associated with your wallet.
Go to Wallet > Private keys > Import and click Yes on the message below.
Paste your private key into the field and press Import.
Nice! Now you can see in the screenshot above that the 12WwoV address is now in my Electrum wallet in a newly-created "Imported" section, and my bitcoin balance is now 0.36477. That's another cool thing about private keys; they contain the public key embedded within them. Ain't math cool?
Transfer the funds
Now here's something important to remember. Even though I control the addresses's private key and hence the full balance of the paper wallet, that doesn't mean it's "mine" yet. (In fact, if I visited blockchain.info and searched for the 12WwoV address, nothing will have looked different from the screenshot at the top of this article.) Your goal now is to transfer the funds to one of your Electrum wallet addresses so that it's actually "yours". Also, since you'll be transferring it to one of your Electrum addresses, it will be recoverable using your wallet generation seed. Sweet.
So first, control-click on one of your Electrum receiving addresses to copy it to your clipboard.
Then right-click on the imported address and choose "Send From."
Now, paste your receiving address in the "Pay to" field, and enter a description.
For the Amount, enter the entire contents of the paper wallet, minus a .0002 BTC transaction fee. You have to manually do this math, which is a little annoying.
Press Send, and you're all set! Now when you click on the Receive tab in Electrum, you'll see the full balance in your address, minus the .0002 mining fee.
So that's my process. There's plenty of room for improvement in terms of security (such as using Armory to sign transactions with a dedicated offline computer), but this works for me and is relatively secure assuming someone isn't hacked into my computer. (Wouldn't that be fucked up, by the way?)