Giving your checking/savings account number to someone is incredibly insecure - they can debit your account! The routing numbers are public information. How can I have an account that only accepts deposits?
A very common example is paying by check - the recipient has your checking and routing numbers. This can and has been used for fraud.
In the banking world: I've had an account with OldBank, and recently opened an account with NewBank. In order to transfer money from OldBank to NewBank (both US banks), I could either give OldBank my NewBank login details (no, thanks), or verify two deposits < $1. Standard procedure.
The problem is that OldBank wanted my savings account #, and the routing number of NewBank (the latter being public information). I gave those and verified the two deposit amounts. Great. But then I saw that OldBank also withdrew an amount equal to the sum of those two <$1 amounts - which means OldBank can withdraw money from my NewBank account at any time.
That is not what I want. Coming from the Bitcoin world, the bank situation is incredibly insecure. With Bitcoin (or any other cryptocurrency), you give the world your public receiving address, and keep your private withdrawal key. Anyone can deposit money into your account, but only you can withdraw. This makes perfect sense to me.
Is there an equivalent for banks in the US, or is the state of bank transfer security situation as ridiculous as the one with checks?
Are there US banks that allow designating accounts as "external entities can only deposit"?
How about foreign banks?