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

# Courier accounts

> Connect your InPost, DPD and Apaczka accounts so you can create shipments and labels from an order.

A courier account connects Omnilinker to your account with a carrier. Omnilinker uses it to create shipments, fetch
labels and poll tracking. You need at least one courier account before you can create a shipment from an order; see
[Shipments, labels and tracking](/shipping/shipments).

You can connect several accounts of the same carrier, for example two InPost organizations. Each account of a carrier
needs its own name.

## Before you start

* **The Shipping module is enabled.** Look for **Shipments** in the main menu. If it is missing, the module is turned
  off for your organization (the feature **Enable the Shipping module**). Ask Omnilinker to enable it; see
  [Modules and feature availability](/administration/features).
* **You have the permissions.** To see the page you need **Courier accounts**. To add, edit, test or delete accounts and
  to save the InPost Geowidget token you need **Manage courier accounts**. See [Permissions](#permissions).
* **You have the carrier's API credentials.** They are listed per carrier in
  [What each carrier asks for](#what-each-carrier-asks-for).

## Supported carriers

| Carrier     | Connects through            | Environments          | Cancel from Omnilinker              | Tracking          | Label formats |
| ----------- | --------------------------- | --------------------- | ----------------------------------- | ----------------- | ------------- |
| **InPost**  | ShipX (direct)              | Production or Sandbox | Yes                                 | Yes               | PDF and ZPL   |
| **DPD**     | DPD Web Services            | Production only       | No                                  | Not available yet | PDF and ZPL   |
| **Apaczka** | Apaczka API v2 (aggregator) | Production only       | Yes, but a refund is not guaranteed | Yes               | PDF           |

Apaczka is an aggregator: one Apaczka account gives you the services of the carriers available in your Apaczka account.

Omnilinker stores every label as a PDF. The ZPL copy, when the carrier provides one, is for thermal label printers at a
station; see [Print labels](/shipping/shipments#print-labels).

Furgonetka is named on the page as coming soon. It is not available yet and does not appear in the list of providers.

## Add a courier account

<Steps>
  <Step title="Open the courier accounts page">
    Open **Shipments** > **Courier accounts**.
  </Step>

  <Step title="Start a new account">
    Click **Add courier account**. If you have no accounts yet, the page shows **Connect your first courier account**
    with a tile per carrier; click the carrier's tile instead.
  </Step>

  <Step title="Name the account and choose the carrier">
    * **Name**: a name your team will recognize, for example "InPost — main store". Required, up to 128 characters, and
      different from your other accounts of the same carrier.
    * **Provider**: choose **InPost**, **DPD** or **Apaczka**. You cannot change the provider after you save the account.
  </Step>

  <Step title="Choose the environment">
    For InPost, choose **Production** (the default) or **Sandbox** under **Environment**. Choose **Sandbox** only if you
    have InPost sandbox credentials: production credentials do not work in the sandbox.

    DPD and Apaczka show **Production only.** instead. For Apaczka, every shipment you create is a real charge.
  </Step>

  <Step title="Enter the credentials">
    Fill in the fields under **Credentials**. They differ per carrier; see
    [What each carrier asks for](#what-each-carrier-asks-for). Fields marked `*` are required.
  </Step>

  <Step title="Save and test">
    Click **Save and test** to save the account and check the connection straight away, or **Save** to save it only.
  </Step>
</Steps>

Omnilinker stores the credentials encrypted. After you save, it never shows them again; the **Credentials** column only
says **Configured** or **None**.

Below the form, **Provider capabilities** shows what the carrier supports in Omnilinker: **Cancellation**, **Point
picker**, **Rate quoting**, **Sandbox** and **Aggregator**. A capability marked ✕ is not available for that carrier.

## What each carrier asks for

<Tabs>
  <Tab title="InPost">
    | Field               | What to enter                                                                                             |
    | ------------------- | --------------------------------------------------------------------------------------------------------- |
    | **Access token**    | Your ShipX API organization token. The form points you to **Settings → API** in the InPost Manager panel. |
    | **Organization id** | The ID of your InPost organization.                                                                       |

    A successful test shows "Connected to InPost ShipX as organization '…'." with your organization's name.

    If you use InPost parcel lockers, also add the Geowidget token; see [InPost settings](#inpost-settings).
  </Tab>

  <Tab title="DPD">
    | Field                    | What to enter                                                                                                    |
    | ------------------------ | ---------------------------------------------------------------------------------------------------------------- |
    | **API base URL**         | The address of DPD's API for your contract. DPD does not publish it: ask your DPD account manager for the value. |
    | **Login**                | Your DPD API login.                                                                                              |
    | **Password**             | Your DPD API password.                                                                                           |
    | **FID**                  | Your DPD master financial identifier (FID), assigned in your DPD contract.                                       |
    | **Payer FID (optional)** | The FID DPD bills your shipments to, if it differs from your own FID. Left blank, Omnilinker uses your FID.      |

    DPD accounts always run as **Production**. Whether they reach DPD's test or live system depends only on the
    **API base URL** that DPD gave you.

    A successful test shows "Connected to DPD.".
  </Tab>

  <Tab title="Apaczka">
    | Field                  | What to enter                                                                                                               |
    | ---------------------- | --------------------------------------------------------------------------------------------------------------------------- |
    | **Application id**     | The ID of your Apaczka.pl API application.                                                                                  |
    | **Application secret** | The secret of the same application. The form points you to the API section of your Apaczka.pl panel (**Ustawienia → API**). |

    Apaczka has no sandbox, so every shipment you create through it is a real charge. The connection test itself
    does not create a shipment.

    A successful test shows "Connected to Apaczka.pl.".
  </Tab>
</Tabs>

### Sender address and pickups

The courier account form has no sender address, default service or pickup settings.

* **InPost**: Omnilinker does not send a sender address; the shipment is created in your InPost organization.
* **DPD and Apaczka** need a sender address, and you cannot enter one in Omnilinker yet.

<Warning>
  Until a sender address can be set, creating a DPD or Apaczka shipment fails with "The shipment draft is invalid.".
  You can still add the account and test the connection.
</Warning>

Omnilinker does not order courier pickups. Arrange a pickup in the carrier's own panel, or drop the parcels off
yourself. Apaczka shipments are booked with Apaczka's `SELF` pickup type.

## Test the connection

Click **Test** on the account's row, or **Save and test** in the form. While the test runs, the row shows **Testing…**.

The result appears in a strip under the row, **Connection works** or **Test failed**, with the carrier's message. The
strip closes by itself after 15 seconds, or when you click ×.

The **Connection state** column keeps the last result and when it was taken:

| State                | Meaning                                                |
| -------------------- | ------------------------------------------------------ |
| **Not tested**       | No test has run on this account yet.                   |
| **Connected**        | The last test succeeded.                               |
| **Connection error** | The last test failed. The row shows the error message. |

**Connection health** above the table counts your accounts as connected, needing attention or not tested.

The test only runs when you click it. Omnilinker does not re-test accounts on a schedule.

## Edit an account

<Steps>
  <Step title="Open the form">
    Click the pencil icon (**Edit**) on the account's row. The form is titled \*\*Edit account — \*\* followed by the
    account name.
  </Step>

  <Step title="Change the name or environment">
    You can change **Name** and, for InPost, **Environment**. **Provider** is locked.
  </Step>

  <Step title="Replace the credentials, if needed">
    The saved credentials are hidden. To replace them, click **Change credentials** and fill in **every required
    field**: the new values replace the whole saved set. If you leave a required field blank, Omnilinker keeps the
    current credentials. Click **Cancel credential change** to go back.
  </Step>

  <Step title="Save">
    Click **Save** or **Save and test**.
  </Step>
</Steps>

## Delete an account

<Steps>
  <Step title="Start the delete">
    Click the trash icon (**Delete**) on the account's row. The **Delete this courier account?** dialog opens.
  </Step>

  <Step title="Confirm">
    Tick **I understand the consequences** and click **Delete account**.
  </Step>
</Steps>

After you delete an account:

* Its shipments and their tracking history stay in Omnilinker.
* You cannot create new shipments on it.
* Omnilinker stops polling tracking for its shipments, and you can no longer cancel them from Omnilinker.

You cannot switch an account off without deleting it. To use it again, add it again with the same credentials.

## InPost settings

Once you have at least one InPost account, the **InPost settings** section appears below the accounts table. It holds
the **InPost Geowidget token**, which turns on the map for choosing a parcel locker when you create an InPost locker
shipment.

* The token is optional. Without it, you type the locker code by hand in the shipment form.
* It is a public site token for InPost's Geowidget, not your ShipX access token. The field suggests taking it from the
  InPost Manager panel.
* One token applies to your whole organization, even if you have several InPost organizations connected.

To save it, paste the token into **InPost Geowidget token** and click **Save**. You need **Manage courier accounts**.

## Permissions

| Action                                                        | Permission                                 |
| ------------------------------------------------------------- | ------------------------------------------ |
| See **Courier accounts** and its list                         | **Shipping** > **Courier accounts**        |
| Add, edit, test and delete accounts; save the Geowidget token | **Shipping** > **Manage courier accounts** |

The shipment permissions are listed in [Shipments, labels and tracking](/shipping/shipments#permissions). See
[Permissions reference](/administration/permissions) for how to grant permissions.

<CardGroup cols={1}>
  <Card title="Create a shipment" icon="truck" href="/shipping/shipments">
    Create a shipment from an order, print its label and follow tracking.
  </Card>
</CardGroup>
