Milestone Based Billing

Milestone-based billing is the billing model common in companies with project-driven revenues. This type of billing typically occurs only as certain project milestones have been attained. Tracking the milestones using the project Gantt chart makes it just as easy to track the billing invoices for the project in the same way as the actual deliverable milestones of the project.

Alternatively, depending on how the payment milestones for your projects are structured, you can bill your clients on specific dates regardless of your project’s progress. This too can be achieved using the milestone-based billing techniques suggested in this manual.

At the end of this manual, you will learn how to:

  • Define billing milestones that are part of your project.
  • Use invoicing reports to track project billing

Invoicing Fields

In this scenario, sending an invoice to the client becomes one of the tasks in the project plan. Using Celoxis default and custom fields, we will create several additional attributes which will allow you to set a special type of task - an Invoice task. You can create custom fields under Top MenuAdminAccount ManagementCustom Fields.

  1. Date Invoiced
    • Name: Date Invoiced
    • Type: Date
    • Required financial privilege to view: Yes
    • Required?: No
    • Formula Key: date_invoiced
    • Attached To: Task
    • Rational: to record the date when the invoice was sent
  2. Date Paid
    • Name: Date Paid
    • Type: Date
    • Required financial privilege to view: Yes
    • Required?: No
    • Formula Key: date_paid
    • Attached To: Task
    • Rational: to record the date when the invoice was paid
  3. Invoice Status
    • Name: Invoice Status
    • Type: Formula, use the below mentioned formula.
            label = 'Unknown';
            now =;
            label = !empty entity.date_invoiced ? 'INVOICED' : label;
            label = Date.before(entity.startCalendar, now ) && entity.date_invoiced < now ? 'OVERDUE' : label;
            label = !empty entity.date_paid ? 'PAID' : label;
            label = Date.after(entity.startCalendar, now) ? 'FUTURE' : label;

      ** These options can be customized.

    • Required financial privilege to view: Yes
    • Required?: No
    • Formula Key: invoice_status
    • Attached To: Task
Adding Invoice Milestones to the project timeline

When you put together contracts, or statements of work defining the project (note that this work is done outside of, and independent of Celoxis), you are likely to have the Payment Milestone section of the contract, defining exactly what payments are made, and when. Depending on the rules of the contract, and on the nature of work you perform, the payment milestones may be tied to specific deliverables, specific days or both. In order to track the project’ billing using the task attributes we set in the previous section, you will need to create an Invoice task for every payment milestone, and configure it according to the rules of your contract.

For example, imagine the scenario where you are building a Corporate Intranet for the client, under a $100,000 fixed price contract. Your payment schedule may look something like this:

# Project Milestone % Amount Projected Date Rules and Dependencies
1 Project Kick Off 10 $10,000 09/25/17 Invoice on the specified date, regardless of the project status
2 Conclusion of SRS Phase 25 $25,000 11/14/17 Invoice once the specified project milestone was attained
3 Conclusion of the Development Phase 25 $25,000 01/02/18 Invoice once the specified project milestone was attained
4 Final acceptance 40 $40,000 01/12/18 Invoice once the specified project milestone was attained
TOTAL 100 $100,000

In this situation, the payment milestone #1 will need to be manually scheduled in the project plan to occur on 9/25/17, while all other invoices may be delayed, if the project timeline is extended through the duration of the project.

To ensure proper milestone-based billing in this scenario:

  1. Add the Invoicing milestone tasks to your project plan

    These tasks are going to be your milestone tasks (AddMilestone)

    Note that the task 6 is manually scheduled, as indicated by the M icon next to the task ID.

    The remaining milestones 7, 27 and 32, are scheduled to start when the preceding phases are complete, as dictated by the project contract.

  2. Set milestone tasks’ attributes

    Here, it is time to put the Fixed Price amounts on these milestones. For each of the Invoice milestone tasks, set these amounts under the Edit TaskAdvanced tab.

    • Set Billing Type to Fixed Price
    • Set the Fixed Price
    • Under the Custom Fields tab, you can also set the Date Invoiced so that you can see the details as described in step 3.
  3. Status of the invoices

    As the project progresses, and you invoice your client, the Invoice Status will automatically be calculated based on logic defined above.

    Once the payment is received, you can mark the Date Paid against the milestone so that the Invoice Status automatically sets to Paid.

Invoicing Reports

Below are the examples of the reports that can be used to track the billing of the projects:

Project Billing Milestones

Cross-project table, showing Fixed Price and Invoice Status for all invoices: Paid, Sent or Invoiced.

To create this task-based report, use the Milestone filter set to Yes, including only the tasks which are your payment milestones.

Projects Invoices by Status

Bar chart, showing Invoice Status for all active projects. This is again a task report.

Just like any other chart in Celoxis, this report is interactive. Click on each bar to reveal the detailed information for the invoices of the chosen status.

A Sample dashboard for your Accountant to track the Invoice details:

Conclusion/Final Points

As shown in the examples above, it is very easy to create and maintain the milestone-based billing setup in Celoxis.