14.3. Protocol

GnuCash does not (yet) have an integrated payroll system. You can use GnuCash to track your payroll expenses, but you will need to develop a payroll protocol and perform the calculations outside of GnuCash, in a spreadsheet for example. In this section, one such protocol is presented, which you can use as a model.

14.3.1. Step 1: Deductions list

The first step to the payroll protocol is to create a list of all the possible taxes and deductions for each employee, which should include definitions and formulas for calculating each value. This step of the protocol will only need to be done once, and again in the future when the payroll laws or tax rates change. For our simple payroll situation with the two taxes, such a list would look like this:

  • E_GROSS_SALARY - Employee gross salary

  • E_TAX1 - Employee contribution to tax1 (X% of E_GROSS_SALARY)

  • E_TAX2 - Employee contribution to tax2 (X% of E_GROSS_SALARY)

  • C_TAX1 - Company contribution to tax1 (X% of E_GROSS_SALARY)

  • C_TAX2 - Company contribution to tax2 (X% of E_GROSS_SALARY)

Note

The employee's net salary (E_NET_SALARY) is defined as E_GROSS_SALARY - E_TAX1 - E_TAX2 and need not be placed in this list since it is composed of items that already exist.

You will want to place the actual formulas for calculating each deduction in this list. Sometimes, these formulas can be quite complex, and sometimes the formula may simply say "look this number up in table XYZ of the tax codes."

Notice that you can calculate some interesting values using the above definitions, such as the total cost to the company: E_GROSS_SALARY + C_TAX1 + C_TAX2.

14.3.2. Step 2: Create the Transaction Map

When you record payroll in GnuCash, it is done with a single split transaction. This split transaction will populate the appropriate expense and liability accounts. If, in the future, you want to discover any of the payroll details for a particular employee, simply open the split transaction.

With the deductions list from above in hand, an employee split transaction map can be generated which maps each of the items in the list to a GnuCash account.

Table 14.1. Transaction Map

AccountIncreaseDecrease
Assets:Checking E_NET_SALARY
Expenses:SalariesE_GROSS_SALARY 
Liabilities:Tax1 E_TAX1
Liabilities:Tax2 E_TAX2
Expenses:Tax1C_TAX1 
Liabilities:Tax1 C_TAX1
Expenses:Tax2C_TAX2 
Liabilities:Tax2 C_TAX2

14.3.3. Step 3: Pay the Employee

Go to the account from which the employee will be paid, for example your Asset:Checking account. Open a split transaction and enter the real values using the Transaction Map above as a guide. Repeat this for all employees.

Tip

This manual process is tedious, especially if you have a large number of employees. One GnuCash tool you will certainly want to make use of when entering employee payroll is duplicate transaction (use the Duplicate tool bar button). Using this will save you from having to enter all the transaction splits for each employee. You will still need to change the amounts of money to match each employee's real payroll values, but at least you do not need to build the split each time.

14.3.4. Step 4: Pay the Government

The final thing to do is to pay the taxes to the government. The liability accounts have been collecting the taxes for various government agencies, and periodically you will need to send a check to the government to pay this charge. To do so, you simply enter a 2 account transaction in (for example) your checking account to pay off the tax liability. The transaction will be between the checking account and the liability account, no expense account are involved.