Integration Patterns & Best Practices
Common implementation patterns, workflows, and troubleshooting
Provisioning Workflow
What Ottimate Configures (Before You Start)
During the onboarding process, Ottimate configures:
- Client Account - Top-level account entity with unique
racc_identifier - Company Structure - One or more companies based on the client’s accounting structure
- Location Setup - All locations within each company
- Groups (if applicable) - Location groupings for multi-company accounts
- API Credentials - Client ID and Client Secret for OAuth authentication scoped to an API User
- Feature Enablement - Activates features based on client subscription (InstantCapture, Catalog Match, etc.)
- ERP Connection (if applicable) - Configures Ottimate-hosted ERP integrations
By the time you receive API credentials, your account structure is fully configured and ready for integration.
What You Verify First
After receiving your Sandbox credentials:
- Verify account structure - List companies and locations to understand the hierarchy
- Test API User scope - Confirm you can access all required companies/locations
- Map identifiers - Create a mapping between your system’s IDs and Ottimate’s
company_id/location_idvalues
What You Configure via API
After verifying your account structure, you’ll typically:
- Sync Dimensions - Push or pull chart of accounts from the ERP
- Sync Vendors - Push or pull vendor list from the ERP
- Configure Catalog (optional) - Sync inventory items for catalog matching
- Test Invoice Creation - Create test invoices to validate the workflow
See Accounting Integration for detailed sync procedures.
Managing Changes
Common Integration Patterns
Pattern 1: Single Company, Single Location
Use Case: Small business with centralized AP
API Usage:
- All requests use the same
ottimate_company_id - All invoices use the same
ottimate_location_id - Simplest integration pattern
Example:
Pattern 2: Single Company, Multiple Locations
Use Case: Restaurant chain, retail chain, or multi-site business
API Usage:
- All requests use the same
ottimate_company_id - Invoices are assigned to appropriate
ottimate_location_idbased on which location received the goods/services - Vendors and dimensions are shared across all locations
Integration Considerations:
- Map your system’s location identifiers to Ottimate location IDs
- Route invoices to correct location based on purchase order, delivery address, or other business logic
- Users may be restricted to view only their assigned locations
Pattern 3: Multiple Companies
Use Case: Holding company, MSP managing multiple clients
API Usage:
- Each company has separate dimensions, vendors, and invoices
- No data sharing between companies
- Each company typically connects to a different ERP instance
Integration Considerations:
- Maintain separate dimension/vendor mappings per company
- Handle each company’s invoice workflow independently
- May require separate sync schedules per company
Best Practices
- Verify structure first - Before writing integration code, list all companies and locations to understand the account hierarchy and your API User’s access scope.
- Document mappings - Maintain a clear mapping between your system’s identifiers and Ottimate’s
company_idandlocation_idvalues. - Understand your API User scope - Test which companies/locations you can access. Don’t assume account-level access.
- Cache company/location lists - Account structure rarely changes, so fetch once during initialization and cache locally.
- Validate scope before creation - Always verify that
ottimate_company_idandottimate_location_idexist and are correctly paired before creating invoices. - Test with production structure - Ensure your Sandbox environment mirrors your production account structure for accurate testing.
- Refresh mappings periodically - If your client adds new locations, implement a process to refresh your location mappings.
Next Steps
Now that you understand account structure and integration patterns, proceed to set up accounting data:

