---
title: "Point of Sale Module"
module_id: "pos"
version: "2.0.0"
category: "data"
autonomy: "view-required"
generated: true
generated_at: "2026-05-04"
---

# Point of Sale

> In-store register — sessions, receipts, split payments, stock-aware product catalog

Ships with **6 agent skills**.

## Quick Facts

| Property | Value |
|----------|-------|
| **Module ID** | `pos` |
| **Version** | 2.0.0 |
| **Category** | data |
| **Autonomy** | view-required |
| **Core** | No |
| **Capabilities** | `data:read`, `data:write` |
| **MCP-exposed skills** | 6 |
| **Owns tables** | — |

## Skills

These skills are seeded into `agent_skills` when the module is enabled and exposed via MCP.
External operators (FlowPilot, OpenClaw, Claude Desktop, custom MCP clients) can call them directly.

| Skill | Scope | Description |
|-------|-------|-------------|
| `open_pos_session` | internal | Open a cashier shift on a register with opening cash. Use when: cashier starts a shift in the morning. NOT for: closing the shift (close_pos_session). |
| `close_pos_session` | internal | Close cashier shift, count cash and compute variance. Use when: end of day/shift. NOT for: refunding sales. |
| `record_pos_sale` | internal | Record a completed in-store sale with line items and payment. Use when: cashier rings up a sale. NOT for: e-commerce orders (use place_order). |
| `list_pos_sales` | internal | List recent POS sales with filters. Use when: reviewing daily takings, finding a receipt, audit. NOT for: aggregated revenue (today_summary). |
| `record_pos_sale_v2` | internal | Odoo-style POS sale: split payments, product validation, stock event. Use when: cashier finalizes a basket. NOT for: e-commerce orders (use place_order). |
| `close_pos_session_v2` | internal | Close shift and generate Z-report with payments-by-method aggregation. Emits pos.session.closed event for batch journal posting. |

## Module API Contract

**Actions:** `list_sales`, `list_sessions`, `today_summary`

**Input fields:** `action`, `register_id`, `limit`

**Output fields:** `success`, `data`, `error`

## File Map

| Purpose | Path |
|---------|------|
| Module definition | `src/lib/modules/pos-module.ts` |

## Contributing

To enhance this module, see [Contributing Guide](../contributing/contributing.md).

Key rules:
- Follow `ModuleDefinition<I, O>` contract pattern
- All schema changes require idempotent migrations
- Skills must be self-describing ([Law 2](../concepts/openclaw-law.md))
- Blocks are interfaces, not pipelines ([Law 3](../concepts/openclaw-law.md))
- New skills must pass the [Agent Contract Integrity](../architecture/agent-contract-integrity.md) checklist (`bun run lint:skills`)

---

*This file is auto-generated by `scripts/generate-module-docs.ts`. Do not edit manually — re-run the script after changing the module definition.*