We spent last winter in Puerto Peñasco. Virtually every store and street vendor would take US dollars, but the exchange rate at every place except the big stores and Pemex stations varied so wildly that we paid for almost everything in pesos. Sometimes, though, the street vendors give a great exchange rate. They are more interested in making a sale than in eking a few percentage points out of the exchange.
Leys supermarket has electronic cash registers that will automatically provide the total in dollars. The ATMs in Leys supermarket in town and at the banks gave us a very good exchange rates. The ATM in Walmart gave a very poor exchange rate.
There is now a Sam's Club in town. They had signage telling how much they would take in US currency. I think it was $100. I always used my credit card there.