Prevent Invoice Issuing for Zero Value Invoices in WHMCS

Back   Posted on 5 october 2020 / Updated on 24 january 2021
Reading time 4 minutes

Unwanted Invoices

From an invoicing perspective WHMCS has a lot of limitations. It lacks some basic concepts of billing and handles invoices as if it's playing with toys.

One of the many limits of WHMCS is that it issues too many invoices. This can be improved using our monthly invoicing for WHMCS but there certain types of invoices that make absolutely no sense:

  • Fully paid by credit
  • Free products/services
  • 100% discount

In these scenarios issuing invoices is completely useless as amount is zero and there are no payments or transactions involved. We should get rid of them for the following reasons:

  • User experience. Life is too short to spend hours wrangling invoices
  • Hidden costs. Invoice processing is a labor-intensive process
  • In many countries issuing zero value invoices is not supported
  • In others it's even considered suspicious

Billing Extension provides a solution to this problem. The module is capable of "suppressing" unwanted invoices like the ones we just seen. Basically it checks amounts preventing WHMCS from generating zero value invoices.

Invoice Suppression

You can configure invoice suppression from Addons > Billing Extension > Settings > Billing Preferences > Invoice Suppression. Here you find the following dropdown that lets you choose what type of zero value invoices you don't want to issue.

We recommend to use this same settings as it is the most common. The Anti-Fraud option is used to prevent issuing invoices for fraudulent orders in WHMCS but that's another story.

Next time WHMCS tries to issue a zero value invoice, Billing Extension will detect it and stop WHMCS from continuing. The proforma is removed from the system and this page takes its place.

As you can see the page keeps all information. At top-left corner you can quickly see the reason why the invoice has been suppressed. The same information are available also from Addons > Billing Extension > Payments.

We remind you that invoice suppression is not limited to invoices fully paid by credit 100% discount but also due to the following features:

To avoid any possibility of confusion, the module also prevents WHMCS from sending invoice-related notifications (eg. payment confirmations, invoice created etc.).

If you still want to send a notification, the module can send it to both administrators and customers. You can enable it from Addons > Billing Extension > Settings > Billing Preferences where you find the following options.

Invoice Status Admin Page
Suppression Notification (Admin)

Select WHMCS administrators you want to notify about suppressed invoices.

Suppression Notification (Client)

Select the Email Template to send to customers when an invoice is suppressed. You can customize the message by using the following variables:

  • {$suppress_reason} The reason why the invoice has been suppressed. The variable assumes any of the following values:
  • {$suppress_invoice} Skip when invoice issuing is not necessary. No for postponed invoices (eg. OneInvoice, Manual invoicing)
  • {$invoiceitems} array of items that were part of the proforma before suppression

The email template in question must use General as category. If you don't know how to create a custom email templates, keep reading.

Creating a custom email templates could be a bit difficult for WHMCS beginners. Let us give you some help. First off open Setup > Email Templates and click on Create New Email Template.

This opens a modal where you need to select General as Email Type. For Unique Name you could use something like Invoice Suppression Notification. Next page allows to define email body and title for every supported language. Feel free to use this code as body or as a starting point.

<p>Dear {$client_name},</p>
<p>{if $suppress_reason == 'NewCustomers'}we have received your order, but in order to issue the invoice we need to verify your account. You don't have to do anything. You will receive the invoice once the verification is complete.<br />{elseif $suppress_reason == 'FullDiscount'}great! Your 100% discount was successfully applied to your order. This is to inform you that you will not receive an invoice as no payment has been applied.<br />{elseif $suppress_reason == 'NoAmount'}recently we issued you a zero value proforma. We would like to inform you that you will not receive an invoice for the order in question as no payment was needed.<br />{elseif $suppress_reason == 'FullCredit'}we inform you that <strong>{$credit_applied}</strong> have been used to automatically pay the following services (excl. tax):</p>
<p><strong>Invoice Items<br /></strong>{foreach from=$invoiceitems item=item}<br />{$item.description} {$item.formattedAmount}<br />{/foreach}</p>
<p>------------------------------------------------------</p>
<p>Your remaining credit is <strong>{$credit_balance}</strong>.<br />{elseif $suppress_reason == 'AddFunds'}we have received your payment. Your available balance is <strong>{$credit_balance}</strong>.<br />{elseif $suppress_reason == 'OneInvoice'}this email will serve as an official receipt for your payment. You will receive the invoice at the beginning of next month.<br />{elseif $suppress_reason == 'Manual'}this email will serve as an official receipt for your payment. You will receive the invoice at a later stage.<br />{/if}</p>
<p>{$signature}</p>

Below you can see a preview of the following email in action with FullCredit as suppression_reason. As you can see the email includes credit applied (1), invoice items (2) and remaining credit (3).

Comments (0)

Speak Your Mind Cancel Reply