> This page is for version V1 (default).
> For other versions, use one of these documentation indexes:
> - V1 (default): https://docs.ottimate.com/v-1/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.ottimate.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.ottimate.com/_mcp/server.

# Changelog

## March 5, 2026

# Changelog

This update promotes Purchase Orders and Receipts APIs to beta, adds dimension support on purchase order line items, and introduces flexible PO lookup for receipts.

## Purchase Orders & Receipts — Now in Beta

The Purchase Orders and Receipts APIs, previously marked as in-development, are now available in **beta**. These endpoints support two-way and three-way matching workflows in Ottimate.

| API             | Endpoints                                                                     |
| --------------- | ----------------------------------------------------------------------------- |
| Purchase Orders | `GET`, `POST`, `PATCH /purchase-orders`, `POST /purchase-orders/bulk-upsert/` |
| Receipts        | `GET`, `POST`, `PATCH /receipts`, `POST /receipts/bulk-upsert/`               |

See the [Purchase Orders](/purchase-orders) and [Purchase Receipts](/purchase-receipts) guides for full documentation.

## New Features

### Dimensions on Purchase Order Items

PO line items now support dimension mappings via the `dimensions` field. Dimensions are keyed by type (e.g., `PROJECT`, `CLASS`) with values set to the `erp_dimension_id` of the dimension. When an invoice is matched to a PO, these dimensions can be inherited onto invoice line items for automatic coding.

* Dimensions must exist in Ottimate before being referenced — either synced via an Ottimate-hosted integration or created via the [Dimensions API](/api-reference/api-reference/dimensions/post-dimensions-root).
* Providing `dimensions` on a line item **replaces** all existing dimensions on that item.

### Custom Fields on Purchase Orders

Purchase orders now support a `custom_fields` object for company-specific metadata configured during onboarding.

### Flexible PO Lookup for Receipts

When creating a receipt, you can now identify the parent PO in two ways:

* **By Ottimate ID** — Provide `ottimate_po_id` directly
* **By lookup fields** — Provide `erp_vendor_id` + `ottimate_location_id` + either `po_number` or `po_external_id`

Similarly, receipt line items can reference PO items via `ottimate_po_item_id` or `po_external_item_id`.

## Documentation Updates

* **Accounts Payable section restructured** — Purchase Orders and Purchase Receipts are now listed as standalone pages following the business process flow: PO → Receipt → Invoice.
* **"Non-PO Invoice" renamed to "Invoices"** — The invoice guides now cover all invoice types.
* **AP Overview updated** — Added two-way and three-way matching workflow descriptions.

## Migration Notes

No breaking changes. All existing endpoints and request/response schemas remain unchanged.

## February 27, 2026

# Changelog

This update introduces Purchase Orders, Receipts, and Batch processing endpoints, adds bulk operations across several existing APIs, and establishes availability status tags across the API Reference.

## New APIs (In Development)

The following APIs are currently in development and being tested. They are documented here for planning purposes and are not yet available for use. Availability will be announced in a future changelog entry.

### Purchase Orders

Full CRUD for purchase orders, enabling two-way and three-way matching workflows in Ottimate.

| Endpoint                             | Description                                                   |
| ------------------------------------ | ------------------------------------------------------------- |
| `GET /purchase-orders`               | List purchase orders with filtering and pagination            |
| `GET /purchase-orders/{id}`          | Retrieve a specific purchase order                            |
| `POST /purchase-orders`              | Create a new purchase order                                   |
| `PATCH /purchase-orders/{id}`        | Update an existing purchase order                             |
| `POST /purchase-orders/bulk-upsert/` | Create or update multiple purchase orders in a single request |

### Receipts

Manage purchase receipts to support goods-received workflows and three-way matching.

| Endpoint                      | Description                                            |
| ----------------------------- | ------------------------------------------------------ |
| `GET /receipts`               | List receipts with filtering and pagination            |
| `GET /receipts/{id}`          | Retrieve a specific receipt                            |
| `POST /receipts`              | Create a new receipt                                   |
| `PATCH /receipts/{id}`        | Update an existing receipt                             |
| `POST /receipts/bulk-upsert/` | Create or update multiple receipts in a single request |

### Batch Processing

Track the progress and results of long-running bulk operations.

| Endpoint                   | Description                                     |
| -------------------------- | ----------------------------------------------- |
| `GET /batch/{id}/progress` | Poll the completion status of a batch job       |
| `GET /batch/{id}/results`  | Retrieve the results once a batch job completes |

## New Bulk Endpoints (In Development)

Bulk operations added to existing APIs for high-volume integrations. These are currently in development and being tested. They accept arrays of records and return per-item success/error results.

| Endpoint                        | Description                                           |
| ------------------------------- | ----------------------------------------------------- |
| `POST /catalog/entries/bulk`    | Create or update catalog entries in bulk              |
| `POST /catalog/allowances/bulk` | Create or update catalog allowances in bulk           |
| `POST /catalog/prices/bulk`     | Create or update catalog prices in bulk               |
| `POST /dimensions/bulk-create/` | Create multiple dimensions in a single request        |
| `POST /vendors/bulk-create/`    | Create or update multiple vendors in a single request |

## Documentation Updates

### Availability Status Tags

All endpoints in the API Reference now display a status badge indicating their maturity level. See [Release Plan](/releases) for full definitions.

* **Beta** — All previously released endpoints (Accounts, Catalog, Dimensions, Invoices, OAuth, Vendors) are now tagged as beta, reflecting that they are functional and available for integration but may receive minor changes before GA.
* **In Development** — New endpoints introduced in this release are tagged as in-development and are not yet available for use.

## Migration Notes

No breaking changes. All existing endpoints and request/response schemas remain unchanged. If you are already integrated with V1.0.0, no action is required.

## November 24, 2025

# Release: V1.0.0

# Changelog

In this release we've added endpoints to ease integration with ottimate.

## What's new?

### Accounting Vendors Management

New endpoints for managing accounting vendors:

* **Get Vendors**
  * `GET /vendors` - Retrieve paginated list of Accounting Vendors

* **Get Vendor Details**
  * `GET /vendors/:id` - Get details of a specific Accounting Vendor by ID

* **Create Vendors**
  * `POST /vendors/` - Create a single Accounting Vendor
  * `POST /vendors/bulk-create/` - Create or update multiple Accounting Vendors in bulk

### Dimension Management

New endpoints for managing dimensions:

* **Get Dimensions**
  * `GET /dimensions` - Retrieve paginated list of Dimensions

* **Get Dimension Details**
  * `GET /dimensions/:id` - Get details of a specific Dimension by ID

### Invoice Management

New endpoints for managing invoices:

* **Get Invoices**
  * `GET /invoices` - Retrieve paginated list of invoices

* **Get Invoice Details**
  * `GET /invoices/:id` - Get details of a specific invoice by ID

* **Get Uploads**
  * `GET /invoices/uploads` - Get details of invoice uploads

* **Mark Invoices**
  * `POST /invoices/mark-exported` - Mark multiple invoices as exported
  * `POST /invoices/mark-unexported` - Mark multiple invoices as unexported

* **Update Invoices**
  * `PATCH /invoices/:id` - Update invoice header, line items and dimensions