Asif Youssuff

SoFi’s Banking Product and Customer Service Processes are Broken

Note: Since writing this post, SoFi has approved my application and my account was opened.

It isn’t often that I experience a customer service interaction so unpleasant that I feel the need to tell people about it, but I just experienced one with SoFi that takes the cake.

I have great respect (and empathy) for customer service professionals, which shouldn’t be too unexpected, given that I worked as one for years, starting at a college helpdesk, cutting my teeth on Remedy Action Request System. We took the responsibility of supporting customers extremely seriously, and the process and discovery that it enables continue to be near and dear to me.

While customer support is a means to an end, we never lost sight of the “end” - ensuring that the customer got the solution that they were looking for, and keeping them apprised of what we were doing to get them that solution.

Unfortunately, that doesn’t seem to be the way that support is done at SoFi.

The Product

The problems don’t start at the support layer, of course - the issue that I experienced was that I was unable to signup for a SoFi banking account.

Like many companies, SoFi seems to regard its support team to be a cost center and prefers that problems are solved within the product. I understand that, I build products that are ideally self-servicing and work the way that they are supposed to.

The problem is when they don’t work the way that they are supposed to.


I signed up for SoFi’s Banking product, in a switch from another fintech, HMBradley.

The signup process is relatively simple, but the problems started pretty much immediately.

Within a few minutes of submitting my application, I received an email saying that “Your SoFi Bank application has been declined”.

Screenshot of Your SoFi Bank application has been declined email
Screenshot of email from SoFi saying that my application was declined

This happened while I was being prompted to upload driver’s license photos that they use to validate who I am.

What is wrong here? Well, clearly the product shouldn’t be telling people that their applications have been rejected before they have enough information to make a determination!

Beyond that, the messages on the website and the one in my email were not coherent - they didn’t agree with each other. That is also a problem.

Six minutes later, I received two emails in quick succession saying that I had “One more thing to complete your SoFi application”, asking me to submit my driver’s license or state ID.

Screenshot of One more thing to complete your SoFi application email
Screenshot of email from SoFi saying that I needed to upload photos of my driver's license or state ID

The email ended saying that “If you have already uploaded photos of your driver’s license or state ID you can ignore this message.”

This message would probably make more sense if they waited more than a few minutes before sending it to people.

Unfortunately, after I uploaded photos of the front and back of my driver’s license, the website ultimately told me that I had been rejected for the banking account, and advised that I could use the online chat or phone support to get additional help.


I called into support, and it got worse.

Many of you reading likely already know this, but most people who call into support just want to get their issue resolved and to get on with the rest of their day. Most people aren’t going to contact support unless they really have to, which is why product professionals try so hard to gather real-world usage data to empirically understand what customers are experiencing.

Unfortunately, there are people who would rather give up or drop out (like in a leaky bucket) than to contact support or consult help documentation.

So when people actually do contact you, it is someone who is at least somewhat invested in working out whatever the issue is, and continuing to be a customer.

Getting Stuck in a Maze

While I was somehow logged into a SoFi account, I never ended up with a Banking or Money account (they seem to use these names interchangably), so I called in. I also tried their online chat, which turned out to be a chatbot that never connected to me to a human, so I went back to the phone.

This is when the frustration began in earnest.

The support line is an automated phone maze that traps callers that answer honestly.

I recorded it so you can listen, and you can also read the transcript if you prefer.


SoFi: Hi, and thanks for calling SoFi. Please closely, as our menu options have changed. If you are calling about loans, say loans, or press 1. For your SoFi money account. or SoFi banking account, say money, or press 2. For invest

Customer: 2

SoFi: For security purposes, please enter or say the last four digits of your social security number.

Customer: * * * *

SoFi: You entered, * * * *. Is that correct? Say yes or press 1, or to try

Customer: 1

SoFi: Thank you for your interest in opening a SoFi banking account. We were unable to approve your application and have sent you an email with additional information. You have 24 hours to reapply. Remember to double-check your name, date of birth, and home address. If your credit with Experian has been frozen, please unfreeze it, wait 24 hours and then apply again. Thank you very much. Press 1 to hear this message again or 2 to receive a text message with a direct link to our help center, which has answers to frequently asked questions. You can disconnect at any time. Thank you for calling SoFi!

I was surprised that there was no way to get out of this maze. Pressing 1 just replayed the last message, and never presented any other options.

I called back two more times to see if I selected the wrong options at some point, to no avail. Each time, answering the questions honestly led down a path where SoFi left this customer without any solution.

I wasn’t ready to give up just yet, though. I figured that I could press 0 at some point as a hack to talk to a human - and a human would help.

Unfortunately, pressing 0 instead of 1 at the end of the “honest” call did nothing, but mashing 0 as soon as I called the customer support line unlocked something in the system that led me to a person.

I don’t quite understand why the website tells people to call the phone number, since all that happens is the playback of an unhelpful message with no additional recourse. The website could have displayed the same copy (as I have transcribed here) without the false hope of additional help on the phone.

No matter. I finally got a human on the other side!

Got Human

I was so pleased that I got a human on the line that I neglected to report to the support person that I had been trapped on the phone maze prior to being able to talk to them, and that I had had to “hack” my way in.

Thankfully, after authenticating who I was, the support person said that they could see my driver’s license photos and that I ought to wait a day for the approval to occur, and to call back if I didn’t get further emails from SoFi.

The Next Day

The next day, I didn’t get any further correspondence from SoFi in my email, and logging into the SoFi account continued to prompt me to submit photos of my driver’s license. Clearly nothing was happening, so I called SoFi.

More Photos

I called in, and explained that I had applied the day before, that I appeared to have a login, that I had been (seemingly) rejected in my application for a banking account, and that I was still being prompted for driver’s license photos, even after uploading them.

The support person told me that they could see my photos and it seemed to him that I should have cropped the photos and placed the ID on a dark background.

I pointed out that the NYS driver’s license has a transparent window with a dark face superimposed upon it, which would be hard to see over a dark background – my previous photos had been taken with my ID on a silver laptop trackpad. This comment didn’t seem to register - I suppose he was simply uninterested in how validation might occur with a security feature of the ID obscured.

I also commented that since he was able to see the ID on his end, it ought to be simple for him to validate whether it was the correct document. He explained that he was unable to manually approve documents, and it was all done via the product.

Fair enough - SoFi is trying to make a repeatable, scalable product, and likely has a well thought out process to validate documents via some automated algorithm that didn’t like my photos. I was still confused about how the darkened background would affect the algorithm and the transparent window on the ID, but I figured that this was simply not considered.

I took some new photos and uploaded them. I got a new message that the photos weren’t good enough (unfortunately, I didn’t take a screenshot of this).

My Brother Takes Some Photos for Me

Incidentally, my brother had successfully opened a SoFi banking account the Saturday prior and had recommended I do the same. I commented to him that I was having trouble, and he offered to take the photos for me, in order to match the process that had worked for him. Amusingly, he had used a dark background.

You can see redacted versions of the photos of my driver’s license my brother took for me - on the same phone as had previously worked for him - they looked very much like the photos he had taken of his ID, with all four corners showing (which is something the support folks emphasized repeatedly, even though all of my previously uploaded photos had all corners visible), on a flat surface with no warping.

I figured that this would be the ticket - it had worked for my brother, it would definitely work for me.

Redacted front of NYS driver's license
The (redacted) front of my NYS driver's license

Redacted back of NYS driver's license
The (redacted) back of my NYS driver's license

I logged into the SoFi site and uploaded the photos. Ultimately, I had uploaded three sets of photos in total.

This time, the website said something to the effect that the address on my ID could not be matched with my application.

I immediately went back to my application on the SoFi website, and was able to validate that the address indeed matched my ID.

Got Human Redux

Clearly this wasn’t working. I had made some best effort attempts to get signed up to SoFi - I had jumped through some impossible seeming hoops (like the phone maze that never led to an actual solution or a person), I had taken three sets of photos, I had waited a day in order for the systems to catch up, and I had even reached out to support for help.

No big deal. This is a public company with naming rights to NFL stadiums - clearly, this would be solved.

So I called a last time.

I spoke briefly to a support represenative named Jasmine, who I recounted the entire situation to - as briefly as possible, since I was already aware that the customer service folks at the front line were unable to validate IDs.

While on the phone with Jasmine, I realized (and she confirmed) that I had been rejected by the bank - I had already received an email to that effect, but I had ignored it, thinking it was similar to the one I received a day before - erroneous and wrong.

This time, though, I had actually been rejected.

Jasmine explained that she was unable to do anything further, and I requested that she escalate me to someone who could help.

After a few minutes on hold, she connected me with William Robinson, who sent me an email following the conclusion of our conversation.

I began our conversation by asking what Jasmine had been able to recount to him, and once we were on the same page, I asked what could be done to get my account opened.

Patiently, he said that there was nothing he could do, and that I would need to reapply.

At this point, I recounted that since I had already provided the best possible documentation I could and that nothing could possibly change – I had already checked my address, my date of birth, and had taken three sets of photos on two different phones – so I asked for a further escalation.

He was unwilling to escalate further, so I asked who his manager or boss was, so that I could reach out to them directly. He mentioned someone named Caroline, but was unwilling to put me in contact with her. I asked who Caroline’s manager was, and William asked if he could put me on hold. After a brief hold, he came back on the phone and said that “Talia” was Caroline’s boss, but that he was unable to escalate to her.

I believe Talia is Talia Hafoka and my message for her would have been a simple one:

  1. this was clearly some kind of product issue that should be fixed
  2. there ought to be a process for support people to solve issues that are not handled by the product
  3. there needs to be tracking to keep customers up to date about what is going on
  4. saying that “we can provide no updates” is unacceptable to customers because it doesn’t provide any path to resolution

I had walked through all of these observations with William, but was met with resistance. I mentioned to him that I sympathized with the situation that he was in - that the playbook told him that he could do nothing - but that he needed to do an out of band escalation because this was unhandled, and the playbook ought to be updated to handle this.

William had told me that Jasmine had opened an internal ticket, but that I would not be provided with any updates, and that even if the issue were resolved, I would not be told about it, and that I would only discover that the issue was resolved if I attempted to reapply.

I commented that this was unacceptable, since I was not being provided with a solution or a roadmap to a solution - as he had commented that this could not be solved immediately - he stated that this was a matter of “perspective”. I suppose this means that it is a matter of perspective whether a customer problem is solved, which seems extremely off the mark to me. If the customer doesn’t know that the problem was solved, was the problem effectively solved?

I had already understood (and explained that I understood) that he was unable to do anything on his own - I was comfortable with that response. What I was unconfortable with, however was the idea that my issue would simply be forgotten about - and even if it were not forgotten about, that I might forget, and that the problem would never be solved from the customer perspective.

It wasn’t good enough that William said that Jasmine had opened an internal ticket with no further communication with me. If my SoFi account somehow turned up missing $500, would William be comfortable telling me that there was nothing that he could do and that he would open an internal ticket, and that I might or might not see my money again?

I had repeatedly asked William to help put SoFi on the hook for a solution, so that the problem could be solved and I could open an account. He told me that he could not.

Lastly, when I questioned that - that he couldn’t escalate further, because “they will say the same thing and nothing will be done” I asked whether he couldn’t escalate or wouldn’t escalate. He then stated that this was a matter of “semantics”. I don’t think anything stopped William from providing me with Talia’s email address when I asked, and I would hope that Talia or anyone she reports to would be pleased to be made aware of an issue that may affect many more people that may not even bother to report (or reapply!).


What can be learned from this experience?

Getting it Right

My manager (Mark Ferguson) back at the college helpdesk once told our team to be very careful about what we wrote in emails, since they are very easy to share and that “you don’t want your email to be the one on the desk of the university president” because you said something wrong or embarrassing. The lesson was that you should be able to stand by what you wrote, because it mattered to get it right.

The situation that SoFi placed me (and the support people) in was a strange one. From the very first interaction, SoFi sent erroneous rejection notices via email. After that, they recommended that I call the support desk or reach out to online chat, which were totally unhelpful and led me down an unending maze. When finally speaking to people on the team, it was obvious that they didn’t really know what was happening on the product, even though they could see my documents and application.

So they guessed. Maybe I needed to wait longer. Maybe the photos weren’t good enough. The last person I spoke to didn’t even bother to grapple with the last message I got - that the address was wrong. They just told me to reapply.

It doesn’t make sense to instruct someone to do something when you have no expectation that it will resolve the issue. The support team was simply hoping that the black box of the product would somehow work to let the application through.

Unfortunately, that isn’t a sustainable practice. People need to put in work to get it right. They need to validate solutions, they might need to do testing and QA – they may even need to observe the customer in action if they need to gather additional information.

In my leadership roles elsewhere, I have tried to impart that wisdom, and to lead by example in ensuring that we get it right when communicating with customers. It matters to get it right.


In that same job, one of the more annoying duties was taking the log of overnight calls, logging them as new tickets, and responding to the customer that we had received the call and had logged it - even if we had done no further work on it. It was annoying for the support folks, but this clearly mattered too - people knew that we were taking their query seriously, and we were taking the time to be responsive.

Even when we were unable to provide a solution immediately, we were also upfront about that, and let the customer know that we would continue to work on it, and follow up with more information.

After some time had passed, if we hadn’t responded to the customer with a solution, we would provide an update and try to work to find a path towards a resolution - including internal escalations. In later jobs, I learned about how SLAs could be used to formalize these expectations.

While they may be annoying, SLAs and responsiveness increase customer satisfaction. Some of this is obvious - what is measured can be improved, and improvements will result in solutions. People having their problems solved mean that the customer is satisfied.

It goes beyond that though - keeping people in the loop also helps prove the value exchange that is taking place. If the initial call results in a solution taking place a month later without any communication whatsoever, there are bound to be a percentage of those queries where the customer never realizes that the problem was solved.

Perhaps the customer discontinued usage of the product. Perhaps they “learned” that the specific functionality that they had an issue with was broken and had learned to avoid it, or had supplemented their use of the product with a substitute. Are those people leaking out of your retention bucket?


Having tracking is helpful not only to keep customers in the loop, but also to help support, product, account management, and engineering teams discover what matters to people who contact support.

They also help teams understand the incidence of issues so that they can prioritize fixes or process improvements effectively.

Empowering Your Teams & Knowledge Management

My calls were frustrating on both the customer support end and on my end, because the support representatives could do nothing to help me on their own.

When inquiries are escalated, representatives need access to resources and knowledge that can help solve problems not handled by the existing product. Humans are good at navigating ambiguity, but it helps when they are empowered to access, generate, and update knowledge to organize and share best practices, and to ensure that problems are known and worked on.

If the customer support person is guessing at what the issue is every time a customer contacts them, since they are relying on the same resources as the customer, they have no additional power than the customer does! That means that the support representative can do nothing to help the customer, and they only exist to read off of the same script that already exists in the documentation portals and chatbots.

There is no point in employing support teams if the only way that the company is willing to employ them is to read the documentation aloud.

What Would I Do?

If I was on the other side of this interaction, my instinct would have been twofold:

  1. Get the customer up and running
  2. Fix the underlying issue

To get the customer up and running, I would investigate (escalating as needed) how it was exactly that SoFi enabled new banking accounts, and walk through that checklist for the application and uploaded documents this case. If a knowledgebase entry didn’t exist for this, I would file one for New York - as I would assume that the validation steps might be different in differing locales.

I would then work with my escalation path to enable the account, if the checklist checked out.

Once I had validated that the documents were indeed valid, I would continue to work with my management, along with partners in product management and engineering to investigate why the documents were not validated correctly.

As a stopgap, I might ask those teams to assist in operationalizing an override when the product failed, like in this case - with whatever safeguards we would deem to be necessary.

SoFi can still follow this playbook to get this fixed. Unfortunately, they never indicated that this was the process in this case - so I’m hoping that this post can make a difference.

Feel free to give me feedback on this post on reddit.

This project is maintained by yoasif