Skip to Content
IntegrationenAmazon FBA-Bestand

Amazon FBA-Bestand

Der Amazon FBA-Bestand ist das HerzstĂĽck von PROJ-177 und beantwortet eine Frage, die bis Version v1.37.000 niemand konsistent beantworten konnte:

Wie viele Stück meiner Artikel liegen gerade bei Amazon — und was sind sie wert?

Ab v1.37.000 wird der FBA-Bestand nicht mehr nur in der Amazon-Listings-UI versteckt, sondern als echte Stock-Rows im FBA-Warehouse geführt. Dadurch taucht er automatisch in der Bestandsbewertung, im Bestellvorschlag und in der Artikel-Detailseite auf — ohne dass du etwas manuell tun musst.

Wo finde ich den FBA-Bestand? Einstellungen → Lager → dein Amazon-FBA-Lager anklicken → Lagerplatz FBA-POOL. Oder auf jeder Artikel-Detailseite im Bereich “Lagerbestand”.


Der Sync auf einen Blick

Der Pull läuft einmal täglich automatisch (via pg_cron) sowie on-demand über den Button “FBA-Bestand jetzt aktualisieren” in der Amazon-Integration-Detailseite.


Was genau passiert pro SKU?

SchrittBedeutung
1. amazon_listings-RowWird bei Bedarf direkt im FBA-Pull angelegt (fulfillment_channel='FBA'). So ist der Pull unabhängig vom Listings-Pull. Auto-Mapping via SKU-Match läuft dabei automatisch.
2. amazon_fba_inventory-RowEnthält die rohen SP-API-Zahlen pro Fulfillment-Center-Land (Bestand verfügbar, reserviert, inbound). Ein Trigger hält amazon_listings.quantity als Summe über alle Center aktuell.
3. Cost-LookupFĂĽr gemappte SKUs wird der Einstandspreis aus dem bevorzugten Lieferanten gelesen (supplier_products.purchase_price, PROJ-138). Ohne Lieferanten-EK wird der Stock-Sync fĂĽr diesen Artikel ĂĽbersprungen und in details.missing_cost[] protokolliert.
4. sync_amazon_fba_stockSetzt public.stock.quantity im FBA-Warehouse absolut auf die aktuelle Amazon-Menge und schreibt einen stock_movements-Eintrag mit dem Delta, Typ amazon_fba_sync und landed_cost_eur aus dem Cost-Lookup. Atomar in einer Transaktion.
5. ReconciliationAm Ende des Runs werden alle FBA-Stock-Rows auf 0 gesetzt, deren Artikel im aktuellen Pull nicht mehr vorkommen (z.B. nach dem letzten Verkauf bei Amazon). So können keine Phantom-Mengen zurückbleiben.

Was bedeutet FBA-POOL?

FBA ist ein virtuelles Lager — es hat keine physischen Lagerplätze mit Regalnummern. Trotzdem braucht Flowkom eine Storage-Location, weil public.stock eine Unique-Constraint auf (workspace_id, product_id, warehouse_id, storage_location_id) hat.

Deshalb bekommt jedes FBA-Warehouse beim Anlegen automatisch eine einzelne System-Location namens FBA-POOL (Typ blocked, nicht pickbar). Sie dient als Sammel-Behälter für den gesamten FBA-Bestand dieses Marketplaces.


Read-only — was heißt das?

Das FBA-Warehouse ist als is_read_only=true markiert. Alle manuellen Buchungs- Endpoints (Wareneingang, Umlagerung, Bestandskorrektur) prüfen dieses Flag und lehnen Änderungen ab. Der Bestand wird ausschließlich durch den FBA-Pull gepflegt.

Warum? Wenn ein Mitarbeiter versehentlich Ware ins FBA-Warehouse bucht, überschreibt der nächste Pull diese Buchung sowieso wieder — inklusive Delta-Movement. Das ist nur Lärm in der Audit-Historie. Lieber gleich blockieren.


Bewertung & Bestellvorschlag

Ab v1.37.000 enthalten zwei Reports den FBA-Bestand automatisch:

  • Bestandsbewertung (PROJ-74) — Der Lagerwert summiert alle Warehouses, inklusive FBA. Die Bewertung nutzt FIFO ĂĽber stock_movements.landed_cost_eur, und die amazon_fba_sync-Movements tragen den Cost-Lookup-Wert.
  • Bestellvorschlag (PROJ-22) — Die Ampel “zu wenig Bestand” berĂĽcksichtigt jetzt auch, wie viele StĂĽck bei Amazon liegen. Dadurch bestellst du nicht mehr unnötig nach, wenn du noch 200 StĂĽck im FBA hast.

Bekannte Einschränkungen (Interim-Phase)

Der FBA-Bestand ist in v1.37.000 bewusst pragmatisch approximiert. Der volle Umlagerungs-Workflow (WMS → FBA mit echtem FIFO-Pass-through) kommt als separates Ticket PROJ-178.

LimitWas heißt das?Lösung in PROJ-178
Doppelzählung WMS + FBAWenn du Ware physisch vom WMS zu Amazon schickst und nicht manuell aus dem WMS ausbuchst, wird sie doppelt gezählt. Das UI warnt dich auf der Artikel-Detailseite, wenn beide Lager gleichzeitig Bestand haben.Echter Umlagerungs-Dialog mit FIFO-Layer-Transfer.
Cost-ApproximationDer Bewertungs-Cost ist der aktuelle Lieferanten-EK, nicht der historische Landed Cost der Ware, die damals zu Amazon ging. Bei stabilen Einkaufspreisen ist die Abweichung klein.Pass-through der tatsächlichen FIFO-Layer aus dem WMS.
Keine Retouren-SemantikWenn Amazon einen Artikel zurücknimmt, sieht der Pull nur einen positiven Delta — unterschieden wird nicht, ob das eine Neulieferung oder eine Retoure war.Retouren-Detail in PROJ-137 + echte Event-Semantik in PROJ-178.
Unmapped SKUsEin Listing ohne flowkom_product_id bekommt keinen Stock-Eintrag. Erst nach dem Mapping wird automatisch im Backfill-Hook die Menge in stock geschrieben.Bleibt so — erzwingt saubere Artikelzuordnung.

Tipps fĂĽr den Alltag

  1. Pflege deine Lieferanten-EKs. Ohne supplier_products.purchase_price kein FBA-Stock-Sync für diesen Artikel. Die UI zeigt betroffene SKUs in der Amazon-Listings-UI als “Cost fehlt”.
  2. Mappe neue Listings zügig. Ein frisch gemapptes FBA-Listing bekommt dank Backfill-Hook sofort seinen Stock-Eintrag — ohne Wartezeit bis zum nächsten Cron-Tick.
  3. Achte auf die Doppelzählungs-Warnung auf der Artikel-Detailseite, bis PROJ-178 live ist. Sie ist dein einziger Hinweis, dass du ggf. manuell korrigieren solltest.
  4. Nicht in FBA buchen wollen. Die Wareneingangs- und Umlagerungs-Dialoge blenden FBA-Warehouses aus. Das ist Absicht.

Technische Referenz

  • RPC — sync_amazon_fba_stock(workspace_id, product_id, warehouse_id, storage_location_id, target_quantity, cost_eur)
  • RPC — reconcile_amazon_fba_stock(workspace_id, warehouse_id, storage_location_id, seen_product_ids[])
  • RPC — ensure_fba_pool_location(warehouse_id)
  • Movement-Type — amazon_fba_sync (in stock_movements_check_movement_type aufgenommen)
  • Cron — amazon-fba-inventory-pull (täglich, plus manueller Trigger aus der UI)
  • Code — src/lib/amazon/inventory-pull-fba.ts, src/lib/amazon/fba-cost-lookup.ts, src/lib/amazon/fba-warehouse-bootstrap.ts