views:

290

answers:

5

I'm building a simple accounting app to be used for personal finance.

A user might keep track of purchases, upcoming bills, recurring deposits, etc. It will be verrrrry simple.

Two questions:

1) Any advice I should keep in mind? Obviously, I'll use transactions where appropriate, but proper datatypes and other considerations would be nice to know about.

2) Are there any APIs you know of I could use to periodically get a user's balance from their bank? i.e., an API that would make it simple to query their account, regardless of whether they're at Chase, BofA or other?

Thanks very much,

Michael

A: 

Look at the open source projects on this link. You could build on top of some project you like.

Perpetualcoder
+1  A: 

About APIs for getting info from your bank: not simple, if at all possible. You can imagine the lengths your bank will go through to make sure everything is secured. I don't think it'll be possible to automatically connect. Usually there's a way to download data through manual downloading of a file, after you logged into your online banking (if you have that available). Hopefully it'll be in CSV format or something similar ;-)

[edit]

Apparently I was wrong here, major banks DO allow direct connection. I guess you'll have to consult your bank techsupport on that then.

[/edit]

As for datatypes to use, I'd at least recommend decimals for money values, instead of doubles/floats. see this SO question thread about that too.

Erik van Brakel
Most major banks do allow you to connect to them automatically, that is why apps like Quicken and MS Money and the like are useful.
Robert Gowland
They do? I guess that's a corporate service then? I haven't encountered it yet in my personal banking efforts, but then again, I'm not a pro in accounting for that matter. I leave that to people who are in that business :)
Erik van Brakel
+4  A: 

Having just completed version 1.0 of some custom written online accounting software for school related non-profits I have some advice :)

  • Use standard double entry accounting/bookkeeping (debits and credits) as the basis for your financial engine. You will find this will serve you well when it comes to not only storing data on transactions but also generating reports. Assets = Liabilies + Equity is a tried and true approach for tracking who owns what.
  • Use decimal types for money.
  • Use transactions.
  • Keep the interface as simple as possible.
  • You will need to have a method to allow the user to reconcile the bank records with their own records. Pulling in bank data would help this process but you will need to provide the user with a method to compare. You can use bank statements for this process.
  • The bank is always considered to be right. If there is a discrepancy between the bank and the user records... the fault almost always is with the user records.
  • Make sure you provide some sort of backup facility for the user
  • Secure the users data
  • Make sure you fully understand the process you are automating. Do not make assumptions. Run your ideas by an accountant who specializes in personal finance. Having this vetting will help quite a bit.
  • Be prepared to write ALOT of code. Accounting software has been around for years, the list of "standard features" for a typical accounting package has grown, and there are quite a few players in the market. If you are planning on selling this product you will need to provide those standard features and then find some way of differentiating it from what is already available with additional features.
  • TEST TEST TEST and TEST again. You are keeping records of peoples personal financial transactions (their money). Errors are not taken lightly.
Andy Webb
A: 

Have you looked at Microsoft® Office Accounting Express?

MarlonRibunal
A: 

EXCELLENT answer, Andy! Thanks so much!

This is the perfect reason to allow users to pm each other; I'm sure I'd have more questions for someone with the experience of having done it.

Thanks again,

Michael

kaneuniversal
Not a problem :)
Andy Webb