Official exchange rates are only recognized at banks and ATM's.
Not even there. What one usually sees quoted online is the interbank rate, which you'll only get if you're exchanging millions (of dollars). Otherwise, you get a lower rate that includes a spread that provides profit to the middleman. When you look up exchange rates online or use an exchange app, it's reasonable for small amounts (lunch, that cute purse), but for large amounts you should reduce your rate by a couple of decimal points. This makes a big difference for large exchanges. For example, the cost to you of that 3.5 million peso house when the quoted exchange rate is 12.9 is probably going to be at least USD$4-5,000 higher than you'd think just going by that rate.
Just as with taxis, banks can charge whatever they want for exchange when you convert money at the teller or withdraw foreign currency from an ATM.