Skip to main content
Shopify

Picking must be done before sending Shopify fulfillment: what to do

The message Picking must be done before sending Shopify fulfillment. appears when the picking is not in the Done state: it is the first check made when sending the fulfillment. Move the picking to Done, then send the fulfillment.

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

Key facts

Module
Shopify
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

What the message says and when it appears

The action stops with Picking must be done before sending Shopify fulfillment. when the picking is not in the Done state. It is the first check in the method that sends the fulfillment: before looking up the Shopify instance and before talking to Shopify, the code compares the picking state with Done and, if it is anything else, raises the error.

Because the error stops the action, nothing that the send was going to write on the picking is saved. The message can appear when you press the Send Shopify Fulfillment button on the picking form. It is in the published code of Odoo 17.0, 18.0, 19.0 and 20.0; the method code described here is the one from Odoo 20.0.

Diagram built from code: the Send Shopify Fulfillment button and, below it, the error message, with English labels
Diagram built from the module's published code, not a screenshot of Odoo: the Send Shopify Fulfillment button and the message the method gives (Odoo 17.0, 18.0, 19.0 and 20.0), with the English labels from the code.
Your Odoo doesn't talk to Amazon, Temu or Shopify?
Video: Your Odoo doesn't talk to Amazon, Temu or Shopify?

The same rule, seen from the button

The Send Shopify Fulfillment button is hidden when the picking does not belong to a Shopify order or when its state is not Done. The condition is the same in Odoo 17.0, 18.0, 19.0 and 20.0. In other words:

PickingIs the button visible?
From a Shopify order and in the Done stateYes
From a Shopify order and in any other stateNo
Not from a Shopify orderNo

The button and the message therefore share the same requirement: to send the fulfillment, the picking has to be in Done.

A case: the shop that cannot find the button

Example Illustrative case: the company and its figures are made up to explain the flow.

Cerámica Ejemplo, an invented shop, sells through Shopify and runs its warehouse in Odoo. Marta, who prepares the shipments, opens the picking of a Shopify order intending to send the fulfillment. She looks for Send Shopify Fulfillment and it is not there.

She checks the picking state: it is not Done yet. With the view condition, that is the explanation: while the state is anything else, the button stays hidden. And if the method were run with the picking in that state, the message above would appear and nothing would be saved.

Marta completes the delivery in Odoo until the picking reaches Done. Now the button appears. She presses it, and the method looks up the Shopify instance linked to the sales order, calls Shopify to create the fulfillment, saves the data it returns on the picking and leaves a message on the picking.

What the case shows:

  • The state is the first thing checked, before any call to Shopify.
  • A missing button does not mean something is failing: it may simply be that the picking is not in Done.
  • If the picking is in Done and the button is still hidden, the other part of the condition applies: the picking does not belong to a Shopify order.

How to fix it, step by step

  1. Open the picking and look at its state.
  2. If it is not Done, complete the delivery in Odoo until it is. That is what the code condition asks for.
  3. With the picking in Done, check that Send Shopify Fulfillment appears. If it does not, the picking does not belong to a Shopify order according to the view condition.
  4. Press Send Shopify Fulfillment.
  5. Review the picking: if the send succeeds, the method saves on it the fulfillment data returned by Shopify, clears the previous error and leaves a message on the picking.

If a different message appears after this check is passed, it is no longer this one: the method goes on with other checks and with the call to Shopify, and each has its own message.

Diagram built from code: the same error message in Spanish, German, French, Italian and Portuguese
Diagram built from the module's published translations, not a screenshot of Odoo: with Odoo in English the message is Picking must be done before sending Shopify fulfillment.; the diagram also shows its text in Spanish, German, French, Italian and Portuguese.

Requirements and price

Shopify Connector is a one-off purchase per version: €9 per Odoo version, for 17.0, 18.0, 19.0 and 20.0, excluding VAT, on the Odoo Apps listing. It also needs a FlexigoTech Cloud subscription: the Connector plan costs €49/month or €490/year excluding VAT. More on the Odoo Apps listing.

Other buttons in the module

If you need a hand

FlexigoTech implements Odoo 17, 18, 19 and 20 and builds custom connectors and integrations. If your picking and shipping flow with Shopify needs something the module does not cover, we can look at it with you.

Keep reading

What the Shopify Connector Pull Stock button does, step by stepWhat the Pull Stock button in Shopify Connector does in Odoo: when it shows, what it checks, what inventory adjustments it makes and which errors it gives.
Checked in the connector's source code (version 20.0) and the linked sources

Sources