Coinbase does this for free, but they'll take their cut if you try to convert that into dollars. And they don't have a card option as well. This makes it dead simple for anyone to offer Bitcoin while automatically complying with the same reporting regulations as card payments.
Last I checked, Stripe worked on top of the Coinbase API. The main benefit to using Stripe is that's it's one api and one account. For merchants, you also get fiat instead of holding bitcoin (I assume this is what the fee is primarily for). If you're already using Stripe checkout, adding bitcoin can be done in less than 5 lines of code.