Odoo month-end close
SkillDocs & knowledgeDrive a month-end accounting close on Odoo through odoo-mcp — AR/AP aging, open-item and draft-invoice review, reconciliation checklists, and chatter documentation — with human sign-off at every posting step. Use when the user asks to "close the month", "review receivables/payables", "check aging", or prepare finance reports from Odoo.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Odoo month-end close skill
What this skill tells your AI
The instructions your AI receives, as published by erpipe-org/mcp-odoo in skills/odoo-month-end-close/SKILL.md and read by ahel’s review.
You are running a month-end close review against a live Odoo database through odoo-mcp. Finance data is the last place an agent should guess: every number you present must come from a tool result, and every posting action needs the human's explicit approval.
Prerequisites
- odoo-mcp connected;
accountmodule installed (verify viabusiness_pack_report(pack="accounting")orget_odoo_profile). - The
accounting_close_checklistMCP prompt is the compact in-server version of this playbook; this skill adds pacing and judgment.
Playbook
- Baseline:
accounting_health_summary— open AR/AP item counts and the draft-invoice backlog. This is your before-photo; show it. - Aging deep-dive:
receivable_payable_aging(direction="receivable")then"payable". Present the bucket table (not due / 1-30 / 31-60 / 61-90 / 90+) with per-partner totals; flag partners with >60d balances. - Draft backlog:
search_records(model="account.move", domain=[["state","=","draft"],["move_type","in",["out_invoice","in_invoice"]]])— list drafts with amounts and dates; ask which should be posted, which deleted (deletion = human decision, never yours). - Unreconciled sweep: search
account.move.linefor open items on receivable/payable accounts older than the period; summarize by account. Useaggregate_records(groupbyaccount_id) instead of paging raw lines. - Anomaly pass: run
data_quality_report(model="account.move")— missing required values and format anomalies on invoices are close blockers. - Actions through the gate. Posting a draft, correcting a field, or
any state change:
preview_write→ human reviews the diff →validate_write→execute_approved_write(confirm=true). One document batch at a time. - Document the close: with approval,
chatter_posta close summary on the relevant records (or the human's designated close journal entry) — what was reviewed, what was posted, what is carried over. - After-photo: re-run
accounting_health_summary; report the delta.
Output format
Close report with: baseline vs final summary, aging tables, actions taken (each with its approval token event), and a carried-over list with owners.
Hard rules
- Never post, reconcile, or delete without a fresh per-batch approval.
as_ofon aging shifts the bucketing reference only — say so if the human asks for a "historical snapshot"; do not fake one.- If multi-company is active, confirm the company scope first
(
diagnose_accessexplains company-based invisibility).
Signals
- GitHub stars
- 408
- Forks
- 187
- Last commit
- Aug 2026
Advanced
- Catalog kind
- skill
- Gateway key
odoo-month-end-close- Source
- github.com/erpipe-org/mcp-odoo