# Odoo Accounting MCP

> Odoo Accounting MCP Server connects your AI client directly into Odoo ERP. Manage accounts, bills, invoices, and payments using natural conversation. It gives you access to core finance data: chart of accounts (`odoo_list_accounts`), vendor bills (`odoo_list_bills`), customer invoices (`odoo_list_invoices`), journal entries (`odoo_list_journal_entries`), payment records (`odoo_list_payments`), tax rates (`odoo_list_taxes`), and accounting journals (`odoo_list_journals`). You can track cash flow, audit transactions, and reconcile books without leaving your agent interface.

## Overview
- **Category:** industry-titans
- **Price:** Free
- **Tags:** invoicing, general-ledger, financial-reporting, accounts-payable, accounts-receivable, journal-entries, tax-compliance

## Description

You connect your AI client right into Odoo's core accounting system. You don't have to juggle tabs or dig through menu trees just to check a balance; you talk to it like it's a conversation with an experienced bookkeeper.

This server gives your agent deep, read-only access to the entire financial structure of your business. You can query and list critical records across multiple modules—from vendor bills to tax rates—using only natural language prompts. It lets you audit transactions and track cash flow without ever leaving your chat interface.

**General Ledger Structure and Setup**

You'll use `odoo_list_accounts` to pull the full Chart of Accounts. This shows every account code, its name, and whether it's classified as an asset, liability, income, or expense type, plus its reconciliation status. You can check which accounts are set up for what kind of tracking. For understanding how transactions get grouped, you retrieve a list of all configured accounting journals—like Sales, Purchase, Bank, and Cash—using `odoo_list_journals`. If you need to verify the tax structure, `odoo_list_taxes` gives you every active rate, detailing its percentage, name, and whether it applies specifically to sales or purchases.

**Accounts Payable and Receivable Management**

Managing what you owe versus what people owe is simple. You run `odoo_list_bills` to get a clear list of vendor bills from your suppliers. This shows the total amount owed, if the payment status is open, and when those bills are due for accounts payable. For receivables, `odoo_list_invoices` tracks every customer invoice. It details the amounts, whether they're paid or unpaid, which journal they belong to, and their due dates. These two tools let you track your full cycle of cash coming in and going out.

**Transaction History and Adjustments**

You monitor recent cash movement using `odoo_list_payments`. This pulls payment records by date, showing the amount, if it's inbound or outbound funds, and whether those funds are reconciled. Need to check for manual accounting adjustments? You use `odoo_list_journal_entries` to pull a list of non-invoice entries—things like accruals—showing the entry number, total dollar amount, and the posting date.

**The Process in Action**

When you ask your agent something like, 'Show me all unpaid bills over $5,000,' your AI client routes that query to `odoo_list_bills`. The server runs the specific Odoo API call, pulls the structured data—including amounts owed and due dates—and feeds it back. You'll get clean, actionable results every time. Need to know what tax rates are active on purchases? Just ask for `odoo_list_taxes` and get the percentage and application details right away.

## Tools

### odoo_list_accounts
Lists the full Chart of Accounts in Odoo, showing account codes, names, types, and reconciliation settings.

### odoo_list_bills
Lists vendor bills (supplier invoices) in Odoo with amounts owed, payment status, and due dates for accounts payable.

### odoo_list_invoices
Lists customer invoices in Odoo with amounts, payment status, journal, and due dates for accounts receivable.

### odoo_list_journal_entries
Lists manual journal entries (accounting adjustments) in Odoo with amounts, journals, and posting dates.

### odoo_list_journals
Lists all accounting journals (Sales, Purchase, Bank, Cash, Miscellaneous) configured in Odoo.

### odoo_list_payments
Lists payment transactions in Odoo showing amounts, payment method, type (inbound/outbound), and reconciliation status.

### odoo_list_taxes
Lists all tax configurations in Odoo showing tax name, rate, and whether it applies to sales or purchases.

## Prompt Examples

**Prompt:** 
```
Search for leads from the website
```

**Response:** 
```
👥 **CRM Leads — Website**
| Name | Email | Stage | Revenue |
|---|---|---|---|
| Acme Corp | info@acme.com | Qualification | $15,000 |
| Beta Inc | hello@beta.io | Proposition | $8,500 |
```

**Prompt:** 
```
Show recent sales orders
```

**Response:** 
```
📋 **Sales Orders**
| SO# | Customer | Amount | Status |
|---|---|---|---|
| S00042 | Acme Corp | $12,500 | Confirmed |
| S00041 | Beta Inc | $3,200 | Draft |
```

## Capabilities

### View General Ledger Structure
Retrieve the full Chart of Accounts, including account codes, types (asset, liability, income, etc.), and reconciliation status using `odoo_list_accounts`.

### List Vendor Bills
Get a list of outstanding bills from suppliers, showing the total amount owed, payment status, and due dates via `odoo_list_bills`.

### Track Customer Invoices
Generate reports on all customer invoices, detailing numbers, amounts, payment statuses (paid/unpaid), and remaining balances using `odoo_list_invoices`.

### Query Manual Adjustments
List non-invoice accounting adjustments or accruals using `odoo_list_journal_entries`, showing the entry number, total amount, and posting date.

### Audit Accounting Journals
Retrieve a list of all configured accounting journals (Sales, Purchase, Bank, etc.) to understand transaction grouping rules using `odoo_list_journals`.

### Monitor Payment History
Fetch payment records by date, showing amounts, the type (inbound/outbound), and if the funds are reconciled via `odoo_list_payments`.

### Check Tax Rates
List all configured tax rates in Odoo, including their percentage, name, and whether they apply to sales or purchases using `odoo_list_taxes`.

## Use Cases

### Reconciling Bank Statements
The bookkeeper needs to match a batch of bank deposits. Instead of manually logging into the banking portal and cross-referencing records, they ask their agent: 'Show all payments from last week.' The agent uses `odoo_list_payments` to pull the transaction list, which is then easily compared against the statement.

### Auditing a Customer's Account
An auditor needs to confirm if Acme Corp has any outstanding balances. They ask: 'List all unpaid customer invoices for Acme.' The agent runs `odoo_list_invoices`, immediately showing the invoice number, total amount, and due date for verification.

### Verifying Vendor Payment Status
The operations manager knows they are owed money but isn't sure if a bill was paid. They prompt: 'What bills do we have outstanding from TechSupply?' The agent uses `odoo_list_bills` to return the vendor invoice details, including the remaining balance and payment status.

### Understanding Financial Codes
A new team member doesn't know what 'Deferred Revenue' is in terms of GL codes. They ask: 'What accounts track deferred revenue?' The agent runs `odoo_list_accounts`, presenting the account code, name, and type for immediate understanding.

## Benefits

- See outstanding payables instantly. Use `odoo_list_bills` to get a clear, real-time view of everything owed to your vendors without navigating the 'Purchases' module.
- Track cash flow across modules. Combine data from `odoo_list_payments` and `odoo_list_invoices` to see exactly when money moves in and out of your bank account.
- Understand GL integrity immediately. Run `odoo_list_accounts` anytime to verify if a new expense type is correctly classified as an Asset, Liability, or Income source.
- Avoid calculation errors with tax rules. Use `odoo_list_taxes` to confirm the correct rate and scope (sale vs. purchase) before finalizing any invoice amount.
- Process manual adjustments easily. Instead of digging through complex reports, use `odoo_list_journal_entries` to list specific accruals or depreciation postings with one prompt.

## How It Works

The bottom line is: your AI client runs complex accounting queries using simple conversations, eliminating manual screen navigation in Odoo.

1. Start by asking your agent for the specific financial data you need. For example: 'What are my unpaid vendor bills?'
2. The MCP Server maps this natural language request to the correct tool (e.g., `odoo_list_bills`) and executes it against Odoo.
3. Your agent receives a structured dataset of the outstanding bills, which it presents back to you immediately.

## Frequently Asked Questions

**How do I check the Chart of Accounts using odoo_list_accounts?**
You ask your agent: 'List all general ledger accounts.' The tool runs `odoo_list_accounts` and returns every account code, its name, and whether it's set up for reconciliation. This gives you a full view of the financial reporting hierarchy.

**What is the difference between odoo_list_bills and odoo_list_invoices?**
Bills are supplier invoices (Accounts Payable)—money you owe. Invoices are customer invoices (Accounts Receivable)—money owed to you. You use `odoo_list_bills` for what you pay, and `odoo_list_invoices` for what gets paid to you.

**Can odoo_list_payments help me check cash flow?**
Yes. This tool lists all payment transactions by date. By looking at the 'type' (inbound/outbound) and status, your agent can summarize recent bank activity and reconciliation needs.

**Do I need odoo_list_journal_entries for every transaction?**
Journal entries handle manual accounting adjustments—things like depreciation or accruals that aren't tied to an invoice. Use `odoo_list_journal_entries` when you need to see those specific, non-standard ledger postings.

**Which tool shows tax rates: odoo_list_taxes?**
Yes, that's the right one. The `odoo_list_taxes` tool gives you a list of every configured tax rate in Odoo, along with its percentage and whether it applies to sales or purchases.

**When I run odoo_list_payments, how do I verify if a transaction is fully reconciled?**
A payment showing 'reconciled' means the funds have been matched to an official document (like an invoice or bill) in your books. If it’s merely 'posted', it exists but hasn't completed the final internal matching process.

**Which tool should I use when I need to know what types of accounting groupings are available: odoo_list_journals?**
Use odoo_list_journals to see every configured logical grouping in your system. This list shows the names (like 'Sales' or 'Bank') and codes you must reference before posting any entry, regardless of whether it's an invoice or a bill.

**If I need to record depreciation or accruals, should I use odoo_list_journal_entries instead of listing bills?**
Yes. Bills and invoices handle money coming in or going out through vendors/clients. Journal entries are for manual bookkeeping adjustments—things like recording depreciation, internal transfers, or accruals that don't involve a specific third party.

**Which Odoo versions are supported?**
This server uses the JSON-RPC protocol, which is compatible with Odoo 14, 15, 16, 17, and 18. Both Odoo Community and Enterprise editions are supported.

**Does it work with Odoo.com (SaaS)?**
Yes! Works with both Odoo.com hosted instances and self-hosted Odoo servers. Just provide your instance URL and API key.

**How do I generate an API Key?**
Go to Settings → Users → select your user → API Keys tab → New API Key. Give it a descriptive name and copy the generated key.