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.
This guide covers four primary catalog management workflows that can be enabled via API.
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.
Create a single catalog entry using POST /catalog/entries:
Response (201 Created):
Including these fields significantly improves matching accuracy:
For the full list of fields, see POST /catalog/entries.
For syncing large catalogs (1,000+ items), use the bulk endpoint POST /catalog/entries/bulk:
Response (201 Created):
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:
catalog_unique_key doesn’t exist → Creates a new catalog entrycatalog_unique_key exists → Updates the existing catalog entryThis lets you safely sync your entire catalog repeatedly without creating duplicates.
To avoid duplicating items through an upsert operation, keep erp_vendor_id, item_name, size, uom, upc consistent, or use PATCH catalog/entries/{entry_id} to update entries individually.
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:
Once catalog entries are matched to invoice items, you can retrieve all purchased items associated with a specific catalog entry. This is useful for:
The result object includes purchased item objects with the following fields:
When reviewing invoices, you may need to see which catalog entries are matched to invoice line items.
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.
Setup Required: Location-specific pricing and allowances require additional configuration during client onboarding. Contact your Ottimate implementation team before using these features.
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.
Before implementing location-specific prices:
ottimate_location_id or ottimate_group_id values via GET /accounts/{account_id}/locationsInclude the prices array when creating catalog entries in place of the price field:
Location-based prices can only be created and updated through the bulk upsert endpoint POST /catalog/entries/bulk.