Can any American bank or bitcoin exchange that offers ACH send me money in canada to my USD account?
While there is a type of ACH transaction that can be used internationally, both Bit-Pay and the Canadian bank would need to support that specific type of transaction. I'm not sure how often this international ACH is supported but I don't see much on it. You'ld first need to check with your bank to see that they would handle it, and what the fee for doing so would be.
Because payments through Bit-Pay can be kept as bitcoins and withdrawn without a conversion to fiat, your best bet might be to do something like cash out to a reloadable (USD) debit card which accepts bitcoins for reloading (such as the one offered by OKPay) or by ACH direct deposit (e.g., American Express Prepaid Card or Western Union prepaid card). You would then access those funds on the card at an ATM or when spending.
If the amounts received are large enough, then you can trade your bitcoins at a BTC/USD market, and then withdraw by an international bank wire as USD funds to your Canadian bank. You would provide instruction on the wire to keep it as USD for deposit into your USD account.