Web
Article

Stripe vs Braintree: the Ultimate Guide

By Corey Martin

Stripe vs Braintree

If you’re developing an app that needs to accept payments, you’ll likely consider Stripe and Braintree as payment providers.

They’re a new breed of full-stack payment companies that are friendly to both businesses and developers. They take care of the nitty gritty like merchant accounts and PCI compliance, and are fairly straightforward to integrate.

An unscientific review hints that Stripe is more popular among developers, with 99 StackOverflow questions in the past month, versus Braintree’s 34. Authorize.net, an older provider, had only 10, illustrating the shift toward new payment companies.

This article compares Stripe and Braintree in depth, to help developers and businesses make an informed decision. I’ve used both providers in production.

PayPal

PayPal acquired Braintree in 2013. Since then, Braintree has made it easier than ever to accept PayPal in a modern web application.

If you use Braintree to accept credit cards, there's no additional work required to accept PayPal. It's just another payment method, like Visa or MasterCard. Braintree handles all of the nuances, whether for one-time transactions or subscription payments.

Is accepting PayPal important to your business? If so, there’s a strong case for Braintree.

Stripe currently has no PayPal integration.

Winner: Braintree. It provides the smoothest PayPal integration available for most sites.

Braintree drop-in PayPal and credit card form Braintree’s “drop-in” PayPal and credit card form

Payment Forms, Front-end

Stripe and Braintree offer pre-built payment forms that you can bring onto your site:

Braintree Drop-in UI is my personal preference. It appears in-line, blending in with your UI. It can also include a PayPal button, allowing the customer to log in to PayPal without leaving your site.

In addition to pre-built forms, both Stripe and Braintree allow you to create your own.

Braintree requires your server to retrieve a one-time client token from Braintree's API before displaying a payment form, whether using its Drop-in UI or hosted fields (its custom form solution). Stripe doesn't require your server to retrieve a one-time token before the client renders the payment form, saving a step and likely cutting load time by 1–2 seconds.

Winner: Tie. Braintree provides a better universal payment UI but requires an additional server request that can delay loading by 1–2 seconds.

Braintree vs Stripe formsBraintree form vs Stripe form

Support

I sent the following question to both Stripe and Braintree early on a Monday:

Hello, what's the best way to get a human-readable reason why a credit card was declined? Can I get this when creating a subscription as well as when a card is declined during an existing subscription?

Braintree responded in 6 hours. Stripe responded in about a day and a half. Both answers addressed the question, but Braintree was much faster in responding.

This is consistent with my previous experience with both companies. Braintree has responded to my requests within 6 hours on weekdays and 24 hours on weekends.

Braintree’s primary support is through email (support@braintreepayments.com) and phone. Stripe’s is through a web form with no phone support available.

Both companies are engaged on GitHub. Their libraries are open sourced there, and they respond directly on the issue pages for each. (Examples: Stripe, Braintree.)

Both companies are engaged on Twitter, their feeds showing that they respond directly to developers in a short period of time. (Examples: Stripe, Braintree.)

Braintree is engaged on StackOverflow, a popular Q&A forum for developers. Of four Braintree questions on September 19, Braintree responded to two directly. Stripe questions on StackOverflow generally don’t get an official response.

Stripe has an IRC channel, a wonderful excuse to re-download your favorite client. You may or may not reach someone on the team.

Winner: Braintree. Both provide good support, but Braintree’s is faster and more available.

Discounts

discounts

Both Stripe and Braintree support discounts for subscriptions. Customers might receive $5 off their first month’s subscription fee, for instance.

Discounts work roughly the same for each service. An admin creates a discount in the dashboard, and API calls from your app can apply that discount.

There are differences that will impact how you implement discounts, however, and these reveal that Stripe is stronger in this area.

  • Braintree doesn't support percentage discounts (e.g. 25% off); Stripe does. In Braintree, if you have a 25% discount that applies to your monthly, quarterly, and annual plans, you need to create a separate discount for each plan, each for a different amount. With Stripe, you can create one 25% off coupon that applies to all three plans.
  • Braintree doesn't support expiration dates for coupons; Stripe does.

Thus, with Braintree, you’ll do a bit more work if your plans have different billing cycles (e.g. monthly and quarterly) or your discounts are available only for a limited time.

Winner: Stripe. Its discounts offer more functionality, including percentage-off and expiration dates.

Upgrades and Proration

Both Stripe and Braintree smoothly handle upgrades between plans that share the same billing cycle. For instance, if someone needs to upgrade from your monthly Silver plan to your monthly Gold plan, a simple API call to either service does the trick.

Braintree cannot, however, process upgrades from plans with different billing cycles—say, a monthly plan to a quarterly plan. You’d need to roll your own upgrade logic (reach out to me for tips). Stripe, on the other hand, handles these complex upgrades and applies prorated pricing.

Winner: Stripe. Unlike Braintree, it handles proration across different billing cycles.

Server Integration

Both Stripe and Braintree provide libraries for various programming languages. Generally, they’re open sourced, documented, and supported.

I’ve integrated both services' Ruby libraries. They’re perfectly adequate, allowing you to create and update subscriptions, perform one-time transactions, and receive webhooks.

Winner: Tie. Strong developer libraries are core to both Stripe and Braintree.

Documentation

You’ll need to master the API of the service you choose, and to do that you’ll lean heavily on documentation.

Stripe’s documentation is more precise than Braintree’s. I haven’t seen a phrase in Stripe’s documentation that is ambiguous or open to interpretation. Braintree’s, on the other hand, can be a little more vague.

For instance, Braintree can notify your app (through a webhook) when it has tried and failed to charge a customer for a subscription. Part of what it passes is the failure_count, which it defined as the number of times the gateway has retried a charge on a past due subscription.

Note the word retried. Does the failure_count include the first failure or just the retries afterward?

I emailed and tweeted Braintree this question and got opposite answers. The Twitter answer turned out to be correct.

Braintree has already fixed their docs, changing retried to tried. I commend Braintree’s response and hope they further tighten and clarify their documentation.

That being said, both services have well-structured documentation, organized by programming language—allowing developers to get specific guidance for their toolsets. Having implemented both services from scratch, though, Stripe’s docs have me scratching my head a little less.

Winner: Stripe. Its documentation wins on depth and clarity.

Expired Credit Cards

expired credit card

Both Stripe and Braintree have arrangements with credit card companies to automatically update credit cards that are about to expire. In many cases, customers obtaining a replacement card don't need to update their credit card information. This likely reduces churn and helps your business.

With Braintree, you have to request this feature, a quick and free process. With Stripe, it’s automatic.

Winner: Tie. Both services auto-update expired cards. Remember to request the feature from Braintree.

Trial Periods

Stripe and Braintree allow for trial periods on subscriptions, but only Stripe allows a customer to trial without a credit card.

Stripe trial periods don't require a payment method. If the trial period ends and the customer hasn't provided payment information, Stripe registers a delinquent payment. You can use webhooks to kindly ask the customer to enter billing information. After your (customizable) retry limit is exceeded, Stripe cancels the customer’s account.

Braintree, on the other hand, requires payment information even for a trial account. So, if you want to offer a free trial with no credit card and you’re using Braintree, you’ll have to write more code than you would with Stripe.

Winner: Stripe. It doesn’t require a payment method for trial periods, and Braintree does.

Webhooks

Your payment processor will need to let your app know about certain events. For instance, if an account is cancelled due to delinquent payments, you may need to adjust the user’s access in your app so they no longer have access to premium areas.

Both Stripe and Braintree have webhooks that tell your app about certain events. They’re pretty similar for most uses.

Stripe distinguishes itself with robust webhook status and logs, available from its dashboard. You can see which webhooks have failed, for instance. Braintree doesn't offer this; only their support staff can check the webhook logs.

Winner: Stripe. It shows webhook status and logs in its dashboard, unlike Braintree.

Cancellation

exit

In the unfortunate event a customer cancels their account, you may want them to retain access for the remainder of the current billing period. (They paid for it, after all!)

With Stripe, you can cancel an account effective at the end of the billing period. At the end of the period, Stripe sends a subscription_deleted webhook to your app, at which point your app knows to cut off the user’s access.

With Braintree, all cancellations are effective immediately. There is nothing to notify your app of the end of the current period. So, your app has to remember to cut off the user’s access at the end of the period, and until then there’s an odd discrepancy where the user’s Braintree subscription is cancelled but they still have access.

Overall, I believe Stripe’s cancellation logic makes more sense. If you use Braintree and would like cancellations to take effect at the end of the billing period, you'll need to do some additional coding. Feel free to reach out to me for tips.

Winner: Stripe. Its cancellation flow makes more sense for most sites.

Testing

If you're using a service like Stripe or Braintree, commerce is likely critical to your site. You'll want to test each service yourself, and then implement automated tests to ensure they continue to work in the future.

Stripe and Braintree both offer test environments, with their own dashboards and test API keys that you can place into your app. This allows you to click around your app in development to create fake subscriptions and charges, and review those in the dashboard.

You can sign up for Braintree’s and Stripe’s test environments without providing any banking information. At that point, you can use the service in development. Before using the service in production, you’ll need to submit your personal and banking information for approval. Both services approve within a few days, generally.

Both Stripe and Braintree are amenable to automatic testing. Braintree has more testing features built into its library than Stripe does—like fake webhooks and payment nonces (which can generate various payment errors). Stripe offers the ability to send fake webhooks from its dashboard to your app on dev. You’ll likely need to supplement Stripe’s library with tools like stripe-ruby-mock, where Braintree’s library can likely support good testing on its own.

Winner: Tie. Both services offer sandboxes with a low barrier to entry, and helpers for automated tests.

Dashboard

As an account owner with Stripe or Braintree, you’ll have access to a dashboard where you can view customers, subscriptions, and payments. Both services offer the ability to manage this information, provide refunds, and change account settings.

Winner: Tie. Both services offer common admin tasks in a user-friendly dashboard.

Overall Impressions

Your decision will depend upon how important each feature is to you.

Braintree offers PayPal integration and more responsive support. If PayPal is core to your business case, Braintree will make integrating it a lot easier and will likely be your pick. If you anticipate having a lot of questions not covered in documentation, Braintree’s support may win you over.

Stripe has superior documentation, trial periods, discounts, webhooks, and upgrades. You don’t have to work around Stripe like you sometimes have to do with Braintree. If your app has no-credit-card free trials or upgrades to different billing cycles, you may select Stripe to save some development time. If you're an experienced developer and PayPal isn’t in the business case, you may lean toward Stripe.

From here, check out the quick start guides for Stripe and Braintree. Sign up for their sandboxes, install their libraries on your app in dev, and get a feel for their different approaches. Take comfort that both companies are on the cutting edge of payments, but note their differences.

  • http://SalaryNet30.com linda green

    My Uncle Carson just got an awesome year old Cadillac CTS Sedan just by parttime work from a home pc…look at more info on my~ prof!Ie~

    ^h

  • https://weeblr.com weeblr

    Hi Corey

    Thanks for your thorough review. How about fee structure and amounts?

    Cheers

    • Corey Martin

      Hi there! Both have the same straightforward fee structure, though Braintree has no fees on your first $50,000 of transactions.

  • RdeBoer

    Nicely researched and written up! Great overview — thanks!

    It should be noted perhaps that depending on the website framework used (say Drupal, Magento), the pain of having to code may be completely eradicated by plugging in a suitable “module” or “extension”. In those cases all the site-builder/merchant needs to do is enable it and configure a few options and there will be no coding required whatsoever.

  • cnolimit

    Hi Corey,

    Thanks for your review, it has been very helpful.

    I have only just started looking into both and based on this review I feel better suited to Stripe. Although I wanted to know how hard would it be to integrate PayPal with stripe, does it involve a lot of extra code?

    • Corey Martin

      PayPal won’t integrate with Stripe directly. You could use both Stripe and PayPal at the same time, or even use Stripe for credit cards and Braintree for PayPal at the same time. Generally, if you’re writing your own code and need to support PayPal and credit cards, going with Braintree will save you time and cut down on code.

      The other option is to use an integration that supports both Stripe and PayPal, as noted by another commenter.

  • Corey Martin

    Terrific point! For others who are reading this, this applies to the country of the business accepting payments, not the countries of customers.

  • Corey Martin

    Thanks, Jim! I’ve asked for this to be updated and will reply again once it is!

    • Ralph Mason

      Yep, done. Sorry about that, Jim!

      • http://MomWage.com Mary Witkowski

        like Phillip answered I cannot believe that you can make $9890 in 4 weeks on the computer.try this website on `my` `prof1le`
        @ fffffffffffffffffffffffffffffffff

  • http://trilloclass.com/ chrispa

    Another pretty significant area you missed is Stripe Connect – the ability for people to integrate their own Stripe accounts with other services. So for example we allow our customers to accept payments through our web app, but don’t have to handle any of the money flow, liability, etc. I don’t believe Braintree has anything like Stripe Connect. (I wish they did – ‘Stripe connect for Paypal’ would be a killer service.)

    So if you are comparing the two in terms of allowing YOUR customers to take payments, the gap between the two is much bigger.

    • Corey Martin

      Braintree launched a Marketplace offering recently that compares to Stripe’s, though it’s available in fewer countries and Stripe appears to be more mature in this area.

  • http://aspiringwebdev.com/ coreyitguy

    I agree that being banned from PayPal would impact the decision, and that Stripe is a great product. Stripe is not immune to banning businesses as well, of course.

    • Anton Siribaddana

      Braintree does not have ACH payments and Stripe Does. At the same-time Braintree introduced Sepa Direct Payments which helps global marketplaces a lot. Stripe ACH payments can simplify everything too. Hope they can introduce a complete solution either BrainTree or Stripe. But having Marketplace only for US doesn’t add much value.

      I know Braintree can do ACH payouts via Marketplace but I really doubt whether they support ACH payments where we validated a bank account and charge a customer.

  • Corey Martin

    A great point that every merchant will face at one time or another. Both charge a $15 fee, so the key might be how each handles chargebacks. I don’t personally have experience with either in this area.

  • Billy J Figueroa

    Great comparison. Not sure why you set ‘Expired Credit Cards’ to a tie if Stripe does the expiring update automatically and Braintree requires work…

    Sounds like 1 won over the other

  • Edoardo Cordani

    Great comparison! But you missed the fact that the Braintree Drop-in UI for web is available only in english while Stripe supports many languages.

Recommended

Learn Coding Online
Learn Web Development

Start learning web development and design for free with SitePoint Premium!

Instant Website Review

Use Woorank to analyze and optimize your website to improve your website to improve your ranking!

Run a review to see how your site can improve across 70+ metrics!

Get the latest in Front-end, once a week, for free.