ahlatimer gave you the southern perspective, and for the Canadian side, my experience says that a store will take your foreign currency at (approximately) the exchange rate, but you'll get local currency as change. As you get further from the border, a vendor will still take your funny money, but "at par": my $20 U. S. buys me $20 Canadian in goods. Which currently means I, a holder of U. S. currency, get screwed by 28%. That's the penalty for not finding a Canadian ATM or using a credit card.
On the U. S. side, it would appear, according to signs at the cash registers, that many U. S. vendors work in a similar manner. The registers signs disappear within tens of miles of the border.