Skip to content
Development
Skill

/procurement

ConnectWise PSA procurement and stock through Conduit: purchase orders and their line items, sales orders and their products, procurement product items placed on tickets/projects/opportunities, warehouses and bins, inventory on hand, and the three-step inventory adjustment

From plugin
msp-claude-plugins
55200 skills165 agents200 commands4 MCP

Claude Code

$ npx -y skills add wyre-ai/msp-claude-plugins --skill procurement --agent claude-code

SKILL.md

procurement.SKILL.md
name: "ConnectWise PSA Procurement and Inventory"
description: >
  ConnectWise PSA procurement and stock through Conduit: purchase orders and
  their line items, sales orders and their products, procurement product
  items placed on tickets/projects/opportunities, warehouses and bins,
  inventory on hand, and the three-step inventory adjustment
  (cw_create_adjustment, cw_add_adjustment_detail, cw_close_adjustment).
when_to_use: >-
  When reviewing open purchase or sales orders, checking what has been received, reconciling
  stock, or writing off inventory in ConnectWise PSA (Manage). Use when: purchase order, po
  status, sales order, procurement, items not received, inventory on hand, warehouse bin, stock
  adjustment, write off stock, or connectwise procurement.

ConnectWise PSA Procurement and Inventory

Overview

Procurement in ConnectWise PSA has a sell side (sales orders and the procurement product items placed on tickets, projects, opportunities and sales orders) and a buy side (purchase orders to distributors such as Ingram or TD SYNNEX). Received stock lands in warehouse bins. Through Conduit the reads are all `read` tier; creating an adjustment is `write`; **posting** it, which actually moves stock, is `admin`.

Anti-triggers

  • **Catalog SKU definitions** (what a product is, its default price and cost) — use `connectwise-psa-product-catalog`.
  • **Quoting** — quotes live in ConnectWise CPQ or a quoting tool, not in PSA procurement.
  • **Agreement billing** — agreement additions and recaps are read with `cw_get_agreement_additions`, `cw_search_agreement_recaps` and `cw_get_agreement_recap`; see the `/check-agreement` command.

MCP Tools

| Tool | Tier | Purpose | |------|------|---------| | `cw_search_purchase_orders` / `cw_get_purchase_order` | read | Buy-side POs (`conditions` such as `closedFlag = false`, `vendorCompany/name = 'Ingram'`) | | `cw_get_purchase_order_items` | read | PO lines: unit and extended cost, quantity received, receipt status (`purchaseOrderId`) | | `cw_search_sales_orders` / `cw_get_sales_order` | read | Sell-side sales orders | | `cw_get_sales_order_products` | read | Products on a sales order | | `cw_search_procurement_products` / `cw_get_procurement_product` | read | Catalog items placed on a ticket, project, sales order or opportunity, with their own price, cost and margin | | `cw_list_warehouses` / `cw_list_warehouse_bins` | read | Where stock lives | | `cw_get_inventory_on_hand` | read | Every catalog item with non-zero stock, one row per bin (negative balances included). Pass `warehouseId` — scanning every bin is slow | | `cw_list_adjustment_types` / `cw_get_adjustment` | read | Adjustment types and existing adjustments | | `cw_create_adjustment` | write | Adjustment header (`identifier`, `typeId`, `reason`); moves no stock | | `cw_add_adjustment_detail` | write | One signed line (`quantityAdjusted` negative removes stock) per item and bin | | `cw_close_adjustment` | admin | **Posts** the adjustment: applies every line to on-hand. Irreversible except by a counter-adjustment |

All search tools take ConnectWise `conditions` syntax, `orderBy`, `page` and `pageSize` (max 1000). Date literals go in square brackets in UTC: `poDate > [2026-01-01T00:00:00Z]`.

Workflows

Open purchase orders and what is still outstanding

1. `cw_search_purchase_orders` with `conditions: "closedFlag = false"`, ordered by `poDate desc`. 2. For each PO, `cw_get_purchase_order_items` and compare quantity ordered with quantity received. 3. Report per vendor: open POs, lines not yet received, and their extended cost. Old open lines are usually either back-ordered or received without being marked.

What has been sold but not ordered

1. `cw_search_procurement_products` for items on open tickets or projects (`conditions` on the parent and a not-yet-purchased state). 2. Cross-check against open POs. Items with no PO line are the procurement backlog.

Stock reconciliation and write-off

1. `cw_list_warehouses`, then `cw_get_inventory_on_hand` with `warehouseId` (and `catalogItemId` to narrow). 2. Compare with the physical count the user supplies. Negative balances are the usual sign of a missed receipt. 3. Draft the adjustment and show it: header (`identifier`, `typeId` from `cw_list_adjustment_types`, `reason`) and every line (item, warehouse, bin, signed quantity). 4. After approval: `cw_create_adjustment`, then `cw_add_adjustment_detail` per line. Leave `unitCost` unset for a write-off so ConnectWise applies average cost. If any detail call fails or times out, stop: read the draft back with `cw_get_adjustment`, reconcile its lines against the approved list (missing or duplicated lines), and fix them before going on. Never ask to close a draft that is partial or has duplicate lines. 5. `cw_close_adjustment` only after a second, explicit approval. It is the step that moves stock, and it is `admin` tier.

Gotchas

  • **Creating is not posting.** An adjustment with lines but no close changes nothing; a closed one cannot be edited.
  • **Signed quantities.** To zero a bin holding 7, send `-7`, not `0`.
  • **Serialised items** need their serial numbers on the adjustment line (`serialNumbers`).
  • **Procurement products are not catalog items.** A procurement product is a placed instance with its own price and cost; edit the catalog definition in `connectwise-psa-product-catalog`.
Read more
@wyre-technology
Ships withmsp-claude-plugins

One command to supercharge Claude Code for MSP workflows. Then restart Claude Code. That's it. Documentation: wyre-ai.github.io/msp-claude-plugins

55200 skills165 agents4 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
55
Star history of wyre-technology/msp-claude-plugins on GitHub, a chart by star-history.com

Other skills on msp-claude-plugins.

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills2w309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc2w293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react5d252k
@facebook@facebookInstall Skill

Questions about procurement.

Which coding agents can use procurement?
procurement installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.