There are a lot of great online payment solutions out there that come loaded with all kinds of features. At LocalOn, we’ve evaluated many of these solutions and wanted to share our findings for the sake of others doing a similar investigation. I want to concentrate specifically on Balanced and Stripe for the simple reason that they stand out as systems written by hackers for hackers, and are the ones we considered most seriously. At first glance, Stripe and Balanced are not that different: both offer a white-labeled API to facilitate payments online, both are made with developers in mind, and both offer well-written, simple client libraries in numerous languages. Stripe clearly has the better marketing team with a nicer, cleaner, sexier homepage but Balanced appears to be the superior product with a clearer roadmap. Below, I’ll outline specific features and frustrations that made us switch from Stripe to Balanced.
True White-Label: Credit Card Descriptor Control
Balanced allows us to specify what appears on a customer’s credit card statement (known as the soft-descriptor) on a per-transaction basis. It might not sound like a big deal, but this white-label enabling feature allows us to charge customers on our clients’ behalf and was a lifesaver for LocalOn . We help hundreds of merchants associations collect membership dues and, when we used Stripe, we were only able to provide our own name on the credit card description.
Previously, end customers would be confused to see our company listed on their credit card. This unexpected charge on the statement was usually followed by a frantic call demanding to know who we were and why in the world we charged their account. The cost in time and sanity to respond to such calls, explaining that we are just the guys who facilitate due collection for the merchant association was significant, and we are happy to not have to deal with that problem anymore. Now association members see charges on their statements from the associations themselves, not LocalOn. LaunchTrack, another Balanced customer experienced a similar pain before switching from Stripe to Balanced.
Some might point out that Stripe Connect lets developers collect payments on behalf of various different entities, therefore solving this problem. I address Stripe Connect in detail below.
Bank Account Debits
Balanced’s ability to charge bank accounts directly is also an invaluable feature. We work with many non-profit organizations that, like us, favor low transaction fees and, unlike us, do not use credit cards. In fact, many of our clients prefer to send us paper checks, even cash, for their monthly bill. The low transaction fee and the ability to charge bank accounts directly circumvented this major barrier. Unfortunately, Stripe does not offer such capability and it is unclear whether they have even considered this in their roadmap.
Stripe Connect: The Good, The Bad and The Ugly
Stripe Connect is Stripe’s attempt to let developers collect payments on behalf of multiple entities. The good part is, integration is straightforward using OAuth2 protocol. A ton of libraries help you handle authentication and because OAuth2 is very much standardized, there are no nasty surprises during implementation. Also, once authenticated, access to users’ data is just as easy. However, there is one major caveat. Stripe requires these entities to each set up their own Stripe account before you can make charges on their behalf.
The ugly part comes when you realize that Stripe essentially broke its promise to let you build a white-labeled software. Now I have to explain to my not-very-tech-savvy users what Stripe is, and why they are redirected to some third party to authenticate something they do not understand (and do not want to). Why does Stripe take this approach?
A quote from Cristina Cordova, head of business development at Stripe:
Cristina from Stripe here. Thanks for the comment.
Many marketplaces want to avoid the liability for transactions that take place on their platform. This is specifically why we built Stripe Connect (https://stripe.com/connect). It allows the marketplace to provide a way to accept payments to their sellers. The buyers and sellers can then transact with each other and the marketplace avoids liability.
I don’t buy this. Here is an example of what happens when the liability is on the seller. If PayPal, which has been in business for decades, is failing to manage liabilities in their marketplace, Stripe’s approach of forcing merchants and buyers to transact directly seems like a step in the wrong direction. The only viable approach is to hold the money in escrow until the customer receives the goods and is happy with them, and only then release the funds to the merchant. This puts some pressure on the marketplace to ascertain who is responsible for what, but at the same time it incorporates flexibility in resolving disputes that inevitably arise. Balanced allows you to do just that.
Stripe Support vs Balanced Support
Whenever asked about any specific feature, Stripe support will always provide as vague an answer as possible. There is no issue tracking system (at least not one publicly available) where one can check the roadmap or see the list of issues in progress. Even when Stripe is creating a feature that is crucial to their clients, they don’t, for some reason, admit that they’re working on it. Here is an example. This is a question about ACH payments on Stripe’s support section of the website:
Plans or suggestions about accepting e-check (ACH) payments?
I would like my users to enter their checking account and routing information so that we can receive a direct payment from their bank account.
We don’t currently support the ability to accept inbound ACH payments. That said, we can certainly see just how helpful this would be, and may add something along these lines going forward.
I believe it would be to their benefit to say that they are working on a certain feature so that at least people don’t start looking for alternative solutions the way we did. Balanced, on the other hand, takes a more transparent approach with a publicly available issue tracker on github. Not only is the roadmap clear and comments are welcome but you can fork and contribute code.
Also, on multiple occasions, I had noticed that Stripe’s forum moderator had deleted questions asked earlier. I would return after a period of time to check for additional responses, only to find the query had mysteriously disappeared. Luckily, this one was documented on Stack Overflow before it got deleted. I am still unsure as to why. It just left me with a bad taste in my mouth. Balanced on the other hand publicly logs everything that goes on in their developer chat room.
LocalOn’s Stripe vs Balanced pros and cons summary
|Stripe||Almost white-labeled API||Lack of ACH debits|
|Really nice UI||Lack of soft credit card description|
|Stripe Connect is not the right solution for marketplaces|
|Vague support answers|
|Balanced||White-labeled API||UI could be better|
|Allows creating escrow holdings which are essential for a marketplace|
|Clear roadmap + great support|
Stripe perfected their UX and I truly miss their high contrast colors, clear interface and informative graphs. Using Stripe’s interface felt like every little detail was thoroughly thought out, starting from the homepage to every last bit in the dashboard. Despite the beautiful design, we switched to Balanced because Stripe was missing numerous features crucial to us, like soft descriptor control, ACH debits, and escrow. Stripe’s support team’s vague responses coupled with the lack of communication about what they have in the works certainly reinforced our decision. Since switching to Balanced, we’ve been able to build our product the way we’ve wanted, taking advantage of Balanced’s flexibility, and responsive customer support team.