Smithery Logo
MCPsSkillsDocsPricing
Login
Smithery Logo

Accelerating the Agent Economy

Resources

DocumentationPrivacy PolicySystem Status

Company

PricingAboutBlog

Connect

© 2026 Smithery. All rights reserved.

    jgtolentino

    odoo-finance-automation

    jgtolentino/odoo-finance-automation
    Business
    14
    3 installs

    About

    SKILL.md

    Install

    Install via Skills CLI

    or add to your agent
    • Claude Code
      Claude Code
    • Codex
      Codex
    • OpenClaw
      OpenClaw
    • Cursor
      Cursor
    • Amp
      Amp
    • GitHub Copilot
      GitHub Copilot
    • Gemini CLI
      Gemini CLI
    • Kilo Code
      Kilo Code
    • Junie
      Junie
    • Replit
      Replit
    • Windsurf
      Windsurf
    • Cline
      Cline
    • Continue
      Continue
    • OpenCode
      OpenCode
    • OpenHands
      OpenHands
    • Roo Code
      Roo Code
    • Augment
      Augment
    • Goose
      Goose
    • Trae
      Trae
    • Zencoder
      Zencoder
    • Antigravity
      Antigravity
    ├─
    ├─
    └─

    About

    Automate Finance Shared Service Center operations in Odoo 19 - month-end closing, journal entries, bank reconciliation, trial balance, and multi-agency consolidation...

    SKILL.md

    Odoo Finance Automation Expert

    Transform Claude into a Finance SSC automation specialist that handles all accounting operations across multiple agencies in Odoo 19.

    What This Skill Does

    Automate month-end closing - Reduce 10-day process to 2 days
    Multi-agency operations - Handle 8 agencies (RIM, CKVC, BOM, JPAL, JLI, JAP, LAS, RMQB)
    BIR compliance - Generate forms 1601-C, 2550Q, 1702-RT automatically
    Real-time reporting - Trial balance, aging, cash flow on demand

    Time Savings: 160 hours/month

    Quick Start

    When asked to perform finance operations:

    1. Connect to Odoo: Authenticate via XML-RPC or REST API
    2. Identify agency: Map employee code to agency context
    3. Execute operation: Journal entry, reconciliation, report generation
    4. Validate: Check trial balance, verify BIR compliance
    5. Sync: Update Notion tasks, Supabase data warehouse

    Core Workflows

    Workflow 1: Month-End Closing

    User asks: "Close September books for all agencies"
    
    Steps:
    1. Validate all pending transactions
    2. Generate accrual entries (prepaid, deferred revenue)
    3. Run depreciation schedules
    4. Calculate withholding taxes
    5. Post closing entries
    6. Generate trial balance
    7. Create month-end reports
    8. Update Notion checklist
    
    Result: Closed period with full audit trail
    

    See examples/month-end-closing.md for full workflow.

    Workflow 2: Journal Entry Posting

    User asks: "Post depreciation entries for October"
    
    Steps:
    1. Query asset register from Odoo
    2. Calculate monthly depreciation
    3. Generate journal entries by agency
    4. Validate GL accounts exist
    5. Post entries with proper references
    6. Generate posting report
    
    Result: Posted journal entries with audit trail
    

    See examples/journal-entries.md for examples.

    Workflow 3: Bank Reconciliation

    User asks: "Reconcile BDO account for RIM agency"
    
    Steps:
    1. Fetch bank statement from Supabase
    2. Query unreconciled bank transactions in Odoo
    3. Auto-match by amount and date
    4. Propose manual matches for review
    5. Create reconciliation entries
    6. Update bank balance
    7. Generate reconciliation report
    
    Result: Reconciled bank account with audit trail
    

    See examples/bank-reconciliation.md for workflow.

    Workflow 4: Trial Balance Generation

    User asks: "Get trial balance for Q3 2025 all agencies"
    
    Steps:
    1. Query account balances by agency and date range
    2. Calculate debit/credit totals
    3. Verify balance (debits = credits)
    4. Format by account hierarchy
    5. Export to Excel/PDF
    6. Optionally push to Superset
    
    Result: Trial balance report with variance analysis
    

    See examples/trial-balance.md for details.

    Workflow 5: Multi-Agency Consolidation

    User asks: "Consolidate financials for all agencies"
    
    Steps:
    1. Pull balances from each agency
    2. Apply consolidation rules
    3. Eliminate intercompany transactions
    4. Apply currency conversions
    5. Generate consolidated statements
    6. Create variance reports
    7. Update Superset dashboards
    
    Result: Consolidated financial statements
    

    See examples/consolidation.md for process.

    Implementation Patterns

    Odoo XML-RPC Connection Pattern

    Purpose: Connect to Odoo 19 via XML-RPC for all operations

    Connection:

    import xmlrpc.client
    
    url = "https://erp.insightpulseai.net"
    db = "production"
    username = "admin"
    password = os.getenv("ODOO_API_KEY")
    
    # Authenticate
    common = xmlrpc.client.ServerProxy(f'{url}/xmlrpc/2/common')
    uid = common.authenticate(db, username, password, {})
    
    # Execute operations
    models = xmlrpc.client.ServerProxy(f'{url}/xmlrpc/2/object')
    result = models.execute_kw(
        db, uid, password,
        'account.move', 'search_read',
        [[['state', '=', 'draft']]],
        {'fields': ['name', 'date', 'amount_total']}
    )
    

    See reference/xmlrpc-api.md for full API.

    Journal Entry Pattern

    Purpose: Create journal entries programmatically

    Structure:

    {
        'journal_id': 1,  # General Journal
        'date': '2025-10-31',
        'ref': 'ACCRUAL/2025/10',
        'line_ids': [
            (0, 0, {
                'account_id': 123,  # Prepaid Expense
                'name': 'October Rent Accrual',
                'debit': 50000.00,
                'credit': 0.00,
                'partner_id': 456,
                'analytic_account_id': 789,  # Agency code
            }),
            (0, 0, {
                'account_id': 124,  # Accrued Expense
                'name': 'October Rent Accrual',
                'debit': 0.00,
                'credit': 50000.00,
                'partner_id': 456,
            })
        ]
    }
    

    See reference/journal-entry-schema.md.

    Multi-Agency Pattern

    Purpose: Handle operations across 8 agencies with proper segregation

    Agency Mapping:

    AGENCIES = {
        'RIM': {'code': 'RIM', 'analytic_id': 1, 'company_id': 1},
        'CKVC': {'code': 'CKVC', 'analytic_id': 2, 'company_id': 1},
        'BOM': {'code': 'BOM', 'analytic_id': 3, 'company_id': 1},
        'JPAL': {'code': 'JPAL', 'analytic_id': 4, 'company_id': 1},
        'JLI': {'code': 'JLI', 'analytic_id': 5, 'company_id': 1},
        'JAP': {'code': 'JAP', 'analytic_id': 6, 'company_id': 1},
        'LAS': {'code': 'LAS', 'analytic_id': 7, 'company_id': 1},
        'RMQB': {'code': 'RMQB', 'analytic_id': 8, 'company_id': 1},
    }
    

    Usage:

    def post_journal_entry(agency_code, entry_data):
        agency = AGENCIES[agency_code]
        entry_data['line_ids'] = [
            (0, 0, {
                **line,
                'analytic_account_id': agency['analytic_id']
            })
            for line in entry_data['line_ids']
        ]
        return models.execute_kw(db, uid, password, 
            'account.move', 'create', [entry_data])
    

    See reference/multi-agency-pattern.md.

    BIR Compliance Integration

    Withholding Tax Computation

    def calculate_withholding_tax(amount, tax_type):
        """
        tax_type: 'professional', 'compensation', 'final'
        """
        rates = {
            'professional': 0.10,  # 10% EWT
            'compensation': 0.05,  # 5% graduated
            'final': 0.20,  # 20% final
        }
        return amount * rates.get(tax_type, 0)
    

    VAT Handling

    def compute_vat(amount, vat_type='output'):
        """
        vat_type: 'output', 'input', 'zero_rated', 'exempt'
        """
        if vat_type == 'exempt':
            return 0
        if vat_type == 'zero_rated':
            return 0
        
        # Standard 12% VAT
        vat_amount = amount * 0.12
        return vat_amount
    

    See reference/bir-integration.md for full compliance.

    Common Operations

    Create Vendor Bill

    models.execute_kw(db, uid, password, 'account.move', 'create', [{
        'move_type': 'in_invoice',
        'partner_id': vendor_id,
        'invoice_date': '2025-10-30',
        'invoice_line_ids': [(0, 0, {
            'product_id': product_id,
            'quantity': 1,
            'price_unit': 10000,
            'account_id': expense_account_id,
        })]
    }])
    

    Create Customer Invoice

    models.execute_kw(db, uid, password, 'account.move', 'create', [{
        'move_type': 'out_invoice',
        'partner_id': customer_id,
        'invoice_date': '2025-10-30',
        'invoice_line_ids': [(0, 0, {
            'product_id': service_id,
            'quantity': 1,
            'price_unit': 50000,
            'account_id': revenue_account_id,
            'tax_ids': [(6, 0, [vat_12_tax_id])]
        })]
    }])
    

    Search Unreconciled Items

    models.execute_kw(db, uid, password, 
        'account.move.line', 'search_read',
        [[['reconciled', '=', False], ['account_id.reconcile', '=', True]]],
        {'fields': ['name', 'date', 'debit', 'credit', 'amount_residual']}
    )
    

    Best Practices

    1. Always validate trial balance: After posting, verify debits = credits
    2. Use analytic accounts: Track expenses by agency/project
    3. Reference properly: Include source document in journal entry reference
    4. Batch operations: Process multiple entries in single API call
    5. Handle errors gracefully: Rollback on failure, log all operations
    6. Audit trail: Every operation should be traceable
    7. Multi-currency: Use Odoo's multi-currency features for forex
    8. Periodic backups: Backup before month-end closing

    Common Issues

    "Account not found": Verify chart of accounts, check account codes "Unbalanced entry": Total debits must equal total credits "Period closed": Reopen fiscal period or use prior period adjustment "Missing analytic account": Agency codes must be mapped to analytic accounts "Tax computation error": Verify tax configuration in Odoo "Bank statement mismatch": Check date ranges and amounts "Foreign currency error": Ensure exchange rates are set

    Reference Documentation

    Technical patterns and APIs:

    • reference/xmlrpc-api.md - Odoo XML-RPC complete reference
    • reference/journal-entry-schema.md - Entry structure
    • reference/multi-agency-pattern.md - Agency handling
    • reference/bir-integration.md - Tax compliance
    • reference/supabase-sync.md - Data warehouse updates

    Examples

    Complete workflow examples:

    • examples/month-end-closing.md - Full month-end process
    • examples/journal-entries.md - Manual entries
    • examples/bank-reconciliation.md - Bank rec workflow
    • examples/trial-balance.md - Financial reporting
    • examples/consolidation.md - Multi-agency consolidation

    Tools Available

    This skill uses standard Claude tools:

    • bash_tool: Execute Python scripts for Odoo operations
    • create_file: Generate reports, SQL scripts
    • str_replace: Update configuration files
    • view: Read Odoo data, verify outputs

    Success Metrics

    After using this skill:

    • ✅ Month-end closing: 10 days → 2 days
    • ✅ Journal entries: 100% automated
    • ✅ Bank reconciliation: 80% auto-matched
    • ✅ Trial balance: Generated in 30 seconds
    • ✅ BIR compliance: 100% accurate
    • ✅ Multi-agency: Handled seamlessly
    • ✅ 160 hours/month saved

    Getting Started

    Ask Claude:

    "Close September books for all agencies"
    "Post prepaid expense accrual for October"
    "Reconcile BDO bank account for RIM agency"
    "Generate trial balance for Q3 2025"
    "Show me vendor bills pending approval"
    

    Your Finance SSC automation starts here! 🚀

    Recommended Servers
    Blockscout MCP Server
    Blockscout MCP Server
    Repository
    jgtolentino/insightpulse-odoo
    Files