Tutorial 05 · Invoicing & payments

How to set up milestone-based invoicing for solar projects

This tutorial walks you through configuring a payment schedule on a solar project, assigning billing amounts to each milestone, and tracking payments so every invoice fires automatically when a milestone is completed - with zero manual triggers.

10 min read4 steps stepsFinance teams & project managers
Your progress
0 / 4 steps0%
  • Set payment schedule on deal
  • Assign billing to each milestone
  • Confirm client and invoice details
  • Track payments and outstanding balances
Step-by-step guide

4 steps to automated milestone billing

Set up once - invoices fire automatically every time a milestone is completed.

💰STEP 1

Step 1: Set the payment schedule on the deal

The payment schedule is the backbone of milestone billing. It defines how the total project value is split across billing events - usually tied to project phases. Set it at the deal stage so everything is agreed before work starts.

In CrmLeaf
  1. 1Open the deal record → scroll to "Payment Schedule"
  2. 2Click "Add Payment Schedule"
  3. 3Choose schedule type: Milestone-based, Date-based or Manual
  4. 4For milestone-based: add each billing event with amount and trigger milestone
  5. 5Common structure: 30% deposit on deal sign, 40% on installation start, 30% on commissioning
  6. 6Save payment schedule - client can see this in the proposal
Outcome
Payment schedule configured and visible on the deal. Billing amounts and triggers defined before the project starts.
Tip
Always agree the payment schedule before the client signs the proposal - include it in the proposal document. This prevents payment disputes later and sets clear expectations from day one.
🔔STEP 2

Step 2: Link billing amounts to project milestones

Once the project is created from the won deal, link each payment schedule tranche to a specific project milestone. When that milestone is marked complete, the invoice is created automatically.

In CrmLeaf
  1. 1Open the project → go to Milestones
  2. 2Click a milestone → "Set Billing Trigger"
  3. 3Enter the invoice amount or select from the payment schedule tranche
  4. 4Set tax rate (VAT, GST or none) applicable to this invoice
  5. 5Confirm client billing details (invoice recipient, address, payment terms)
  6. 6Repeat for each billable milestone
Outcome
Every billable milestone has an invoice amount attached. No milestone can be completed without the invoice being created.
Tip
For the deposit invoice (raised at deal sign), set it as a "manual" trigger - it fires when you click "Send Deposit Invoice" after the deal is won, not on milestone completion.
📄STEP 3

Step 3: Review and send invoices

When a milestone is marked complete, CrmLeaf creates the invoice automatically. Review it, personalise if needed and send. The client receives the invoice by email with payment instructions.

In CrmLeaf
  1. 1Milestone marked complete → notification appears in Finance dashboard
  2. 2Go to Invoices → the new invoice shows as "Draft"
  3. 3Review: client name, invoice date, line items, amount and tax are pre-filled from the milestone
  4. 4Add any notes (e.g. "Payment due within 14 days per contract")
  5. 5Click "Send Invoice" - client receives email with invoice PDF
  6. 6Invoice status updates to "Sent"
Outcome
Invoice sent to client immediately on milestone completion. No delay between work completed and billing triggered.
Tip
Set up your invoice email template once in Settings → Invoice Template. Every auto-generated invoice will use your branded template - saving you formatting time on every invoice.
📊STEP 4

Step 4: Track payments and manage outstanding balances

As clients pay, record payments against invoices. CrmLeaf tracks partial payments, outstanding balances and overdue invoices - giving finance a live view of cash position at all times.

In CrmLeaf
  1. 1Go to Invoices → click an invoice → "Record Payment"
  2. 2Enter payment amount, date and payment method
  3. 3If partial: CrmLeaf updates balance - invoice status becomes "Partially Paid"
  4. 4Overdue invoices appear in the Overdue report automatically after the due date passes
  5. 5Send payment reminders from within the invoice record
  6. 6Revenue dashboard shows total collected, outstanding and overdue by project, client and month
Outcome
Every payment recorded. Partial payments tracked. Overdue invoices flagged. Finance has a live cash position without a spreadsheet.
Tip
Review the outstanding invoices report every Monday morning - it takes 2 minutes and ensures no overdue invoice goes unnoticed for more than a week.
What you have achieved

Tutorial complete

💰

Automated billing

Milestones complete → invoices fire automatically. Zero manual billing triggers. Zero missed invoices.

📊

Live cash position

Revenue collected, outstanding and overdue visible in real time. Finance has accurate cash flow data without chasing project managers.

🔔

Overdue alerts

Automatic overdue notifications prevent late invoices from sitting unnoticed. Collections team alerted before the delay becomes a problem.

FAQ

Common questions

Yes - CrmLeaf supports date-based payment schedules as well as milestone-based. You can set invoice trigger dates (e.g. 1st of each month) independently of project milestones. This is useful for long-duration projects or when a client has a fixed monthly payment arrangement.

Start your free trial
and follow this guide.

14 days free - no credit card. Set up your account, invite your team and follow each step with your own live data.

Free 14-day trial · Free onboarding · No credit card