---
title: "Update accounting records"
method: POST
path: "/v3/accounting/records"
tags: ["Accounting"]
---

# Update accounting records

`POST /v3/accounting/records`

## Request

- Base URL: `https://api.brex.com`
- URL: `https://api.brex.com/v3/accounting/records`
- Auth: one of:
  - HTTP bearer
  - OAuth 2
    - Authorization code: `https://accounts-api.brex.com/oauth2/default/v1/authorize`
    - Token URL: `https://accounts-api.brex.com/oauth2/default/v1/token` scopes: `accounting.record.write`
- TypeScript: <https://skmtc.dev/brex-com/apis/accounting-api/docs/v3/accounting/records/post.ts> (a function with typed inputs; its response is checked against the schema)

Applies the same field changes to up to 50 non-itemized card or reimbursement accounting records. Omitted fields are preserved. Field changes are applied to the source expense and then materialized to its accounting records. Results report each requested record; successful updates remain when other records fail.

## Request body

- UpdateAccountingRecordsBody
  - `accounting_fields` object[], required
    - `bool_value` boolean, nullable
    - `date_value` string, date, nullable
    - `enum_value` string, nullable
    - `field_id` string, required: Field brex_id from accounting field discovery.
    - `is_deleted` boolean, nullable
    - `number_value` number, nullable
    - `string_value` string, nullable
    - `value_id` string, nullable: Option brex_id for an option field.
  - `accounting_record_ids` string[], required

## Response `200`

OK

- UpdateAccountingRecordsResponseOutput
  - `results` union[], required
    - union
      - object
        - `accounting_record` object, required
          - `amount` object, required
            - `amount` number, required
            - `currency` string, required
          - `billing_amount` object, nullable
            - `amount` number, required
            - `currency` string, required
          - `due_at` string, nullable
          - `erp_posting_date` string, required
          - `id` string, required
          - `invoice_number` string, nullable
          - `line_items` object[], required
            - `accounting_field_values` object[], required
              - …
            - `amortization` object, nullable
              - …
            - `amount` object, required
              - …
            - `billing_amount` object, nullable
              - …
            - `id` string, required
            - `memo` string, nullable
            - `original_amount` object, nullable
              - …
            - `type` 'CREDIT' | 'DEBIT', required
          - `memo` string, nullable
          - `original_amount` object, nullable
            - `amount` number, required
            - `currency` string, required
          - `posted_at` string, required
          - `receipts` object[], nullable
            - `download_uris` string[]
            - `id` string, required
          - `review_status` 'PREPARE' | 'REVIEW' | 'EXPORTED' | 'READY_FOR_EXPORT', required
          - `source_id` string
          - `source_type` 'CARD' | 'REIMBURSEMENT' | 'BILL', required
          - `status` 'APPROVED' | 'CANCELED' | 'DRAFT' | 'OUT_OF_POLICY' | 'SETTLED' | 'SPLIT' | 'SUBMITTED' | 'VOID' | 'null', nullable: The source expense's approval/lifecycle status.
          - `type` 'CARD_EXPENSE_POST' | 'CARD_EXPENSE_REPAYMENT' | 'REIMBURSEMENT_EXPENSE_REPAYMENT' | 'REIMBURSEMENT_EXPENSE_APPROVAL' | 'REIMBURSEMENT_EXPENSE_MONEY_MOVEMENT_PAYOUT' | 'REIMBURSEMENT_EXPENSE_MONEY_MOVEMENT_PAYIN' | 'REIMBURSEMENT_EXPENSE_POST' | 'CARD_PAYMENT' | 'REWARD_REDEMPTION' | 'REIMBURSEMENT_EXPENSE_MONEY_MOVEMENT_REFUND' | 'CARD_EXPENSE_REFUND' | 'CARD_PAYMENT_REFUND' | 'REIMBURSEMENT_EXPENSE_MONEY_MOVEMENT_PAYOUT_REVERSAL' | 'INVOICE' | 'INVOICE_PAYMENT' | 'BILL_EXPENSE' | 'BILL_EXPENSE_PAYMENT' | 'BILL_EXPENSE_CARD_PAYMENT' | 'BILL_MONEY_MOVEMENT_PAYIN', required
          - `updated_at` string, required
          - `user` object, nullable
            - `account_id` string, nullable: The ID of the account the user belongs to (e.g., cuacc_1234)
            - `brex_assistant` object, nullable: The resolved Brex Assistant state. Null unless include contains 'brex_assistant'.
              - …
            - `department_id` string, nullable: The ID of the user's department
            - `department_name` string, nullable: The user's department name (e.g., Engineering)
            - `email` string, nullable: The user's email address (e.g., john.doe@example.com)
            - `first_name` string, required: The user's first name (e.g., John)
            - `id` string, required: The ID of the user (e.g., cuuser_abc123def456ghi789jkl012)
            - `last_name` string, required: The user's last name (e.g., Doe)
            - `location_id` string, nullable: The ID of the user's location
            - `location_name` string, nullable: The user's location name (e.g., San Francisco)
            - `manager_first_name` string, nullable: The user's manager first name
            - `manager_id` string, nullable: The ID of the user's manager
            - `manager_last_name` string, nullable: The user's manager last name
            - `manager_title_id` string, nullable: The user's manager title ID
            - `manager_title_name` string, nullable: The user's manager title display name
            - `metadata` object, nullable: Customer-defined user metadata
            - `notification_preferences` object, nullable: The user's notification preferences across Brex. Null unless include contains 'notification_preferences', or when the caller cannot read this user.
              - …
            - `phone_number` string, nullable: The user's phone number. Null unless include contains 'phone_number'.
            - `role` 'ACCOUNT_ADMIN' | 'AP_CLERK' | 'BOOKKEEPER' | 'CARD_ADMIN' | 'EMPLOYEE' | 'EMPLOYEE_WITHOUT_CORP_CARDS' | 'EXPENSE_ADMIN' | 'SUPER_ADMIN' | 'USER_MANAGEMENT_ADMIN' | 'null', nullable: The user's role in the system (e.g., CARD_ADMIN). See UserRole enum for values.
            - `status` 'ACTIVE' | 'ARCHIVED' | 'DELETED' | 'DISABLED' | 'INACTIVE' | 'INVITED' | 'PENDING_ACTIVATION', required: The user's status in the system (e.g., ACTIVE)
            - `title_id` string, nullable: The user's title ID
            - `title_name` string, nullable: The user's title display name (e.g., Software Engineer)
          - `vendor` object, nullable
            - `contact_name` string, nullable
            - `email` string, nullable
            - `id` string, required
            - `name` string, required
            - `phone` string, nullable
            - `website` string, nullable
          - `version` number, nullable
        - `accounting_record_id` string, required
        - `status` 'updated', required
      - object
        - `accounting_record_id` string, required
        - `error` object, required
          - `code` 'NOT_FOUND' | 'UNSUPPORTED_SOURCE_TYPE' | 'ITEMIZED_EXPENSE_NOT_SUPPORTED' | 'RECORD_NOT_EDITABLE' | 'FIELD_NOT_EDITABLE' | 'INVALID_FIELD_VALUE' | 'PERMISSION_DENIED' | 'UPDATE_FAILED' | 'UPDATE_OUTCOME_UNKNOWN', required
          - `message` string, required
        - `status` 'failed', required

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `503`: Service Unavailable

## Changes

- **2026-11-06** `abca76caa09d`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/brex-com/apis/accounting-api/changes/v3/accounting/records/post.md)

---

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