Home / Help Center / pos-app / Online Channels / Online Orders
🛍️ Online Channels

Online Orders

Online Orders is the fulfilment workspace for every marketplace you connected under Integrations — pull new orders, pack and dispatch them, convert them to POS invoices, track shipments, process returns, review payout settlements, and push stock/price updates back to the marketplace, including across all connected platforms at once.

📍 Menu path: Online Channels → Online Orders
👤 Who uses it: All roles with Online Channels access can view orders; changing order status, packing/dispatching, creating invoices, approving/rejecting returns, syncing settlements and pushing bulk stock/price updates are restricted to Admin/Manager roles

Overview

Across the top sit one tab per connected marketplace (Flipkart, Amazon, Meesho, Myntra, ONDC, etc.); each tab shows a coloured dot when connected and a badge with its pending-order count.

For a connected platform, six stat cards summarise Total Orders, Pending, Revenue, Invoiced, Open Returns and Return Rate, followed by five collapsible panels — Platform Settings, SKU Mapping, Bulk Update, Returns, and Settlements — plus a cross-platform Omnichannel Stock Sync panel that appears once any platform is connected.

Orders move through a local status ladder — PENDING → PROCESSING → PACKED → SHIPPED → DELIVERED (or PROCESSED/INVOICED/CANCELLED) — independent of, but shown alongside, the marketplace's own platform status string.

Clicking any order row opens a detail modal with customer/address, the item list, a shipment timeline (ordered/packed/shipped/delivered timestamps), and every action relevant to its current status: Mark as Packed, Generate Shipping Label, Ready to Dispatch (tracking number + courier), Refresh Tracking, Create Invoice, Start Processing, Mark Done and Cancel.

Before You Start

Step-by-Step Guide

1 Pull in new orders

  1. Select the platform tab you want to sync.
  2. Click Sync Now in the top-right — a toast reports how many new orders were pulled (and how many were auto-converted to invoices, if Auto create invoice is on for that platform).
  3. The Last sync timestamp next to the button updates, and the platform tab's pending-count badge refreshes.

2 Pack, label and dispatch an order

  1. Click any order row to open its detail modal.
  2. While the order is Pending/Processing, click Mark as Packed.
  3. Once Packed, click Generate Shipping Label (opens the label PDF/URL in a new tab once generated) or, if a label already exists, click Print Shipping Label.
  4. Click Ready to Dispatch, fill in the Tracking Number (required) and Courier Name, then Confirm Dispatch — the order moves to Shipped.
  5. Once Shipped or Delivered, click Refresh Tracking to pull the latest courier events into the timeline; the order automatically flips to Delivered if the courier reports a delivered status.

3 Convert an order into a POS invoice

  1. Open the order and, if it is not cancelled/already invoiced, click Create Invoice.
  2. A success toast shows the new invoice number and the modal switches to an "Invoice created" banner with a link to view it in Sales.
  3. Alternatively, turn on Auto create invoice per platform in Platform Settings so every new synced order gets invoiced automatically without opening it manually.

4 Map local product SKUs to marketplace listings

Expand the "SKU Mapping" panel for the active platform.

  1. Click Add Mapping.
  2. Type a local SKU or product name into "Local Product SKU" — a live product search suggests matches; pick one to auto-fill the SKU.
  3. Enter the marketplace's own Listing ID for that product.
  4. Leave "Sync stock automatically" on (default) so future stock pushes include this SKU, or turn it off to map without auto-syncing, then click Save Mapping.
  5. Use Sync All Stock at any time to immediately push current stock for every mapped SKU to the platform, or toggle an individual mapping's sync switch, or delete a mapping with the trash icon.

5 Handle a return or refund request

Expand the "Returns" panel for the active platform.

  1. Click Sync Returns to pull the latest return requests from the marketplace.
  2. Filter by status (All/Requested/Approved/Rejected/Received/Refunded) and click a row to open its detail.
  3. For a Requested return, click Approve Return, or Reject Return and type a reason the customer will see.
  4. Once an approved return item physically arrives, click Mark Item Received & Restore Stock to add the quantity back into inventory.

6 Review settlement (payout) reports

Expand the "Settlements" panel for the active platform.

  1. Click Sync Settlements to pull the latest payout records from the marketplace.
  2. Review the three summary cards — Total Paid Out, Average Platform Fee %, and In-Processing count/amount.
  3. Scroll the table for a per-period breakdown of orders, gross amount, total fees, net amount and settled date, so you can reconcile marketplace payouts against your own revenue figures.

7 Push stock or price to many SKUs at once

Expand "Bulk Update" for the active platform.

  1. Choose the Stock Update or Price Update tab.
  2. Enter each product SKU and its exact quantity (or new price) in the rows; use Add SKU for more rows or the minus icon to remove one.
  3. Click Push N SKUs to [Platform] — a result panel marks each row green (pushed) or red with an error message, and a summary toast reports success/failure counts.

8 Sync stock across every connected platform at once

The Omnichannel Stock Sync panel appears once any platform is connected, below the per-platform panels.

  1. Click Push All Platforms to push every SKU with sync enabled across all connected marketplaces in one action; per-platform result badges show how many SKUs were pushed or if it failed.
  2. To push just one product everywhere at once, type its SKU under "Push Single SKU to All Platforms" and click Push — a badge per platform reports the new quantity pushed or why it could not be pushed (e.g. not mapped on that platform).

Every Field & Button, Explained

Field / ButtonWhat it does
Platform tabsOne per connected/available marketplace; shows a green dot when connected and a numeric badge of pending orders on that platform.
Sync NowPulls new orders for the active platform from the marketplace; disabled if the platform is not connected.
Last syncTimestamp of the most recent successful Sync Now for the active platform.
Dashboard cardsTotal Orders, Pending, Revenue, Invoiced, Open Returns and Return Rate for the active platform, with colour highlighting when Pending or Open Returns/Return Rate need attention.
Platform Settings panelAuto-sync toggle + Pull Frequency (Manual/5/15/30/60 min), Auto create invoice toggle (auto-converts every synced order to a POS sale), and an overall Integration Active/Paused toggle plus Save.
SKU Mapping panelAdd Mapping (local SKU ↔ platform listing ID with product search), per-mapping Sync stock toggle, Sync All Stock, mapping table (SKU, product, listing ID, auto sync, last synced, qty sent, delete).
Bulk Update panelStock Update / Price Update tabs, an editable SKU+value row list with Add SKU, and a Push button with per-row success/error results.
Returns panelStatus filter chips (All/Requested/Approved/Rejected/Received/Refunded), Sync Returns button, and a table of return requests opening a detail modal with Approve/Reject/Mark Received actions and a timeline.
Settlements panelSync Settlements button, summary cards (Total Paid Out, Avg Platform Fee, In Processing), and a period-by-period table of orders/gross/fees/net/settled date.
Omnichannel Stock Sync panelPush All Platforms (pushes every synced SKU on every connected platform) and Push Single SKU to All Platforms, both with per-platform success/failure badges.
Order status filter chipsAll / Pending / Processing / Packed / Shipped / Delivered / Invoiced / Processed / Cancelled — filters the order table for the active platform.
Order Detail Modal actionsMark as Packed, Generate/Print Shipping Label, Ready to Dispatch (tracking number + courier), Refresh Tracking, Create Invoice, Start Processing, Mark Done, Cancel — each shown only when relevant to the order's current status.

Tips & Best Practices

Troubleshooting & FAQ

Sync Now is greyed out for a platform.
That platform tab is not connected yet. Go to Integrations → Marketplace Integrations and connect it (or check that it has not been disabled under Platform Settings on this page).
An order is stuck at Packed with no way to move it forward.
Generate or confirm the shipping label first, then click Ready to Dispatch and fill in the tracking number (required) and courier name before Confirm Dispatch will move it to Shipped.
Push All Platforms reported 0 pushed everywhere.
No SKU has sync enabled on any connected platform yet. Add mappings under each platform's SKU Mapping panel and make sure "Sync stock automatically" is turned on for the SKUs you want pushed.
A platform tab shows "not connected" even though I filled the form once before.
Credentials may have been removed via Integrations → Disconnect, or the platform was toggled off under this page's Platform Settings — reconnect or re-enable it from either screen.
The Returns tab is empty even though a customer says they returned an item.
Return requests are only pulled in when you click Sync Returns — the marketplace does not push them automatically. Sync, then filter by "Requested" if you still do not see it.

🧑‍💻 Developer Notes

Source component(s):

  • frontend-app/packages/pos-react-lib/src/pages/marketplace/MarketplacePage.jsx

Backend endpoints used:

  • GET /marketplace
  • GET /marketplace/orders
  • GET /marketplace/dashboard
  • PATCH /marketplace/orders/:id/status
  • POST /marketplace/orders/:id/pack
  • POST /marketplace/orders/:id/label
  • POST /marketplace/orders/:id/dispatch
  • GET /marketplace/orders/:id/tracking
  • POST /marketplace/orders/:id/convert
  • POST /marketplace/:platform/sync
  • PUT /marketplace/:platform/settings
  • GET /marketplace/:platform/sku-map
  • PUT /marketplace/:platform/sku-map
  • DELETE /marketplace/:platform/sku-map/:id
  • POST /marketplace/:platform/push-all-stock
  • POST /marketplace/:platform/bulk-inventory
  • POST /marketplace/:platform/bulk-price
  • GET /marketplace/returns
  • POST /marketplace/returns/:id/approve
  • POST /marketplace/returns/:id/reject
  • POST /marketplace/returns/:id/restore-inventory
  • POST /marketplace/:platform/sync-returns
  • GET /marketplace/settlements
  • GET /marketplace/settlements/summary
  • POST /marketplace/:platform/sync-settlements
  • GET /marketplace/omnichannel/status
  • POST /marketplace/omnichannel/push-all
  • POST /marketplace/omnichannel/push-sku
  • GET /products

Related tables (db-core repositories):

  • MarketplacePlatform
  • MarketplaceOrder
  • MarketplaceReturn
  • MarketplaceSettlement
  • MarketplaceSkuMapping

Redux slices:

  • auth (role → canManage gate)
  • scope (selectCurrentScope / getScopeQueryParams)

Feature flag key: integrations (requires advanced plan tier or above)

Order/return items and customerAddress are stored as JSON strings and parsed client-side with try/catch fallbacks to empty arrays/objects. Every money value renders through the shared storeFmt currency/locale helper rather than a hardcoded ₹. canManage is a simple client-side check for ADMIN/MANAGER role that hides mutation buttons — the same restriction should also be enforced server-side on the corresponding endpoints.