> 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/company-settings/rate-card/cost-types.md).

# Cost Types

Define and manage Cost Types on your Rate Card. Set the default Supplier, pricing structure, cost price, and markup so every Cost added to a Job is priced correctly from the start.

A **Cost Type** is the template for anything your agency buys in rather than produces with its own hours. Print, promo items, stock imagery, hosting, outsourced copywriting, a photographer's day rate, media placement.

Where [Task Types](/company-settings/rate-card/task-types.md) price your own labour, Cost Types price third-party spend. Setting them up properly means the buy price, the [Supplier](/admin/suppliers.md), and the markup are already right every time someone adds that Cost to a Job, rather than being looked up or guessed at.

{% hint style="info" %}
Costs are not tied to time tracking. A Cost consumes money rather than hours, which is why it carries a Supplier and a markup instead of a rate and an estimate.
{% endhint %}

## Creating a Cost Type

{% stepper %}
{% step %}
Click **+ New Cost Type**. The **Add Cost Type** slider opens, with the **Active** toggle on by default.
{% endstep %}

{% step %}
Enter a **Cost type name** that describes what is being bought, for example *Stock Images*, *Litho Printing*, or *Outsourced Copywriting*.
{% endstep %}

{% step %}
Choose the **Assign to specific department** this Cost belongs to. See [Departments](/company-settings/departments.md).
{% endstep %}

{% step %}
Select the **Supplier** you normally buy this from. If they do not exist yet, click **+ Add Supplier** to create one without leaving the slider. See [Suppliers](/admin/suppliers.md).
{% endstep %}

{% step %}
Check the **Cost Currency**. This is inherited from the Supplier and shows the currency they invoice you in.
{% endstep %}

{% step %}
Select the **Pricing structure**, either **Per Unit** or **Per Hour**.
{% endstep %}

{% step %}
Enter the **Cost price**, what the Supplier charges you, and set the **Billable** toggle.
{% endstep %}

{% step %}
Select the **Markup method**, either **Percentage** or **Fixed Price**, then enter the **Markup**. The **Resell amount** calculates automatically.
{% endstep %}

{% step %}
Write a **Default description**. This carries onto the Job and appears on Estimates and Invoices, so write it for the client as well as the team.
{% endstep %}

{% step %}
Click **SAVE**.
{% endstep %}
{% endstepper %}

{% hint style="info" %}
A stock image licence bought from a supplier at **$5.00** with a **Percentage** markup of **100%** gives a **Resell amount** of **$10.00**.

The resell figure updates live as you change the cost price or the markup, so you can see what the client will pay before you save.
{% endhint %}

## The Supplier sets the currency

The Supplier attached to a Cost Type determines the **Cost Currency**, because that is the currency they actually invoice you in. A hosting provider billing in USD gives that Cost Type a USD cost price, regardless of what currency your Jobs run in.

When the Cost is added to a Job running in a different currency, Agencydesk converts the unit cost and states plainly beneath the figures that a conversion has taken place.

{% hint style="info" %}
**Great for** agencies buying internationally. Stock libraries, hosting, licensing, and offshore production are usually priced in USD or EUR while the client is billed in local currency. Holding the cost in the Supplier's currency keeps your true buy price accurate instead of frozen at whatever the exchange rate happened to be the day someone set it up.
{% endhint %}

## Pricing structures

* **Per Unit** — priced per item.
* **Per Hour** — priced per hour.

Mechanically these behave the same way, since an hour is just a unit. The difference is how the line presents on client-facing documents. A Cost priced **Per Hour** shows its unit price with `/hr` on Estimates and Invoices, so outsourced copywriting quoted at $75 an hour reads as `$75.00/hr` rather than a bare `$75.00`.

Match it to how the supplier quoted you and how the client expects to read it. A print run is Per Unit. A freelance developer or an outsourced copywriter is usually Per Hour, and showing the rate makes the line easier to defend when a client asks how the number was reached.

## Markup methods

* **Percentage** — the uplift is a percentage of the cost price.
* **Fixed Price** — the uplift is a set amount per unit in the same currency.

Percentage suits supplier pricing that varies between Jobs, keeping the markup percentage consistent. Fixed Price suits a standard handling fee per unit.

{% hint style="info" %}
On a Job, a Cost using **Percentage** markup gains a **Markup / Margin** toggle, which expresses the same uplift either way. Markup is `(price − cost) / cost`, margin is `(price − cost) / price`. A Fixed Price markup has no toggle, since it is an amount rather than a ratio.
{% endhint %}

## Billable

The **Billable** toggle sets whether this Cost is charged to the client by default.

* **Billable on** — the Cost can be charged to the client on Estimates and Invoices.
* **Billable off** — the agency absorbs the Cost. A non-billable line can still appear on an Estimate with a Billed Amount of zero.

Billable and markup are separate decisions, and between them they cover the three ways agencies use Costs: absorbed expenses (not billable), billed expenses (billable at cost, no markup), and procurement (billable with a markup).

{% hint style="info" %}
Non-billable differs from zero markup. A billable Cost with no markup is charged at cost. A non-billable Cost has no client charge, but can appear on a Cost Estimate with a **Billed Amount of zero**. Check the Estimate before sharing it.
{% endhint %}

## Defaults, not locks

The Cost Type supplies starting values. On an editable Job Cost you can change the Supplier, cost price, **Markup Method**, markup, description and Billable state without changing this Cost Type. See [Changing the markup method](/jobs/costs.md#changing-the-markup-method) for the steps, example and zero-cost check.

{% hint style="info" %}
**Great for** competitive quoting. Brief three printers on the same campaign, then set the winning one as the Supplier on that Job's Cost. The Cost Type keeps your usual supplier as the default for next time.
{% endhint %}

## Deactivating a Cost Type

The **Active** toggle controls whether a Cost Type appears in the dropdown when someone adds a Cost to a Job. Switching it off retires the Cost Type from new work while leaving every existing Cost that used it untouched.

This is the right move for a supplier you no longer use or a service you have stopped reselling, since it keeps historical Jobs and their [Purchase Orders](/jobs/financial/purchase-orders.md) intact and reportable.


---

# 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/company-settings/rate-card/cost-types.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.
