The FBI estimates that losses from check fraud total $18.7 billion annually. More than 500 million checks, more than a million a day, are forged annually in the U.S. Prosecutors fail to pursue 75 percent of bank check fraud cases. The most common method for detecting fraud is through tips from employees, customers, vendors and anonymous sources. The second most common method of discovery is by accident :)
Precheck is neccessary!!!
What it does:
It serves as a first step towards preventing check fraud. Although there are many other validations we can perform before depositing a check (e.g. B.o.A, and most other banks, has a policy to make funds available within the first business day after the day of your deposit), using publicly accessible information -- i.e. routing numbers -- we are able to tell where this check comes from. If the region doesn't ring a bell on you, you might have to watch out!!
How we built it
Challenges I ran into
Building a model of a possibly more sophisticated solution, that is, an intermediate API that can talk to 20+ major banking APIs to require authentication. Since we need to know whether this combination of banking account, routing number and name exists in a certain bank (which can be determined by routing number) and whether if this account is active or not, more work is needed.
Accomplishments that we're proud of
If we can help to prevent anybody from being scammed, it will be a great accomplishment.
What we learned
How to use POST requests on a hyperlink API.
What's next for CheckGuard
Creating a secure API for account authentication (salting, HMAC, PBKDF2 + HMAC-SHA-256, etc) to communicate with major banks without leaking any private information. Why? This would make for more secure deposits since the validations would occur before the funds are made available to the customer.