---
title: "Updates metadata for multiple bills"
method: POST
path: "/bills/metadata/bulk"
tags: ["Bills"]
---

# Updates metadata for multiple bills

`POST /bills/metadata/bulk`

## Request

- Base URL: `https://api.rillet.com`
- URL: `https://api.rillet.com/bills/metadata/bulk`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/rillet/apis/rillet-accounting-api/docs/bills/metadata/bulk/post.ts> (a function with typed inputs; its response is checked against the schema)

Patches metadata on up to 1,000 bills in one atomic request. Each bill may receive
different values. If a bill is missing or any key or value is invalid, nothing is
written for any bill. Per bill this behaves exactly like patch-bill-metadata:
keys omitted for that bill are left unchanged; null, empty, and whitespace-only values
clear that key. If any bill has a pending approval request, the entire request is
rejected with a 400 and nothing is written.

## Request body

- BulkUpdateBillMetadataRequest
  - `bills` BulkBillMetadataUpdate[], required
    - `bill_id` string, uuid, required
    - `metadata` object, required: Partial update for this bill. Omitted keys are left unchanged; null or empty values clear a key.

## Response `200`

OK

- BulkUpdateBillMetadataResponse
  - `bills` BulkBillMetadataResult[], required
    - `bill_id` string, uuid, required
    - `metadata` object, required

## Other responses

- `default`: Error

## Changes

- **2026-11-03** `c393d0102005`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/rillet/apis/rillet-accounting-api/changes/bills/metadata/bulk/post.md)

---

[API](https://skmtc.dev/rillet/apis/rillet-accounting-api.md) - [All operations](https://skmtc.dev/rillet/apis/rillet-accounting-api/llms.txt) - [OpenAPI document](https://skmtc.dev/rillet/apis/rillet-accounting-api/revisions/c393d0102005?raw)
