Catalog Entries
A catalog entry represents an item from your inventory management system stored in Ottimate. Each catalog entry is associated with a specific vendor and company, enabling accurate invoice matching and price variance detection.
When catalog entries are successfully synchronized, Ottimate automatically matches invoice line items to catalog items and displays match suggestions, including pricing variances, in the item validation interface.
Common Workflows
This guide covers four primary catalog management workflows that can be enabled via API.
- Syncing Catalog Data - Push inventory items from your system to Ottimate
- Fetching Purchased Items - Retrieve all invoice items matched to a catalog entry
- Fetching Matched Catalog Entries - Find which catalog entry an invoice item is matched to
- Location-based pricing - Sync location-specific prices (requires Ottimate setup)
Syncing Catalog Data
Syncing your inventory catalog to Ottimate enables automatic invoice matching and price variance detection. This workflow is designed for inventory management systems to maintain an up-to-date catalog in Ottimate.
Single Item Sync
Create a single catalog entry using POST /catalog/entries:
Response (201 Created):
Required Fields
Recommended Fields
Including these fields significantly improves matching accuracy:
For the full list of fields, see POST /catalog/entries.
Bulk Sync
For syncing large catalogs (1,000+ items), use the bulk endpoint POST /catalog/entries/bulk:
Response (201 Created):
Understanding the upsert pattern for bulk operations
Bulk catalog synchronization uses an upsert (update or insert) pattern to prevent duplicates. Ottimate automatically generates a catalog_unique_key from the fields you provide:
When UPC is provided (Default behaviour):
When UPC is not provided:
When you POST to /catalog/entries/bulk:
- If the
catalog_unique_keydoesn’t exist → Creates a new catalog entry - If the
catalog_unique_keyexists → Updates the existing catalog entry
This lets you safely sync your entire catalog repeatedly without creating duplicates.
To avoid duplicating items through an upsert operation, keep erp_vendor_id ,description , size, uom, upc consitent, or use PATCH catalog/entries/{entry_id} to update entries individually.
Retrieving Catalog Entries
Before syncing, you may want to check what’s already in Ottimate:
List all entries for a company:
Search for specific items:
Get full details for a specific entry:
Use the expand parameter to include related pricing and allowance data:
Fetching Purchased Items for a Catalog Entry
Once catalog entries are matched to invoice items, you can retrieve all purchased items associated with a specific catalog entry. This is useful for:
- Analyzing purchase history for a specific catalog item
- Identifying price variances over time
Endpoint
Example Request
Response
Purchased Items
The result object includes purchased item objects with the following fields:
Fetching Matched Catalog Entries for Purchased Items
When reviewing invoices, you may need to see which catalog entries are matched to invoice line items.
Invoice List with Expansion
Retrieve invoices with catalog matching information using the expand=items parameter. To set the expand parameter, you must also limit the date range to 30 days.
Note that only invoice items matched to a catalog entry will return a catalog entry object.
Example Response
Advanced Pricing Configurations
Setup Required: Location-specific pricing and allowances require additional configuration during client onboarding. Contact your Ottimate implementation team before using these features.
Location-Specific Prices
An Ottimate implementation may include setting up multiple locations. By default, catalog prices apply to all locations within a company. For clients with store-based pricing, you can set different prices for different Ottimate locations or location groups.
Configuration Requirements
Before implementing location-specific prices:
- Confirm the client company is configured for location-based catalog pricing
- Obtain the
ottimate_location_idorottimate_group_idvalues viaGET /accounts/{account_id}/locations
Creating Location-Specific Prices
Include the prices array when creating catalog entries in place of the price field:
Price Object Fields
Location-based prices can only be created and updated through the bulk upsert endpoint POST /catalog/entries/bulk.
Related Endpoints
- Vendors API - Manage vendor relationships required for catalog entries
- Dimensions API - Configure accounting dimensions for catalog items
- Invoices API - Work with invoice data and matched catalog entries

