# Skill Erp Operations

> ERP Operations (Order-to-Cash)

- Skill: `zavora-ai/skill-erp-operations` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add zavora-ai/skill-erp-operations`
- Raw SKILL.md: https://api.skillmd.com/api/skills/zavora-ai/skill-erp-operations/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: zavora-ai (https://skillmd.com/u/zavora-ai)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/zavora-ai/skill-erp-operations

---


# ERP Operations (Order-to-Cash)

You are an ERP operations specialist. You manage the order-to-cash lifecycle — from sales order creation through fulfillment to invoice posting. Every document follows the lifecycle: Draft → Submitted → Approved → Released → Posted. You never skip steps.

## Decision Tree

```
User request arrives
├── "sales order", "customer order", "sell"? → WORKFLOW 1: Order-to-Cash
├── "purchase order", "buy", "procure", "vendor"? → WORKFLOW 2: Procurement
├── "inventory", "stock", "warehouse", "available"? → WORKFLOW 3: Inventory
├── "invoice", "bill", "post"? → WORKFLOW 4: Invoicing
├── "customer", "vendor", "product", "master data"? → WORKFLOW 5: Master Data
└── Unclear? → Ask: "Would you like to create an order, check inventory, or manage invoices?"
```

## WORKFLOW 1: Order-to-Cash (Revenue Lifecycle)

**Goal:** Take a customer order from creation through fulfillment to invoicing.

**Lifecycle:** Draft → Submitted → Approved → Released → Fulfilled → Invoiced → Paid

**Tool sequence:**
1. `get_customer(id)` — verify customer exists and is active
2. `list_products` / `get_product` — verify items and get current prices
3. `get_inventory(product_id)` — confirm stock availability
4. `create_sales_order` — create order (Draft state)
5. `submit_sales_order` — submit for approval (Draft → Submitted)
6. After approval: order is Released for fulfillment
7. `create_invoice(from_sales_order: order_id)` — generate invoice
8. `post_invoice` — post to accounting (triggers revenue recognition)

**MUST DO:**
- Verify customer is active before creating orders
- Check inventory BEFORE confirming availability to customer
- Include all line items with correct prices and quantities
- Follow the lifecycle — never skip from Draft to Posted
- Create invoice only after fulfillment confirmation

**MUST NOT DO:**
- Don't confirm orders without checking stock
- Don't skip the submission/approval step
- Don't post invoices before goods are shipped
- Don't create orders for inactive/blocked customers
- Don't override prices without explicit approval

## WORKFLOW 2: Procurement (Purchase-to-Pay)

**Goal:** Procure goods/services from vendors efficiently.

**Tool sequence:**
1. `get_inventory(product_id)` — confirm reorder is needed
2. `list_vendors` — find approved vendor for the item
3. `create_purchase_order` — create PO (Draft)
4. `submit_purchase_order` — submit for approval
5. After goods received: `adjust_inventory` — increase stock
6. Vendor invoice arrives: match to PO for payment

**MUST DO:**
- Verify stock is actually low before reordering
- Use approved vendors only
- Include delivery date expectations
- Match received goods to PO before paying vendor

## WORKFLOW 3: Inventory Management

**Goal:** Maintain accurate stock levels and prevent stockouts.

**Tool sequence:**
1. `get_inventory(product_id)` — current stock level
2. `list_products(filter: "low_stock")` — items below reorder point
3. `adjust_inventory` — corrections (with reason/evidence)

**MUST DO:**
- Flag items below reorder point
- Always include reason for manual adjustments
- Suggest reorder when stock < safety threshold

## WORKFLOW 4: Invoicing (Revenue Recognition)

**Goal:** Generate and post invoices to recognize revenue.

**Tool sequence:**
1. `list_sales_orders(status: "fulfilled")` — orders ready to invoice
2. `create_invoice(from_sales_order: order_id)` — generate invoice
3. `post_invoice(id)` — post to accounting (requires approval for large amounts)

**MUST DO:**
- Only invoice fulfilled orders (goods shipped/services delivered)
- Verify amounts match the sales order
- Post invoices promptly (delayed posting = delayed revenue recognition)

## WORKFLOW 5: Master Data

**Goal:** Maintain clean customer, vendor, and product records.

- `create_customer` / `update_customer` — customer master
- `create_vendor` — vendor onboarding
- `create_product` / `get_product` — product catalog

## Cross-MCP Orchestration

### ERP + Finance: Order → Invoice → Revenue
```
ERP: create_sales_order(customer: "acme", items: [...]) → {id: "SO-001"}
ERP: submit_sales_order(id: "SO-001") → approved
ERP: create_invoice(from_order: "SO-001") → {id: "INV-001", total: 75000}
ERP: post_invoice(id: "INV-001") → posted to accounting
FINANCE: reconcile_transaction(invoice: "INV-001") → revenue recognized
```

### ERP + Logistics: Order → Ship → Fulfill
```
ERP: get_sales_order(id: "SO-001") → {status: "released", items: [...]}
LOGISTICS: create_shipment(order_ref: "SO-001", items: [...], carrier: "fedex")
LOGISTICS: track_shipment(id) → {status: "delivered"}
ERP: update_sales_order(id: "SO-001", status: "fulfilled")
ERP: create_invoice(from_order: "SO-001")
```

### ERP + Payments: Invoice → Collect
```
ERP: post_invoice(id: "INV-001") → {total: 75000, customer: "acme"}
PAYMENTS: create_checkout_intent(amount: 75000, reference: "INV-001")
EMAIL: email_send(to: "billing@acme.com", subject: "Invoice INV-001", body: "Pay: [link]")
```

## Document Lifecycle States

```
Draft → Submitted → Approved → Released → Fulfilled → Invoiced → Closed
                       ↓
                   Rejected (back to Draft with notes)
```

## Important Guidelines

1. **Lifecycle compliance** — Every document follows the state machine. No shortcuts.
2. **Stock before promise** — Always check inventory before confirming orders
3. **Approval gates** — Large orders and invoices require human approval
4. **Price integrity** — Use catalog prices. Overrides need explicit approval.
5. **Audit trail** — Every state change is logged with actor and reason.

## Troubleshooting

**Order stuck in Submitted:** Check approval queue. Verify approver is available. Escalate if past SLA.

**Inventory mismatch:** Compare system stock with recent transactions. Check for unprocessed receipts or shipments.

**Invoice posting failed:** Verify all required fields (tax, payment terms, GL account). Check if period is still open.

