Chart of Accounts

1. How it works

As explained in the Accounting API docs, Hurdlr's "Invisible" Double-Entry Accounting is enabled in the background for all users. That is built on-top of Hurdlr's best practice Chart of Accounts, vetted by thousands of CPAs and accountants, and custom-fitted to your users' needs.

When you create a user via the Hurdlr API, and you specify their business type, Hurdlr automatically generates a chart of accounts for that user. Should that user's situation change, e.g. they convert from a sole-proprietorship to an S-corporation, Hurdlr's API will take care of the necessary modifications to the Chart of Accounts accordingly. As you may know, the Equity section will look different for sole proprietorships vs. S-corps, and the Hurdlr API takes care of this for you, ensuring your products will serve your users as they continue to evolve.

📘

Custom chart of accounts

Many of Hurdlr's API Partners opt to design their own custom Chart of Accounts based on their users' specific use case. The Hurdlr API supports any number of custom Chart of Accounts templates, and the Chart of Accounts can be manipulated at a user or partner level at any point in the time, via UI or API.

2. What it enables

Having a Chart of Accounts behind the scenes means that your users always have a Balance Sheet available with data updated in real-time. Most businesses have to wait for their accountant to compile their Balance Sheet at the beginning of the following month. With the Hurdlr API, this is available in real-time!

3. Getting the user's chart of accounts

At any time, you can display the chart of accounts or programmatically retrieve the user's chart of accounts:

curl \
  --request GET \
  --url https://sandbox.hurdlr.com/rest/v5/accounting/chartOfAccounts \
  --header 'Authorization: Bearer ${access_token}' \
  --header 'Content-Type: application/json' \

The response from GET /chartOfAccounts contains an array of accounts, with nested childAccounts:

[
  {
    "accountNo": "10000",
    "name": "Assets",
    "balance": 250917.65,
    "parentAccountNo": null,
    "childAccounts": [
      {
        "accountNo": "11000",
        "name": "Current Assets",
        "balance": 250917.65,
        "parentAccountNo": "10000",
        "childAccounts": [
          {
            "accountNo": "11001",
            "name": "Citi - Checking *0000",
            "balance": 5475.11,
            "parentAccountNo": "11000",
            "childAccounts": []
          },
          {
            "accountNo": "11002",
            "name": "Citi - Savings *1111",
            "balance": 21.10,
            "parentAccountNo": "11000",
            "childAccounts": []
          },
          ...
        ]
      },
      ...    
    ]
  },
  ...
]

4. Displaying a real-time balance sheet

The above response contains a hierarchical list of accounts, making it easy to display a drill-down list of accounts. On each account record, you may find the following attributes to be of particular interest:

FieldDescriptionFormat
accountNoAccount number, often used by bookkeepers to reference a specific accountString (of numbers)
nameName of the accountString
balanceTotal balance of the account, including all children accountsNumeric, with 2 decimal places
childAccountsAccounts that are hierarchically beneath the given accountArray of accounts

To display a real-time balance sheet, you can simply show a list of the top-level accounts, i.e. the accountNo, name, and balance of each of the accounts residing in the top-level objects of the /chartOfAccounts response. For example, response[0].name would show "Assets" and response[1].name would show "Liabilities.

If your users clicks on Assets, you could then render the childAccounts within that item. For example, response[0].childAccounts[0].name would show "Current Assets".

The Hurdlr API team recognizes that developers are not usually accountants. Don't hesitate to email us at [email protected], and we would be glad to help you with your real-time balance sheet implementation.