DPD Polska Integration — Setup Guide
Step-by-step: from a DPD Polska account to a working OpenLinker shipping
connection that generates labels + handover protocols over the REST
DPDServices API and fetches tracking over the SOAP DPDInfoServices API.
Adapter: dpd.polska.rest.v1 · Capability: ShippingProviderManager
Prerequisites
Section titled “Prerequisites”- A DPD Polska account with API access.
- A payer FID (
payerFid, numeric string) — required — your DPD payer id. - Optionally a master FID (
masterFid, numeric string) — your DPD customer/federation id, only when it differs from the payer FID. - API login + password for the DPD services.
- OpenLinker API + worker running.
- A sender address (returned on labels) in Polish format.
Transport split: labels + handover protocols use the REST
DPDServicesAPI; tracking uses the separate SOAPDPDInfoServiceshost. The adapter is dual-transport — both must be reachable.
1. Obtain your DPD credentials
Section titled “1. Obtain your DPD credentials”- Request API access from DPD Polska (gated; the REST
DPDServicesSwagger and the SOAPDPDInfoServicesWSDL are issued with your account). - Note your payer FID (
payerFid) — numeric string, required. If your account issues a separate master FID (masterFid), note it too (optional). - Note your service login and password (the credentials half of the connection, stored encrypted).
- Confirm which environment you’ve been issued — sandbox/demo or production.
2. Create a DPD connection in OpenLinker
Section titled “2. Create a DPD connection in OpenLinker”- Open OL Admin → Integrations → Connections → New Connection.
- Platform: DPD.
- Fill the sender address:
address,citypostalCode— PL formatNN-NNN. It must be a real, deliverable DPD code that matches the sendercity— OpenLinker only checks theNN-NNNformat, not deliverability. A syntactically-valid but out-of-region code (e.g.Warszawa+22-213, a Lublin-region code) is accepted at save time but rejected by DPD on every shipment (see Troubleshooting).countryCode— ISO 3166-1 alpha-2 (e.g.PL)company/name/phone/email(optional)
- Payer FID: your numeric
payerFid(required). Set Master FID (masterFid) only if your account issues one distinct from the payer FID. - Environment: sandbox or production (must match the issued credentials).
- Login / password: the DPD service credentials from Step 1.
- Click Test Connection, then Save.
3. Capability
Section titled “3. Capability”| Capability | What it does |
|---|---|
ShippingProviderManager | Generate package numbers + labels and handover protocols over REST DPDServices; fetch tracking events over SOAP DPDInfoServices. |
4. Troubleshooting
Section titled “4. Troubleshooting”payerFid must be a numeric string/masterFid must be a numeric string— strip any non-digit characters from the FID (payerFidis required,masterFidoptional).postalCode must match the PL format NN-NNN— sender postcode must beNN-NNN.- Shipments fail with
INCORRECT_SENDER_POSTAL_CODE(surfaced asNOT_PROCESSED) — the sender postcode is a validNN-NNNstring but is not a deliverable DPD code for the configured sendercity(e.g.Warszawapaired with a Lublin-region22-213). The connection saves fine because OpenLinker validates only theNN-NNNformat, but DPD rejects everygeneratePackagesNumberscall. Fix the senderpostalCodeon the DPD connection to a real code that matches the city (e.g. a Warsaw02-222), then retry the shipment. OpenLinker now appends an actionable hint to this rejection so the message names the sender-address config as the fix. - Auth /
needs_reauth— login, password, or environment mismatch; the DPD auth-failure classifier flags the connection for re-auth. Re-check credentials against the issued environment. - Labels generate but tracking is empty — tracking is a separate SOAP host (
DPDInfoServices); verify it’s reachable independently of the REST endpoint. - Shipment create fails with
NOT_PROCESSEDand an emptyproviderCode— DPD returns business rejections as HTTP 200 with a non-OK body status, and sometimes without a field-levelerrorCode. The adapter now logs the raw DPD response body, minus any binary document payload (the base64documentDatafield is stripped before logging), atWARN(search the API/worker logs forDPD create rejected), keyed by DPD’straceId, and surfaces thattraceIdon the error’sproviderDetails. Quote thetraceIdto DPD support to recover the underlying cause.
Related
Section titled “Related”- Reference plan / epic: #961 (children #962–#966)
- Capability port:
ShippingProviderManagerPort(seedocs/architecture-overview.md)