Krazriko and Kruncha- Thanks very much for your understanding and input. Whenever we deal with Private Keys, nothing is sent or seen over the internet. Regarding the generation of your Private Keys, this is done on a page using client-side javascript and is
never revealed online or transmitted in any way. Your Private Key is in fact not seen online, or by us. For someone to get into the system you referred to (the client-side webpage where you enter your Private Key), they would have to be hacked into your individual computer and watching what you were typing. When you want to create a transaction, you do enter the Private Key on your computer on the client-side webpage, and when you click submit the Private Key is not submitted- ONLY the transaction string and other public information, like your public Bitcoin Address as well as that of the recipient.
The webpage, including the java-script program, is sent over the internet onto the user's computer- and then, on the user's computer the Private Key is generated. However, if you're paranoid, once you clicked on the "Create Paper Vault" page, you could immediately disconnect your ethernet or wifi. You could even save the page, go offline, load the saved page and generate new keys. There really is no need for that, but if it makes you feel better then I guess it works
If they're online, code could be built in to send that key. You'd want someone to be able to verify that this isn't happening. The going offline method would be one way to do it, but there's always the possibility that the page they downloaded had some sort of back door. It would be nice to have some additional assurance, or some independent verification of that javascript program. Also, that still leaves you with the possibility that their system is hacked, and thus that private key would be available to those who hacked it. The same risk that you have with any other bitcoin wallet on their computer. (Though, slightly less as they would have to be hacked before they make the key, and they wouldn't be able to get it afterward unless it was stored in their caches somewhere.)
Furthermore, you don't have to send the whole contents of your Paper Wallet to your Active Wallet when you want to access your Bitcoins. You can choose exactly how much you want to send to the Active Wallet. I hope I addressed that concern, I had to contact one of our programmers to double-check that my reasoning was correct.
That's true, you could do it that way, but you're opening yourself up to having the rest of the balance stolen if you don't use the entire balance. That's because every time they use that paper wallet, if the device they use it with is compromised then the private key will have been stolen. The only way to be sure that isn't the case is to dump the remaining funds into a new one that has never touched an online computer. Though, this is getting into the slightly more paranoid aspects of paper wallet security.
Only close-to-unhackable way is to use a OS image that has never been online to generate the wallet, then only use the private key for each wallet once. Then you're only worrying about weaknesses in the wallet generation software and OS that is used, and the security of those pieces of paper. That would take a much more sophisticated hack. (Similar to the one I was discussing above with verifying the javascript program independently)
Though, it does make me wonder. You're getting your 0.0001 fee per wallet generated, how do you enforce that? Do you just charge that per public key added to your system?