beanstream in canada is actually quite good, easy to setup, low fees, and has a good api (credit card data stored on their server). i looked at braintree, but couldn't use them b/c of canadian merchant. beanstream also lets you do funky things with canada/us currency (collect and settle in us funds, settle in US banks, etc.)