---
title: "Create bill line item"
method: POST
path: "/bills/{bill_id}/line-items/"
tags: ["Bill Line Items"]
---

# Create bill line item

`POST /bills/{bill_id}/line-items/`

## Request

- Base URL: `https://api.wafeq.com/v1`
- URL: `https://api.wafeq.com/v1/bills/{bill_id}/line-items/`
- Auth: API key in header `Authorization`

Endpoint for creating a new bill line item.

## Path parameters

- `bill_id` string, required

## Query parameters

- `expand` string

## Headers

- `X-Wafeq-Idempotency-Key` string

## Request body

- ApiV1BillLineItem: A line item of a bill.
  - `account` string, required: The account associated with this line item.
  - `amortization` ApiV1AmortizationInput: The payload to create an amortization schedule for a bill line item.
    - `account` string, required: The expense account used for amortization recognition.
    - `amount` number, double, required: The total amount to amortize.
    - `description` string, required: The description of the amortization.
    - `duration` '3_MONTHS' | '4_MONTHS' | '6_MONTHS' | '12_MONTHS' | '24_MONTHS' | 'CUSTOM', required: Duration over which an amount is recognized or amortized. [View the enum reference](durationenum)
    - `end_date` string, date, required: The end date of the amortization schedule.
    - `recognition_type` 'DAILY' | 'MONTHLY', required: Schedule used to recognize deferred amounts. [View the enum reference](recognitiontypeenum)
    - `start_date` string, date, required: The start date of the amortization schedule.
    - `use_entity_date` boolean, required: Whether the amortization start date follows the bill date.
  - `amortization_id` string, nullable, required: The unique identifier of the amortization linked to this line item, if any.
  - `cost_center` string: The cost center associated with this line item, if any.
  - `created_ts` string, date-time, required: The timestamp in UTC when the line item was created.
  - `custom_fields` object: A mapping of custom field IDs to their values.
  - `description` string, required: The detailed description of the line item.
  - `discount` number, double, nullable: The discount as the percentage.
  - `id` string, required: The unique identifier of the line item.
  - `item` string: The item associated with this line item.
  - `item_unit_of_measure` string, nullable: The item unit of measure for this line item.
  - `legacy_id` string, required: [Deprecated] The legacy identifier of the line item.
  - `line_amount` number, double, required: The total amount for this line item, calculated as quantity * unit_amount - discount.
  - `modified_ts` string, date-time, required: The timestamp in UTC when the line item was last modified.
  - `order` integer: The position of the line item within the document.
  - `quantity` number, double, required: The quantity of the item or service.
  - `tax_amount` number, double, required: The total tax amount for this line item.
  - `tax_rate` string: The tax rate applied to this line item, if any.
  - `unit_amount` number, double, required: The price per unit of the item or service.

## Response `201`

- ApiV1BillLineItem: A line item of a bill.
  - `account` string, required: The account associated with this line item.
  - `amortization` ApiV1AmortizationInput: The payload to create an amortization schedule for a bill line item.
    - `account` string, required: The expense account used for amortization recognition.
    - `amount` number, double, required: The total amount to amortize.
    - `description` string, required: The description of the amortization.
    - `duration` '3_MONTHS' | '4_MONTHS' | '6_MONTHS' | '12_MONTHS' | '24_MONTHS' | 'CUSTOM', required: Duration over which an amount is recognized or amortized. [View the enum reference](durationenum)
    - `end_date` string, date, required: The end date of the amortization schedule.
    - `recognition_type` 'DAILY' | 'MONTHLY', required: Schedule used to recognize deferred amounts. [View the enum reference](recognitiontypeenum)
    - `start_date` string, date, required: The start date of the amortization schedule.
    - `use_entity_date` boolean, required: Whether the amortization start date follows the bill date.
  - `amortization_id` string, nullable, required: The unique identifier of the amortization linked to this line item, if any.
  - `cost_center` string: The cost center associated with this line item, if any.
  - `created_ts` string, date-time, required: The timestamp in UTC when the line item was created.
  - `custom_fields` object: A mapping of custom field IDs to their values.
  - `description` string, required: The detailed description of the line item.
  - `discount` number, double, nullable: The discount as the percentage.
  - `id` string, required: The unique identifier of the line item.
  - `item` string: The item associated with this line item.
  - `item_unit_of_measure` string, nullable: The item unit of measure for this line item.
  - `legacy_id` string, required: [Deprecated] The legacy identifier of the line item.
  - `line_amount` number, double, required: The total amount for this line item, calculated as quantity * unit_amount - discount.
  - `modified_ts` string, date-time, required: The timestamp in UTC when the line item was last modified.
  - `order` integer: The position of the line item within the document.
  - `quantity` number, double, required: The quantity of the item or service.
  - `tax_amount` number, double, required: The total tax amount for this line item.
  - `tax_rate` string: The tax rate applied to this line item, if any.
  - `unit_amount` number, double, required: The price per unit of the item or service.

## Changes

- **2026-11-03** `b8f5e10134b4`: 4 breaking, 5 info
  - removed `#/components/schemas/AmortizationInput` from the `amortization` request property `oneOf` list (media type: application/json)
  - removed `#/components/schemas/AmortizationInput` from the `amortization` request property `oneOf` list (media type: application/x-www-form-urlencoded)
  - removed `#/components/schemas/AmortizationInput` from the `amortization` request property `oneOf` list (media type: multipart/form-data)
  - added `#/components/schemas/api-v1-amortization-input` to the `amortization` response property `oneOf` list for the response status `201`
  - …5 more

[Operation history](https://skmtc.dev/wafeq/apis/wafeq-public-api/changes/bills/:bill_id/line-items/post.md)

---

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