Quotes & Invoices
Quotes
Quotes (also called proposals) let you scope and price work before any invoice is raised. Clients can view, sign, and accept quotes directly from their portal.
Quote statuses
Creating a quote
Go to Quotes and click New quote. Select the client and you'll land on the quote editor.
Quote title
Give the quote a clear title — this appears in the client's portal and in email notifications (e.g. “Website Redesign — March 2025”).
Line items
Add each deliverable as a line item with:
- •Description — what you're delivering
- •Quantity — number of units (hours, pages, items, etc.)
- •Unit price — price per unit, excluding VAT
The line item total, subtotal, VAT, and grand total update automatically as you type.
VAT
VAT is applied at 15% by default. To mark a quote as VAT-exempt, click the Mark exempt toggle next to the VAT row. This sets VAT to 0% for the entire quote.
Valid until date
Set an expiry date for the quote. Three days before expiry, CoPortal automatically sends the client a reminder email. After the date passes, the quote is marked as Expired.
Linked project
You can optionally link a quote to an existing project. When the quote is accepted, CoPortal will use that project instead of creating a new one.
Sending a quote
Click Send proposal. CoPortal saves the current version and sends a branded email to the client with a link to their portal where they can view and sign it.
AI quote generation (Studio & Agency)
Click Parse from notes below the line items. Paste in meeting notes, an email brief, or a scope document. The AI will extract:
- •A quote title
- •Line items with descriptions, quantities, and pricing (based on your workspace hourly rate)
- •Scope notes
Review the output before saving. You can accept the AI-generated items, edit them, or add them on top of existing line items.
View tracking
When a client opens their portal and views a pending quote, CoPortal records the first view time and view count. In your quotes list, a blue eye icon indicates the quote has been seen. A grey eye means it hasn't been opened yet.
Inside the quote editor, you'll see “Viewed [date]” or “Not yet viewed” below the quote number.
WhatsApp share
On any sent quote, a Share on WhatsApp button generates a pre-filled WhatsApp message linking the client to their portal. This opens WhatsApp Web (or the app on mobile) ready to send.
E-signatures
Clients can sign quotes directly from their portal. They type their name in the signature field and click Sign quote. CoPortal records:
- •Signed by (their typed name)
- •Signed at (timestamp)
- •IP address (for audit purposes)
Once signed, the quote shows a green signature banner in your workspace.
Marking as accepted
When a client verbally agrees or signs the quote, click Mark accepted. This:
- •Updates the quote status to Accepted
- •Auto-creates a new project using the quote title (if the quote wasn't linked to an existing project)
- •Unlocks the deposit invoice and convert to invoice buttons
Deposit invoices
On an accepted quote, click X% Deposit invoice. This creates a partial invoice for your configured deposit percentage (default 50%, adjustable in Settings → Invoice & Tax).
The deposit invoice is created as a draft so you can review and send it. The remaining balance can be invoiced separately when work is complete — as a milestone invoice or by converting the full quote.
Milestone invoices
Create multiple partial invoices from a single quote — for example, a 50% deposit, a 25% mid-point payment, and 25% on delivery. Click Create milestone invoice in the Milestone invoices section of any non-draft quote.
Each milestone invoice is linked back to the quote and appears in the Milestone invoices list for reference.
Converting to a full invoice
Click Convert to invoice on an accepted quote. This creates a full invoice with all the quote's line items, VAT, and totals copied across. The invoice is created as a draft — review it and send when ready.
Quote expiry reminders
CoPortal automatically sends the client a reminder email 3 days before a quote's valid-until date expires. This reminder is sent once per quote and is tracked with a timestamp to prevent duplicates.