PSA Tutorial 1 of 8

Set up project milestones and billing

Break a project into billable milestones, track task progress against each one, and generate an invoice the moment a milestone is marked complete - with no separate billing step to remember.

Uses: Projects, Milestones, Tasks, InvoicingOutcome: first milestone-billed project live
1

Create the project

Why it matters: the project record is what everything else attaches to - milestones, tasks, time logs, and the eventual invoice all live under it.
  1. Go to Projects → New Project.
  2. Enter the project name and attach the client - this is what makes the project billable to that client later.
  3. Assign a project admin and add members (or apply a saved group).
  4. Set the start and end dates.
  5. Save. The project starts in not started status.
What you'll see: a new project workspace with tabs for Milestones, Tasks, Time Logs, Discussions, Files, Expenses, and Invoices.
2

Add milestones

Why it matters: a milestone is the unit that carries its own cost and currency - it's what actually gets invoiced, not the project as a whole.
  1. Inside the project, go to the Milestones tab.
  2. Click Add Milestone and give it a title (e.g. "Phase 1: Discovery").
  3. Set the milestone's cost and currency - this is the amount that will be invoiced when it's complete.
  4. Set a due date.
  5. Repeat for each phase of the engagement (e.g. Discovery, Build, Launch).
What you'll see: a list of milestones, each showing complete/incomplete status and its billable value.
3

Add tasks under each milestone

Why it matters: tasks are the actual work items your team executes and logs time against - grouping them under a milestone is what lets progress roll up correctly.
  1. From the Tasks tab, click New Task.
  2. Attach the task to the project and the relevant milestone.
  3. Assign one or more team members, set priority, and add an estimate if useful.
  4. Mark the task billable if its logged time should count toward the invoice.
What you'll see: tasks appear on the project's Kanban board and under their milestone, ready to be worked and time-logged.
4

Track progress automatically

Why it matters: without this, you're checking in manually to know how close a milestone is to done.
  1. In Project Settings, turn on calculate_task_progress - this rolls up completed tasks into a milestone completion percentage automatically.
  2. If clients should see task-level detail, also enable client_view_task.
These are project-level toggles - they apply per project, so review them each time you create a new project from scratch (or save a project as a template to carry the settings forward).
What you'll see: each milestone shows a live completion percentage on the project dashboard as tasks are marked done.
5

Mark a milestone complete

Why it matters: this is the trigger point - a completed milestone is what becomes billable.
  1. Once all tasks under a milestone are done (or the deliverable is otherwise ready), open the milestone.
  2. Change its status to complete.
What you'll see: the milestone moves to a completed state and becomes available to invoice from the project's Invoices tab.
6

Generate the invoice

Why it matters: this is the step that turns completed work into revenue - and it pulls the exact cost you set on the milestone, so there's no re-keying numbers.
  1. From the project's Invoices tab, click Create Invoice from Milestone.
  2. Select the completed milestone - its cost and currency populate automatically.
  3. Review line items, apply any taxes, and confirm the client's billing details.
  4. Send the invoice. The client can pay on the signed public invoice link via any connected gateway (Stripe, PayPal, Razorpay, and others), or you can record an offline payment.
What you'll see: an invoice in unpaid status tied to this project and milestone, visible to the client in their portal.

Tutorial complete

You've set up your first milestone-billed project. Next, learn how logged time - not just milestones - can flow into an invoice automatically.

Next: Track Billable Time and Convert It to an Invoice