I used my Schwab card, recommended by other posters, in a Davivienda ATM today.
I withdrew 1,000,000 COP. They generously offered me a rate of 4010 COP/USD. I declined, as recommended by other posters. After a short wait, filled with various mechanical noises, I removed my pesos from the ATM. I checked my Schwab account and found that I was charged $234.26 USD for my pesos. That comes out to 4269 COP/USD, if I did the math correctly. I might get a few dollars back later on.
I have no idea why Davivienda does withdrawals this way but thanks to the people who recommended this method.