I have a non-profit client who prefers to pay upfront for a bank of development hours that can be used as required. They wanted an invoice for the upfront payment (so simple Prepayment is not suitable) and I wanted a way to manage this that did not require a separate log of the hours used and remaining. Here is how I did it:
-
Create a new liability nominal in the Chart of Accounts for “Customer Prepaid Hours” selecting to “Allow this code to be used in sales invoices”
-
Create new sales inventory “Sales task” item with the name Prepaid Hours and linked to the new liability nominal.
-
Create and issue an invoice for prepaid hours including this sales task and the requested number of hours.
-
Client pays the invoice so now “Customer Prepaid Hours” appears as a liability in the balance sheet and does not appear in “General Sales”.
-
Client requests work and work is completed.
-
Raise invoice for work (using “General Sales” item) but save as draft.
-
Create a credit note from the prepaid hours invoice for the number of hours. I also added a text reference in the item line to the work invoice this “hours credit” related to. Select to “Hold funds on client account”.
-
Go back to the invoice for the work and Log a payment. Select to “Apply from credit”. I also modified the payment instructions to confirm that paid from prepaid hours.
-
I sent a separate email to the client confirming the use of prepaid hours for this invoice and advising them of the balance of hours remaining.
-
The liability is reduced and will continue reducing until entire Prepaid Hours invoice is credited and replaced with work invoices.
I hope this method can help others trying to do the same thing.

