> For the complete documentation index, see [llms.txt](https://help.agencydesk.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.agencydesk.io/jobs/estimates.md).

# Estimates

Build, edit, download, and activate Cost Estimates on a Job. Quote straight from the Job Costing, then turn an approved Estimate into live work in one click.

A **Cost Estimate** is what the client sees before the work starts. It is generated from the [Job Costing](/jobs/job-costing.md), so the [Tasks](/jobs/tasks.md), [Costs](/jobs/costs.md), rates, and descriptions on it are the same ones your team will deliver against.

Because Agencydesk was built exclusively for agencies, an Estimate is not a document you retype in a separate quoting tool. It is a view of the costing you have already built, and once the client approves it, one button turns it into live work.

## The Estimates list

Open a Job and click the **Estimates** tab. Every Estimate raised on the Job is listed with:

| Column          | What it shows                                                                                                           |
| --------------- | ----------------------------------------------------------------------------------------------------------------------- |
| **CE**          | The Cost Estimate number, for example `CE1437`                                                                          |
| **CE Name**     | The name given when the Estimate was created, with an **Activated** tag alongside it once its items have been activated |
| **Excl.**       | The total excluding tax                                                                                                 |
| **Incl.**       | The total including tax                                                                                                 |
| **Created**     | The date it was raised                                                                                                  |
| **Valid Until** | The expiry date on the quote                                                                                            |

Click **+ New Estimate** in the top right to raise one.

Hovering a row reveals two icons on the right: a **cloud-download** icon to download the PDF, and a **trash** icon to delete the Estimate.

### Multiple Estimates per Job

A Job can carry as many Estimates as you need, each drawn from the same costing but covering different parts of it.

{% hint style="info" %}
**Great for** quoting options. From one costing you can raise `CE1435 Monthly SEO`, `CE1436 Monthly Reporting`, and `CE1437 Monthly SEO/SEM + Reporting`, then let the client choose between the retainer on its own, the reporting on its own, or the bundle. You cost the work once and present it three ways.
{% endhint %}

### The activity log

{% stepper %}
{% step %}
Below the Estimates list, click **Activity** when entries are available. It starts closed.
{% endstep %}

{% step %}
Read the recorded Cost Estimate actions, such as created or activated, with the person or System, date/time and any amount detail.
{% endstep %}

{% step %}
Click Activity again to close it, or focus the heading and use Enter / Space.
{% endstep %}
{% endstepper %}

Opening another Job starts Activity closed again. The Estimates log shows Estimate entries and has no separate search field. For Search and the wider Job history, use [Central](/jobs/central.md#activity).

{% hint style="info" %}
**Great for** reconstructing how a client was quoted. When someone asks six weeks later which version was approved and when, the log answers it with a name and a time rather than a search through sent mail.
{% endhint %}

## Creating an Estimate

{% stepper %}
{% step %}
Click **+ New Estimate**. The **New Cost Estimate** popup opens.
{% endstep %}

{% step %}
Enter a **Cost Estimate Name**. It is required and becomes the heading on the Estimate and PDF. Type your own, or accept the grey Job-name suggestion with **Right arrow** while the field is empty. On touch screens, tap **→**. Edit the result for this quote, for example Monthly SEO — Phase 1.
{% endstep %}

{% step %}
Set **Valid Until**, the date the quote expires.
{% endstep %}

{% step %}
Check the **Payment Terms**. These pull through from the [Client's profile](/admin/clients.md#financial-details-on-a-client) and can be overridden on this Estimate.
{% endstep %}

{% step %}
Add a **Description** if needed. It is optional. The Job description is offered as a grey suggestion; accept it with Right arrow / →, edit it, type your own text, or leave it blank.
{% endstep %}

{% step %}
Under **Select Items**, tick what this Estimate covers.
{% endstep %}

{% step %}
Check **Selected total** at the bottom, then click **Generate Estimate**.
{% endstep %}
{% endstepper %}

{% hint style="info" %}
A website Job can have quotes for Discovery and for the full build. Accept the suggested Job name, then add “— Discovery” so the client can distinguish this version. Leaving the grey Description untouched keeps it blank; a suggestion is not saved automatically.
{% endhint %}

### Payment Terms

The **Payment Terms** dropdown offers:

* Cash on Delivery
* Payment in Advance
* 7 Days
* 14 Days
* 30 Days
* 60 Days
* 90 Days
* 120 Days
* **Custom**, which lets you type your own wording

The Client's default is selected automatically, so you only touch this when a particular quote is priced on different terms.

{% hint style="info" %}
**Great for** protecting cash flow on production-heavy work. A campaign carrying large supplier costs can go out on Payment in Advance or a deposit arrangement, while the client's standing 30-day terms stay in place for their retainer.
{% endhint %}

### Selecting items

The **Select Items** panel lists the Job Costing exactly as you built it, [Group](/jobs/job-costing.md#groups) by Group, with each line item's quantity, price per unit, and total billable value.

There are three ways to build the selection:

* **Select All** — the checkbox at the top right takes the whole costing in one click.
* **By Group** — the checkbox on a Group header takes every line item in that Group.
* **By line item** — tick individual Tasks and Costs.

**Selected total** updates as you tick, using the selected billable line values in the Job’s currency. It is the selection amount before tax; review the generated Estimate’s Sub Total, Tax and Total before sending it.

{% hint style="info" %}
**Great for** phased work. On a website build costed as Discovery, Design, Development, and QA, quote Discovery on its own to get started, then raise the second Estimate for the remaining phases once the direction is signed off.
{% endhint %}

## The Estimate detail page

Clicking an Estimate opens its detail page.

The header carries the Estimate number and status, **Approve and Activate** when work remains to activate, and a cloud-download icon. Beneath it sit **Date Created**, **Terms** and **Valid Until**, then the **Description**. Hours are chosen in the download popup.

The Estimate itself is laid out Group by Group, matching the costing:

| Column             | What it shows                                                                     |
| ------------------ | --------------------------------------------------------------------------------- |
| **Group and item** | The Group heading, then each line item with its status tag and description        |
| **Qty**            | Hours for a Task, units for a Cost                                                |
| **Price/Unit**     | The rate per hour or per unit, shown with `/hr` where the line is priced per hour |
| **Billed Amount**  | Qty × Price/Unit                                                                  |

Each Group carries its own **Total**, and the foot of the Estimate shows the **Sub Total**, **Tax** at the Client's rate, and the **Total** including tax.

Line items keep their live status tag, **Draft** or **Active**, so you can see at a glance which parts of this Estimate have already been approved to proceed and which have not.

### An Estimate is a snapshot

An Estimate holds the figures as they stood **when it was generated**. Later changes to the Job Costing do not flow back into it.

So a Task quoted at 12 hours that later picks up a one-hour [Amendment](/jobs/tasks.md#briefs-and-amendments) still reads 12 hours on that Estimate, while the Job Costing now carries 13. That is the correct behaviour, since the Estimate is a record of what the client was actually quoted on that date.

{% hint style="info" %}
When the scope moves, delete the Estimate and generate a fresh one, or raise a second Estimate covering the additional work. Which one you choose usually depends on whether the client has already seen the first.
{% endhint %}

### Non-billable lines

A line item marked non-billable still appears on the Estimate, with its quantity and rate shown and a **Billed Amount** of zero.

{% hint style="info" %}
**Great for** making goodwill visible. A line reading *Non-billable Changes, 1.00, R1,050.00/hr, R0.00* tells the client exactly what a round of revisions is worth and that you are not charging for it. Value the client can see is worth more than value you absorb silently.
{% endhint %}

## Editing an Estimate

Hover over the **Date Created / Terms / Valid Until** row on the detail page and a **pencil** icon appears on the right. Click it to edit the Estimate.

You can change the **Cost Estimate Name**, **Valid Until**, **Payment Terms** and optional **Description**. Existing text loads as saved. If you clear the name or description, the corresponding Job value becomes a grey suggestion; accept it or enter the wording you want. Click **Save**.

{% hint style="warning" %}
**Line items cannot be edited on an Estimate.** The quantities, rates, and descriptions come from the [Job Costing](/jobs/job-costing.md), so that is where they have to be changed.

This keeps the quote and the costing in agreement. An Estimate that could be edited independently would let you quote one number while the Job was built on another, which is exactly how scope arguments start.
{% endhint %}

To change what an Estimate covers, adjust the Job Costing and raise a new Estimate, or delete this one and generate it again.

## Activating Tasks from an Estimate

When the client approves the quote, click **Approve and Activate**.

This activates **every item on the Estimate** in one action. The Tasks move onto the [Tasks tab](/jobs/tasks.md), become bookable on the [Resource Planner](/task-schedule/resource-planner.md), and inherit the [Job's start and end dates](/jobs/managing-jobs.md#creating-a-job). Costs move onto the Costs tab, ready for [Purchase Orders](/jobs/financial/purchase-orders.md). The Job itself moves from [Draft to Active](/jobs/managing-jobs.md#activating-a-job).

The Estimate is then tagged **ACTIVATED**, shown in green beside the Estimate number on the detail page and alongside the CE Name on the Estimates list. The status also carries through to the **Active Jobs Report**, so approved work is visible at agency level rather than only inside the Job.

Once its work has been activated, **Approve and Activate** is no longer shown. Use the status tag to check its state; the cloud-download icon remains available.

{% hint style="info" %}
This is why every Job requires a start and end date. Because the Job carries the range, activating twenty Tasks at once gives all of them a workable date range without anyone setting dates line by line. Approval becomes one click instead of an afternoon.
{% endhint %}

{% hint style="info" %}
**Great for** the moment a pitch converts. The costing was built to price the campaign, the Estimate went out as the quote, and the client's approval turns the whole thing into scheduled studio work without anything being rebuilt or retyped.
{% endhint %}

## Downloading the PDF

On the Estimate detail page, click the cloud-download icon labelled **Download**. In the popup, choose **Show hours on PDF** and click **Download**. The checkbox starts from the account’s Finance setting each time. The cloud-download icon on the Estimates list downloads straight away using that account setting.

The PDF carries:

* Your agency logo, name, address, VAT number, and contact details, from [Company Settings](/company-settings/general/details.md).
* The **Cost Estimate number** and date.
* The Client's code and Job number together, for example `THE001 / JB1057`, plus their VAT number and address.
* **Attention**, **Valid until**, **Terms**, and **Account Manager**.
* The Estimate name, description, and every Group with its line items and subtotals.
* **Total**, **Tax**, and **Total Incl. Tax**.
* Your **Bank Details**, with the CE number as the payment reference.
* A **Terms and Conditions** footer, editable under **Company Settings > General** and applied to every Cost Estimate you generate.

### Show Hours on Pdf

The **Show hours on PDF** checkbox in the Download popup controls how much line-item detail the Client sees.

* **Ticked** — hour-based lines show their **Qty** and **Price/Unit** alongside the price. `SEO Management (DM), 12, R1 050.00, R12 600.00`
* **Unticked** — those columns are left blank and only the price shows. `SEO Management (DM), R12 600.00`

The setting only suppresses **hours**. Unit-priced [Costs](/jobs/costs.md) keep their quantity and unit price either way, so a licence quoted at 3 units of R550.00 still itemises even with hours hidden. Descriptions, subtotals, and totals are unaffected throughout.

{% hint style="info" %}
**Great for** clients who buy outcomes rather than hours. Some want to interrogate the hours line by line, others read an hourly breakdown as an invitation to negotiate the rate down. The same Estimate serves both, and you decide per document rather than per agency.
{% endhint %}

### Groups costed as a unit

Where a Group has [**Cost Group as Unit**](/jobs/job-costing.md#cost-group-as-unit) switched on, it compresses to a **single line** on the Estimate PDF: the top item's title with the Group's total as the amount, and no hours, units, or breakdown beneath it.

So a brand identity package built internally as twelve Tasks across design, copywriting, and account management reaches the client as one line with one price, while your team keeps every Task it needs to schedule and measure the work.

## Deleting an Estimate

Hover the Estimate's row on the list and click the **trash** icon.

Unlike an [Invoice](/jobs/financial/invoices.md), an Estimate can be deleted outright with no conditions attached. An Estimate is a proposal rather than a financial record, so nothing needs voiding and no audit trail is broken.

{% hint style="info" %}
CE numbers are still consumed. Deleting `CE1437` does not release that number for reuse, so a gap in the sequence simply means an Estimate was raised and later removed. Generating a few versions before the client settles is completely normal.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://help.agencydesk.io/jobs/estimates.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
