best practicesOpenbravo ERP

SMB best practices: AP/AR offsetting with Openbravo

Suppose that your company, F&B Inc., has a business relationship with a partner called Fairbelts that is both a supplier and a customer.

Over time, you will find yourself making payments to Fairbelts as a supplier as well as collecting payments from Fairbelts as a customer. Wouldn’t it be easier cancel the mutual debt off rather than having to move money across the companies? This practice is known as AP/AR offsetting.

Most accountants would frown hearing about AP/AR offsetting as it reduces traceability of cash flows; they would advise you to keep your payables and receivables activities strictly segregated. Some legislations discourage this practice for the same reason and in a few countries this is even illegal.

That said this is a handy practice and many small and medium businesses (SMB) take advantage of it to reduce their collection efforts.

If your legislation permits it, Openbravo, with Advanced Payables and Receivables, allows you to take advantage of AP/AR offsetting without loosing control of your cash flows or your open receivables. Here is how I recommend to do it:

  1. Setup a separate financial account, let’s say called “AP/AR Offset Register”
  2. Setup a specific payment method, let’s say called “AP/AR Offset” and enable it only for the above account.
  3. Now consider the scenario where you want to use an AP invoice to pay an AR invoice
  4. Navigate to the AP invoice and pay it using the AP/AR Offset payment method out of the AP/AR Offset Register. Name your payment out using the AR invoice number.
  5. Navigate to the AR invoice and pay it using the AP/AR Offset payment method out of the AP/AR Offset Register. Name your payment out using the AP invoice number.
  6. Validate that the AP/AR Offset Register account balance always remain zero.

With this approach:

  • You do not affect cash traceability because all transactions happen in a separate financial account, without affecting the balance of the real bank accounts.
  • You have a simple control method: the balance of the AP/AR Offset Register must always be zero.
  • Everything is traceable. For example, looking at an AR invoice, you can see that it has been paid by an AP offset because the payments associated with it uses payment method “AP/AR Offset“. If you want to know which AP invoice is associated with that offset you can look at the payment name.

Let’s make a more specific example:

  1. F&B sells $1,000 to Fairbelts and issues invoice AR1 for that amount
  2. F&B purchases $500 from Fairbelts and receives invoice AP1 for that amount
  3. In AP/AR Offset Register, F&B registers a payment out of $500 to Fairbelts; payment is numbered AR1 and it is applied to payables invoice AP1.
  4. In AP/AR Offset Register, F&B registers a payment in of $500 from Fairbelts; payment is numbered AP1 and it is applied to receivable invoice AR1.
  5. AP/AR Offset Register balance is zero.
  6. Payables invoice AP1 is fully paid.
  7. Receivables invoice AR1 has an outstanding balance of $500.
  8. Business partner Fairbelts sends electronic payment of $500 to bank account West Bank Account.
  9. When bank notifies F&B of the payment, F&B records the payment with number “EFT102″ in West Bank Account and applies it to invoice AR1.
  10. Receivables invoice AR1 is now fully paid. When users inspect the invoice they can see the payment details:
    o Payment AP1 $500
    o Payment EFT102 $500

In this scenario, the AP/AR Offset Register balance is non zero only in between steps 3 and 4. The fact that this account is not zero is an indication that there is a AP/AR offset transaction that has not been properly completed. You can use this as a managerial control and monitor that the balance of this account properly reconciles to zero at the end of every cycle.

This is an example of how Openbravo allows smart SMBs to adopt lean business processes while preserving financial control best practices.

Previous post

Advanced asset management for Openbravo ERP 2.50

Next post

Connecting to postgres database in java code