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

> How forwarders use chrt billing — earnings from shippers, expenses to couriers, rate sheets per leg, line item groups per task group, and Stripe Connect.

A forwarder sits in the middle of every shipment financially: you earn
from the shipper and pay out to the couriers running each leg. chrt's
billing model handles both sides on the same order. Rate sheets attach
per task group (per leg), 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 or pay couriers through chrt's payment
  processor, your org needs a Stripe Connect account. Set one up early
  — see [step 5](#5-set-up-stripe-connect).

## 1. Open Billing

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

| Section                                       | What's there                         | Forwarder-relevant?                        |
| --------------------------------------------- | ------------------------------------ | ------------------------------------------ |
| [Earnings](https://chrt.com/billing/earnings) | Statements of money owed to your org | Yes — money in from shippers               |
| [Expenses](https://chrt.com/billing/expenses) | Statements of money you owe          | Yes — money out to couriers                |
| [Ledgers](https://chrt.com/billing/ledgers)   | Agreement-backed billing periods     | Yes — for rolling invoices and pay periods |
| [Rate sheets](https://chrt.com/rate-sheets)   | Pricing templates                    | Yes — one per shipper, one per courier     |

## 2. Attach rate sheets per leg

Every leg of a multi-leg order is its own **task group**, and each task
group gets its own rate sheet. That's how you can charge a shipper one
rate for the full shipment and pay each courier a different rate for
their leg.

Two layers of rate sheets:

* **Forwarder ↔ Shipper sheet.** What you charge the shipper. Set this
  as the default on your connection with the shipper so it auto-applies
  to every order from them.
* **Forwarder ↔ Courier sheet.** What each courier charges you. Set this
  as the default on your connection with the courier so it auto-applies
  to ground segments assigned to them.

Open [chrt.com/rate-sheets](https://chrt.com/rate-sheets) to see and
edit all rate sheets, or open a connection's partner detail page and
set the default sheet inline.

> **Note**
>
> Rate sheets apply to task groups, not orders. On a ground + flight +
> ground shipment, you'd typically have two rate sheets — one each for
> the origin and destination couriers — plus your forwarder-to-shipper
> sheet on the order.

See [Set up a rate sheet](/help/getting-started/set-up-rate-sheet) for the
full create-a-sheet flow.

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

Earnings are statements that group what you've billed shippers for. 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.
* **Messages and attachments** between you and the shipper.
* The **Stripe invoice** when one has been issued.

Open a statement, attach an invoice PDF or backup detail, 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.

## 4. Review expenses (you-to-courier)

Expenses are statements couriers open against your forwarder org for
the legs they ran. Open
[chrt.com/billing/expenses](https://chrt.com/billing/expenses) to see
them.

You can:

* **Pay the statement.** If Stripe settlement is configured on the
  connection, click **Pay invoice** to settle through Stripe; otherwise
  pay off-platform and click **Mark paid** with a reference note.
* **Dispute or message.** Use the statement's message thread to ask
  questions or surface mistakes. Couriers see the same thread on their
  side.
* **Adjust a line item** before the statement is paid. Open the line
  item's **Adjust** dialog, enter the delta and a comment. Adjustments
  leave an audit trail; the original quantity and rate stay intact, with
  the new total reflecting the adjustment.

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

## 5. Set up Stripe Connect

Stripe Connect is chrt's payment processor for settling statements
through the platform. As a forwarder you typically want it on both
sides — collecting from shippers and paying out to couriers 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. Use ledgers for rolling invoicing

A **ledger** groups statements over a defined billing period for one
connection — useful when you and a counterparty settle weekly or
monthly instead of one statement at a time.

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 shipper for outbound billing and one per courier
for inbound — that way each counterparty has a single rolling tab and
you settle on cadence.

## 7. Driver pay (if you also dispatch drivers)

If your forwarder org also has direct-employed drivers (an OBC team,
in-house couriers), each driver's pay accumulates as line item groups
against their task groups. **Driver pay isn't auto-statemented** — open
the driver's line items, group them into a statement on your cadence
(typically two weeks), and pay through Stripe Connect or off-platform.

## How to know it worked

* Earnings statements move from **Staged** → **Open** → **Paid** as
  shippers pay.
* Expense statements you pay flip to **Paid** with a `paid_at`
  timestamp.
* 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 leg has no line items.** The task group ran without a rate sheet.
  Check the connection's default sheet, or attach a sheet directly to
  the task group.
* **Statement totals don't match what the shipper expected.** Pull up
  the per-task-group line item groups — multi-leg pricing depends on
  each leg's individual rate sheet. The detail breakdown shows where
  every charge came from.
* **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.
* Contact [hi@chrt.com](mailto:hi@chrt.com) for settlement issues or
  if a statement looks wrong on both sides.

## Related guides

* [Multi-leg orders](/forwarders/multi-leg-orders) — where rate sheets
  get attached to each leg.
* [Managing your courier network](/forwarders/network) — set per-courier
  default rate sheets here.
* [Billing primitives](/docs/concepts/billing-primitives) — the Rate
  Sheet / LIG / Statement model in detail.
* [Cargo types](/docs/concepts/cargo-types) — cargo type drives which
  surcharges apply.
* [Billing for shippers](/shippers/billing) — the inverse view from
  your shipper customers.