Developers / API ReferenceAPI Version 3.0
EASY EXPRESS · DEVELOPER API

Shipping API Documentation

A clear, practical reference for requesting rates, creating shipping labels and tracking shipments with Easy Express.

GET STARTED

Overview

#

Integrate shipping rates, label creation and shipment tracking into your application through Easy Express API v3.

Base URLhttps://easy-express.fr
API versionv3
AuthenticationBearer token
Integration sequence

1. Request rates → 2. Select carriers[].id → 3. Create shipment → 4. Retrieve labels and tracking numbers.

GET STARTED

Authentication

#

Send your API token in the Authorization header on every request. The Postman collection uses host and variable_token variables.

HEADERS
{
  "Authorization": "Bearer {{variable_token}}",
  "Content-Type": "application/json"
}
Postman setup

Import the downloadable collection, set host to https://easy-express.fr, and set variable_token to your own API token. Do not expose tokens in frontend code.

Download sanitized Postman collection →
SHIPPING API

Get shipping rates

#

Get available shipping services and price estimates using origin, destination and parcel weight.

POST/api/v3/shipments/rates

Request example

JSON
{
  "senderAddress": {
    "countryCode": "FR",
    "postalCode": "93300"
  },
  "receiverAddress": {
    "countryCode": "FR",
    "postalCode": "75002"
  },
  "parcels": [
    {
      "weight": 1
    }
  ]
}

Response example

JSON
{
  "Response": {
    "Date": 1765451621,
    "Status": "SUCCEEDED",
    "Code": 200,
    "Message": {
      "transactionId": "EXAMPLE_TRANSACTION_ID",
      "shipmentRequest": {
        "senderAddress": {
          "countryCode": "FR",
          "postalCode": "93300"
        },
        "receiverAddress": {
          "countryCode": "FR",
          "postalCode": "75002"
        },
        "parcels": [
          {
            "weight": 1
          }
        ]
      },
      "carriers": [
        {
          "id": "EXAMPLE_CARRIER_ID",
          "code": "fedex",
          "name": "FedEx",
          "price": 2107,
          "priceIncTax": 2528,
          "logo": "https://easy-express.fr/media/logo/sq/fedex.png",
          "infos": {
            "estimatedArrival": "3-4 day(s)",
            "maximumSizeSupported": "Max 80*50*30cm, 25kg"
          }
        }
      ]
    }
  }
}
Prices are returned in cents. price: 2107 corresponds to €21.07 excluding tax; priceIncTax: 2528 corresponds to €25.28 including tax. Currency interpretation follows the account/quotation context.

Response fields

Field Type Description
Response.Date Integer Response timestamp
Response.Status String Response status: "SUCCEEDED" indicates success
Response.Code Integer HTTP status code, 200 indicates success
Message.transactionId String Unique transaction ID for this quote request
Message.shipmentRequest Object Returned quote request parameters (for confirmation)
Message.carriers Array List of available carriers
carriers[].id String Carrier unique ID (used for subsequent order placement)
carriers[].code String Carrier code (e.g., fedex, ups, gls)
carriers[].name String Carrier display name
carriers[].price Integer Price excluding tax (unit: cent)
carriers[].priceIncTax Integer Price including tax (unit: cent)
carriers[].logo String Carrier logo image URL
carriers[].infos Object Additional carrier information (transit time, size limits, pickup points, etc.)
Field Type Unit Example Description
"weight": 3 Float [0-9](0,3) Kilogram (kg) 3 = 3 kg Parcel weight unit is kilogram
Within parcels array Array Kilogram {"weight": 8} = 8 kg All weight-related fields use kilograms

Weight units

Field Type Unit Example Description
"weight": 3 Float [0-9](0,3) Kilogram (kg) 3 = 3 kg Parcel weight unit is kilogram
Within parcels array Array Kilogram {"weight": 8} = 8 kg All weight-related fields use kilograms
SHIPPING API

Create a shipment

#

Once the customer has selected a carrier, submit its rate-response carrierId together with the shipment details.

POST/api/v3/shipments/checkout
Endpoint normalization

The uploaded Postman requests consistently use /api/v3/shipments/checkout, including the international examples. The old documentation also mentioned singular /shipment/checkout; this version follows the supplied Postman collection.

JSON
{
  "transactionId": "TRANSACTION_ID_FROM_RATES",
  "carrierId": "CARRIER_ID_FROM_RATES",
  "shipmentRequest": {
    "parcels": [
      {
        "weight": 1,
        "reference": "ORDER-001"
      }
    ],
    "senderAddress": {
      "firstName": "Alex",
      "lastName": "Martin",
      "company": "Example Sender SAS",
      "email": "sender@example.com",
      "phoneNumber": "+33100000000",
      "street": "10 Rue Exemple",
      "city": "Aubervilliers",
      "postalCode": "93300",
      "countryCode": "FR"
    },
    "receiverAddress": {
      "firstName": "Sam",
      "lastName": "Taylor",
      "company": "Example Recipient",
      "email": "recipient@example.com",
      "phoneNumber": "+33100000001",
      "street": "20 Rue Exemple",
      "city": "Paris",
      "postalCode": "75002",
      "countryCode": "FR"
    }
  }
}

The sample uses a France-to-France shipment without an invoice object.

JSON
{
  "transactionId": "TRANSACTION_ID_FROM_RATES",
  "carrierId": "CARRIER_ID_FROM_RATES",
  "shipmentRequest": {
    "parcels": [
      {
        "weight": 1,
        "reference": "ORDER-001"
      }
    ],
    "senderAddress": {
      "firstName": "Alex",
      "lastName": "Martin",
      "company": "Example Sender SAS",
      "email": "sender@example.com",
      "phoneNumber": "+33100000000",
      "street": "10 Rue Exemple",
      "city": "Aubervilliers",
      "postalCode": "93300",
      "countryCode": "FR"
    },
    "receiverAddress": {
      "firstName": "Sam",
      "lastName": "Taylor",
      "company": "Example Recipient",
      "email": "recipient@example.com",
      "phoneNumber": "+41790000000",
      "street": "10 Example Street",
      "city": "Lausanne",
      "postalCode": "1003",
      "countryCode": "CH"
    },
    "invoice": {
      "invoiceNumber": "INV-001",
      "invoiceDate": "2026-10-24",
      "invoiceItems": [
        {
          "denomination": "Clothing accessories",
          "hsCode": "71179000",
          "weight": "1",
          "value": "90.40",
          "quantity": "1",
          "originCountry": "CN"
        }
      ],
      "fileFormat": "PDF",
      "file": "BASE64_ENCODED_PDF_CONTENT"
    }
  }
}

For customs shipments, include the invoice structure when required by the service. The invoice.file value is illustrative; replace it with the complete Base64-encoded PDF content.

Checkout response example

JSON
{
  "Response": {
    "Date": 1765452070,
    "Status": "SUCCEEDED",
    "Code": 200,
    "Message": {
      "transactionId": "EXAMPLE_TRANSACTION_ID",
      "labels": "https://easy-express.fr/storage/file/pdf/example/combined.pdf",
      "parcels": [
        {
          "ticket": "https://easy-express.fr/storage/file/pdf/example/parcel-1.pdf",
          "tracking": "EXAMPLE_TRACKING_NUMBER"
        }
      ]
    }
  }
}

Response fields

Field Type Description
Response.Date Integer Response timestamp
Response.Status String Response status: "SUCCEEDED" indicates success
Response.Code Integer HTTP status code, 200 indicates success
Message.transactionId String Unique transaction ID for the order
Message.labels String Download URL for the shipping label PDF (combined for all parcels)
Message.parcels Array Detailed information for each parcel
parcels[].ticket String Shipping label PDF URL for individual parcel
parcels[].tracking String Parcel tracking number
Field Type Description
transactionId String (Length: 42) Order unique identifier, recommended to be generated by the business system
carrierId String Carrier ID, obtained from the /rates interface
parcels Array Parcel list, includes weight, reference number, etc.
senderAddress Object Sender address information
receiverAddress Object Receiver address information
invoice Object Invoice information (required for cross-border shipping)

Request fields

Field Type Description
transactionId String (Length: 42) Order unique identifier, recommended to be generated by the business system
carrierId String Carrier ID, obtained from the /rates interface
parcels Array Parcel list, includes weight, reference number, etc.
senderAddress Object Sender address information
receiverAddress Object Receiver address information
invoice Object Invoice information (required for cross-border shipping)
SHIPPING API

Customs invoice

#

The international checkout examples in the supplied Postman collection include shipmentRequest.invoice, with invoice metadata, line items, and an encoded invoice document.

Invoice field reference

Field Type Required Description
carrierId String Yes Carrier ID obtained from the rates interface response
invoice.file String Yes Base64 encoded string of the invoice file
invoice.fileFormat String Yes Invoice format (e.g., pdf)
invoice.invoiceItems Array Yes Product details (including HS code, country of origin, unit price, etc.)
Invoice item fieldMeaning
denominationProduct description
hsCodeCustoms HS code
weightItem weight (kg)
valueDeclared item value
quantityItem quantity
originCountryCountry of origin (ISO alpha-2)
Important

The Postman file includes a real-world invoice encoded in Base64. It has deliberately been excluded from these public-facing examples and the downloadable sanitized collection.

ADDITIONAL ENDPOINTS

Find tracking information

#

Look up a shipment using the search query q. The supplied Postman collection contains a request example, but no saved response example.

POST/api/v3/tracking/find

Request example

JSON
{
  "q": "EXAMPLE_TRACKING_NUMBER"
}

Response fields have not been specified in the supplied materials. Confirm their structure using your authenticated API environment.

ADDITIONAL ENDPOINTS

Company information lookup

#

Search company information using a keyword and postal code. The supplied Postman collection names this example G-A.

POST/api/v3/infos/company

Request example

JSON
{
  "q": "Easy",
  "zipcode": "93300"
}

No saved response schema was supplied for this operation.

REFERENCE

Address fields

#

Both senderAddress and receiverAddress use a similar structure. Some shipping services can require additional fields depending on destination.

Field Type / Length Example Description
firstName String / 25 "TestFirstName" First name
lastName String / 25 "TestLastName" Last name
company String / 35 "TestCompany" Company name
siret String / 20 "82339490300038" French company registration number
shopName String / 35 "TestShopName" Shop name
email String / 35 "test@123.com" Email address
phoneNumber / mobileNumber String / 15 "0600000000" Phone/Mobile number
street String / 35 "8 Rue de la Haie Coq" Street address
city String / 35 "Aubervilliers" City
postalCode String / 10 "93300" Postal code
countryCode String / 2 "FR" Country code (ISO 3166-1 alpha-2)
instructions String / 35 "TestInstruction" Delivery notes

The collection also uses complement and stateProvinceCode; these are included in examples but length constraints were not documented in the original page.

REFERENCE

Response envelope

#

Available saved examples use a top-level Response object with Date, Status, Code and Message. The example below shows the structure of a successful response.

JSON
{
  "Response": {
    "Date": 1765451621,
    "Status": "SUCCEEDED",
    "Code": 200,
    "Message": {
      "transactionId": "EXAMPLE_TRANSACTION_ID"
    }
  }
}
About errors

No authoritative error-code catalogue or failure-response examples were provided. Do not assume the numeric Response.Code is always identical to the HTTP status.