<p>You know those websites that let you type in your checking account number and the routing number, and then they can transfer money to and from your account?</p>

<p>How does that work?  Any good services or APIs for doing that?  Any gotchas?</p>

The banks do have APIs for doing this, but only approved people/companies are allowed to interface with these systems.  Because it actually involves transferring money around, the security requirements are pretty high in terms of how you handle the account numbers on your system.
Many sites that offer this feature for buying goods actually use a third party system to handle the actual money transfer into their account.   This lowers the amount of trouble to implement the API, as well as putting the burden of security on the third party handling the money transfers.
If you are serious about setting up a system where you can accept bank account numbers, and exchange funds, you should contact your bank, and see what the actual requirements for implementing such a system.  Each bank has their own system, along with their own rate regarding the cost of these transactions.
Some third parties I'm aware of are
Moneris
Cactus
Beanstream
I'm in Canada, although I think Moneris and Cactus operate in the US.  I think Beanstream doesn't.  Again, you can talk to your bank, and they can probably get you in touch with a third party who will help you with the transactions.