The Ramifications of Write Offs in the General Ledger

CAUTION: If you practice cash accounting, refer to Cash Accounting and Write-Offs.

When you write-off unpaid debt, you shouldn't book it all to a write-off expense account. Why? Because the debt that you're writing off typically contains both revenue and liabilities. At write-off time, you typically want to:

  • Book the written off revenue to a write-off expense account, and
  • Reduce the liabilities (you don't owe the liability if you don't get paid).
The following table illustrates an example of a simple contract with two financial transactions.
Event GL Accounting
Customer is billed

A/R 1000

Revenue <900>

State Tax Payable - Taxing State - California <80>

City Tax Payable - Taxing City - San Francisco <20>

Customer is levied a late payment charge

A/R 50

Late Payment Revenue <50>

After these two financial transactions are booked, the customer has debt of $1050. Of this $1,050; $950 is revenue and $100 is liability (money you owe the taxing authorities). If the customer doesn't pay, you will eventually have to write-off this debt.

The following table illustrates the financial transactions that are created to write-off a debt when a customer does not make a payment.
Event GL Accounting
Write-off the bill

Write-off Expense 900

State Tax Payable - Taxing State - California 80

City Tax Payable - Taxing City - San Francisco 20

A/R <1000>

Write-off the late payment charge

Write-off Expense 50

A/R <50>

Notice in the above transactions, the two separate revenue accounts are written off by booking to an expense account. However, the liability accounts are reversed. Why is revenue treated differently from liabilities at write-off time? There's a good reason for it (if you're an accountant), for the time being, just accept that this is how it works.

And finally, we need to worry about what happens if the customer eventually pays off his written off debt. If this happens, most organizations would pay off the write-off first, and, if there was still money left, they'd reimburse the taxing authorities.

The following table illustrates the financial transactions that are created when the written-off debt is paid by the customer.
Event GL Accounting
Pay off the written off debt

Cash 900

Write-off Expense <900>

Reinstate the liabilities

Cash 100

State Tax Payable - Taxing State - California <80>

City Tax Payable - Taxing City - San Francisco <20>

While the reinstatement of liabilities at payment time is possible in the system, the ramifications of doing such make this approach impracticable (the ramifications are a) if the check bounces, we would not be able to reduce the liabilities, and b) if there was a partial payment of the liabilities, the remaining unpaid amount could get written down).

The following table illustrates the financial transactions that are created when the write-off is paid.
Event GL Accounting
Pay off the written off debt

Cash 900

Write-off Expense <900>

Reinstate the liabilities

Cash 100

Reinstated liabilities <100>

Notice that rather than reinstating the individual liabilities, we simply reinstate all liabilities into a single account. This means your accountants will have to distribute this money to the appropriate liabilities manually.

So, how do we achieve the above in the system? This explanation is a little complicated, but it'll make sense if you keep the above financial transactions in mind:

  • First of all, you'll need two different contract types - one to hold the written off revenue and another to hold the reduced liabilities.
    • On the contract type that holds written off revenue, indicate that it is not billable, indicate that it cannot have excess credits, and give it a high payment distribution priority. The distribution code on this contract type should reference your Write-off Expense account.
    • On the contract type that holds the reduced liabilities, indicate that it is not billable, indicate that it cannot have excess credits, and give it a high payment distribution priority. The distribution code on this contract type should reference a the "reinstated liabilities" GL account.

Next, you need to understand how the system's standard write-off logic works:

  • The system accumulates the distribution codes from GL details associated with recent financial transactions linked to the contract being written-off.
  • When the system has accumulated enough distribution codes (i.e., where the amount associated with the distribution code equals or exceeds the amount to write off), the debt will be transferred to a new or existing write-off contract(s). The number and type of contracts to which the bad debt is transferred is defined on the distribution codes. Refer to Setting Up Distribution Codes for how to define the type of write-off contract associated with a distribution code. In our example, we'd need the two contract types described above - one for the revenue accounts, the other for the liability accounts.
  • At write-off time, for those distribution codes associated with revenue, the system will create a transfer adjustment from the normal contract to the write-off revenue contract. This will reduce (credit) the receivable on the normal contract and increase (debit) the expense account defined on the write-off revenue contract.
  • However, if we do the above for the distribution codes associated with liabilities, we have a problem. The problem is a bit hard to explain unless you understand tax accounting, but it basically comes down to this - if we simply transfer the portion of the receivable balance associated with the liabilities to the write-off liability contract, we will always be debiting the distribution code defined on the contract type. This isn't correct because we really want to debit the liability account (and reference the characteristic type and value from the original credit) when we reduce the liability. So how do we do this? For those distribution codes associated with liabilities, you need to indicate that you want to override the distribution code on the "transfer to" side of the transfer adjustment with the distribution code / characteristic type / characteristic value that was originally booked. Refer to Setting Up Distribution Codes for how to indicate you want to override the distribution code at write-off time. If you do the above, then at write-off time the transfer adjustment will reduce (credit) the receivable on the normal contract and increase (debit) the original liability accounts from the original financial transactions.

If you followed the above, you'll see that we now have everything debited and credited appropriately. And, if a payment materializes for the written off debt, we will simply debit cash and credit the distribution code on the respective contract (either Write Off Expense or Reinstated Liabilities).

Note: Batch and real-time write-offs may use the above processing. The above logic is executed real time when a user writes off debt using the write-off transaction (assuming the base package write off algorithm is plugged into the account's customer class). The above logic is executed in batch when a write-off event that references a Write Off Using Distribution Codes event type is executed. Write-off events are described in detail below.