Tracking Dimensions: Departments, Locations, Subsidiaries & Tracking Categories
Tracking dimensions allow you to categorize and segment accounting transactions for reporting and analysis. This guide explains how to use departments, locations, subsidiaries, and tracking categories across different accounting connectors.
Overview
Apideck's Accounting API supports four tracking dimensions:
| Dimension | Purpose | Example Use Cases |
|---|---|---|
| Department | Organizational unit or cost center | Marketing, Sales, Engineering, Operations |
| Location | Physical or logical place | London Office, New York, Online Store |
| Subsidiary | Legal entity in multi-company setup | US Holdings Inc, UK Ltd, APAC Pty |
| Tracking Category | Flexible custom tags | Project Alpha, Grant #12345, Product Line A |
These dimensions enable powerful reporting capabilities:
- P&L by department (cost center analysis)
- Balance sheet by subsidiary (consolidated reporting)
- Revenue by location (regional performance)
- Expenses by tracking category (project costing)
Supported Resources
Transactional Resources
Tracking dimensions can be applied to these transactional resources:
| Resource | department_id | location_id | subsidiary_id | tracking_categories |
|---|---|---|---|---|
| Invoices | ✅ | ✅ | — | ✅ |
| Bills | ✅ | ✅ | — | ✅ |
| Credit Notes | ✅ | ✅ | — | ✅ |
| Expenses | ✅ | — | — | ✅ |
| Purchase Orders | ✅ | ✅ | ✅ | ✅ |
| Journal Entries | — | — | — | ✅ |
| Payments | — | — | — | ✅ |
| Bill Payments | — | — | — | ✅ |
Line Item Support
Most transactional resources support tracking at both the header and line item level:
Priority: Line item values override header values for that specific line.
Dimension Resources
You can manage tracking dimensions through dedicated endpoints:
| Endpoint | Description |
|---|---|
| GET /accounting/departments | List all departments |
| GET /accounting/locations | List all locations |
| GET /accounting/subsidiaries | List all subsidiaries |
| GET /accounting/tracking-categories | List all tracking categories |
Each endpoint supports standard CRUD operations (list, get, create, update, delete) where the connector supports them.
Using Tracking Dimensions
Creating a Transaction with Tracking
Filtering Reports by Location
Balance Sheet and Profit & Loss reports can be filtered by location:
Listing Available Tracking Categories
Response:
Connector Support
Not all connectors support all tracking dimensions. Here's what's available:
Full Support (All 4 Dimensions)
| Connector | Departments | Locations | Subsidiaries | Tracking Categories |
|---|---|---|---|---|
| NetSuite | ✅ | ✅ | ✅ | ✅ |
| Sage Intacct | ✅ | ✅ | ✅ | ✅ |
Partial Support (2-3 Dimensions)
| Connector | Departments | Locations | Subsidiaries | Tracking Categories |
|---|---|---|---|---|
| QuickBooks Online | ✅ | ✅ | — | ✅ |
| Workday | ✅ | — | ✅ | — |
| Dynamics 365 BC | — | ✅ | — | ✅ |
Limited Support (1 Dimension)
| Connector | Departments | Locations | Subsidiaries | Tracking Categories |
|---|---|---|---|---|
| Xero | — | — | — | ✅ |
| MYOB | — | — | — | ✅ |
| Zoho Books | — | — | — | — |
| FreeAgent | — | — | — | — |
| Freshbooks | — | — | — | — |
Connector-Specific Behavior
QuickBooks Online
QuickBooks uses "Classes" for tracking categories and has both Departments and Locations:
Note: QuickBooks' "Department" is often used for location-like tracking (regions, branches). Check your customer's QuickBooks configuration to understand how they use these fields.
Requirement: The QuickBooks account must have "Track locations" and "Track classes" enabled in Settings > Account and Settings > Advanced.
Scope required: com.intuit.quickbooks.accounting
For detailed setup instructions, see the QuickBooks connector guide.
Xero
Xero uses Tracking Categories for all dimensional tracking. Each organization can have up to 2 tracking categories, each with multiple options:
Limitation: Only 2 tracking categories per Xero organization. Plan category usage carefully.
Common Pattern: Many Xero users create one tracking category for "Department" and one for "Region" to simulate the department/location split.
Line Items: Tracking can be assigned at both the transaction header and line item level for granular reporting.
NetSuite
NetSuite (OneWorld edition) has full support for all dimensions:
Requirement: For NetSuite OneWorld, subsidiary_id is often required on transactions. Transactions without a valid subsidiary will be rejected.
Hierarchy: Departments, locations, and subsidiaries can be hierarchical (parent/child). Use the parent_id field when creating nested structures.
Custom Segments: NetSuite supports additional custom segments beyond the standard four dimensions. These can be accessed via pass_through if needed.
Sage Intacct
Sage Intacct uses "Entities" for subsidiaries and supports up to 8 custom dimensions:
Requirement: location_id (maps to LOCATIONID) is often required for multi-entity setups.
Custom Dimensions: Sage supports user-defined dimensions beyond the standard four. These are accessible via pass_through if needed.
Note: Sage Intacct was historically mapped to use subsidiaries for location data. Dedicated locations support was added later.
Best Practices
1. Discover Available Dimensions First
Before creating transactions with tracking, list available dimensions:
This ensures you use valid IDs and understand the customer's tracking structure.
2. Handle Missing Dimension Support Gracefully
Not all connectors support all dimensions. Your integration should check support before including fields:
3. Use Line Items for Mixed Tracking
When a single invoice spans multiple departments or projects:
4. Validate Subsidiary Requirements
For enterprise connectors (NetSuite, Sage), check if subsidiary is required:
5. Cache Dimension Lists
Tracking dimensions change infrequently. Cache the results of list calls:
Troubleshooting
"Invalid department_id" Error
Cause: The department ID doesn't exist or isn't active in the connected accounting system.
Solution:
- List departments to get valid IDs:
GET /accounting/departments - Verify the department is active (not archived)
- Check if department is valid for the specified subsidiary/location
"tracking_categories not supported" Error
Cause: The connector doesn't support tracking categories.
Solution: Check the connector support matrix above. Consider using pass_through for connector-specific fields.
Subsidiary Required Error (NetSuite/Sage)
Cause: Multi-entity systems often require subsidiary context.
Solution:
- List subsidiaries:
GET /accounting/subsidiaries - Include
subsidiary_idon the transaction - Ensure the subsidiary is valid for the current user's permissions
Xero "Maximum tracking categories exceeded"
Cause: Xero only allows 2 tracking categories per organization.
Solution: Xero's limit is organization-wide, not per-transaction. Work with your customer to:
- Consolidate tracking needs into 2 categories
- Use tracking category "options" for additional granularity within each category
Enhancement Options
If you need tracking support that isn't currently available in the unified API:
- Pass-through: Use pass_through to send connector-specific fields directly to the downstream API
- Proxy API: For complex platform-specific functionality, use the Proxy API to make direct calls
- Request Enhancement: Contact us to request unified API extensions for your use case