Correos Guide

Correos is Spain's national postal operator. It delivers parcels across Spain, including the Balearic and Canary Islands, Ceuta, and Melilla, to mainland Portugal, and internationally. Delivery is to the door, a Correos office, or a Citypaq locker. Correos Express is a separate carrier and is not covered here.


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.

Correos Account Registration

Request a Correos shipper account and credentials from Correos. Add the account in the

Carrier Accounts Dashboard or with the API.

The account type is CorreosAccount. Correos provides two key pairs and three account codes:

  • CorreosID client ID and client secret (auth_client_id, auth_client_secret)
  • API client ID and client secret (api_client_id, api_client_secret), sent on every call
  • Contract number (contract_number, maximum 8 characters)
  • Client number (client_number, maximum 10 characters)
  • Labeller code (labeller_code, maximum 4 characters)

Production and test credentials are separate objects. A credential works only in its own environment. Correos accepts calls only from allowlisted IP addresses, in production and in test.

Correos Account via API

Use the Carrier Account API to add a Correos account:

curl -X POST https://api.easypost.com/v2/carrier_accounts \
  -u "$EASYPOST_API_KEY": \
  -H 'Content-Type: application/json' \
  -d '{
  "carrier_account": {
    "type": "CorreosAccount",
    "description": "CorreosAccount",
    "credentials": {
      "api_client_id": "VALUE",
      "api_client_secret": "VALUE",
      "auth_client_id": "VALUE",
      "auth_client_secret": "VALUE",
      "client_number": "VALUE",
      "contract_number": "VALUE",
      "labeller_code": "VALUE"
    },
    "test_credentials": {
      "api_client_id": "VALUE",
      "api_client_secret": "VALUE",
      "auth_client_id": "VALUE",
      "auth_client_secret": "VALUE",
      "client_number": "VALUE",
      "contract_number": "VALUE",
      "labeller_code": "VALUE"
    }
  }
}'

Software Requirements

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

Documentation Review

Review the EasyPost Objects documentation to understand requests and responses.


Rates

Correos supports rate table rating. Rate tables must be installed for each EasyPost account; otherwise the API returns one-cent placeholder rates (EUR). Contact EasyPost Support for help installing a Correos rate table.


Billing

The customer is billed by Correos. Correos uses bill-on-scan.


Coverage

Correos ships from Spain only. The ship-from country must be Spain, and the ship-from and ship-to addresses need a street and a city.

Domestic services deliver within Spain, including the Balearic and Canary Islands, Ceuta, and Melilla. Shipments crossing into or out of the Canary Islands, Ceuta, or Melilla require a customs declaration. Shipments that stay within the same territory do not. Paq Premium and Paq Estándar also deliver to mainland Portugal, not the Portuguese islands.

International services deliver worldwide outside Spain and require customs data.


Service Levels

Service
Description
CORREOS_PAQ_LIGEROCorreos - Paq Ligero, mailbox deposit within Spain
CORREOS_PAQ_TODAY_HOMECorreos - Same-day Paq Today delivered to the recipient's address
CORREOS_PAQ_TODAY_OFFICECorreos - Same-day Paq Today delivered to a Correos office
CORREOS_PAQ_TODAY_CITYPAQCorreos - Same-day Paq Today delivered to a Citypaq locker
CORREOS_PAQ_ESTANDAR_HOMECorreos - Paq Estándar delivered to the recipient's address (Spain and mainland Portugal)
CORREOS_PAQ_ESTANDAR_OFFICECorreos - Paq Estándar delivered to a Correos office
CORREOS_PAQ_ESTANDAR_CITYPAQCorreos - Paq Estándar delivered to a Citypaq locker
CORREOS_PAQ_ESTANDAR_LARGE_VOLUMECorreos - Paq Estándar large volume delivery
CORREOS_PAQ_ESTANDAR_REFERENCE_OFFICECorreos - Paq Estándar delivered to the recipient's reference Correos office
CORREOS_PAQ_PREMIUM_HOMECorreos - Paq Premium delivered to the recipient's address (Spain and mainland Portugal)
CORREOS_PAQ_PREMIUM_OFFICECorreos - Paq Premium delivered to a Correos office
CORREOS_PAQ_PREMIUM_CITYPAQCorreos - Paq Premium delivered to a Citypaq locker
CORREOS_PAQUETE_INTERNACIONAL_STANDARDCorreos - International standard parcel
CORREOS_PAQUETE_INTERNACIONAL_PREMIUMCorreos - International premium parcel
CORREOS_PAQUETE_INTERNACIONAL_ECONOMICOCorreos - International economy parcel
CORREOS_PAQ_AZULCorreos - Paq Azul delivered to the recipient's address within Spain
CORREOS_PALETCorreos - Pallet shipment with curbside delivery within Spain

Office and Citypaq services need the destination office or locker code. EasyPost does not send that code.

A parcel over the product's weight or size limit is rejected with a 422 before buying and is not rated.


Predefined Packages

Correos does not provide predefined packages. Use parcel dimensions and weight when creating shipments.

Predefined Package
There are no predefined packages for this carrier.

Generating Shipping Labels

Correos supports buying and one-call buys. The carrier draws PDF and ZPL labels at 4x6. PNG labels are converted from the carrier's ZPL.

A CN22 or CN23 accompanies shipments that cross the EU customs border, including shipments that cross into or out of the Canary Islands, Ceuta, or Melilla. Shipments that stay within the same territory do not. That form is a PDF on A4 paper.

Review the Getting Started Guide for help generating a label.

Shipment Options

Shipment Option
label_format
label_size
carrier_insurance_amount
delivery_confirmation
content_description
invoice_number
incoterm
endorsement

label_format accepts PDF, ZPL, or PNG.

delivery_confirmation value SIGNATURE is not available for Paq Ligero or Citypaq. DIRECT_SIGNATURE delivers only to the named recipient and requires that recipient's identity document in tax_identifiers.

carrier_insurance_amount is euros only, in whole euros, and is summed across containers into one declared value per shipment. Insurance is not available for Paq Ligero, Paq Azul, or Palet.

On customs shipments, customs_info.contents_type cannot be mixed content. customs_info.non_delivery_option value abandon is international only. endorsement value NO_RETURN_TO_SENDER is international only. incoterm accepts DAP or DDU, and only across a customs border. invoice_number is limited to 15 characters on customs shipments.

tax_identifiers accepts a Spanish DNI, NIE, or CIF, an EU ID, a passport, or the recipient's VAT number for imports. return_address must be the sender's address.

For goods shipments that require a customs declaration, each item needs a description, an HS code (6, 8, or 10 digits), a quantity (maximum 999), a weight, and a value. Item value is euros only. Document shipments do not require item lines. Pass item records under shipment.options.fulfiller_order_items[*].items[*] using description, hs_tariff_number, quantity, item_weight, and item_value.

Manifests

Manifesting is not supported.

Refunds

Correos supports voiding through the API. Return labels are not supported.


Hazardous Materials (HAZMAT)

Limited-quantity and fully regulated hazardous materials are not supported.


Pickups

Correos supports pickups in Spain only. A pickup is booked for one day and one 3-hour slot: 9–12, 12–15, 15–18, or 18–21 local time. Correos uses the first slot that fits entirely inside the requested window. Pickups are booked 3 to 80 days ahead and carry no charge.


Tracking

Correos supports tracking through the EasyPost API.


Additional Resources

Carrier Metadata

The Carrier Metadata endpoint provides information about Correos service levels, predefined packages, supported features, and shipment options.

Support and Troubleshooting

Contact Correos for questions about billing, pickups, or carrier requirements. For questions about the EasyPost platform, visit the Help Center.

QR codes, surcharges, and address verification are not supported.


Talk to a Shipping Expert

For questions about getting started with the EasyPost API,

talk to a Shipping Expert or contact our Support team.