Skip to main content
Octopia (Cdiscount)

«Every parcel needs a carrier»: when it appears and how to fix it

The message Every parcel needs a carrier (mapped or free text). appears when you press Declare to Octopia and a parcel line has no carrier. Give each parcel a mapped carrier or a free-text carrier name, then press the button again.

FlexigoTech · Editor in charge: Víctor Gómez · Updated 5 November 2026

Key facts

Versions
Odoo 17, 18, 19 and 20
Checked
in the connector's source code, version 20.0 · against the sources linked at the end
Reading time
4 min

When exactly this message appears

The message Every parcel needs a carrier (mapped or free text). appears when you press the Declare to Octopia button in the wizard used to declare an order's shipment. That button is always visible, in Odoo 17, 18, 19 and 20, and the message is in the published code of all four versions. The condition described below comes from the Odoo 20.0 code.

Diagram showing the «Declare to Octopia» button and, below it, the message «Every parcel needs a carrier (mapped or free text).»
Diagram generated from the module's published code (not an Odoo screenshot): the button and the message with their original English labels, valid for Odoo 17, 18, 19 and 20.
48 business hours to accept each Cdiscount order. Do it in Odoo
Video: 48 business hours to accept each Cdiscount order. Do it in Odoo

What it means: the condition in the code

When you press the button, the module goes through the parcel lines in the wizard one by one. For each line it works out which carrier name to declare: it takes the name (the label) of the mapped Octopia carrier if there is one and, if not, the free text typed on the line. If no name is left after that, it raises the message. Put plainly: every parcel needs at least one of the two, a mapped carrier with a name or a free-text carrier.

State of the parcel lineResult when you press Declare to Octopia
Has a mapped Octopia carrier with a namePasses this check: that name is used and the free text no longer counts
The mapped carrier is empty (or has no name) and there is free textPasses this check: the free text is used
Has neitherThe message appears and the action stops

The check follows the order of the lines and stops at the first one that fails. If several parcels have no carrier, fixing one can bring you the same message for the next.

It is an error that stops the action: nothing that the declaration was going to change is saved. It is raised before the module creates the shipment record and before it calls Octopia, so nothing is declared and the order is not marked as shipped.

With Odoo in English you see it as Every parcel needs a carrier (mapped or free text).. The diagram below shows that same text next to its published translations into Spanish, German, French, Italian and Portuguese.

Diagram with the same message in English, Spanish, German, French, Italian and Portuguese
Diagram generated from the module's published translation files (not an Odoo screenshot): the message as the user sees it depending on the language of their Odoo, in English, Spanish, German, French, Italian and Portuguese.

How to fix it, step by step

  1. Open the order's declaration wizard, the one containing the Declare to Octopia button, and go through its parcel lines.
  2. On each line, give the carrier in one of two ways: with a mapped Octopia carrier, or with its name as free text.
  3. If you had given a mapped carrier and the message persists, check that the carrier has a name: the module reads its label and, if it is empty, treats it as if there were no carrier. In that case pick another mapped carrier or type the name as free text.
  4. Check every line, not just the first: the check stops at the first line that fails, and the following ones may be the same.
  5. Press Declare to Octopia again.
  6. If Octopia accepts the declaration, the wizard closes. If Octopia rejects the call, the module raises an error and the wizard does not close.

What the module does once the carrier is right

Once the check is passed, the module prepares each parcel with its number, the carrier name (the mapped one or the free text) and, if the line has one, the tracking URL. If a parcel covers only some of the order's lines, it adds which ones to the declaration. Cdiscount Marketplace's CGMAD (25/08/2025, p. 47) state that the shipment confirmation carries the tracking number.

It then creates a shipment record and declares the shipment to Octopia using the order's account. If Octopia accepts it, the record is marked as sent with its date, the order is marked as shipped and the module adds a success entry to its synchronisation log. If it is Octopia that rejects the declaration, it is no longer this message: the shipment record is left in an error state with the text of the failure.

What to check afterwards

  • That the wizard closed without showing any warning.
  • That the order shows as shipped.
  • That there is a success entry for shipments in the module's synchronisation log.

Cost and help

The connector is a one-off purchase per Odoo version (published for 17, 18, 19 and 20) and needs a FlexigoTech Cloud subscription, Connector plan: €49 a month or €490 a year, excluding VAT.

FlexigoTech implements Odoo 17, 18, 19 and 20 and builds custom connectors and integrations. If your carriers need special handling when you declare shipments, get in touch and we will look at it together.

Keep reading

What the Submit to Octopia button of Octopia Connector does, step by stepWhat the Submit to Octopia button does in Bulk Invoice Imports: when it shows, what it checks, what it changes and the one error it can raise.What the Import button of Octopia Connector does, step by stepWhat the Import button of Octopia Connector does in Odoo: when it shows, what it imports, what changes, the notice it gives and the log entry it leaves.What the Create Vendor Bill button in Octopia Connector doesWhat the Create Vendor Bill button in Octopia Connector does in Odoo: when it shows, what it checks, what it creates and where it can stop.
Checked in the connector's source code (version 20.0) and the linked sources

Sources