---
title: "Update a bill"
method: PATCH
path: "/bills/{id}"
tags: ["Bills"]
---

# Update a bill

`PATCH /bills/{id}`

Partially update bill details. Cannot update bills in PROCESSING or PAID status.

## Path parameters

- `id` string, required

## Request body

- PatchBillInput — Bill patch request (partial update)
  - `amount` number
  - `description` string
  - `due_date` string
  - `issue_date` string
  - `line_items` LineItemsUpdateInput — Line items update with optional replacement
    - `items` BillLineItemInput[]
      - `description` string
      - `expense_account_id` string — ExpenseAccountID is an optional GL/expense account ID used to categorize this line item. Omit to leave it uncategorized.
      - `name` string
      - `quantity` number
      - `tax` number
      - `total` number
      - `unit_price` number
      - `unit_type` string
    - `replace` boolean
  - `vendor_id` string

## Response `200`

OK

- BillReply — Bill details
  - `amount` number
  - `created_at` string
  - `description` string
  - `due_date` string
  - `id` string
  - `issue_date` string
  - `last_status` BillStatusReply — Bill status history entry
    - `created_at` string
    - `reason` string
    - `status` 'draft' | 'needs_approval' | 'processing' | 'paid' | 'deleted' | 'failed' — Bill status enum
    - `user_id` string
  - `line_items` LineItemReply[]
    - `description` string
    - `expense_account_id` string
    - `name` string
    - `quantity` number
    - `sequence` integer
    - `tax` number
    - `total` number
    - `unit_price` number
    - `unit_type` string
  - `number` string
  - `pay_date` string
  - `source` 'manual' | 'quickbooks' | 'ocr' — Bill source enum
  - `status` 'draft' | 'needs_approval' | 'processing' | 'paid' | 'deleted' | 'failed' — Bill status enum
  - `updated_at` string
  - `vendor_id` string
  - `vendor_payments` VendorPaymentReply[]
    - `attempt_number` integer
    - `estimated_arrival_date` string
    - `failure_reason` string
    - `hold_until` string
    - `id` string
    - `payment_method_id` string
    - `payment_speed` 'standard' | 'next_day' | 'same_day' | 'instant' — Payment speed enum
    - `sent_at` string
    - `status` 'hold' | 'waiting_pay_date' | 'ready' | 'processing' | 'succeeded' | 'failed' — Vendor payment status enum

## Other responses

- `400` — Bad Request
- `404` — Not Found
- `409` — Conflict

---

[API](https://skmtc.net/alternativepayments/apis/alternative-payments.md) · [All operations](https://skmtc.net/alternativepayments/apis/alternative-payments/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/alternativepayments/alternative-payments/revisions/730efda86cd1/schema)
