---
title: "Bulk-approve invoices"
method: POST
path: "/invoices/bulk-approve"
tags: ["invoices"]
---

# Bulk-approve invoices

`POST /invoices/bulk-approve`

Submits multiple invoices for asynchronous approval. Returns a `batch_id` for polling progress via `GET /v1/batch/{batch_id}/progress` and retrieving per-invoice results via `GET /v1/batch/{batch_id}/results`.

## Headers

- `Authorization` string, required
- `X-Api-Key` string, required
- `X-API-Version` string
- `Idempotency-Key` string

## Request body

- object
  - `invoice_ids` string[], required — Invoice IDs to approve (max 100 per request)
  - `force_approve` boolean — Force-approve regardless of policy state (requires elevated permission; default false)

## Response `202`

Batch accepted for asynchronous processing

- InvoicesPostInvoicesBulkApproveResponse202 — Empty response body

## Other responses

- `400` — Bad request - Invalid parameters or request format
- `401` — Unauthorized - Authentication required or invalid credentials
- `403` — Forbidden - Access denied or insufficient permissions

---

[API](https://skmtc.dev/ottimate/apis/api-reference.md) · [All operations](https://skmtc.dev/ottimate/apis/api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/ottimate/api-reference/revisions/ba91ff4c6969/schema)
