I’ve been using Stripe for Resgrid’s payment processor since we left public beta in early 2014. Back in 2014 when I wrote about the subject of Choosing and Payment Processor I reviewed a number of them. Back then I didn’t review Braintree Payments and hadn’t heard about them. The reason we choose Stripe as our payment processor? Great API and native/1st Class .Net support.
I’ve always wanted to support PayPal payments in Resgrid. A lot of times people just don’t like supplying credit card details to non-marque sites and PayPal eases that fear. But man, do I ever hate PayPal’s API, complicated and useless subscription stack and their verbose yet utterly unhelpful webhook calls. So for a year and a half we’ve been using a loving Stripe.
But it’s that time again, I’ve had to work in the payment processor system and decided to look around for a PayPal solution that doesn’t suck, enter Braintree Payments. I know they’ve been around for a while but until I talked with the founders of TrainerRoad earlier this year I never really heard of them. At the time I noted that had PayPal support and moved on.
Overall interacting with Braintree is light years ahead of where PayPal was last time I tried to intergrade with them. Braintree is documentation in many languages with code samples and a native first-party library for .Net (are you hearing that Stripe!). Braintree also supports almost every payment method under the sun, Apple Pay, Google Pay, Coinbase, venmo, credit/debit cards and PayPal. Damn that is a great battery of options.
Braintree also seems to have focused more on mobile then any other provider. They have native mobile implementations for iOS and Android and would probably be my first choice for a mobile application. But while Braintree seemed to focus on mobile payments Stripe seemed to focused on ease of use & integration. While Braintree has nice API documentation it falls apart in areas. Want to figure out how exactly to use a vaulted PayPal account with a subscription? How about if PayPal vaulting creates a customer record? Why is it nonce in some API docs and token in others?
Some simple operations are also very, very complex. Want to get the active subscriptions for a customers?
- Get the customer object
- Iterate over all the payment methods
- In each payment method iterate over the subscriptions
The same operation in Stripe?
Additionally Stripe handles a lot of the hard subscription based operations (important for SaaS businesses) like upgrades, downgrades and switching payment frequencies (i.e. from Monthly to Yearly). From a developer standpoint Stripe is still the clear winner. Ease of use, integration, API, documentation and the nice UI experience are hard to beat.
But from a business perspective the choice is less clear. Braintree has good API docs and an “ok” API to match them. Good 1st party support for may development languages (i.e. .Net) and OS’s (i.e. iOS and Android). They also have the best coverage of payment methods that allow your product to have to best chance of a customer paying. If I was starting a new endeavor today I would think long and hard between Stripe and Braintree but in the end would probably go with Braintree, just for the support for non credit/debit cards that it offers.
Resgrid is a SaaS product utilizing Microsoft Azure, providing logistics, management and communication tools to first responder organizations like volunteer fire departments, career fire departments, EMS, search and rescue, CERT, public safety, disaster relief organizations, etc. It was founded in late 2012 by myself and Jason Jarrett (staxmanade).