Dimensions
Overview
In accounting systems, financial transactions must be properly categorized for reporting and compliance. Transactions are assigned to GL accounts, departments, locations, projects, and other organizational segments based on a company’s accounting rules.
Ottimate represents these transaction classifications through dimensions. Each dimension links an Ottimate record to a corresponding entity in the client’s ERP/accounting system.
Key Characteristics:
- Dimensions are company-specific - each company maintains its own set of dimensions
- Dimensions must be synced from your ERP before invoices can be properly coded
- The
erp_dimension_idlinks Ottimate dimensions to your accounting system - Dimensions can be applied at both invoice header and line item level
Dimension Fields
Response Fields
Creation Fields
Supported Dimension Types
The following dimension types are supported. The table shows equivalent entities across common ERP systems.
GL Account (account)
Classifies how a transaction will be recorded in the general ledger.
Example:
Location (location)
Represents geographic locations like offices, facilities, or warehouses.
Department (department)
Represents internal business units or functions.
Project (project)
Tracks transactions related to a specific initiative, job, or capital effort.
Task (task)
Represents specific tasks within a project.
Cost Type (cost_type)
Categorizes different types of costs within projects.
Item (item)
Represents goods and services purchased from vendors.
Sync Patterns
Ottimate-Hosted ERP Integrations
When you use an Ottimate-hosted integration (e.g., QuickBooks, NetSuite, Sage), Ottimate automatically syncs dimensions from your ERP:
- Initial sync happens during onboarding
- Ongoing sync keeps dimensions updated automatically
- No API calls needed - dimension management is handled by the integration
In this scenario, you primarily use the Dimensions API to read dimension data for reference or validation.
Custom ERP Integrations
If you’re building a custom integration with an unsupported ERP, you’re responsible for syncing dimensions:
- Extract dimension data from your ERP (chart of accounts, departments, etc.)
- Transform to Ottimate’s dimension format
- Load via the Dimensions API (
POST /dimensionsorPOST /dimensions/bulk-create/) - Maintain ongoing sync as dimensions are added/updated in your ERP
Keep dimension data consistent between Ottimate and your ERP. Mismatched dimension IDs can cause issues during invoice export.
API Operations
List Dimensions
Retrieve all dimensions for a company, optionally filtered by type:
Response:
Get Single Dimension
Retrieve a specific dimension by ID:
Response:
Create Single Dimension
Create a new dimension:
Response (201 Created):
Bulk Create/Update Dimensions
Create or update multiple dimensions in a single request. This endpoint uses upsert behavior - existing dimensions (matched by unique_key) are updated, new dimensions are created.
Response (201 Created):
Partial Failure Response (207 Multi-Status):
Using Dimensions in Invoices
Dimensions are applied to invoices and line items to categorize transactions for proper GL coding.
Invoice Header Dimensions: Used for header-level coding that applies to the entire invoice (e.g., department, location).
Line Item Dimensions: Used for item-level coding when different line items should be coded to different accounts.
The dimension keys in the dimensions object are the display type names (e.g., “Account”, “Department”), and the values are the erp_dimension_id values.
Best Practices
- Sync dimensions before invoices - Ensure all required dimensions exist before creating invoices that reference them.
- Use bulk-create for efficiency - When syncing your chart of accounts, use the bulk endpoint to reduce API calls.
- Match ERP identifiers exactly - The
erp_dimension_idmust match your ERP’s identifier for successful invoice export. - Use consistent unique_keys - The
unique_keyfield determines upsert behavior; use a consistent naming convention. - Cache dimension mappings - Fetch and cache the dimension list at integration startup to avoid repeated API calls.
- Handle partial failures - When using bulk-create, check the
errorsarray and handle failed dimensions appropriately.
Troubleshooting
”Dimension not found” when coding invoice
- Verify the dimension exists:
GET /dimensions?ottimate_company_id=123&type=Account - Check you’re using the correct
erp_dimension_idvalue - Ensure the dimension belongs to the same company as the invoice
Invoice export fails with dimension error
- Verify the
erp_dimension_idmatches exactly what’s in your ERP - Check that all required dimension types are populated on the invoice
Bulk create shows errors
- Check the
errorsarray in the response for specific validation failures - Common issues: missing
dimension_type_code, missingunique_key, invalid type
Dimensions not syncing from ERP
- For Ottimate-hosted integrations, check sync status in the dashboard
- For custom integrations, verify your API calls are succeeding

