San Diego banks charge the second highest average fee for automated teller machine (ATM) transactions in the nation.
The average charge for an out-of-network transaction is $2.70. Bankrate.com says that's 30 cents higher than the national average. The only city with a higher average fee is Denver.
Consumer advocates believe the banks are taking advantage of their customers.
"It is kind of about making profit," said Mark Scott, a consumer advocate with the Utility Consumer's Action Network. "If it was about processing fees, then you're looking at national banks all having branches in all parts of the country and you think they'd be charging the same fee."
The city with the lowest average fee is Cleveland. The average ATM fee there is $2.06.
Consumer advocates said even that fee is too high.
"If they were much lower, I could understand there may be some costs to processing that transaction, but at the rates they're at it just seems unreasonable," said Scott.
Bankrate.com also found the percentage of fee-free checking accounts was down sharply in the past year. Only 45 percent of all checking accounts are free, down from 65 percent a year ago.