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

> ## Agent Instructions
> Trackstar is a unified REST API for WMS, cart, and carrier systems. Base URL: https://production.trackstarhq.com. There is no SDK; call the API with plain HTTP.
> Send x-trackstar-api-key on every request. Endpoints scoped to one connection also need x-trackstar-access-token. Read both from environment variables and never print them.
> Reads return data Trackstar has already synced from the connected system. Writes (POST, PUT, PATCH, DELETE) are forwarded to the connected system immediately.
> A new connection has no data until its initial sync finishes. Wait for the connection.historical-sync-completed webhook, or poll GET /connections/{connection_id} and check historical_sync_completed.
> List endpoints page with page_token and next_token (limit is capped at 1000). Repeat every filter on every page. Filters use field[operator]=value, for example created_date[gte]=2026-01-01T00:00:00Z.
> Write bodies must not contain null or empty strings; omit the field instead. Call GET /integrations/{integration_type}/{integration_name}/write-info first to learn the exact fields an integration accepts.
> To test without real credentials, POST /sandbox/generate-sandbox/{wms|cart|carrier} with the API key returns a sandbox access token. Start at https://docs.trackstarhq.com/how-to-guides/build-with-ai.md and install the skills with: npx skills add https://docs.trackstarhq.com

# DPD

> Sample invoice CSV for DPD, semicolon-delimited, with English column names.

## Overview

DPD delivers invoice data via the DPD Insights portal. Each file is one invoice's worth of shipments, with one row per shipment (parcel). Columns use English names; DPD also accepts a set of Dutch-language column aliases for the key identifier and charge fields (see [Dutch column aliases](#dutch-column-aliases) below).

## Shape notes

* **Semicolon-delimited, not comma.** DPD uses `;` as the column separator. Standard comma-CSV readers will misread DPD files.
* **One row per shipment.** Each row is one parcel. A row may populate several charge columns (base price, fuel, toll, etc.); each non-zero charge becomes one line item in the Trackstar API.
* **Tracking number is the parcel number.** DPD's `Parcel number` column maps to `tracking_number`. `Shipment number` is a separate DPD reference, not the tracking number.
* **Quoted reference values.** DPD occasionally wraps a reference value in quotes to protect an embedded semicolon (e.g., `"RF_103326;"`).
* **Dates are `YYYYMMDD` or `DD.MM.YYYY`.** Both are accepted — no separators in the former (e.g., `20260331`), dots in the latter (e.g., `31.03.2026`).

## Sample rows

Curated subset of columns for readability. The downloadable CSV has all 43 columns.

```csv theme={null}
Invoice number;Invoice date;Customer number;Parcel number;Service;Base price;Energy surcharge;Total amount
26840305;20260331;63196946;79184603396001;Express;8.62;0.35;9.80
05566517;20260331;66888433;77960076935433;Shop Delivery;7.75;0.63;10.02
60987472;20260331;76964474;74069815441672;Shop Return;5.37;0.84;11.07
23132839;20260331;33439835;41425546063107;Classic;13.24;0.52;25.57
29556504;20260331;52571506;59507496384122;Classic;4.90;0.63;13.88
```

## Download

<a href="https://cdn.jsdelivr.net/gh/trackstarhq/documentation@main/assets/carrier-samples/dpd-english.csv" download>Download full sample CSV (1 header row + 25 data rows, 43 columns, semicolon-delimited)</a>

<Note>
  All sample data is synthetic. Tracking numbers, account numbers, addresses, and reference fields are fabricated and do not correspond to any real shipments or customers.
</Note>

## Fields

### Sender and receiver

| Column | Description |
| :- | :- |
| `Sender name` / `Sender name 2` | Sender identity (DPD relay + merchant name) |
| `Receiver name` / `Receiver name 2` | Recipient name lines |
| `Sender address` / `Sender ZIP` / `Sender city` / `Sender country` | Sender address |

### Identifiers

| Column | Description | Example |
| :- | :- | :- |
| `Type` | Shipment type (`P` = parcel) | `P` |
| `Quantity order` | Items in the order | `1` |
| `Customer number` | Customer account — maps to `account_id` | `63196946` |
| `Customer name` | Customer display name | `Acme Logistics NL B.V.` |
| `Invoice number` | Invoice ID — maps to `invoice_id` | `26840305` |
| `Invoice date` | `YYYYMMDD` — maps to `transaction_date` | `20260331` |
| `Parcel number` | DPD parcel tracking number — maps to `tracking_number` | `79184603396001` |
| `Shipment number` | Separate DPD shipment reference | `368264` |

### Destination and service

| Column | Description |
| :- | :- |
| `Destination zone` | `NL`, `EU`, `INT` |
| `Commercial destination country` | ISO country code |
| `Service` | Service name (`Classic`, `Shop Delivery`, `Shop Return`, `Express`) |
| `Shipment date` | YYYYMMDD |

### Charges

Each populated charge column becomes one Trackstar line item. The `charge_description` is set to the column name.

| Column | Description |
| :- | :- |
| `Base price` | Base freight charge |
| `Energy surcharge` | Energy / fuel surcharge |
| `Toll surcharge` | Road toll surcharge |
| `Peak surcharge` | Peak-period surcharge |
| `System return surcharge` | System return fee |
| `Oversized/Overweight surcharge` | Oversize / overweight fee |
| `Customs surcharge` | Customs handling fee |
| `Total other surcharges` | Miscellaneous surcharges |
| `Total amount` | Row total (sum of all populated charges; informational, not a separate line item) |
| `VAT percentage` | VAT rate applied |

### Descriptions, measurement, references

| Column | Description |
| :- | :- |
| `System return date` / `System return description` | Context for a system return surcharge |
| `Oversized/Overweight description` | Context for an oversize / overweight surcharge |
| `Date of measurement` / `Depot of measurement` | When / where the parcel was measured |
| `Weight` | Parcel weight (grams) |
| `Length` / `Width` / `Height` / `Girth` | Dimensions (cm) |
| `Customer parcel reference 1` | Customer's parcel reference (typically order number) |
| `Customer shipment reference 1` | Customer's shipment reference |
| `Other surcharges codes` | Comma-separated codes for any itemized other surcharges |

## Dutch column aliases

For Dutch-language files, DPD recognizes the following column aliases for the key fields. Where a row uses the Dutch name, it maps to the same Trackstar field as its English counterpart.

| Trackstar field | English column | Dutch alias |
| :- | :- | :- |
| `invoice_id` | `Invoice number` | `Factuur` |
| `transaction_date` | `Invoice date` | `Factuurdatum` |
| `account_id` | `Customer number` | `Relatienummer` |
| `tracking_number` | `Parcel number` | `Pakketnummer` |

Charge columns may also appear under alternate names — `Tarief` (base freight), `Toeslag` (surcharge), `Totaal` (total), and `COD Toeslag` (cash-on-delivery). As with the English charge columns, each populated charge becomes one line item with the column name as its `charge_description`.


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