ACUMATICA

Acumatica Consolidation Reporting

April 15, 2024 13 min read

Introduction

Consolidation reporting in Acumatica enables organizations to combine financial data from multiple subsidiaries into unified financial statements. This is essential for multi-entity organizations requiring consolidated reporting.

Consolidation Setup

POST /api/data/GL103000
Content-Type: application/json

{
  "ConsolidationGroupID": { "value": "CORP-GROUP" },
  "Description": { "value": "Corporate Consolidation Group" },
  "ConsolidationMethod": { "value": "Full" },
  "IncludeInConsolidation": { "value": true }
}

Data Collection

async function collectEntityData(entities, period) {
    const consolidatedData = {
        period: period,
        entities: []
    };

    for (const entity of entities) {
        const entityData = await getEntityGLData(entity, period);
        consolidatedData.entities.push(entityData);
    }

    return consolidatedData;
}

Eliminations

async function processEliminations(period) {
    const intercompanyBalances = await getIntercompanyBalances(period);
    
    const eliminations = [];
    
    for (const ic of intercompanyBalances) {
        const elimination = {
            Account: { value: getEliminationAccount(ic.type) },
            Subaccount: { value: ic.subaccount },
            Amount: { value: -ic.balance },
            Description: { value: `IC Elim - ${ic.entity}` }
        };
        
        eliminations.push(elimination);
    }

    return eliminations;
}

Consolidated Reports

async function generateConsolidatedReport(period, entities) {
    const consolidated = await collectEntityData(entities, period);
    
    const eliminations = await processEliminations(period);
    
    const report = {
        BalanceSheet: await generateConsolidatedBalanceSheet(consolidated, eliminations),
        IncomeStatement: await generateConsolidatedIncome(consolidated, eliminations),
        CashFlow: await generateConsolidatedCashFlow(consolidated)
    };
    
    return report;
}

Complete Implementation

class ConsolidationReporter {
    constructor(acumaticaConfig) {
        this.client = new AcumaticaClient(acumaticaConfig);
    }

    async runConsolidation(period, groupId) {
        const entities = await this.getGroupEntities(groupId);
        
        await this.collectAllEntityData(entities, period);
        
        await this.applyEliminations(period);
        
        return await this.generateReports(period);
    }

    async generateReports(period) {
        return {
            consolidatedBalanceSheet: await this.getBalanceSheet(period),
            consolidatedIncome: await this.getIncomeStatement(period),
            consolidatedCashFlow: await this.getCashFlow(period)
        };
    }
}

Summary

Consolidation reporting in Acumatica enables accurate financial reporting across multiple entities. By implementing data collection, elimination entries, and consolidated reports, organizations can maintain accurate group financial statements.

For more information, check out our other tutorials on Intercompany Transactions and Revenue Recognition.