Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
My bank has an API so I built online banking (medium.com/jamesallison)
164 points by jamesallison on Nov 24, 2015 | hide | past | favorite | 108 comments


I want a US based bank to build something like that. I believe Simple was initially supposed to expose an API to developers. The API has never come to fruition and I doubt ever will.

In order to disrupt the banking industry, you need a huge amount of capital to start and you are regulated in a way to prevent fast growth. These 2 things pretty much rule out the 'standard' way of doing startups.

I would love to see an opensource bank, open code all the way down to the core services that a bank depends on. It would help break up the stranglehold that just a handful of companies have on the market.

Too many things are just 'in the way'. The stagnation would probably need to start with regulatory support instead of using banking regulations to make it difficult for new business and ideas.


I have accounts at Chase, Citi, Capital One and a small credit union. All of them support exchanging of statements through OFX.

I wrote a small Python script around ofxclient[0] which downloads daily statements from all of these accounts and then merges them into a GNU Ledger-formatted text file. I was inspired to do this when GNU Ledger was on the front page here about a month ago[1]. I keep the ledger itself version controlled using git. It's been working great -- the script not only downloads the statements but also identifies certain keywords in the payee name and attributes those against the matched expense account.

[0] https://pypi.python.org/pypi/ofxclient/ [1] https://news.ycombinator.com/item?id=10510394


Thank you for letting me know that you can do this. I'd like to try combining that info with the Civilization Budget (http://alexrecker.com/our-new-sid-meiers-civilization-inspir...) that was posted a couple weeks ago.


Sure, glad to help. If you have any questions about how I did it, send me an email (it's in my profile) and I can try to answer them.


>you need a huge amount of capital to start and you are regulated in a way to prevent fast growth. These 2 things pretty much rule out the 'standard' way of doing startups.

Mondo have raised 2 million pounds and "are looking to raise around £15-20 million before its full launch" so not that much more than many startups. Not sure about regulation preventing fast growth. I guess it slows it a bit.


In terms of regulation, the UK government is actually in the process of getting ALL banks to open up their data with APIs. It's really exciting: http://theodi.org/news/open-banking-working-group-uk-experts...

"In this year’s Budget the Chancellor committed to delivering an open API standard in UK banking, and setting out a detailed framework for its design by the end of 2015, in order to help drive more competition and innovation in banking for the benefit of consumers."


Late to this thread, but some of us at Mondo are actually on the OBWG. You could consider Mondo's API a sneak peak of what's coming from potentially all banks in 3 or so years.


What a time to be alive


> I would love to see an opensource bank, open code all the way down to the core services that a bank depends on

Yeah, no thanks. I would not trust my money with a bank like that. A lot of fraud prevention is based on obscurity, and multiple steps of hurdles to make it easy to reverse a transaction. There's a reason money transfer takes a few days.

Source: I work in a tangential field


> There's a reason money transfer takes a few days.

The reason a money transfer takes a few days is because ACH is based on SFTPing back and forth fixed-column ASCII text files.

In other countries there is not this delay.


SFTP or FTP?



I take your point that you wouldn't want to open source everything, especially not the few critically secure bits of your infrastructure.

That said, money transfers take a couple of days because most interbank clearing houses were modelled after paper-based batch processes where people shuffle through paper a few times a day.

There are several real-time payment schemes in the world. Retail customers in the UK mostly use Faster Payments (FPS) for interbank transfers and they clear within a few seconds.


Security through obscurity hasn't been a powerful or useful paradigm for at least a decade now. The only thing that it provides now is more time for malicious users to exploit security holes before anyone notices.


I don't agree. Nobody is claiming that it should be the only layer, but as one layer of many a little bit of obscurity goes a long way.

For instance, reddit provides it's public source code but has all of its anti fraud stuff wrapped into a separate repo that is not public. This provides a lot of flexibility that wouldn't be available if it were all public. And sure, some of it is of temporary value ("we are catching this cheating teqnique specifically, until they realise that it's not working anymore") but the fraud arms race is much easier for the atackee if it is slowed down a bit by such temporary measures


In South Africa we have the same situation, no access to banking APIs so little room for innovation.

As a side project I decided to try and build banking infrastructure from the ground up, learning Go in the process [1], writing about the development along the way [2].

There is so much room for innovation in the traditional banking space, i.e. not using cryptocurrencies. Hopefully there will be innovation, especially when it comes to managing risk.

[1] https://github.com/ksred/bank [2] http://blog.ksred.me/tags/banking-infrastructure/


I took a look at the data Simple returns at some point a while back and it seemed (upon just an initial glance) that it would be fairly straightforward to extract data from. Everything that you saw on-screen could also be found in just a handful of JSON data points. Obviously there's the issue of constructing some kluge-y authentication mechanism which in and of itself would be insecure. But if you wanted the data, Simple by no means obfuscated it.


They don't obfuscate it, but i want a SUPPORTED method of accessing my banking data programatically.


This is an important distinction. Simple's API is not secret, but it's also not stable, or versioned, or anything close to that.

Tools have been written to extract data from simple's API, but those endpoints have mostly been discovered through unofficial channels, and Simple often changes them without issuing any kind of warning.

So far twitter has been the best route to find about their changing API endpoints, which speaks simultaneously to the disorganization of the API and the massively high quality of their support team.


I agree. I've tweeted @Simple to see if they want to add anything to this thread. Although for a while now, their blog and Twitter feed have been filled with more "goal" posts/tweets than feature related things. And like others have said, their plans for an official API are probably non-existent.


They do allow exporting transactions to JSON and CSV, so that could be a starting point if you're willing to work with the challenges of authentication. https://www.simple.com/help/articles/account-info/statements...


You could start with Bitcoin only, then when you are big enough you can start with other currencies too.


Hi redbeard0x0a, fully agree! We do try to open source as much as possible. We have open-sourced large parts of our stack already:

https://github.com/mondough/


These sorts of hopes seem to be the primary impetus for the "next generation" blockchain tech, such as Counterparty and Etherium.


To be perfectly honest, though, the 'standard' way of doing startups is a terrible idea when you're talking about people's savings.


I work at Mondo. People's savings are generally insured in banks.

Once we're a bank, customer funds up to £75k per account will be insured via FSCS.

In the meantime, the customer balances held on our prepaid debit card sit ringfenced in customer-specific accounts. If we went bankrupt, the funds can't be touched by our creditors and will simply be returned to the customers.

Edit: spelling


Can I create an account with you if I'm an EU citizen, or is it UK-only?


I've responded to the same question here: https://news.ycombinator.com/item?id=10623845


Ahh yes, an API on top of your bank... this was the promise of Simple Bank, one that they have now almost wholly backed out of which is quite disappointing. Don't get me wrong I still love them as my bank but I was really looking forward to an API that never materialized.


Well, there goes the last reason to hold on to my Simple account. The API is what I was hoping for.


Simple's support is bar none IMHO but I'm right there with you, the API was a BIG reason to why I signed up.


I've had no issues what so ever with CapitalOne 360. Simple doesn't provide me anything over them...


The idea of an API was the ONLY reason why I created a Simple account. It is really sad that they aren't going to expose an API.


Same here.


Does anyone know of a US bank that offers an API as a service? For consumer-level access and without requiring fees or a third party service, preferably.

The hackathon this app was a part of doesn't mention developer-friendly banks: https://getmondo.co.uk/blog/2015/11/22/mondohack/

I'm left to assume these are private APIs. I would love to play around with APIs similarly, but don't want to depend on privatized APIs.


Hey, I work at at Mondo. We're building a startup retail bank with an API for developers.

You can find our API documentation here: https://getmondo.co.uk/docs

The APIs will be publicly available to developers and account holders. We've only just started rolling out our first cards, though, so we're not on boarding many third party developers at the moment.

If you'd like to play around with the API, send an email to developers@getmondo.co.uk and we'll see what we can do :)


Very cool! I misunderstood Mondo's purpose. I assumed it was an abstraction layer over private APIs, but looks like you're a bank!

Sending an email (although I'm based in US, if that matters).


Wish I could use it in Australia - Commbank here is pretty technically advanced, but they still won't support things like OFX.


You lucky UK folks. :(

Not that you have it good, but holy he'll did starting a not-bank end up being a can of worms in the US.


Silicon Valley Bank is taking beta signups right now for their API banking products https://www.svb.com/api/

From their director of API banking, "With API banking we aim to deliver a set of services that allow our customers to interact with the bank securely, programmatically, at high speed and with little (or no) manual intervention." https://www.svb.com/Blogs/Dan_Kimerling/Our_Mission_for_API_...



Are they? I see a large "Be the first to know" headline with a blank space below.


I was also confused. I tweeted at the API Director, and he mentioned usage of the contact form. Seems like a strange way to onboard beta engineers.


There aren't many major US banks that will do this for you right now unless they're actually not banks and in fact prepaid card users that explicitly do not have a bank charter.

This is because online account opening for banks is a very hard problem, and anyone with a bank charter basically can't use the closed loop trick that other services are using to provide money movement and storage without a charter.

Once you are past account opening, it's more about tech politics. No major US bank has publicly pushed an Oauth gateway, for example. But this is more about risk and the politics of contracts with financial aggregators than anything else. You can find hints of these murky waters in the articles surrounding the recent dust up between Chase and Intuit.


I've heard of https://plaid.com/ but have no personal experience with them.


I have tried out Plaid Connect and it worked really well for me. This was in beta when only a very limited selection of banks were supported, so I had to go get a Bank of America account just to use it.

Authentication was incredibly easy and they handled security questions very gracefully in my opinion. I was able to build a pretty good Simple Goals clone with a weekend's worth of work.

I haven't used their Plaid Auth product yet.


Charley from Plaid here! We now support over 18,000+ banks in the US and Canada for Connect (transaction data) with our longtail integration :) https://plaid.com/docs/#long-tail-institutions


Intuit also offer an API to gather financial data. https://developer.intuit.com/docs/0020_customeraccountdata/0...


Oh, that's really neat.


+1 for plaid. It's awesome, I built something similar to OP about 6 months ago just using plaid and my existing bank account.


Wait till you guys see what sjtgraham has been up to

EDIT: teller.io

He's had to do impossible things to make it


As isomorph says I've built a fully transactional API that works with existing major banks. We currently have a closed beta supporting banks in the RBS group (RBS, Natwest, Ulster, IOM) and we'll be adding Barclays and HSBC next.

http://teller.io/


What prevents you from emptying my account if I use your service?


Looks like just their honour, unfortunately. If banks provided first-party support, rather than forcing people to reverse engineer mobile phone app APIs, we might see safer implementations.


Have the banks provided you with a private API or are you doing everything by scraping the web UI?


Neither. We cracked their mobile apps to reverse engineer their private mobile app APIs, and then implemented our own clients for those APIs. To the bank Teller looks like one of their own mobile apps.


So you're building a service on top of undocumented and private APIs? They could shut you down an instant - no?


No. There are a number of things that stop them doing this practically:

- Making breaking changes to their APIs break all in-flight clients. This is poor UX for their regular customers if their first party app stops working every week.

- App store approval time is a choke point

- Internal change control is another choke point

- I can find what's changed and deploy a fix in no time.


What if they block the ips you use to power the API? Furthermore, using some simple heuristics it should be easy to fingerprint your API and automate the blocking. Eg A normal user is unlikely to cycle IPs between requests. Your ApI might.


What are you going to do when you start getting C&D letters?


Buy some nice frames and put them on the wall.


I've thought about doing this (and sort of started) but for a separate industry. This is going to prove challenging legally, no?


What I've done is actually completely legal and specifically protected by the law in the EU.


This is exactly what Tink app have done and they have been in operation for the past 3 years. Legally your using public available endpoints so even if they did block your IP's spin that docker image up on a new host ;)


This is a sign of how bad and far behind the bank technology stack has become. They are all fighting to stay relevant by keeping others out. But technologists are finding loopholes around their stack.


how are you handling the problem of banks revoking customers online fraud guarantees if they make use of 3rd party services to make transactions?

From what I saw of the aggregation sites that pulled details from UK banks in the past, this was a major stumbling block...


This is incredibly exciting! I got myself on the waiting list, looking forward to trying it out!


I was a user of Egg Money Manager. This site from the (now gone) UK bank presented all of your bank accounts, loans and credit card balances in a single place.

A clever way to avoid them handling any of your bank account details, they used a Java applet that stored your creds locally, interacting with their site so as to appear 'on the web'. Actually a great solution vs. giving your banking creds to a third party.

Encouraging that teller.io seems to be architected similarly. Would love to hear more.


Awesome - love this project :-)

You can also see some of the other projects are listed here https://getmondo.co.uk/blog/2015/11/22/mondohack/


Hi Folks, Open Bank Project is an open source API for banks that is designed to sit on any core banking:

https://github.com/OpenBankProject/OBP-API/wiki/Sandbox

We're currently introducing a Kafka layer which core banking connectors can interface with in any language. Else you can use Scala / Java code to connect to banking (or blockchain?) interfaces directly.

The core is AGPL plus commercial licenses for banks that don't want to abide by AGPL or get commercial support. SDKs etc are Apache licensed.

Regulation from EU (PSD2) and UK government Open Banking Working Group (OBWG) initiative is starting to move the API needle :-)

cheers, Simon (founder of OBP)


Have been tinkering with the Mondo API myself and can confirm it's great. It's really strange building apps around your own money.


How far down the FCA application process are they? As far as I know only 2 companies have been granted permissions in the UK so far this year. One is a law firm, the other a stock broker.

Their site says they are still applying, thus how can they be accepting people's money already?


Hi DomBlack, I work at Mondo.

The cards we're issuing now are prepaid debit cards backed by another firm's license (Wirecard Card Solutions Ltd).

We're aiming to have a full banking license and issue our own cards by the end of next year.


The selflender team did something similar except they built a banking core:

https://selflender.com/blog/why-fintech-innovation-is-broken...


It's true! :)

Warm regards, James @ Self Lender


Mondo looks neat. Anything like that in Canada?


When we have to ask the answer is generally 'no'.

I'd be pretty interested in something like this also.



Oh interesting. Have you used this? Any thoughts?

Edit: looks like they havn't launched. Will keep an eye out. Thanks for posting!


What tool is that in your first screenshot?


It's Postman[1], a Chrome app for making HTTP requests/testing API's that has a ridiculously full featured free version.

1: https://www.getpostman.com/


That said, it's worth paying the $10 to upgrade so that you can automatically include authentication credentials in your requests. (E.g. hit the auth endpoint to get a token, and then have that token automatically included in all your subsequent requests.)


Do Chrome apps really not get to share credentials/cookies with the rest of Chrome? Postman asked me to sign in with my google account, and proceeded to show me a login form that looked like a google login page but with no way for me to verify the domain.


There is an API for Chrome Apps to get authentication tokens, and they are probably using it in interactive mode, which shows just what you saw: https://developer.chrome.com/apps/app_identity#getAuthToken-...



As others have said, that tool is Postman. I'd also suggest looking at Paw.

https://luckymarmot.com/paw


I love Paw. I doesn't do much more than Postman (as far as I can tell), but it's much more pleasant to use.


A side note: The big banks expose mobile apis to their apps. However, I'm pretty sure that those are for private use


This is true for even some small-town banks. I switched to Windows Phone last year and built a personal banking app that would display my financial details on a live tile. While using Fiddler to figure out the necessary API calls, I discovered that my tiny bank's Android and iOS API was actually provided and maintained by a much larger bank.

It turns out that the bigger bank has dozens of smaller banks using the very same API, and its a trivial matter of switching a URL slug to make my makeshift API work for these other banks.

It was an interesting learning experience, but I did manage to get myself locked out of my own bank account a few times while replicating the login process.


Yep, a friend of mine is building a product that exposes the private APIs that banking apps use in a developer-friendly way: http://teller.io/

That said, using your account data in that way with third parties is often against the terms of service that a customer has with their bank.


> I'm pretty sure that those are for private use

.. And do you do everything you're told? ;)

I think we put far too much weight into magic documents like Privacy Policies and Terms of Service, etc.


When we're talking about banking, those magic documents are pretty important. I wouldn't be surprised if, for example, using their private API makes you ineligible for fraud protection on your account.


Oh I am sure doing anything does, quite frankly.


Will accounts be available to those of us that do not live in the UK? At least within the EU?


Hi, I work at Mondo.

We need to work through a bunch of KYC and AML issues around EU-wide signup, but it's definitely high on our priority list.

That said, our accounts will initially be GBP only, so we'd hold your balance in pound sterling.

If you sign up to our waiting list we'll reach out as soon as we know more :)


GBP is good enough for me. :)


I've really felt the need for an API into my bank transactions lately. There are a bunch of visualizations I want to do that Mint etc. don't support.

BTW @jamesallison The interface looks great. Good work!


You can download daily statements using a client like ofxclient[0] and then transform them into a ledger appropriate for GNU ledger. From there you can pretty much extract and export whatever it is you'd like to know.

[0] https://pypi.python.org/pypi/ofxclient/


There's always the SQLite-esque approach in the form of OFX and related formats.


With PSD2 regulations coming in I think we will see a lot more of this with banks having to open up APIs for merchants and more and more innovative solutions using them. Good work!


> Store Access Token in PHP $_SESSION

I just hope my bank never does this.


Nope. They just store your 6-8 character password in plaintext behind their huge monolithic Java/.Net/Cobol app.


They employ a clever 3-step hashing algorithm, though:

    1. Truncate user's password to 8 characters
    2. Uppercase the entire thing
    3. Convert to EBCDIC


What would you do instead? (aside from the obvious "not use PHP in the first place")


Another programmer giving off the impression that programming is easy and we shouldn't even get paid for our work.

Thanks, man!


IMO Mondo are a proverbial rocket ship. Keep an eye on them, and join them if you're lucky enough.


They're a rocket ship IF they can get regulatory approval.


My government has an API so I can access my data and build services upon.

Now that would be fascinating.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: