VX Agents

API directory · Commerce & Payments

Katana Inventory & Sales Orders

v1.0.0 · 17 endpoints · 0 connections · shared by vx.ai

Is that SKU in stock, and where? For makers running Katana MRP: check inventory per variant and location, spot negative stock, trace inventory movements, then open sales orders, record fulfillments, log stock adjustments and follow purchase orders from suppliers.

Connect this API to an AI agent Browse all specs

What you can do with Katana Inventory & Sales Orders via MCP

Every endpoint below becomes a governed tool your AI agent (Claude, ChatGPT, or a customer-facing VX agent) can call — with scoped permissions, sandbox testing, and audit logs.

MethodPathOperationDescription
GET /inventory listInventory List current stock levels per variant and location
GET /inventory_movements listInventoryMovements List inventory movements (what changed stock, when and why)
GET /negative_stock listNegativeStock List variants that have gone into negative stock
GET /variants listVariants Find product and material variants by SKU or other filters
GET /variants/{id} getVariant Get one variant with its SKU, prices and config
GET /products listProducts List products you sell or make
GET /locations listLocations List warehouses and factory locations
GET /customers listCustomers List or look up customers
GET /sales_orders listSalesOrders List sales orders with status and delivery filters
POST /sales_orders createSalesOrder Create a sales order for a customer
GET /sales_orders/{id} getSalesOrder Get one sales order with its rows
GET /sales_order_fulfillments listSalesOrderFulfillments List fulfillments (shipments) of sales orders
POST /sales_order_fulfillments createSalesOrderFulfillment Record a fulfillment that ships sales order rows
GET /stock_adjustments listStockAdjustments List stock adjustments
POST /stock_adjustments createStockAdjustment Adjust stock up or down at a location
GET /purchase_orders listPurchaseOrders List purchase orders to suppliers
GET /purchase_orders/{id} getPurchaseOrder Get one purchase order with its rows

Authentication

katanaApiKey

Bearer token — sent as Authorization: Bearer <token>

Katana uses a live API key sent as Authorization: Bearer <key>.

How to get a credential

  1. Log in to Katana as an admin (API access needs the Professional plan or higher).
  2. Go to Settings > API.
  3. Select Add new API key and copy the key; it is shown once.

Permissions used

Katana API keys have no scopes: a key can read and write everything in the factory account.

Access Operations
Read listInventory, listInventoryMovements, listNegativeStock, listVariants, getVariant, listProducts, listLocations, listCustomers, listSalesOrders, getSalesOrder, listSalesOrderFulfillments, listStockAdjustments, listPurchaseOrders, getPurchaseOrder
Write createSalesOrder, createSalesOrderFulfillment, createStockAdjustment

Common errors

Code Meaning Fix
401 Missing, mistyped or deleted key Create a new key under Settings > API and update the credential.
403 Plan without API access Upgrade to a plan that includes the API.
422 / 400 Body failed validation (unknown variant_id, missing location_id) Look up ids with listVariants and listLocations first.
429 More than 60 requests per 60 seconds Wait for the Retry-After seconds, then retry.

Store the key as a VX Agents credential (bearer token) so it is never pasted into chat.

Usage guide

Setup

Add your Katana API key as a bearer credential (Katana Settings > API > Add new API key; Professional plan or higher). If you ship from one warehouse, pin its location_id (from listLocations) so stock checks and adjustments always use it.

Check stock and fulfil an order

  1. listVariants with sku to turn a SKU into a variant_id.
  2. listInventory with variant_id (and location_id) to see in stock, committed and expected quantities.
  3. listNegativeStock for a daily sanity check; listInventoryMovements with variant_id explains why a number changed.
  4. listCustomers (filter by name or email) to find the customer_id.
  5. createSalesOrder with customer_id and sales_order_rows (variant_id, quantity, optional price_per_unit). Confirm the customer, items and prices with the user before calling it.
  6. getSalesOrder to read the new rows and their ids.
  7. createSalesOrderFulfillment with sales_order_id, status and sales_order_fulfillment_rows (sales_order_row_id, quantity). Confirm before calling it: it takes stock out of inventory.

Other jobs

  • Stock count fixes: createStockAdjustment with location_id and stock_adjustment_rows (variant_id, quantity, positive or negative). Confirm the quantities with the user first; listStockAdjustments shows past ones.
  • Incoming stock: listPurchaseOrders (filter by status) and getPurchaseOrder show what suppliers still owe you.
  • listProducts and getVariant give names, SKUs and sales prices.

Good to know

  • Ids are integers. Dates are ISO 8601 UTC (2026-10-23T09:00:00.000Z).
  • List calls paginate with page (from 1) and limit (default 50, max 250).
  • Rate limit: 60 requests per 60 seconds; on 429 wait for Retry-After seconds.
  • Keys have no scopes, so a key can write everything: keep writes to what the user asked for.

Source: Katana API reference (https://developer.katanamrp.com/reference/api-introduction), checked 2026-10-23.

How to use this spec

  1. Create a free VX Agents account (sandbox tools included).
  2. Open the marketplace and connect “Katana Inventory & Sales Orders” to an agent.
  3. Expose it as an MCP server for Claude/ChatGPT, or chat with it directly.

Related APIs