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

# Carrier integration and configuration

> Connect your carrier accounts to OTO and set each carrier's prices, SLAs, city coverage and daily capacity so shipping automation can choose between them.

> [!NOTE]
>
> **Where to find it:** Main → Integrations → Shipping Partners — [Open in OTO ↗](https://app.tryoto.com/shipping-partners)

Carrier integration is the configuration layer everything else in shipping depends on. Connect the accounts, tell OTO what each carrier costs, where it goes, how fast it promises to be and how much it can take in a day — and the rest of the module has something to decide with.

## The partner catalog

Open **Main → Integrations → Shipping Partners**. The page has two tabs: **More Connections**, the catalog of everything you could connect, and **Connected**, the ones you already have. The catalog is filtered by keyword, by **Country** and by **Service Type**, and each card carries small icons for the service types that partner offers — a `+2` or `+7` badge where there are more than fit.

![The Shipping Partners catalog](https://mintcdn.com/oto/ft-bRlLvOnJkbVoC/images/carrier-1-shipping-partners.png?fit=max\&auto=format\&n=ft-bRlLvOnJkbVoC\&q=85\&s=e90820372354645c987defef5dfbdef9)

Fig. 1 — The catalog under More Connections. The subheading — Connect your shipping partners (Your Own Rates) — is the giveaway that this tab is for carriers you hold a contract with.

### One partner, several services

Opening a partner does not connect it. It shows that partner’s **Available Services**, each with its own **Connect** button. Aramex, for instance, offers Domestic (Regular 2–7 days), International, Heavy & Bulky (furniture), PUDO (pick up / drop off), Same Day (24 hours) and Banking — six services, six separate connections.

![Available services for one carrier](https://mintcdn.com/oto/ft-bRlLvOnJkbVoC/images/carrier-2-available-services.png?fit=max\&auto=format\&n=ft-bRlLvOnJkbVoC\&q=85\&s=6283a2ab23dedf7343aeeaffdcbe3cff)

Fig. 2 — Each service is connected independently, which is what lets a rule prefer one carrier’s same-day service in Riyadh and its standard service everywhere else.

## Connecting a carrier

Connecting is a two-step wizard: **1 Credentials**, then **2 Settings**.

### Step 1 — Credentials

These come from your account with the carrier, so the form is partner-specific: Aramex asks for Username, Password, Account Number, Account PIN, Account Entity and Account Country Code, while another partner may want nothing more than an API key. **Advanced Settings** expands for the optional parameters.

**Test Connection** verifies the credentials against the carrier before you go any further. Use it — a connection saved with a bad password fails silently later, at shipment creation, on someone else’s shift.

![The credentials step](https://mintcdn.com/oto/ft-bRlLvOnJkbVoC/images/carrier-3-credentials.png?fit=max\&auto=format\&n=ft-bRlLvOnJkbVoC\&q=85\&s=ede402708d4df0babb107efc2d31cfb6)

Fig. 3 — Step 1. Every field marked with a red asterisk is required, and Account Country Code is pre-filled from your account’s country.

### Step 2 — Settings

The second step is how *OTO* should use the connection, rather than how to authenticate it.

| Setting | What it does |
| - | - |
| **Connection Name** | A name of your choosing. This is what makes several connections to the same carrier workable — it is the label you will see in automation rules, on the shipping options list and in reports. |
| **Service Type** | Which of the carrier’s services this connection represents — Express, Regular, Same Day and so on. |
| **Active** | Switches the connection on or off without deleting it, along with its coverage, SLAs and history. |
| **Return Available** | Whether this connection can be used for reverse shipments. |
| **Do not send SMS** | Suppresses the carrier’s own tracking messages — use it when your own [notifications](https://docs.tryoto.com/modules/customer-notification/overview.md) already cover the customer, so they are not messaged twice about the same parcel. |

**Advanced Settings** holds the rest, including the volumetric weight divisor this carrier bills on and any brand restriction, so one brand’s parcels ship only on its own account.

![The settings step](https://mintcdn.com/oto/ft-bRlLvOnJkbVoC/images/carrier-4-settings.png?fit=max\&auto=format\&n=ft-bRlLvOnJkbVoC\&q=85\&s=242b798af541b3bb641c681f803276ca)

Fig. 4 — Step 2. Save here creates the connection; it then appears under the Connected tab with its own configuration menu.

## Features

6 features in this function.

### Connect your own carrier accounts

Merchants who have already negotiated with carriers keep those relationships. Add the account credentials and OTO books against your contract, at your prices, on your account number.

OTO integrates with **460+ delivery companies worldwide**, and you can connect any of them with a contract of your own. **15+** of them are also available on OTO rates, with no contract needed. The catalog inside the product lists the partners available in your country, so the number you see there is smaller than the global figure.

### Separate connections per carrier service

One carrier usually sells several services — standard, express, same-day, cold chain, heavy & bulky, PUDO. Each becomes its own connection with its own **Connection Name** and **Service Type**, which means each carries its own coverage, its own SLA, its own daily capacity, and is chosen independently by automation.

Without this, “Aramex” would be a single undifferentiated option, and no rule could prefer its express service for one city and its standard service for another.

### OTO pre-negotiated rates

Merchants without their own contracts — or without the volume to get good ones — can ship on rates OTO has already negotiated, with additional discounts applied. Nothing to sign and no account to open with the carrier: the rate is available as soon as the connection exists.

The two models coexist. A merchant can hold their own contract with one carrier and use OTO rates for another, and automation will compare across both.

### Contract prices and visible shipping cost

Entering your contract’s prices does two things. It lets you see the cost of each carrier at the moment you choose between them, rather than discovering it on an invoice — and it gives [reconciliation](https://docs.tryoto.com/modules/shipping-management/shipping-invoices-reconciliation.md) an expected figure to check the carrier’s bill against.

Shipping with your own contract is an explicit choice at shipment creation: **Create Shipment → With My Rates**, or **Create Reverse Shipment With My Rates** for returns.

> [!NOTE]
>
> **Returns are one at a time**
>
> Reverse shipments on your own rates must be created individually — bulk creation is not available for them.

### Pickup, delivery and return SLAs per carrier

An SLA records what the carrier has promised, so OTO can measure them against it and automation can prefer whoever is actually faster. Configure it from the **⋯** menu on a connected partner, under **SLA Configurations** — itself a two-step wizard: choose the **SLA Method**, then fill in the **SLA Configuration Details**.

Six methods are available, because a promise is not always expressed the same way:

| SLA method | When it applies |
| - | - |
| **City Based** | The common case for domestic express — a promise per destination city. |
| **District Based** | Finer than city, for markets where one city’s districts differ materially. |
| **KM-Range Based** | Bands of distance. Ranges must be whole numbers and must not overlap. |
| **Tier Based** | Carrier-defined zones rather than geography you name. |
| **Distance based (hourly)** | For Bullet — on-demand delivery where the promise is measured in hours rather than days. |
| **Country Based** | International, where the unit is the destination country. |

Whichever method you choose, each row records **three** separate promises — **Pickup SLA**, **Delivery SLA** and **Return SLA** — each as a minimum and a maximum, so a range can be shown to the customer rather than a single optimistic figure. **Upload Data** imports the whole table at once, which is how a national carrier’s city list gets configured without typing it.

![SLA Configurations](https://mintcdn.com/oto/YkJay8Y-1RDv8ciw/images/carrier-5-sla-config.png?fit=max\&auto=format\&n=YkJay8Y-1RDv8ciw\&q=85\&s=f930f2b569c7d5aeaf081c77cf7a4feb)

Fig. 5 — A distance-based configuration. Every column filters, and each SLA takes a Min and a Max.

### Coverage and daily capacity

Both live on one screen, **City Coverage**, reached from the connected partner’s menu.

A new connection starts with every city the carrier serves listed as **Default Covered**. That is the carrier’s coverage, not yours — your contract may be narrower. Activate only the cities you actually ship to; anything left inactive is treated as **Passive** and excluded from automatic shipment creation. The **Tools** menu does this in bulk, and the country and status filters keep a list of several hundred cities manageable.

![City Coverage](https://mintcdn.com/oto/YkJay8Y-1RDv8ciw/images/carrier-6-city-coverage.png?fit=max\&auto=format\&n=YkJay8Y-1RDv8ciw\&q=85\&s=b8f0d671d63296836adf6599f79b715d)

Fig. 6 — Coverage and capacity on one screen. Default Covered means the carrier serves the city and you have not yet said whether you do.

**Daily Capacity** is a column in the same table, set per city from the row’s **⋯** menu. It caps how many shipments that city will take in a day; once the cap is reached, no further automatic shipments are created for it until the next day. Leave it empty for no limit.

![Setting daily capacity for a city](https://mintcdn.com/oto/ft-bRlLvOnJkbVoC/images/carrier-7-daily-capacity.png?fit=max\&auto=format\&n=ft-bRlLvOnJkbVoC\&q=85\&s=abb679f9921a4ef2d1c76567b87b6000)

Fig. 7 — The per-city capacity dialog. The city is fixed; only the number is editable.

> [!WARNING]
>
> **Automatic shipments only**
>
> Coverage and capacity constrain *automatic* shipment creation. A shipment created by hand is not blocked by either — so a capacity limit is a planning tool, not an enforcement mechanism.

## Limits and prerequisites

| Requirement | Detail |
| - | - |
| **Plan limits** | Free allows one shipping partner, Starter three, Scale unlimited. |
| **Account balance** | Shipping on OTO rates requires sufficient balance in your account. |
| **A warehouse** | At least one location must exist before shipments can be created. |
| **KM ranges** | Whole numbers only, and ranges must not overlap. |
| **Coverage scope** | Coverage and capacity apply to automatic creation only. |
| **Bulk reverse shipments** | Not available on your own rates — create them one at a time. |

## Related

* [Shipping automation](https://docs.tryoto.com/modules/shipping-management/shipping-automation.md) — consumes everything configured here to choose a carrier.
* [Invoice reconciliation](https://docs.tryoto.com/modules/shipping-management/shipping-invoices-reconciliation.md) — checks carrier bills against the contract prices entered here.
* [Order fulfillment](https://docs.tryoto.com/modules/omnichannel-oms/order-fulfillment.md) — where delivery slots are configured, per connected partner.
* [OTO FLEX](https://docs.tryoto.com/modules/oto-flex/overview.md) — your own fleet, configured separately but competing in the same rules.


## Related topics

- [Carrier integrations](https://docs.tryoto.com/integrations/carriers.md)
- [REST API reference](https://docs.tryoto.com/developers/rest-api-reference.md)
- [Platform architecture](https://docs.tryoto.com/get-started/architecture.md)


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