Not to pursue customers that owe a negligible amount (for example, a customer has a $100 credit, the charges for the period total $101, and an invoice with an amount due of $1 is generated), you can set a “collection threshold” on the customer class. This is the minimum owed amount required to initiate the payment collection stage 3 (“notifications and actions if payment is past due”). If the amount owed is equal to or less than the collection threshold, stage 3 is skipped. So even if the customer doesn’t make a timely payment and the invoice is assigned the “overdue” status, this customer will not receive outstanding balance notifications and their services will not be eventually limited/suspended due to non-payment. Collection threshold

How it works

Link copied to clipboard

Except for the payment status, such as “unpaid”, “partially paid”, or “overdue”, invoices have the collection status “collect” or “do not collect.” By assigning this status, PortaBilling knows whether to send outstanding balance notifications, suspend services due to non-payment, and so on.

When the amount due (calculated during invoice generation or the remaining amount due after some payments have been applied to the invoice) is equal to or less than the collection threshold, the status is “do not collect.” This means that the payment collection stage 3 should be skipped (“notifications and actions if payment is past due”).

If you update your system to MR107 or a later version, PortaBilling will also skip payment collection stage 2 (“automatic credit card charging”) for backward compatibility. In this case, to keep charging customers’ credit cards when the amount owed is less than or equal to the collection threshold, you need to manually enable this feature on the Configuration server web interface. See Configuration for details.

PortaBilling considers not only the amount due at the time of invoice generation but also takes into account any payments made after the invoice has been generated (check Configuration for details). This helps in situations when a customer makes a payment, which is slightly less than the required amount due to bank fees or human error. It also protects service providers from a situation where the customer has multiple unpaid invoices each with a small amount due but these amounts add up to a considerable balance (in case the invoice amount due is calculated using the “simple” method where the amount due is the sum of charges for the given period and doesn’t include the previous balance).

When a customer makes a payment, it is applied to the oldest invoice first and triggers a “collection status” check on each invoice. PortaBilling takes the difference between the amount due and the paid amount and compares it with the collection threshold. If it falls below the collection threshold, the invoice status is changed to “do not collect.” If there are no overdue invoices left with the “collect” payment status, the customer’s service, suspended due to non-payment, will resume.

Example

Say you set a collection threshold of $10 on the customer class.

A customer subscribes to your services in May. On June 1st, an invoice with an amount due of $10 is generated for the customer. The invoice status is “unpaid” since auto-payment failed due to an expired credit card. The May invoice becomes overdue, but since the total amount due of $10 does not exceed the $10 threshold, the collection status is “do not collect,” so the customer does not receive notifications and continues using the service.

On July 1st, the $10 invoice for June is generated, and the amount due is $10+$10=$20. The payment is not received before the due date, so the invoice for June also becomes overdue. Since the amount of $20 is more than the $10 threshold, the collection status for the June invoice is “collect.” This triggers the regular payment collection process and the customer starts receiving notifications about the upcoming due date, possible suspension, and so on.

At the end of July, the customer makes a partial payment of $15. The payment covers the May invoice in full (the status is changed from “overdue” to “paid”), and the June invoice becomes partially paid (the status remains “overdue”). The collection status for both invoices becomes “do not collect” since the remaining unpaid amount ($20-$15=$5) is less than the collection threshold of $10. The customer’s service is resumed. While the customer’s balance remains $5, the customer continues enjoying the service. The standard payment collection process will be launched only when the amount they owe exceeds the $10 threshold again.

Benefits
  • Customers are not chased for negligible overdue amounts.
  • You can prioritize positive long-term customer relationships over relatively small overdue amounts.

Configuration

Link copied to clipboard

Prior to MR107, the collection status of an invoice was solely determined by the amount due at the time of generation. Since payments that are made after the invoice generation do not change the invoice amount due (PortaBilling does not re-generate an invoice after every payment), the collection status remains unchanged regardless of any subsequent payments made by the customer. This could lead to situations where a customer who paid the majority of their debt but fell short of paying a small amount, e.g., $0.10, would not be able to continue using the service.

Starting from MR107, you can choose either to maintain the old behavior, where PortaBilling considers only the amount due at the time of invoice generation (this should be done only if you have strong reasons to maintain the old behavior for backward compatibility), or also take into account any payments applied the invoice after has been generated (new behavior).

If you update your system to mr107 or a later version
Link copied to clipboard

For backward compatibility, if you update your system to MR107 or a later version, the old behavior is preserved by default:

  • The collection status of an invoice is solely determined by the amount due at the time the invoice is generated
  • When the amount due is less than or equal to the collection threshold, the customers’ credit cards are not charged automatically

We strongly encourage you to change the collection behavior to the new one, since it provides better cash flow for you and a better experience for your customers. You need to manually set the corresponding options on the Configuration server web interface:

  • For PortaBilling to consider not only the amount due, but also any payments made after an invoice has been generated:

    Go to Cluster Suite > Web cluster > select Global or a specific environment > Invoice > for the Compare_Collection_Threshold_Mode option, select Remaining invoice amount due. the Compare_Collection_Threshold_Mode option

  • To continue automatically charging the customers’ credit cards even when the amount owed is less than or equal to the collection threshold:

    Go to Cluster Suite > Web cluster > select Global or a specific environment > Invoice > for the Charge_Credit_Card_Under_Collection_Threshold option, select Yes. The Charge_Credit_Card_Under_Collection_Threshold option

If you install mr107 or a later version
Link copied to clipboard

If you install MR107 or a later version from scratch, the following two options will be set by default:

  • To determine the collection status of a specific invoice, PortaBilling considers not only the amount due but also any payments made after an invoice has been generated (the Compare_Collection_Threshold_Mode option is set to Remaining invoice amount due on the Configuration server web interface by default).
  • Even if the amount owed is less than or equal to the collection threshold, the customers’ credit cards are still charged automatically. To change the default action and not charge the credit cards in this case, configure the corresponding option on the Configuration server web interface: go to Cluster Suite > Web cluster > select Global or a specific environment > Invoice > for the Charge_Credit_Card_Under_Collection_Threshold option, select No.

On this page

Release
What's new
Admin manuals
Handbooks
Developers documentation
UI help