I know it's my fault for not balancing my account, but jeez. Can they do that? Obviously they can and did, but do I have any recourse?
ETA: Thaaaanks, guys! Y'all are awesome. I called the bank and they agreed that 3 weeks is a bit of a delay for transactions that are supposed to be instant. They credited me the $20 fee and also $6.44 since I've been banking there for a decade and have never been overdrawn before.