How it works

    From your Amazon ledger to a daily send list — down to the unit.

    Unilytic turns your Amazon Inventory Ledger into a daily FBA send list: which SKUs need stock, how many units, and to which warehouse — before you stock out. Here's exactly how, step by step.

    WHAT YOU'LL NEED Inventory Ledger CSV or SP-API access 15 minutes No credit card
    The flow

    Four steps to a send list you can trust.

    Get your data in

    Drop the report you already pull.

    Export the Amazon Inventory Ledger CSV from Seller Central and drop it in — or connect SP-API once and Unilytic keeps it synced automatically. We rebuild the full inventory history, with no manual reconciliation.

    Inventory Ledger CSVOptional SP-APIIncremental or replaceIndia (IN)
    app.unilytic.in/import
    Drop Inventory-Ledger.csv
    or connect SP-API once — we keep it synced
    18,402 rowshistory rebuilt
    Inventory Ledger CSVOptional SP-APIIncremental or replaceIndia (IN)
    Tune your replenishment formula

    A formula you control.

    Four numbers drive everything: days_of_stock_to_send (how deep a cover to ship to), low_stock_days (when to flag a SKU), min_oos_send_qty (the floor for an empty SKU), and excess_stock_days (when stock counts as excess). Defaults work out of the box — the next section shows exactly what they feed.

    app.unilytic.in/settings/formula
    days_of_stock_to_send
    Cover target30d
    low_stock_days
    Low-stock flag15d
    min_oos_send_qty
    Min OOS qty2u
    excess_stock_days
    Excess after45d
    A real formula — not a guess. Defaults work out of the box.
    See what to ship, every morning

    Open the dashboard. Know what ships.

    SKUs split into Out of Stock, Low Stock and Excess Stock cards with exact send quantities per warehouse. Plan a shipment in two clicks — Seller-Central-ready.

    app.unilytic.in/dashboard
    Out of stock · 3Low stock · 7Excess · 4
    B0CRTQ4Z11OOSBLRsend 240u
    B09LYQK7WX5dDELsend 96u
    B0BVT4N3K89dMUMsend 360u
    2 clicks → planned shipmentPlan shipment
    Track it across every warehouse

    Every FC, every day — at a glance.

    The Analytics 15-day warehouse grid shows red for stockout, green for covered. Future Stock counts on-hand plus pending shipments, and a full audit log records every change with actor and timestamp.

    app.unilytic.in/analytics
    BLR
    DEL
    MUM
    Stockout Tight CoveredFuture Stock = on-hand + pending
    Signup to first send list in under 0 minutes.no manual reconciliation
    Under the hood

    The methods behind every number.

    Nothing here is a black box. These are the exact calculations Unilytic runs over your ledger — the same ones you can re-derive by hand. Each has a safety rail so one weird day never blows up a recommendation.

    01Demand velocity

    We measure sales per in-stock day, not per calendar day.

    Everything downstream rests on one honest number: how fast a SKU really sells. A SKU that was out of stock half the window didn't sell slowly — it couldn't sell. So we divide Customer Shipments by the days it was actually in stock, then scale that true daily rate up to the cover you want to ship to.

    Safety rail: the scale-up is capped at 3× (MAX_SALES_EXTRAPOLATION_MULTIPLIER), and SKUs with fewer than 2 sales in the window count as no signal — so one spike on a barely-stocked SKU can't run away with the projection.

    in_stock_days = days the SKU had stock (min 1)
    daily_rate = shipments / in_stock_days
    projected = daily_rate × days_of_stock_to_send
    02Days of cover left

    On-hand becomes time on the shelf.

    To decide what's urgent, we turn stock into days: how long your on-hand lasts at the current rate. Zero on-hand is Out of Stock; anything at or below your low-stock threshold is Low Stock. That's exactly the split you see as the dashboard cards.

    Tunable: low_stock_days (default 15) sets how early a SKU is flagged — raise it if your inbound lead time is long, lower it to ship in tighter cycles.

    days_left = (on_hand / daily_rate) × cover_window
    out_of_stock if on_hand = 0
    low_stock if days_left ≤ low_stock_days
    03Send calculation

    Send to close the gap — and never re-ship the pipeline.

    The send quantity closes the gap between projected demand and what you already hold — but only for SKUs that have actually been selling, and only when there's a real shortfall. We then net out units already on a planned shipment (never going below zero), so the dashboard never tells you to send the same stock twice.

    Floor with a gate: a selling SKU never gets a recommendation below min_oos_send_qty (default 2) — but a SKU with no recent sales gets nothing, so dead stock isn't re-ordered on noise.

    gap = projected_demand − on_hand
    to_send if had_sales and (on_hand = 0 or gap > 0)
    to_send = max(gap, min_oos_send_qty)
    final = max(to_send − units_in_shipments, 0)
    B0CRTQ4Z11 · BLRsend 240u
    04Retrieve calculation

    The same math, run in reverse.

    Excess is overstock measured against a longer horizon. We compute the cover you'd hold at the excess horizon and flag whatever sits above it — but we never suggest pulling back so much that you risk a stock-out, so retrieval is clamped to a fraction of what's on hand.

    Retrieve clamp: at most max_retrieve_fraction of on-hand (default 0.5) is ever suggested for removal, so cleaning up excess can't accidentally create a shortage.

    excess_mult = excess_stock_days / days_of_stock_to_send
    extra = −(on_hand + excess_mult × sales)
    extra = max(extra, −on_hand × max_retrieve_fraction)
    05Returns reconciliation

    What Amazon still owes you.

    Returns reconciliation isn't one number — it's three separate checks, each catching a different way money goes missing. Refunds compare quantities; reimbursements compare cash. The cash baseline is your true net proceeds: price minus Amazon's fees and minus the TDS Amazon withholds. Units that came back sellable are excluded — you have the stock to resell, so there's no shortfall.

    Honest estimates: TDS is 0.1% of the GST-exclusive price, missing fees are filled from that SKU's own average fee/price ratio (not a flat guess), and rows where net proceeds are negligible are suppressed — so the flagged total is money genuinely worth claiming.

    refunded = refund_qty − received_qty − reimbursed_qty
    net_proceeds = price − fees − tds
    under_reimbursed = net_proceeds × qty − amount_paid
    skip if unit returned SELLABLE
    Every knob, yours to tune

    The numbers above aren't fixed. Each formula reads from your workspace settings — change one and the whole dashboard recomputes. These are the defaults.

    days_of_stock_to_send30 d

    How deep a cover the send quantity ships to.

    low_stock_days15 d

    Days-of-cover threshold to flag a SKU as low stock.

    min_oos_send_qty2 u

    Floor for an out-of-stock SKU that's still selling.

    excess_stock_days45 d

    Cover beyond which on-hand counts as excess.

    max_retrieve_fraction0.5

    Most of on-hand that retrieve will ever pull back.

    max_sales_extrapolation_multiplier3.0×

    Cap on scaling sparse sales up to the cover target.

    min_raw_sales_for_projection2

    Minimum sales in the window before a projection is trusted.

    Get started

    Stop guessing what to ship. Start your free trial.

    No card · Built for Amazon India · Cancel any time.