ProcurementPurchase OrdersWrite actions

Purchase orders: create, cancel, close — and what cannot be undone

With write tools in Beta, an assistant can now open and cancel purchase orders from the conversation. Here is what that looks like, what is irreversible, and why a purchase order's amount is not the budget you approved.

The Spendesk MCP team·5 October 2026·6 min read
Purchase orders: create, cancel, close — and what cannot be undone

The problem

Purchase orders pile up. Some are opened and never invoiced, some outlive their period, some were created by mistake and nobody cancelled them. Each one inflates commitments until someone goes through the list.

Until now the Spendesk MCP could only read purchase orders. With write tools in Beta, it can also create, cancel and close them — which makes it worth being precise about what each action does.

The exchanges below are reconstructed from tests run on a Spendesk demo account on 5 October 2026. The wording is rewritten for readability; the figures and outcomes are the ones the tools returned.

First, see what is open

Claude Code — MCP Spendesk
Vous
Which purchase orders are open but never invoiced?
⚙get_purchase_orders
C

13 open purchase orders, EUR 96338.00 committed. None has been invoiced.

🟠 Invoice late: 1

→PO-4 — EUR 558.00 — period ended 31 December 2025, still open, flagged as late on invoicing

⚪ Running, not yet invoiced: 12 — EUR 95780.00

→One reaches the end of its period today

A purchase order stays open after its end date, until someone closes or cancels it.

Suggested next step for PO-4: chase the supplier for the invoice, or cancel it if the engagement was dropped. Shall I show its details?

The link between a purchase order and its invoices is recorded, so the assistant reads it directly instead of guessing from supplier names and amounts.

Create a purchase order

Claude Code — MCP Spendesk
Vous
Create a purchase order for OKKO, 120 euros gross, on the CSM cost center, for October.
⚙get_suppliers⚙get_cost_centers⚙create_purchase_order⚙get_purchase_orders
C

Before I create it, please confirm:

SupplierAmountCost centerPeriod
OKKO (existing supplier)EUR 120.00 gross, EUR 100.00 net (assuming 20% VAT)CSM2026-10-05 to 2026-10-31
⚠️A purchase order created here is open immediately, with no approval step, and it can never be deleted — only cancelled.
✅Created — PO-20, status open, waiting for billing.

Two details are easy to miss. The assistant looks the supplier up first, because a name that differs by more than case or accents — a trailing full stop is enough — would create a second supplier record. And it does not retry on an unclear result: a second call would create a second purchase order.

Cancel one

Claude Code — MCP Spendesk
Vous
Cancel PO-20, it was created by mistake.
⚙get_purchase_orders⚙get_supplier_by_id⚙cancel_purchase_order
C

PO-20 — OKKO — EUR 120.00. It is open, with no invoice attached, so it should be cancellable (Spendesk will also refuse if an expense is associated with it).

⚠️Cancelling cannot be undone. Go ahead?
✅Cancelled — PO-20 now reads as cancelled. It stays visible in the list: a purchase order is never removed.

Asked to cancel it a second time, the tool answers that the purchase order is not open. That is an answer, not a failure to retry.

What cannot be undone, and one thing that cannot be seen

ActionPossible whenCan it be undone?
CreateAny timeNot deleted; only cancelled, while open with no invoice
CancelOpen, no invoice attached, no associated expenseNo
CloseOpen, at least one invoice, all invoices paidNo — and the amount is rewritten

A purchase order's amount is not the budget you approved. It is the current committed amount. When a purchase order is closed, and in some configurations when an invoice exceeds it, Spendesk rewrites that amount to what was billed. A purchase order approved at 10,000 and invoiced 14,000 can show 14,000 on both sides.

So the assistant cannot tell you which purchase orders went over budget. It can flag one where the billed amount is higher than the committed amount, but the absence of such a case proves nothing.

What to know

  • Role required. The Spendesk MCP can only be used by a Controller or an Account Owner of the company concerned. With any other role, these requests do not work.
  • Beta, off by default. An Admin or Account Owner enables "Manage purchase orders" on the connection, then each user reconnects and ticks it.
  • Keep a human confirmation on each of these actions; in Claude, "Allow once".
  • Requests for purchase orders are not readable: the assistant reads purchase orders themselves, and card requests.
  • Closing was not tested for this article. It needs a purchase order with paid invoices and is irreversible; it is described from the tool's documentation.

Key takeaways

  • An assistant can now create, cancel and close purchase orders, with write tools in Beta
  • A purchase order created this way is open at once, and can never be deleted
  • Cancelling and closing cannot be undone; closing also rewrites the amount
  • The committed amount is not the originally approved budget: overruns cannot be detected reliably
  • The skill Create, cancel or close a purchase order runs the checks and confirmations in order

Related skills

Interested in AI Agent services or Custom Integrations?