ECと店舗の在庫をそろえるには、在庫の更新元と拠点別の販売可能数を決め、注文・取消・返品・移動の反映を確かめます。
約12分で読めます
店とECで最後の1点が同時に売れたら?在庫連携で先に決めること
ECと店舗が最後の1点を同時に売ろうとしたら、どちらを確定するか。2店舗とECの例で、返品、店舗間移動、連携停止まで追います。数量を確定する場所と、再開前に確かめる項目を書ける記入シート付き。
影山 湧亮 / NeoLogic株式会社 代表取締役。元警視庁。現場業務の整理と生成AI活用・Webシステム開発を一貫して担当。

たとえば、店頭で最後の1点を販売しようとした直後、ECにも注文が入った。双方の画面には「在庫1」と出ていても、確定できるのは1件だけです。返品された商品が検品中だったり、別の店へ移動中だったりすれば、手元や社内にある数と、今売ってよい数も違います。
そのため、同時に届いた注文のどちらを受けるか、在庫の反映が止まったら販売をどう止めるか、何を確かめて再開するかを決めます。リアルタイム連携だけで売り越しゼロは保証できず、返品も受け付けただけでは販売可能に戻しません。
A店・B店とEC1店で、紺のバッグ1点を売る場面から考えます(想定例)。
販売場所と保管場所を分ける
まず「どこで注文を受けるか」と「どこに商品があるか」を分けます。販売経路はA店店頭・B店店頭・ECの3つですが、保管拠点はA店・B店の2つです。ECがA店の在庫を売る場合、その1点を「A店1点+EC1点」と足してはいけません。商品は、色・サイズまで区別する商品コード(以下、SKU)で対応付けます。数量の単位と拠点を区別する番号もそろえます。
Shopifyの拠点設定では、ロケーションに在庫を割り当て、オンライン注文の出荷対象にするかを設定できます。本例では両店をEC出荷対象とし、引当可能な拠点のうちA店を優先します。ただし出荷可否は在庫数とは別です。対象商品の取扱い、配送方法、当日の出荷対応を確認してから出荷拠点を確定します。
表1 販売経路と保管拠点の対応
| 販売経路 | 保管拠点・出荷元 | 確定前に見ること |
|---|---|---|
| A店店頭 | A店 | A店で注文に確保済みの数と現物 |
| B店店頭 | B店 | B店で注文に確保済みの数と現物 |
| EC1店 | A店・B店(本例は両店を出荷対象) | 出荷可能な拠点の残数。EC在庫を別加算しない |
表1のように、販売経路に保管拠点を対応付けます。B店をEC出荷対象から外す運用なら、B店に販売可能な商品があっても、EC向けの販売可能数には加えません。店舗受取や取り寄せを認める場合は、その条件を別に決めます。
更新する元データを決める
注文の発生元はECやPOSに分かれていても、数量を最終確定する台帳は一つに定めます。本稿でいう台帳は、在庫を確定するシステム上の記録です。同時販売を許すなら、残数の確認と引当の確定を一続きで処理する仕組みが必要です。引当とは、その注文向けに在庫を確保して他へ売れなくすることです。
ECやPOSから注文と取消を台帳へ集め、商品・拠点ごとに数を確定して、各画面へ戻します。店舗の担当者は、画面の数がいつ更新されたものかを見ます。両側で別々に残数を書き換えません。図1の①〜③がこの受け渡しです。
数量は次の式で区分します。販売可能数=拠点内の保有数−引当済み数−販売不可数。本例の販売不可は返品検品中などを含み、引当済みとは重複させません。移動中の品は両店の保有数から外して別記し、到着前に加算しません。Shopifyの在庫状態でも、保有・販売可能・引当・販売不可・入荷予定を区別しています。この式は例の管理用で、製品の全状態を再現するものではありません。
既存システムから販売可能数を受け取るなら、引当や検品中の数をもう一度差し引かないようにします。マイナスになった場合も、見た目を0に丸めて完了にせず、対象注文・更新順・基準時刻を調べます。
図1 販売経路と保管拠点を分けた受け渡し(想定例)。
最後の1点を、どちらの注文で確定するか
9月10日9時、A店に紺のバッグが1点あり、B店にはありません。直後にECと店頭から同じ1点への注文が来ます。以下の時刻は日本時間、数量は点です。
| 時刻 | 台帳での処理 | 店舗での対応 |
|---|---|---|
| 9:00:01 | EC注文に1点を確保。販売可能数は0 | 店頭画面に古い「1」が残っていても、確定前に台帳へ照会 |
| 9:00:02 | 店頭注文の引当を拒否 | 販売を確定せず、商品を渡さない |
EC注文に1点を確保した直後も、A店POSには古い「1」が残ります。店頭で同じ商品を売ろうとしたときは、台帳ですでに確保済みと分かるため、販売を確定せず商品も渡しません。画面更新が速いことと、複数の注文が同じ在庫を確保できないことは別の条件です。両経路が旧残数を見て先に売上や引渡しを確定するなら、この例のようには防げません。最後の1点を片方だけに割り当てる、確定前に人が確認するなどの代替運用が必要です。
最初のEC注文に1点を確保しても、A店にある現物は1点のままです。販売可能数だけが0になります。その注文を出荷前に取り消したら、梱包や出荷が止まったことを確かめ、1点を販売可能に戻します。
その後、別のEC注文に1点を確保して出荷した場合は、店の保有数と注文向けの確保数が各1点減ります。販売可能数は0のままで、出荷時にもう一度減らす必要はありません。
返品と店舗間移動では、現物がある場所も変わる
翌日、同じ商品がB店へ返品されたら、保有1・販売不可1・販売可能0と記録します。返品受付、返金、現物受領、再販売可の承認は別の出来事です。検品担当が合格を記録して初めて販売可能1へ戻します。Shopifyの調整理由には再販売できる返品の補充があり、品質確認待ちを販売不可として扱えます(出典:Shopifyの在庫数量の調整)。
検品後の1点をB店からA店へ送るときは、B店の保有数を1減らし、「移動中1」と記録します。A店が現物を受け取ったら、移動中を減らしてA店へ1点を加えます。図1の④は検品結果、⑤は移動の出発・到着です。
通信のやり直しで同じ返品や到着の知らせが二度届いても、在庫を2点増やさないことを試します。
数量が一致しても、古い反映のままなら再開しない
B店からの出発時に通知が失敗したとします。台帳の販売可能数は0ですが、ECとB店POSには古い「1」が残っています。この間に届いたEC注文は、依頼を受けた記録だけ残し、支払いも出荷も進めず保留します。自社の仕組みが決済後にしか注文を受け取れないなら、同じ方法では扱えないため、受付停止や決済後の取消対応を別途決めます。
責任者は、その商品のEC受付と両店での販売を止めます。これは同期障害とは別の管理操作で止められる前提です。停止指示も同じ故障経路に依存する場合は止められないため、チャネル側の管理画面や店舗への連絡など代替手段を用意します。旧表示が残る間も、止めたことと数量の反映成功を混同しません。
A店に商品が到着すると、ECの古い「1」と台帳の「1」が偶然一致します。それでも反映時刻は古いため、まだ再開しません。注文・返品・移動の履歴を照合し、各画面に最新の数が反映されたことを確かめます。
保留していたEC注文を取り消す際も、その注文には在庫を確保していないため、取消で1点を増やしません。未処理の注文を整理してから、責任者が再開を判断します。図1の⑥と配布チェック表に、止めた人、残っていた注文、再開時に見た内容を残してください。
標準連携で足りる条件と、個別に補う条件を比べる
Shopify POSには、Shopifyと注文・在庫を同期する仕組みがあります。外部POS、連携アプリ、独自台帳との接続は、対応範囲を別に調べます。標準連携は製品に用意された接続や既製の連携サービス、個別連携は不足する受け渡しや確認工程の開発を指し、併用もできます。
まず表2の同じケースを、利用中の製品・プラン・拠点設定で試します。標準機能で必要な状態と復旧手順まで扱えれば、それを使う判断ができます。未対応の例外が残るときだけ、業務側のルール変更と個別開発を比較します。追加開発も、接続先から取得・更新できる情報や保守体制に制約されます。
表2 利用中の製品で試すケースと、不足時の対応候補。
| ケース | 標準連携で足りる条件 | 不足時に比較する対応 |
|---|---|---|
| SKU・拠点 | 色・サイズ・単位と出荷元を対応付けられる | コード変換や拠点対応だけを追加 |
| 取消・返品・移動 | 未引当取消、検品中、到着前を区別できる | 手順の変更/不足する状態の受け渡し |
| 最後の1点 | 確定前に共通の残数を見て引当できる | 販売枠の分離/確定前の点検工程 |
| 停止・再送・復旧 | 失敗検知、重複防止、反映照合まで扱える | 監視・再送管理と人の再開承認を補う |
自社の動作と照合する15行の記録
連携の実装担当者が決める情報
数量の差分を送るのか確定残数を送るのか、送信のきっかけ、通常の反映間隔、再送方法、最終反映時刻を決めます。注文IDだけでなく、取消・返品・移動ごとのイベントIDと処理済み記録を使い、同じ処理の再送で二重加算しないようにします。
下の表3ではR08〜R11の参照画面がEC1/A店POS0/B店POS1のままです。EC・B店POSの最終反映時刻は9月11日10:20:00。R12の照合後はEC1/A店POS1/B店POS0となります。同じ在庫の参照値なので足し合わせません。
ここまでの例を2026年9月10〜11日の記録にまとめます。各行は処理後の残高なので、行をまたいで足し合わせません。表3の引当数はその注文に残る数、表4は拠点全体の数です。更新間隔や検知までの秒数は例の仮定です。
代表となる4行は、次の状態と判断を対応させます。
| 記録 | 見ている数量・状態 | 取る対応 |
|---|---|---|
| R02:店頭の引当拒否 | EC注文が1点を確保済み。古い店頭表示は1点 | 店頭販売を確定せず、商品も渡さない |
| R06:返品の検品中 | B店の保有1・販売不可1・販売可能0 | 検品合格まで再販売しない |
| R08〜R10:移動中に連携停止 | 移動中1・両店の販売可能0。ECとB店POSには古い1が残る | 未引当のEC注文を保留し、別の管理経路から対象商品の販売を停止 |
| R11:到着後の偶然一致 | A店に1点が届き、EC表示も1。ただしECの反映時刻は古い | 数量一致だけで再開せず、R12で反映と履歴を照合し、未処理注文を整理して再開承認 |
全15行の注文・時刻・在庫状態を見る
表3 注文・返品・移動の取引記録
商品コード:BAG-NV。2026年9月10〜11日、日本時間。数量は点で表し、各行には処理後の状態を書いています。
| 行ID | SKU | 拠点 | 販売経路 | 在庫状態 | 注文ID | 更新時刻 | 引当数 | 返品検品 | 同期失敗 |
|---|---|---|---|---|---|---|---|---|---|
| R00 | BAG-NV | A店・B店 | 共通 | 開始残高 | — | 09/10 09:00:00 | 0 | 対象外 | 無 |
| R01 | BAG-NV | A店 | EC | 引当確定 | E-101 | 09/10 09:00:01 | 1 | 対象外 | 未確認(遅延) |
| R02 | BAG-NV | A店 | A店店頭 | 引当拒否・未販売 | P-201 | 09/10 09:00:02 | 0 | 対象外 | 未確認(遅延) |
| R03 | BAG-NV | A店 | EC | 出荷前取消 | E-101 | 09/10 09:02:00 | 0 | 対象外 | 無 |
| R04 | BAG-NV | A店 | EC | 引当確定 | E-102 | 09/10 09:03:00 | 1 | 対象外 | 無 |
| R05 | BAG-NV | A店 | EC | 出荷済み | E-102 | 09/10 09:10:00 | 0 | 対象外 | 無 |
| R06 | BAG-NV | B店 | EC返品→B店 | 返品受領・検品中 | E-102 | 09/11 10:00:00 | 0 | 検品中 | 無 |
| R07 | BAG-NV | B店 | 共通 | 返品検品合格 | E-102 | 09/11 10:20:00 | 0 | 合格 | 無 |
| R08 | BAG-NV | B店→A店 | 共通 | 移動出発 | — | 09/11 11:00:00 | 0 | 対象外 | 有 |
| R09 | BAG-NV | 未確定(A店予定) | EC | 受付のみ・確定保留 | E-103 | 09/11 11:00:05 | 0 | 対象外 | 有 |
| R10 | BAG-NV | A店・B店 | 全経路 | SKU販売停止 | — | 09/11 11:00:10 | 0 | 対象外 | 有 |
| R11 | BAG-NV | A店 | 共通 | 移動到着確認 | — | 09/11 11:30:00 | 0 | 対象外 | 有 |
| R12 | BAG-NV | A店・B店 | 全経路 | 再送・反映照合 | — | 09/11 11:40:00 | 0 | 対象外 | 復旧確認中 |
| R13 | BAG-NV | 未確定(A店予定) | EC | 未引当注文の取消 | E-103 | 09/11 11:42:00 | 0 | 対象外 | 復旧確認中 |
| R14 | BAG-NV | A店・B店 | 全経路 | 再開承認 | — | 09/11 11:45:00 | 0 | 対象外 | 無 |
「引当数」は、その行の注文に残る確保数です。店頭で断った注文は0点ですが、A店全体では最初のEC注文に1点を確保しています。移動出発と到着の行は、同じ移動番号T-301で結びます。
同じ行IDで拠点別数量・引当・移動中を照合する
表4 拠点・状態別の数量記録
数量はすべて点。保有=拠点にある現物、不可=販売不可、可=販売可能。合計可は本例の両店合計。管理総数=A店保有+B店保有+移動中。
| 行ID | A店保有 | A店引当 | A店不可 | A店可 | B店保有 | B店引当 | B店不可 | B店可 | 移動中 | 合計可 | 管理総数 | 受付状態 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| R00 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 通常制御 |
| R01 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 確定前照合 |
| R02 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 確定前照合 |
| R03 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 通常制御 |
| R04 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 通常制御 |
| R05 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 通常制御 |
| R06 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 通常制御 |
| R07 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 通常制御 |
| R08 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 未検知 |
| R09 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 確定保留 |
| R10 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 停止 |
| R11 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 停止継続 |
| R12 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 照合中 |
| R13 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 停止継続 |
| R14 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 再開承認 |
通常制御=残数に応じて受付・引当を制限し、追加の全面停止はしていない状態。販売可能0の品は販売を制限します。移動到着後は数量が戻っても、反映が古いため停止を継続します。
在庫連携チェックのExcelシートは、「拠点設定」から埋め、次に「時系列」で注文・取消・返品・移動を追い、「停止復旧」で例外時の担当と再開条件を決めます。印刷用の停止・復旧チェックシート(PDF)も利用できます。どちらも記入例と未記入版を含みます。空欄は未確認のまま残し、数量の式が整合しても、同期成功や販売再開は別に確認してください。
まず一つの商品で、各店の現物と販売可能数を見比べてください。既製連携で不足する受け渡しが具体的になったら、製品名、拠点表、停止時の未処理例を用意して相談内容を整理します。既存POSの売上・返品や商品コードの照合が中心なら、小売店のPOS・EC・店舗業務連携の開発で対応内容を確認できます。
販売数量とあわせて、販売先ごとの説明・画像・公開状態をそろえる管理表も使えます(商品情報の一元管理|色・サイズとEC掲載の点検)。
参考出典
出典確認日:2026年9月15日。Shopifyの拠点設定、在庫状態、調整理由、POS同期の説明を参照しています。注文の確定方法と停止・再開の手順は本稿の運用提案です。利用中の製品・プラン・連携先で対応範囲を確認してください。



