by Gerry Ramsey; Updated September 26, 2017
Creating your own accounting software can be a complicated yet rewarding challenge. The key lies in your initial design and your understanding of basic accounting. If you are weak in your accounting knowledge or lack strong programming skills it will take a little longer to complete this undertaking as you work to get up to speed in those areas.
Ensure you have a basic understanding of accounting. You need to determine which specific modules you need and the order in which you will develop them. For example, you may be developing general ledger, accounts payable and fixed asset modules. You would probably design them at the same time but develop them individually.
Determine your software programming tool of choice. Given the nature of accounting software the underlying table structure will most certainly be a relational database. Agile Data provides a good overview of relational databases. Two common and user friendly programming tools are MS Access and Visual Basic. Either one will work so use the one you are most comfortable with or a different tool of your choosing.
Download accounting system freeware and navigate through the system. These accounting software systems and will have more functionality than you are initially attempting to develop, but it will provide a sense of what basic functionality you will need and what the user will eventually see. Two freeware programs are GnuCash and NCH.
Design and create the control tables you will need. Control tables are those tables that have the values contained in the transaction. Two very generic control tables that all accounting software will use are department and account. For instance, when entering a journal entry part of the data will include department and account and the values available to use will prompt from the linked control tables when a user enters a transaction. Each control table you create will be accompanied by edits controlling the length of the field (for example, six characters) and the data format (all capitals, all numeric or alpha-numeric). Typically these tables will have unique values to prevent duplicate entries of the same field, such as duplicate accounts.
Design and create transactional tables. These are tables will details such as general ledger journal entries. Because you are working with a relational database you will be using a lot of tables with parent-child relationships in transactional tables. An example of this for a journal entry might be tables named JE_PARENT and JE_CHILD. The parent table will include fields such as company, journal number, date, account, department and total debits and credits. The child table will have more details and at least two separate lines, if not more, representing the details of the debit and credit amounts. The child table will contain the parent’s assigned journal number but also add detail line numbers for each sequential line.
Build front-end GUI forms around your tables. In the journal entry example, you would only build one form for the user but it would populate both the parent and child records so the user doesn’t have to know the complexity of the underlying table structure.
Build a table with user ids and passwords. A front-end form for logging into your accounting system should be created.
Build user reports. These will include the basic reports such as Balance Sheet, Income Statement and Statement of Cash Flows.