Spot inactive purchase orders
Identifies open purchase orders with no recent activity to release fictitious budget commitments and follow up with late suppliers.
ProcurementController๐ MonthlyBeginnerRead-only
Ask it like this
Which purchase orders are open but never invoiced?
When to use it
Every month, to spot purchase orders to chase, cancel or close.
What it produces
Inactive PO report by category (> 90 days, expired, new unused) with locked budget commitment and recommended actions.
How it works
- 1Lists open purchase orders
- 2Spots those whose period has ended with no invoice
- 3Flags those whose expected invoice is late
- 4Sizes the remaining commitment per category
- 5Suggests an action for each: chase, cancel or close
What protects you
- This skill only reads: it changes nothing in Spendesk
- It acts with your permissions and your role, never beyond
- The assistant cannot approve or pay
โธTechnical detail78/100 ยท 2 tools
Budget & POsReconciliationget_purchase_ordersget_supplier_by_id
# Inactive purchase orders audit
## Purpose
Spot open purchase orders that are no longer alive: no invoice received, period ended, expected invoice late. These purchase orders inflate commitments and await a decision: chase the supplier, cancel or close.
This skill only reads. Cancelling or closing a purchase order cannot be undone and belongs to the dedicated skill ("Manage purchase orders" permission, in Beta).
## Step 1 โ List open purchase orders
```json
{ "tool": "get_purchase_orders", "params": { "status": ["open"], "pageSize": 100 } }
```
Fields to read on each purchase order:
| Field | What it is |
|-------|------------|
| `purchaseOrderNumber`, `description` | To identify it |
| `amount` | **Current** committed amount (see limit) |
| `billedAmount` | Invoiced to date |
| `startDate`, `endDate` | Validity period |
| `invoices` | Attached invoices (empty when there are none) |
| `billingStatus` | Billing progress |
There is no `budgetAmount`, `invoicedAmount` or `expectedDeliveryDate` field. Page with `page` while `hasNextPage` is `true`.
## Step 2 โ Sort
No need to look up the supplier's invoices: the link is on the purchase order.
| Category | Criterion |
|----------|-----------|
| ๐ด Expired, never invoiced | `endDate` passed and `invoices` empty |
| ๐ Invoice late | `billingStatus` is `lateInvoice` |
| ๐ก Expired, part-invoiced | `endDate` passed, `billedAmount` lower than `amount` |
| โช Running, not yet invoiced | `endDate` ahead and `invoices` empty: normal, to follow |
A purchase order stays `open` after its end date: nothing closes it automatically.
## Step 3 โ Put figures on it
- Remaining commitment on a purchase order = `amount` โ `billedAmount`.
- Total per category. Amounts are in each purchase order's own currency: total per currency.
## Step 4 โ Resolve suppliers
```json
{ "tool": "get_supplier_by_id", "params": { "id": "<supplierId>" } }
```
The supplier record holds no email: chasing goes through your own contacts.
## Report
```
Open purchase orders โ <today's date>: N, for X EUR committed
๐ด Expired, never invoiced: N โ X EUR
๐ Invoice late: N โ X EUR
๐ก Expired, part-invoiced: N โ X EUR left
โช Running, not yet invoiced: N โ X EUR
| No. | Supplier | Purpose | Committed | Invoiced | Period end | Suggested action |
```
Suggested actions: chase the supplier (invoice late), cancel (expired, never invoiced, no associated expense), close (invoiced and fully paid).
## Limits to state
- `amount` is not the originally approved amount: Spendesk can realign it to the invoiced amount. A "remaining" of zero does not prove the initial budget was respected.
- A purchase order can only be cancelled while open with no invoice and no associated expense, and closed only when all its invoices are paid.
- An invoice from the same supplier not attached to the purchase order does not show here: see the invoice and purchase order matching skill.
## Observed result (demo account, 5 October 2026)
13 open purchase orders for EUR 96,338.00 committed, none invoiced. Only one was expired and flagged as late on invoicing: period ended 31 December 2025, EUR 558.00. Another fell due that very day. The remaining eleven were running.
## Example prompts
- "Which purchase orders are open but never invoiced?"
- "Are there expired purchase orders I should close or cancel?"
- "How much commitment is left on our open purchase orders?"
How to install this skill
/
- 1Download the file
s59-inactive-pos.mdusing the button above. - 2Place the file in the
.claude/directory of your project (or~/.claude/for a global install).cp s59-inactive-pos.md .claude/s59-inactive-pos.md - 3Use in Claude Code โ the skill is automatically discovered. Describe your need in natural language and Claude will apply the skill instructions.
๐ก Make sure the Spendesk MCP is configured in your
.claude/settings.json with the tools get_purchase_orders, get_supplier_by_id.Similar skills
โ
Top