The gap between "contract signed" and "invoice sent" is where scope creep lives. Not because clients are acting in bad faith, but because the project exists only in email threads, Slack messages, and two people's increasingly divergent memories. By the time you're ready to invoice, your client remembers fewer revisions and a narrower scope than you actually delivered. The dispute isn't malicious. It's structural — there was no shared, timestamped record of what was agreed, what was delivered, and what was approved.
PayShield's project module is built to close that gap. Every milestone, deliverable, revision request, and client approval lives in one place, attached to the contract that authorized the work. When invoice time comes, you're not reconstructing the project from memory. You're referencing a record that both you and your client can see.
This guide covers the full project lifecycle: creating a project, breaking it into milestones, sharing a client portal, handling change orders, and rolling tracked time into invoices. If you haven't set up your contract and proposal yet, start with the contracts guide and proposals guide — the project module works best when it's connected to those earlier steps.
Creating a project
Go to Projects in the left sidebar and click New Project.
You'll be asked to link the project to a client and a signed contract. This link is the foundation of everything else — milestone approvals reference the contract's scope, revision tracking references the contract's revision cap, and change orders flow back to the contract record. If you don't have a signed contract yet, you can create an unlinked project, but you'll lose the enforcement features.
If you came from the proposals guide and accepted a proposal in PayShield, your project was already created automatically when the client accepted. You'll find it in Projects with the status Active and the contract pre-linked. Skip ahead to milestones.
Project statuses follow a simple lifecycle:
- Active — work is in progress. This is the default when you create a project.
- Completed — work is finished and invoiced. You can archive from here.
- Archived — the project is read-only. Useful for looking back at past work without cluttering your active view.
You can move a project between statuses manually at any time. There's no penalty for marking a project completed before the final invoice is sent — it's a label, not a lock.
Free tier vs. Pro: On the free tier, you can have 1 active project with up to 3 milestones. Pro gives you unlimited active projects and unlimited milestones. If you're evaluating PayShield on a single paid project first, the free tier is enough to run the full workflow end to end.
Give the project a name that your client will recognize when they see the portal — it shows up exactly as you enter it. Set a start date and expected end date. These populate the project timeline your client sees in the portal and help you spot if a milestone schedule is going to push past the agreed delivery date.
Milestones and deliverables
Milestones are the backbone of the project module. Each one represents a discrete chunk of work with a deadline, a status, and a place to attach the files you deliver.
To add a milestone, open the project and click Add Milestone. You'll set:
- Name — keep it client-readable. "Round 1 Design Concepts" is better than "M1."
- Description — a brief summary of what's included in this milestone. This shows in the client portal, so write it for the client, not for yourself.
- Deadline — the date by which you commit to delivering. PayShield will surface overdue milestones in your dashboard.
Milestone statuses track where each deliverable is in the review cycle:
| Status | Meaning |
|---|---|
| Not Started | Work hasn't begun |
| In Progress | Currently working on it |
| Delivered | Files uploaded, awaiting review |
| Under Review | Client is reviewing |
| Approved | Client signed off |
| Revision Requested | Client wants changes |
You move milestones through these statuses manually as you work. When you upload deliverable files to a milestone and mark it Delivered, PayShield notifies your client (if you've enabled the portal — more on that below) and moves the milestone into the Under Review state automatically. From there, the client can approve or request revisions directly in the portal.
Attaching deliverable files works like any file upload — drag and drop or browse. PayShield keeps a version history for each attachment, so if you upload a revised file after a round of revisions, the original is still accessible. This matters when a client says "I liked the first version better" six weeks later. You're not hunting through your own hard drive or email — the version history is on the milestone record.
Milestone completion and invoicing are connected. When you create invoice line items in PayShield, you can reference a milestone directly. This ties a specific payment to a specific piece of approved work. For fixed-price projects with milestone-based payments — 30% on kickoff, 40% on first delivery, 30% on final approval — this removes the ambiguity from "when do I invoice?" The milestone is approved, you invoice. Simple, documented, harder to dispute. See the invoicing guide for how to build those line items.
The client portal
Most client communication about deliverables happens over email. Email is bad for this. Attachments get buried, approval threads split across forward chains, and when there's a dispute, "I thought you said it was fine" is genuinely hard to counter.
The client portal gives your client a single URL where they can see the project, review deliverables, approve milestones, and request revisions with written comments. Every action they take is timestamped and recorded. You have a paper trail that didn't require you to screenshot an email chain.
Token-based access — no login required. The portal URL contains a unique token that identifies the project and client. Your client doesn't need to create a PayShield account. They click the link and they're in. This matters because "can you just email me the files" is usually friction avoidance — clients don't want to create yet another account. Remove that friction and they'll use the portal.
The token is unique per project. If you need to revoke access — say, a project falls apart before completion — you can rotate the token from the project settings. The old URL stops working.
What clients see in the portal:
- Your business name and branding (not PayShield's — the portal is white-labeled)
- Project name and timeline
- Each milestone, its status, description, and deadline
- Attached deliverable files for milestones that are Delivered or later
- Their previous comments and revision requests
What clients can do:
- Approve a milestone — one click. Moves the milestone to Approved and timestamps the approval.
- Request revisions — they click "Request Revision," write a comment describing what needs to change, and submit. The milestone moves to Revision Requested and you get notified.
- Download files — clients can download any deliverable attached to a milestone they have access to.
To enable the portal, open the project settings and toggle Client Portal Access on. PayShield generates the URL immediately. You can share it by copying the link directly from the project settings page.
The portal is a per-project toggle. If you have a client with three active projects and you only want portal access on two of them, that's a setting on each individual project.
Your brand, not ours. The portal shows your business name, not PayShield's. From your client's perspective, they're interacting with your system. This matters for solo freelancers who don't want to advertise which tools they use, and for agencies that want a cohesive brand experience.
Change orders and revisions
Scope changes happen. The question is whether you have a process for them or whether they just silently expand the project until you're doing 40% more work than you quoted.
PayShield handles this with two distinct mechanisms: revision tracking against the cap in your contract, and change orders for work that goes beyond the original scope.
Revision tracking is automatic when you link a project to a contract. If your contract specifies two rounds of revisions per milestone, PayShield tracks how many revision requests have been submitted against each milestone. When a client requests a revision that would exceed the cap, PayShield surfaces a warning — you can still accept it, but you have the data to support charging for it.
The revision cap comes from the contract. If you haven't set one, there's nothing to track against. This is the main reason to set revision caps in your contracts before projects start — see the contracts guide for how to do that. It's much easier to reference a revision cap the client already signed than to introduce the concept mid-project.
Change orders are for scope additions that go beyond revisions entirely — a new deliverable, a feature the client wants added, a format change that requires starting over. To create one:
- Open the project and click Change Orders.
- Click New Change Order.
- Describe the requested change, the additional fee, and the timeline impact.
- Send it to the client for approval.
The client receives the change order in the portal (or via email if they haven't opened the portal yet). They can approve or decline. If approved, the change order is attached to the project record and the agreed-upon additional fee can be pulled into an invoice line item.
A declined change order doesn't disappear — it stays in the record as documentation that you raised the issue and the client declined to pay for it. If the work was done anyway and payment is later disputed, that record is valuable.
Time and expense tracking
For fixed-price projects, time tracking is optional. For hourly or retainer work, it's how you justify the invoice.
Each project in PayShield has a timer you can start and stop from the project view. Time entries are flagged as billable or non-billable when you log them. Billable hours roll into the project's totals and can be pulled directly into invoice line items when you're ready to bill.
Expense categories let you log project costs alongside time:
- Software — tools or subscriptions you purchased for the project
- Travel — mileage, transit, or accommodation
- Equipment — hardware or rentals
- Office — workspace fees
- Marketing — ad spend for client campaigns you're running
- Meals — client meetings or team meals
Mark expenses as billable if you're passing them through to the client, non-billable if they're your cost to absorb. Billable expenses, like billable time, appear as line items when you generate an invoice.
When you're ready to invoice from a time-and-materials project, go to Create Invoice and select From Project. PayShield pulls in all unbilled billable time and expenses for that project. You review, adjust if needed, and send. The invoicing guide covers the full invoice workflow, including what happens when clients don't pay.
Tips for running projects cleanly
Link milestones to invoice line items. The milestone approval timestamp becomes documentation that the client signed off before you invoiced. That's the cleanest possible position if a payment dispute arises.
Use the portal for deliverable approvals instead of email. It takes two minutes to enable per project and it creates a timestamped record of every approval and revision request. An email chain does not.
Set revision caps in the contract before the project starts. Once you're mid-project, raising the revision cap conversation is awkward. When it's already in the signed contract, you're not negotiating — you're enforcing what was agreed. See the contracts guide for the exact clause to use.
Don't skip the change order process for "small" additions. The work that never gets billed is always the work that was "too small to make a big deal about." Change orders take five minutes to create. Unbilled scope adds up faster than you expect.
For a full picture of how projects connect to proposals, contracts, invoicing, and payment escalation, see How to Use PayShield.