> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bahnexpress.fi/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> For Bahn Customer API V2 integration work, start with /skill.md and /guides/agent-integration.md on this documentation site. Use /llms.txt to find the guides for the requested workflow.
> The main integration orders your company's transports from existing software. Follow the requested screen, service, or job. Omit ordered_for for own-account orders. Use the platform-ordering guide when ordering for represented businesses. Add a customer-facing interface only when requested.
> Use /openapi.yaml for paths, schemas, scopes, and operation preconditions. Use the guides for transport rules and recovery behavior. Load only the relevant pages.
> Use the sandbox for development and tests. Keep credentials on the server. Production orders start real transport work; follow the customer's authorized workflow and account context.
> For required writes, preserve write keys and request data across retries, and use current actions and quoted revisions for order changes. When consuming webhooks, verify and durably store them before acknowledgement.
> Deliver the implemented workflow with test evidence, setup steps, and remaining gaps. Distinguish simulated checks from requests actually verified against Bahn.

# CMR recipients

> Choose the recipient on a transport document without changing the delivery route.

A CMR is the transport document for a vehicle. Its recipient can differ from the physical delivery destination.

For an ordinary booking, omit `items[].cmr_recipient`. Bahn uses the customer's configured recipient default. Without a configured default, it uses the physical delivery address, even when the company address is complete.

Use this guide when your transport needs a different document recipient or your system lets staff choose one before booking.

## Read the available choices

Call [Get CMR options](/api-reference/orders/get-cmr-recipient-choices-and-defaults) with the `orders:read` scope:

```bash theme={null}
curl --fail-with-body --silent --show-error \
  "https://sandbox.api.bahnexpress.fi/v2/cmr-options" \
  --header "Authorization: Bearer $BAHN_ACCESS_TOKEN" | jq '.data'
```

The response contains the registered company address, saved locations on the customer account, and defaults for future orders. This endpoint reads the authenticated account's choices and does not accept `ordered_for`. An ordering channel must not treat these as another business's saved locations.

Each option contains a `selection`, a display `label`, a resolved `recipient`, and `missing_fields`.

An incomplete address can have a `null` recipient and a list of missing fields. Do not offer it as a ready-to-use recipient. Ask the customer to complete the address or select another option.

## Select a recipient when creating an order

Set `cmr_recipient` on the relevant vehicle in the [create-order request](/api-reference/orders/create-an-order):

| Choice | Value of `items[].cmr_recipient` |
| - | - |
| Registered company address | `{ "kind": "company" }` |
| Physical delivery destination | `{ "kind": "delivery" }` |
| Saved customer location | `{ "kind": "place", "place_id": "..." }` |
| One-off recipient | `{ "kind": "other", "recipient": { "name": "Dealer ApS", "street_address": "Street 1", "postal_code": "6000", "city": "Kolding", "country_code": "DK" } }` |

For company and saved-location choices, you can send the displayed `recipient` as `expected_recipient`. Bahn then rejects a selection if the address changed before order creation. Refresh the choices and ask the customer to confirm the updated address.

Each vehicle has its own choice, including a trade-in vehicle. The choice does not change the route or whether the document is physical, digital, or unnecessary. An explicit recipient takes precedence over a configured rule that would otherwise copy driver details into the document.

## Keep the confirmed recipient

The recipient is fixed when the order is created. `PATCH /v2/orders/{order_id}` cannot change `cmr_recipient`. Later edits to a saved location or customer default affect future orders.

Read [Files and inspections](/guides/files-and-documents) to retrieve the generated CMR PDF from the order file list.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.