Alright, lets chat about Stripe’s Financial Connections 😅

Initially, Balance (a privacy first budgeting app) started off with Plaid as the financial connections provider. Plaid was the industry standard at the time, and I had some experience with them already. Unfortunately, I had to pause work on Balance due to some family reasons.

Why use Stripe?

Earlier this year, I was able to pick Balance back up. That’s when I discovered Stripe had introduced its financial connections offering, which piqued my interest for several reasons:

  1. Existing Partnership: I already had a partnership with Stripe for payments within my app, making it an attractive choice for financial connections as well.
  2. Familiarity and Experience: Having worked with Stripe on other projects before, I felt confident about navigating its ecosystem, documentation and integrating it into Balance smoothly.
  3. Shared Values: Stripe’s mission aligns with Balance’s vision. I want to help as many people as possible, gain control and confidence with their finances.
  4. Competitive Advantage: Being first to Stripe could prove to be a competitive advantage over time. It was a gamble, but one that could give me a head start.

I jumped into Stripes documentation to make sure everything would work. They have a custom link widget, on demand transaction pulls, transaction web hook subscriptions, everything was there. I decided to start the switch over in May. I didn’t have a ton of Plaid work to replace so it didn’t take long.

Issues arise

In the initial stages, my experiences seemed promising, despite the product being in beta. However, as I spent more time implementing, I encountered some challenges:

  1. Documentation Gaps: Stripe’s offering being in beta meant that their documentation had some gaps, making it harder to find solutions for specific issues I faced during development.
  2. Limited Library Support: Since Stripe’s financial connections were relatively new, I found that there were limited client libraries available, which posed additional challenges for me. I had to write network wrappers in some cases, and in other spots they had Node support 🤷‍♂️

    In some cases, there are feature flags shown in the documentation, with the client library that just don’t exist. I looked for beta client libraries with no success. Here’s one example with the prefetch option for transaction data when a user links their account.
  3. Quirks in Data Structures: I also had to put in extra effort to adapt to the app’s requirements due to some inconsistencies and peculiarities in Stripe’s data structures. With most of the examples being in CURL it was tricky at times to understand how to pass data properly.

The final strike

The most significant setback occurred when I realized that one of the essential webhooks listed in Stripe’s documentation, webhook financial_connections.account.refreshed_transactions wasn’t showing up in my Stripe dashboard. After a some back and forth with Stripe support it turned out that while this was listed in the documentation, it hadn’t actually been implemented yet. This was pretty frustrating. If it’s not available in test mode, then theres no way it’s available in live mode.

They had me fill out a form to get in touch with the product team. I had done this when I first started and no one reached out. Support reiterated multiple times that there is no ETA for production readiness. In hindsight I gambled a bit with a beta project, but with it being announced over a year ago and multiple CTAs to go to live mode, I thought they would be ready. The really scary part is that they have documentation out there, presented as working features, that hasn’t been implemented yet. Outside of this webhoook, what else is missing?

The impact

While the actual wasted development hours aren’t too high, the calendar time is. I only have a few hours a week right now to work on this, and the setback has pushed early access out a few more months. Be careful reading Stripes documentation as fact 😜

I think Stripe is a great company, but their mission to “increase the GDP of the internet” failed this time around. Setting me back about two months to getting Balance out.

P.S. I’m still trying to gather customer insights. If you use a budgeting app, or are open to using a budgeting app could you take a minute to sign up for my early access list? 🙏