> 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.

# Billing for Couriers

> How couriers use chrt billing — earnings statements from shippers and forwarders, line item adjustments, driver pay statements, expenses to partner couriers, and Stripe Connect.

As a courier you sit on both sides of chrt's billing model: you earn from
shippers and forwarders for the jobs you run, and you pay drivers (and
sometimes partner couriers) for the work they actually do. chrt models both
sides on the same task group — rate sheets attach per task group, line items
roll up into statements, and statements settle through Stripe Connect or
off-platform.

## Before you start

* Billing primitives — **Rate Sheet**, **Line Item Group**, **Statement** —
  back every figure on the page. See
  [Billing primitives](/docs/concepts/billing-primitives) for the model.
* To collect from shippers and pay drivers through chrt's payment processor,
  your org needs a **Stripe Connect** account. Set one up early — see
  [step 5](#5-set-up-stripe-connect).
* A typical courier job has **two** rate sheets attached: an
  **SPP** (shipper-pay-provider) sheet for what the shipper owes you, and a
  **PPD** (provider-pay-driver) sheet for what you owe the driver. See
  [Rate sheets](/couriers/rate-sheets).

## 1. Open Billing

Open [chrt.com/billing](https://chrt.com/billing). The hub gives you direct
links to each section.

| Section                                       | What's there                         | Courier-relevant?                                     |
| --------------------------------------------- | ------------------------------------ | ----------------------------------------------------- |
| [Earnings](https://chrt.com/billing/earnings) | Statements of money owed to your org | Yes — money in from shippers and forwarders           |
| [Expenses](https://chrt.com/billing/expenses) | Statements of money you owe          | Yes — money out to drivers and partner couriers       |
| [Ledgers](https://chrt.com/billing/ledgers)   | Agreement-backed billing periods     | Yes — rolling shipper invoicing, bi-weekly driver pay |
| [Rate sheets](https://chrt.com/rate-sheets)   | Pricing templates                    | Yes — SPP, PPD, and PPP sheets                        |

## 2. Review earnings (shipper-to-you)

Earnings are statements opened against your shippers and forwarders for the
jobs you've run. Open
[chrt.com/billing/earnings](https://chrt.com/billing/earnings) and click any
row for the detail.

The detail page shows:

* **Statement total** and current status (staged, open, paid, uncollectible).
* The **line item groups** — one per task group on the order — each with
  base rates, mileage, surcharges, and adjustments derived from your SPP
  rate sheet.
* **Messages and attachments** — your shipper or forwarder uses this thread
  to ask questions or surface receipts. You see and reply to the same thread.
* The **Stripe invoice** when one has been issued.

Open a statement, attach any backup receipts (fuel, tolls, accessorials),
and send to the shipper. If you settle through chrt Stripe Connect, the
shipper pays through a Stripe-hosted page and the statement marks itself
paid on confirmation.

> **Tip**
>
> Most accessorial charges (extra stops, wait time, fuel surcharge) are
> generated automatically from your rate sheet. Only attach a manual line
> item or upload a receipt when something is outside the sheet — for
> example, a one-off customer-approved accessorial.

## 3. Adjust a line item before payment

If a shipper disputes a charge — or you spot an error before sending —
adjust the specific line item rather than re-issuing the statement.

1. Open the earnings statement.
2. Find the line item that needs to change.
3. Click **Adjust**, enter the delta (positive or negative), and add a
   comment explaining the change.
4. Save.

The original quantity and rate stay on the record; the new total reflects
the adjustment with a visible annotation showing what changed and why.

> **Warning**
>
> Statements become immutable once paid. Adjust before payment, not after.

## 4. Build driver pay statements

Drivers don't get auto-statemented per job — that would be one statement
per task group, which doesn't match how courier orgs actually pay drivers.
Instead, line items roll up over time and you **group** them into one
statement per pay period (typically two weeks).

1. Open [chrt.com/billing/expenses](https://chrt.com/billing/expenses) and
   filter to a specific driver. You'll see line item groups for every task
   group they ran in the period.
2. Select the line item groups you want to include in the pay statement.
3. Click **Group into statement**, set the statement's pay-period dates,
   and review the total.
4. Open the statement, attach any deductions or bonuses as additional line
   items, and finalize.
5. **Pay** through Stripe Connect (if settlement is configured on the
   driver) or pay off-platform and click **Mark paid** with a reference.

> **Note**
>
> Driver pay statements are the standard exception to chrt's auto-statement
> rule. Shippers and forwarders get one statement per order; drivers get
> one statement per pay period covering many task groups. See
> [Billing primitives](/docs/concepts/billing-primitives#statements) for
> the model.

## 5. Set up Stripe Connect

Stripe Connect is chrt's payment processor for settling statements through
the platform. As a courier you typically want it on both sides — collecting
from shippers and paying drivers via the same Stripe account.

1. Open
   [Stripe Connect settings](https://chrt.com/settings/stripe-connect).
2. Click **Set up Stripe Connect** to open Stripe's onboarding in a new
   window.
3. Complete Stripe's KYC, banking, and tax information.
4. Return to chrt — the settings page reflects account status (account ID,
   payouts enabled) once Stripe finishes onboarding.

Off-platform settlement is fine too — pay each statement however you've
agreed with the counterparty and mark it paid in chrt with a reference
note.

## 6. Pay expenses to partner couriers

When you sub-dispatch a task group to a partner courier, they open an
expense statement against your org for the leg they ran. Open
[chrt.com/billing/expenses](https://chrt.com/billing/expenses) to see
incoming statements.

You can:

* **Pay the statement** — through Stripe Connect or off-platform with a
  reference note.
* **Dispute or message** — use the statement's message thread to surface
  questions. The partner sees the same thread on their side.
* **Adjust a line item** before payment — same flow as adjusting a
  shipper-side line item (see step 3).

Partner-courier expenses follow your **PPP** rate sheet — see
[Rate sheets](/couriers/rate-sheets#5-create-a-provider-pay-provider-ppp-rate-sheet)
for setting one up and attaching it as the default on a partner's
connection.

## 7. Use ledgers for rolling invoicing

A **ledger** groups statements over a defined billing period for one
counterparty — useful when you and a shipper or forwarder settle weekly or
monthly instead of one statement at a time. Driver pay periods are
essentially a built-in ledger.

Open [chrt.com/billing/ledgers](https://chrt.com/billing/ledgers) and open
any ledger:

* See the statements in the current period.
* Close the period to roll outstanding statements into a single
  consolidated invoice.
* See historical periods and what was paid against each.

Set up one ledger per high-volume shipper for outbound billing — that way
each customer has a single rolling tab and you settle on cadence.

## How to know it worked

* Earnings statements move from **Staged** → **Open** → **Paid** as
  shippers and forwarders pay.
* Expense statements you pay flip to **Paid** with a `paid_at` timestamp.
* Driver pay statements show every task group they ran in the period and
  match the per-leg line items you'd see on the order's Financials tab.
* Adjusted line items show the original value and the adjustment as an
  annotation; the statement total reflects the adjustment.
* Stripe-settled statements link out to the Stripe invoice with matching
  status.

## If something looks different

* **A job has no line items on the earnings side.** The task group ran
  without an SPP rate sheet. Check the shipper or forwarder's connection
  for a default sheet, or attach a sheet directly to the task group from
  the order's Financials tab.
* **Driver pay total doesn't match what you expected.** Pull up the
  driver's profile and confirm the **default PPD rate sheet** is the one
  that ran. PPD line items derive from whichever sheet was attached at
  dispatch time, not what's on the profile now.
* **Can't adjust a line item.** The statement is paid or moved past the
  adjustable state. Adjustments are pre-payment only.
* **Stripe payouts not arriving.** Check Stripe Connect settings — payouts
  enable only after Stripe finishes KYC.
* **A shipper says they were billed twice.** Check the order's Financials
  tab — if two statements have the same task group on them, one needs to
  be marked uncollectible. Contact us if you need help unwinding.
* Contact [hi@chrt.com](mailto:hi@chrt.com) for settlement issues or if a
  statement looks wrong on both sides.

## Related guides

* [Rate sheets](/couriers/rate-sheets) — SPP, PPD, and PPP creation; the
  templates every line item comes from.
* [Drivers](/couriers/drivers) — set default PPD rate sheets per driver.
* [Connections](/couriers/connections) — set default SPP sheets per
  shipper/forwarder and default PPP sheets per partner.
* [Dispatching](/couriers/dispatching) — where SPP and PPD rate sheets get
  attached to a task group.
* [Billing primitives](/docs/concepts/billing-primitives) — the Rate Sheet
  / LIG / Statement model in detail.