# Stripe Inventory Management: How to Sync Stock with Stripe

> Published 2026-11-10
> Source: https://viktor.com/blog/stripe-inventory-management

Stripe does not track inventory, so teams that sell through Stripe automate stock levels by keeping a count next to each Stripe product (in product metadata, a spreadsheet or an inventory tool), lowering it on every completed payment, and switching off the product or payment link when stock runs out. You can wire this with webhooks and code, with a no-code automation, or by handing the whole job to an [AI employee](https://viktor.com/ai-employee) who watches Stripe and updates the count for you. This guide covers that one job: syncing stock levels with Stripe product and price objects. Reconciling stock across several sales channels is covered in [inventory reconciliation](https://viktor.com/blog/inventory-reconciliation), and the reporting view in [how to build an inventory dashboard](https://viktor.com/blog/how-to-build-inventory-dashboard).

**The best inventory management software for Stripe, and how each option syncs stock with Stripe payments (checked November 2026):** Viktor reads every paid Checkout Session, invoice and refund in Stripe and updates your stock sheet or inventory tool, which suits small teams without developers. Zoho Inventory takes Stripe as the payment gateway on its own sales orders and invoices, so the sale and the stock sit in one record, which suits growing stores. Odoo Inventory uses Stripe as a payment provider in Odoo’s shop and sales apps and deducts stock when the paid order is delivered, which suits teams that want one ERP. WP Inventory Manager, a WordPress plugin, takes payment through its Stripe add-on and lowers the quantity when an item is reserved, which suits WordPress sites without a full shop. Sortly has no native Stripe sync and needs Zapier or Viktor in between, which suits barcode stock counts. Cin7 Core offers Stripe as a payment add-on in some countries and suits multi-warehouse, multichannel sellers.

## Best inventory management options for Stripe

The best inventory setup for Stripe depends on how many products and locations you have. Prices below were checked on vendor pricing pages in November 2026:

```json:object
{
  "_key": "k28",
  "_type": "table",
  "rows": [
    {
      "_key": "k19",
      "_type": "tableRow",
      "cells": [
        "Option",
        "Best for",
        "How it connects to Stripe",
        "Cost"
      ]
    },
    {
      "_key": "k20",
      "_type": "tableRow",
      "cells": [
        "Viktor (AI employee)",
        "Small teams without developers who want stock updated, alerts sent and sales paused from Slack or Microsoft Teams",
        "Reads Stripe payments and refunds, updates your stock sheet or inventory tool, asks before changing products",
        "Free to start; Team plan $100 a month for 40,000 credits shared by the workspace (pricing)"
      ]
    },
    {
      "_key": "k21",
      "_type": "tableRow",
      "cells": [
        "Google Sheets or Airtable + Zapier or Make",
        "Under 50 products, one location, simple decrement on each sale",
        "Stripe trigger on completed payment, row update per product",
        "Free tiers on Sheets, Zapier and Make; paid plans scale with task volume"
      ]
    },
    {
      "_key": "k22",
      "_type": "tableRow",
      "cells": [
        "Zoho Inventory",
        "Growing stores that want purchase orders, reorder points and stock by warehouse",
        "Accepts Stripe as a payment gateway for its sales orders and invoices",
        "Free plan (50 orders a month); Standard $29 per organisation a month billed annually; free trial on paid plans"
      ]
    },
    {
      "_key": "k23",
      "_type": "tableRow",
      "cells": [
        "Odoo Inventory",
        "Teams that want inventory, sales, purchasing and accounting in one ERP",
        "Stripe is a payment provider for Odoo’s shop, sales and invoicing apps; stock is deducted when the paid order is delivered",
        "One App Free plan; Standard from $24.90 per user a month; free trial"
      ]
    },
    {
      "_key": "k24",
      "_type": "tableRow",
      "cells": [
        "WP Inventory Manager",
        "WordPress sites that list and reserve stock without a full shop plugin",
        "Stripe add-on collects payment when an item is reserved; quantity can drop on reserve",
        "Free core plugin; a paid Pro licence is needed for the Stripe add-on; All Access $199 a year"
      ]
    },
    {
      "_key": "k25",
      "_type": "tableRow",
      "cells": [
        "Sortly",
        "Physical stock counts with barcodes for small teams",
        "No native Stripe sync; pair with Zapier or Viktor",
        "Free plan (up to 100 items); Advanced $49 and Ultra $149 a month on monthly billing; 14-day trial on paid plans"
      ]
    },
    {
      "_key": "k26",
      "_type": "tableRow",
      "cells": [
        "Multi-warehouse systems (Cin7 Core, NetSuite)",
        "Multi-warehouse management and multichannel selling, with Stripe as one channel",
        "Cin7 Core lists Stripe as a payment add-on in some countries; NetSuite through connectors or middleware",
        "Cin7 Core from $349 a month; NetSuite by quote"
      ]
    },
    {
      "_key": "k27",
      "_type": "tableRow",
      "cells": [
        "Custom webhook code",
        "Developers who need real-time stock checks before checkout",
        "Direct Stripe API and webhooks",
        "Developer time"
      ]
    }
  ]
}
```

**Small business:** start with a sheet plus Viktor or a no-code automation. **Multi-warehouse operation:** use a dedicated inventory system as the source of truth and feed Stripe sales into it. If you have no developer and want this running today, [start free with Viktor](https://app.viktor.com/signup) and point him at your stock sheet.

### Where to find Stripe-compatible inventory software

There is no single official list. Three places cover most of the market: the Stripe App Marketplace (marketplace.stripe.com), which lists apps that plug into the Stripe Dashboard; each inventory vendor’s own integrations or payment gateways page, which says whether Stripe is supported and in which countries; and the app directories of Zapier and Make, which show every tool that can react to a Stripe payment. Check the vendor’s page last, because Stripe support often differs by region and plan.

### What to look for in inventory software for an online store

Use this checklist when you compare tools:

- **Inventory tracking in real time:** stock changes the moment an order is paid, not at the end of the day.
- **Reorder management:** a reorder point per product, low-stock alerts and purchase orders to suppliers.
- **Sales order management:** orders, invoices and shipments linked to the stock they use.
- **Returns management:** refunds and returned items put stock back, with a reason.
- **Multi-warehouse management:** stock per location and transfers between them, if you have more than one.
- **Multichannel selling:** one count across Stripe, a shop platform and marketplaces.
- **Serial and batch tracking:** only if you sell regulated, perishable or high-value items.
- **Payment connection:** a documented way to receive Stripe payments or Stripe events.
- **A free plan or free trial:** enough to run a test purchase end to end before you pay.

## How Stripe inventory management works

Stripe has **Products** (what you sell), **Prices** (how much and how often), and **Checkout Sessions, Payment Links and Invoices** (how people pay). None of these has a stock field. Stripe will happily sell the 101st unit of something you only have 100 of.

So Stripe inventory management always has three parts:

```json:object
{
  "_key": "k88",
  "_type": "table",
  "rows": [
    {
      "_key": "k84",
      "_type": "tableRow",
      "cells": [
        "Part",
        "Where it lives",
        "Options"
      ]
    },
    {
      "_key": "k85",
      "_type": "tableRow",
      "cells": [
        "Stock count",
        "Outside Stripe or in product metadata",
        "Product metadata (e.g. stock: 42), Google Sheets, Airtable, an inventory tool"
      ]
    },
    {
      "_key": "k86",
      "_type": "tableRow",
      "cells": [
        "Decrement on sale",
        "Triggered by a Stripe event",
        "checkout.session.completed or invoice.paid webhook, read line_items for product and quantity"
      ]
    },
    {
      "_key": "k87",
      "_type": "tableRow",
      "cells": [
        "Stop selling at zero",
        "Back in Stripe",
        "Set the product or price to inactive, deactivate the payment link, or cap a payment link’s completed sessions"
      ]
    }
  ]
}
```

If you also sell on Shopify, Amazon or in a shop, Stripe should not be the source of truth; use an inventory system and treat Stripe as one channel.

## Before you start

- A list of your Stripe products and their **product IDs** (`prod_...`) and **price IDs** (`price_...`).
- A current stock count per product.
- Decide where the count lives. For under 50 products, Stripe metadata or a Google Sheet is enough.
- Admin access to Stripe to create webhooks or connect an app.

## How to automate Stripe inventory management: step by step

The flow: store a stock count per product, listen for completed payments, subtract the quantity sold, alert when stock is low, and stop sales at zero.

### Step 1: Store a stock count for each product

Pick one place and stick to it.

- **Product metadata:** in the Stripe Dashboard, open the product and add metadata `stock = 120` and `low_stock_at = 20`. Simple, but only you and your code see it.
- **Google Sheet or Airtable:** one row per product with product ID, price IDs, stock and reorder point. Easier for the team to read and edit.

**You should see:** every sellable price maps to exactly one stock row. Products with several prices (sizes, currencies, monthly and yearly) still share one stock count.

**Common mistake:** keying the count on the price ID. A price change creates a new price ID and your count resets. Key on the product ID.

### Step 2: Listen for completed payments

Stock should drop when money is taken, not when a cart is created.

- **One-off sales via Checkout or Payment Links:** use the `checkout.session.completed` event. Retrieve the session’s `line_items` to get each price, its product and the quantity.
- **Invoices (B2B orders):** use `invoice.paid` and read the invoice line items.
- **Refunds:** listen for `charge.refunded` and add stock back if the item is returned.
- **Chargebacks:** listen for `charge.dispute.created`. The goods have usually shipped already, so do not add stock back; flag the order for review and adjust only if the item comes back.

With code, register a webhook endpoint under Developers > Webhooks. Without code, Zapier, Make or n8n have Stripe triggers for the same events.

### Step 3: Subtract the quantity and log it

For each line item, find the product’s stock row and subtract the quantity. Write a log line (date, order or session ID, product, quantity, new stock) so you can trace any mismatch later.

**You should see:** a test purchase in Stripe test mode lowers the count by the right amount within a minute.

### Step 4: Alert before you run out

When stock falls to the reorder point, post an alert in the team channel with product, current stock and last 30 days of sales. Include the supplier and lead time if you track them, so the person reordering has everything in one message.

### Step 5: Stop selling at zero

When stock hits zero, act in Stripe:

- **Payment Links:** deactivate the link, or set “limit the number of payments” when you create it for limited runs.
- **Checkout built in code:** check stock before creating the session and refuse if it is zero.
- **Products:** set the product to inactive so it no longer appears in new sessions you build from the product list.

Turn it back on when new stock is logged.

### Step 6: Reconcile weekly

Once a week compare the stock count with a physical or warehouse count and with Stripe’s sales for the period. Small gaps come from refunds, manual orders and test purchases. Fix the count and note the reason.

## Example: connect Zoho Inventory to Stripe

If you pick a dedicated tool, the setup is short. Zoho Inventory is a common first choice:

1. In Zoho Inventory, open Settings, then Online Payments, and choose Stripe.
2. Connect your Stripe account and pick the currencies and payment methods to accept.
3. Add your items with opening stock and a reorder point for each.
4. Create a sales order and invoice, and send the invoice with the Stripe payment option switched on.
5. Pay it in test mode and check that the invoice is marked paid and the item’s stock has moved.

Payments taken outside Zoho, for example through a Stripe Payment Link on your site, are not seen by Zoho. Those still need the event-based flow above, or Viktor copying each paid session into Zoho.

## Three ways to run it

```json:object
{
  "_key": "k213",
  "_type": "table",
  "rows": [
    {
      "_key": "k209",
      "_type": "tableRow",
      "cells": [
        "Approach",
        "Best for",
        "Effort"
      ]
    },
    {
      "_key": "k210",
      "_type": "tableRow",
      "cells": [
        "AI employee (Viktor)",
        "Teams without developers who want the count, alerts, stop-selling and weekly reconciliation handled from Slack or Microsoft Teams",
        "Plain-language brief, approval on product changes"
      ]
    },
    {
      "_key": "k211",
      "_type": "tableRow",
      "cells": [
        "Custom webhook code",
        "Developers who want full control and real-time stock checks at checkout",
        "Build and maintain an endpoint"
      ]
    },
    {
      "_key": "k212",
      "_type": "tableRow",
      "cells": [
        "No-code automation (Zapier, Make, n8n)",
        "Simple decrement-on-sale for a few products",
        "Build each flow; edge cases (refunds, multi-item orders) add steps"
      ]
    }
  ]
}
```

With Viktor, you connect Stripe and the sheet where stock lives, then brief him: “After each paid Checkout Session, subtract the quantities from the stock sheet. Alert #ops when anything falls under its reorder point. When a product hits zero, ask me before deactivating its payment link. Every Monday, send a stock and sales summary.” He handles the steps above and asks before changing anything in Stripe. Viktor connects to 9,800+ tools, so the same brief can include your supplier email or warehouse system. [Give Viktor the brief](https://app.viktor.com/signup) and run a test purchase to watch the count move.

## Troubleshooting

- **Count drifts from reality.** Usually refunds or manual invoices not handled. Add `charge.refunded` and `invoice.paid` to the events you listen for.
- **Duplicate decrements.** Stripe can deliver a webhook more than once. Store processed session IDs and skip repeats.
- **Count resets after a price change.** You keyed stock on price ID. Move it to product ID.
- **Stock is wrong after a dispute.** A chargeback takes the money back but not the goods. Handle `charge.dispute.created` as a review task, not as an automatic restock.
- **Oversold during a rush.** Webhooks lag a few seconds. For limited drops, cap payment link sessions or check stock before creating each Checkout Session.

## FAQ

### Does Stripe have inventory management?

Not built in. Stripe handles products, prices and payments but has no stock field. Teams track stock in product metadata, a spreadsheet or an inventory tool and update it from Stripe payment events.

### How do I stop Stripe selling a product that is out of stock?

Deactivate the payment link or the product when stock reaches zero, cap the payment link’s number of payments for limited runs, or check stock in your code before creating a Checkout Session.

### Which Stripe event should reduce stock?

Use `checkout.session.completed` for Checkout and Payment Links, and `invoice.paid` for invoiced orders. Read the line items for product and quantity.

### Can I manage Stripe inventory without code?

Yes. No-code tools can decrement a spreadsheet on each payment, and an AI employee like Viktor can run the whole job, including alerts and weekly reconciliation, from a plain-language brief.

### How much does Stripe inventory management cost?

The tracking itself can be free: Stripe charges only its payment fees, and a Google Sheet with a free automation tier covers a small catalogue. Dedicated inventory tools start with free plans: Zoho Inventory is free up to 50 orders a month and $29 a month on Standard, Sortly is free up to 100 items and $49 a month on Advanced, and Odoo has a One App Free plan (prices checked November 2026). Viktor is free to start, and his Team plan is $100 a month for 40,000 credits.

### What is the 80/20 rule in inventory management?

It is the observation, also called ABC analysis, that roughly 20% of your products usually bring in about 80% of revenue. Track those top sellers most closely: tighter reorder points, more frequent counts and low-stock alerts first.

### What if I sell on Shopify and Stripe?

Use one inventory system as the source of truth and treat Stripe as one sales channel. See [inventory reconciliation](https://viktor.com/blog/inventory-reconciliation) for multi-channel stock.

## Keep Stripe stock right without a spreadsheet chore

Viktor works in Slack and Microsoft Teams, connects to Stripe and 9,800+ other tools, and asks before he changes anything. [Start free](https://app.viktor.com/signup) and hand him your stock sheet today. New to the idea? Read [what is an AI employee](https://viktor.com/blog/what-is-an-ai-employee).