Every Instance must have a chart of accounts (CoA). A chart of accounts is the complete set of ledgers that a Instance has access to when categorizing transactions or creating journal entries.

Your Platform contains customizable Chart of Accounts templates, which you apply to newly created Instances.

A company’s chart of accounts typically reflects the business’s unique aspects, so there is no specific standard. However, there are certain protocols that companies are expected to follow when filing their taxes with the IRS (or relevant body).

Contents of a chart of accounts (CoA)

A chart of accounts (CoA) in Teal is a set of nested ledger objects. Ledgers contain line entries with accounting information. Ledgers can also contain child ledgers. For example, you might create an inventory ledger with child ledgers for each type of inventory held. Many small businesses use a “flat” CoA template with no nesting, but the ability to nest ledgers enables more complicated use cases.

Each ledger in the CoA has a type (e.g. Assets) and sub_type (e.g. Current Assets) that determines how they are treated in the accounting reports. Each ledger also has a sort_code. In other accounting systems, this is sometimes referred to as a “ledger code” or “GL code.” The sort_code is an integer that determines the order in which the ledgers are displayed in reports within their respective sub_type.

sort_code conventions

Sort codes are ordered digit by digit, starting from the leftmost position. The sequence is determined by the value of each digit in its respective position. For example, 1123 comes before 220 because the initial ‘1’ in 1123 is lower than the ‘2’ in 220, regardless of the length of the code. This is a common accounting convention.

Aside from this sorting convention, Teal does not enforce any other conventions or patterns on sort codes. However, it is recommended to adopt a common convention, such as starting all ledgers of the same type with the same number (assets start with 1, liabilities start with 2, etc.). The default CoA templates provided by Teal follow best practices for sort_code numbering. You can feel free to follow the same convention or adopt your own.

Having an understandable sort_code convention is especially important if the accounting data will ever be used by professional accountants or bookkeepers, as they will expect this.

Default Charts of Accounts (CoA)

To assist you in getting set up, your platform will contain four CoA templates by default, one for each of the four common entity types:

  • Sole Proprietorship
  • Partnership
  • C-Corp
  • S-Corp

You can manage CoA templates and the ledgers associated with each via the Chart of Accounts Templates endpoint, or via the Developer Portal.

Customizing the default chart of accounts (CoA)

The default CoA templates are quite comprehensive and not tailored to any specific industry. You may want to modify these defaults so that they are more tailored to the end users that you serve.

While you can create new CoA templates from scratch, it is often easier to clone one of the default charts of accounts and modify it to suit your needs.

Managing instance-specific ledgers

Once an instance is created, they will have every ledger from their specified CoA template available to them. Future changes to the template will not affect existing instances.

When an Instance is created with a default CoA, the ledger names will be identical to the ledger names in the default companies, however, every instance’s ledger “ids” are unique. These “ids” are not shared between instances.

Instances will need some additional instance-specific ledgers beyond the default CoA in order to do their bookkeeping. At a minimum, they will need to add at least one financial account ledger to track the funds in their bank account. Financial account ledgers can be created via the Create Ledger endpoint. See the guide on creating ledgers for more information.

In addition, you may opt to allow users to create their own custom ledgers beyond the defaults you have provided. You can use the Create Ledger endpoint to allow users to create their own ledgers.

When creating a ledger, take care to enforce the sort_code conventions of the chart of accounts template that the user is using.