# CTT Express Guide

CTT Express is the express mail and parcel subsidiary of CTT – Correios de Portugal, the national postal service of Portugal.
It primarily operates as a courier and logistics operator throughout the Iberian Peninsula, handling B2B and B2C express
shipments and e-commerce deliveries. CTT Express also supports international shipment logistics.

This guide provides detailed information on utilizing CTT Express shipping with the EasyPost API,
focusing on account setup, rates, label creation, manifests, tracking, and more.

For operational details, shipment nuances, and frequently asked questions, refer to the CTT Express Carrier Support and FAQs article.

Related:

- [CTT Express Carrier Support and FAQs](https://support.easypost.com/hc/en-us/articles/48290329241229-CTT-Express-Carrier-Support-and-FAQs)

---

## Carrier Account Setup

### Account Registration

Sign up for an EasyPost account to obtain a **Test** and **Production** API
key. See Authentication and Key Management for more information.

> Note: Negotiated rates are only available in Production mode.

### CTT Express Account Registration

1. Contact CTT Express to request a shipper account. A representative will
   be in touch for additional details regarding the account.
2. Inform CTT Express about using EasyPost's API for label purchases.
3. Acquire rates and align any additional shipping needs.
4. Provide EasyPost with the following information:
   1. Client_id
   2. Contract_id
   3. Distribution_channel_id
   4. Authentication_id
   5. User_id

### CTT Express Account via API

The API structure specified by EasyPost can also be used to add the CTT Express carrier shipper account.

```shell
curl -X POST https://api.easypost.com/v2/carrier_accounts \
  -u "$EASYPOST_API_KEY": \
  -H 'Content-Type: application/json' \
  -d '{
  "carrier_account": {
    "type": "CttExpressAccount",
    "description": "CttExpressAccount",
    "credentials": {
      "authentication_id": "VALUE",
      "client_id": "VALUE",
      "contract_id": "VALUE",
      "distribution_channel_id": "VALUE",
      "user_id": "VALUE"
    },
    "test_credentials": {
      "authentication_id": "VALUE",
      "client_id": "VALUE",
      "contract_id": "VALUE",
      "distribution_channel_id": "VALUE",
      "user_id": "VALUE"
    }
  }
}'
```

### Software Requirements

Download an EasyPost Client Library or utilize the REST API with cURL.

### Documentation Review

Examine the EasyPost Objects section to understand the API's structure, which is critical for constructing requests and interpreting responses.

Related:

- [Getting Started Guide](https://docs.easypost.com/guides/getting-started)
- [Manage Carrier Accounts](https://app.easypost.com/account/settings?tab=carriers)

---

## Rates

### Default Rate Display

- EasyPost initially returns a one-cent rate for shipments once the CTT Express account is set up.
- CTT Express will charge the appropriate amount for postage via their billing system.

### Rate Card

- CTT Express representatives provide rate cards detailing expected costs based on shipment parameters (package size, weight, location, etc.).
- Acquiring this custom rate card from CTT Express is required to receive custom negotiated rates as part of the API rate response.

### Rate Card Integration

- Once the rate card is received from CTT Express, users should contact EasyPost support at support@easypost.com for assistance installing this rate card to their account.

---

## Billing

Billing is handled directly by CTT Express and follows a **bill-on-scan** model.

- Charges are applied when the shipment is scanned into the CTT Express network, not at the time of label creation.
- EasyPost is not involved in the billing process.
- All invoices, adjustments, and billing inquiries are managed through CTT Express.

---

## Service Levels

CTT Express Codes are automatically selected per shipment based on the shipment type; however,
service levels may also be configured per shipper account.

CTT Express supports the following Service Codes:

Service levels are generated from live carrier metadata and are not included in this file. Retrieve them from the Carrier Metadata endpoint: https://docs.easypost.com/docs/carrier-metadata. Use `carrier=cttexpress`.

Related:

- [Service Levels](https://docs.easypost.com/docs/shipments/rates#service-levels)

### Coverage Area

CTT Express provides robust support for e-commerce throughout the Iberian Peninsula and offers adaptable international shipping options for parcel delivery.

---

## Predefined Packages

Predefined packages provide a convenient way to classify parcels using carrier-defined package types and retrieve applicable rates.

When creating a shipment with the EasyPost API, select a predefined package that matches the parcel's characteristics and provide its weight in ounces when required. See the predefined package documentation for supported values and example requests.

Predefined packages are generated from live carrier metadata and are not included in this file. Retrieve them from the Carrier Metadata endpoint: https://docs.easypost.com/docs/carrier-metadata. Use `carrier=cttexpress`.

Related:

- [Predefined Packages](https://docs.easypost.com/docs/parcels#predefined-packages)

---

## Generating Shipping Labels

With EasyPost, generating shipping labels for CTT Express is the same process as generating them for any other carrier.

Review the Getting Started Guide for help generating a shipping label.

### One-Call Buys

One-call buys enable streamlined label purchasing through the EasyPost API by consolidating multiple operations into a single API request.
This feature is designed to simplify and accelerate the shipping process by combining the creation of a shipment, retrieval of rates,
and purchasing the shipping label into one efficient step.

See Reducing API Response Times for more information.

### Manifests

Manifesting is **not** supported.

### Shipment Options

Shipment options are generated from live carrier metadata and are not included in this file. Retrieve them from the Carrier Metadata endpoint: https://docs.easypost.com/docs/carrier-metadata. Use `carrier=cttexpress`.

Related:

- [Shipment Options](https://docs.easypost.com/docs/shipments/options)

#### Refunding and Voiding Labels

Voids and refunds are **not** supported.

#### Multi-Piece Shipping

Multi-piece shipments are supported.

Related:

- [Shipment Documentation](https://docs.easypost.com/docs/shipments)
- [CTT Express Carrier Support and FAQs](https://support.easypost.com/hc/en-us/articles/48290329241229-CTT-Express-Carrier-Support-and-FAQs)

---

## Hazardous Materials (HAZMAT)

Hazmat shipments are **not** supported.

---

## Pickups

Pickups are **not** supported.

---

## Tracking

Tracking is **not** supported.

---

## Additional Resources

### Carrier Metadata

The Carrier Metadata endpoint can programmatically return information about service
levels, predefined packages, supported features, and shipment options.

Use this information to quickly integrate and make educated decisions about the mix of carriers for shipping needs. Additionally,
the Carrier Metadata endpoint is available to retrieve comprehensive information about
all carriers on the EasyPost platform, enhancing decision-making for carrier services.

### Support and Troubleshooting

In addition to the guidance provided in our Carrier Guides, EasyPost offers support to assist with FAQs, troubleshooting issues, and inquiries related to the EasyPost platform.

Please visit the Help Center for more information.

Related:

- [Carrier Metadata](https://docs.easypost.com/docs/carrier-metadata)
- [Help Center](https://support.easypost.com/hc/en-us)

---

## Talk to a Shipping Expert

For questions about getting started with the EasyPost API please talk to a Shipping Expert or Contact Support.

Related:

- [Talk to a Shipping Expert](https://www.easypost.com/talk-to-easypost)
- [Contact Support](https://support.easypost.com/hc/requests/new)