> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.chrt.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.chrt.com/_mcp/server.

# Rate Sheets

> How couriers build rate sheets in chrt — shipper-pay-provider (SPP), provider-pay-driver (PPD), and provider-pay-provider (PPP) — and assign them per connection or per driver.

A **rate sheet** is a reusable pricing template chrt applies to a task group
to generate the line items on a [statement](/docs/concepts/billing-primitives).
Couriers maintain three kinds of rate sheet at the same time: one for what
shippers pay you, one for what you pay each driver, and (when you're
sub-dispatching to a partner courier) one for what you pay them. This page
walks the create flow for each.

## Before you start

* Rate sheets attach to **task groups**, not to orders — on a multi-leg
  shipment each leg can use a different sheet. See
  [Orders](/docs/concepts/orders) for the task group model.
* The same rate sheet can be set as a **default** on a connection or a driver
  profile so it auto-applies, or attached one-off to a specific task group at
  dispatch time.
* All three rate sheet kinds (SPP, PPD, PPP) live at the same
  [chrt.com/rate-sheets](https://chrt.com/rate-sheets) page; you pick the
  **payment vector** when you create.

## 1. Open the rate sheets list

Open [chrt.com/rate-sheets](https://chrt.com/rate-sheets). The page lists all
rate sheets owned by your org. Filter by **service kind**:

| Service kind | Use for                                                    |
| ------------ | ---------------------------------------------------------- |
| **Ground**   | Over-the-road shipments priced by distance and surcharges. |
| **Flights**  | Air cargo legs priced by airline + service type.           |
| **OBC**      | On-board courier (hand-carry) priced as a day rate.        |

Each row shows the rate sheet **name**, **service kind**, **payment vector**
(SPP / PPD / PPP), and an archive state.

## 2. Pick the payment vector

The **payment vector** is what makes the rate sheet "yours to shippers" vs.
"yours to drivers" vs. "yours to partner couriers". When you create, pick the
vector that matches who's paying whom:

| Payment vector            | Short | Direction     | Use for                                                     |
| ------------------------- | ----- | ------------- | ----------------------------------------------------------- |
| **Shipper-pay-provider**  | SPP   | Shipper → you | What shippers (or forwarders) pay you to run their freight. |
| **Provider-pay-driver**   | PPD   | You → driver  | What you pay your own drivers per job.                      |
| **Provider-pay-provider** | PPP   | You → partner | What you pay a partner courier you're sub-dispatching to.   |

> **Note**
>
> The same physical job can have an SPP sheet **and** a PPD sheet at the same
> time. The SPP sheet generates the line items shippers see on their bill from
> you; the PPD sheet generates the line items drivers see on their pay. The
> difference between them is your margin.

## 3. Create a shipper-pay-provider (SPP) rate sheet

This is the sheet shippers and forwarders see when they place orders against
your org. Set one as the default on each shipper connection so it
auto-applies to incoming orders.

1. Go to [chrt.com/rate-sheets](https://chrt.com/rate-sheets) and click
   **Create rate sheet**.
2. Pick **Ground** (most common), **Flights**, or **OBC** for the service
   kind.
3. Pick **Shipper-pay-provider** as the payment vector.
4. Give the sheet a clear **name** (e.g., "ACME → JFK ground", "Standard SPP
   ground", "Saturday rates").
5. Fill in the rate fields (see [Ground rate fields](#ground-rate-fields)
   below for the ground breakdown).
6. Optionally restrict the sheet to specific **cargo types** or **vehicle
   types** — a sheet with `dangerous_goods` listed will only apply to task
   groups carrying those cargo types.
7. Save.

Then open the relevant shipper or forwarder's connection at
[chrt.com/connections](https://chrt.com/connections) and set this sheet as
the **default SPP rate sheet** for that connection. From then on, every
order they send you auto-applies the sheet.

## 4. Create a provider-pay-driver (PPD) rate sheet

This is the sheet that determines what each driver gets paid. It's invisible
to shippers — only your org and your drivers see PPD line items.

1. Open [chrt.com/rate-sheets](https://chrt.com/rate-sheets) and click
   **Create rate sheet**.
2. Pick the service kind (usually **Ground** for road drivers).
3. Pick **Provider-pay-driver** as the payment vector.
4. Name the sheet (e.g., "Standard driver pay — ground", "Owner-op rate",
   "Apprentice rate").
5. Fill in the rate fields — same field shape as an SPP ground sheet, just
   with the values you want to pay the driver.
6. Save.

Open a driver's profile at
[chrt.com/drivers](https://chrt.com/drivers) and set this sheet as their
**default PPD rate sheet**. It'll preselect in the
[assign-driver dialog](/couriers/dispatching) every time you dispatch this
driver, so you can confirm in two clicks instead of building the rate ad-hoc.

## 5. Create a provider-pay-provider (PPP) rate sheet

This is the sheet that determines what you pay a partner courier you're
sub-dispatching to — for example, a courier in another city you hand a leg
off to.

1. From [chrt.com/rate-sheets](https://chrt.com/rate-sheets) click
   **Create rate sheet**.
2. Pick the service kind and choose **Provider-pay-provider** as the payment
   vector.
3. Name the sheet (e.g., "Partner network — ground", "ACME Couriers ground
   rate").
4. Fill in rate fields and save.
5. Open the partner courier's connection at
   [chrt.com/connections](https://chrt.com/connections) and set this sheet
   as the **default PPP rate sheet** for that connection.

When you dispatch a task group to that partner courier, chrt attaches the
PPP sheet automatically and generates the line items you owe them on each
job.

## Ground rate fields

Whichever payment vector you pick, ground rate sheets share the same field
shape. The most-used fields:

| Field                               | What it represents                                                                                           |
| ----------------------------------- | ------------------------------------------------------------------------------------------------------------ |
| **Base mileage**                    | Distance covered by the base rate (e.g., 15 miles). Jobs shorter than this are billed at the flat base rate. |
| **Base rate**                       | The flat USD rate that covers the base mileage.                                                              |
| **Additional mileage**              | Per-mile USD rate above the base.                                                                            |
| **Long-distance surcharge**         | Optional extra per-mile rate that kicks in past a configurable distance.                                     |
| **Fuel surcharge**                  | Per-mile fuel surcharge USD.                                                                                 |
| **Wait time**                       | Free wait window (minutes) and the per-minute rate after that.                                               |
| **Extra stops**                     | Per-instance USD for stops beyond the standard pickup-and-deliver pair.                                      |
| **Dangerous goods**                 | Per-instance surcharge for hazmat.                                                                           |
| **After-hours / weekend / holiday** | Per-instance surcharges for off-hours work.                                                                  |
| **Cargo types / vehicle types**     | Restricts which task groups the sheet applies to.                                                            |

Flights rate sheets use **airline name**, **service type**, **quantity**,
and **rate**. OBC rate sheets use a single **day rate**. See
[Billing primitives](/docs/concepts/billing-primitives) for the full field
reference.

## Edit, copy, or archive a rate sheet

Open a rate sheet from the list to see its detail page.

* **Edit** — change any field. Edits apply to future task groups that
  reference the sheet; line items already generated against the previous
  values don't retroactively change.
* **Copy** — start a new sheet pre-populated from this one. Use copies to
  build seasonal variants, weekday/weekend pairs, or per-customer
  tweaks.
* **Archive** — hide the sheet from selection on new task groups without
  deleting it. Historical references stay intact.

> **Tip**
>
> Build one **baseline** sheet per service kind per payment vector, then
> copy and tweak for variants (specific shippers, dangerous-goods-only,
> after-hours, etc.). Naming the variants clearly ("ACME — DG only",
> "Standard PPD ground — weekend") saves time when you're picking a sheet
> during dispatch.

## How to know it worked

* The new rate sheet appears in the
  [Rate sheets list](https://chrt.com/rate-sheets) under the right service
  kind and payment vector.
* If you set it as a default on a connection or driver profile, the sheet
  preselects in the relevant dialog (assign-driver, draft preview, partner
  detail page).
* When a task group runs against the sheet, line items appear on the order's
  **Financials** tab with values derived from the sheet's fields.

## If something looks different

* **You can't find a sheet you just created.** Check the **service kind**
  filter — the list defaults to Ground; if you created a Flights or OBC
  sheet, switch the filter.
* **The sheet isn't auto-applying on incoming orders.** Confirm you set it
  as the **default** on the right shipper or forwarder's connection — not
  org-wide. Defaults are per-connection.
* **Line items look wrong on a finished job.** Open the rate sheet's detail
  page and confirm the field values. Remember that edits don't retroactively
  change line items already generated.
* **You don't see "Provider-pay-driver" as an option.** That payment vector
  is provider-mode only — confirm your org is in Provider mode.
* Contact [hi@chrt.com](mailto:hi@chrt.com) if a rate sheet behaves
  unexpectedly.

## Related guides

* [Dispatching](/couriers/dispatching) — where you attach a PPD sheet at
  driver-assignment time.
* [Drivers](/couriers/drivers) — set per-driver default PPD rate sheets.
* [Connections](/couriers/connections) — set per-shipper SPP defaults and
  per-partner PPP defaults.
* [Billing](/couriers/billing) — how rate sheets roll up into statements.
* [Billing primitives](/docs/concepts/billing-primitives) — the Rate Sheet /
  LIG / Statement model in detail.