---
title: "Update the line items of a receivable"
method: PUT
path: "/receivables/{receivable_id}/line_items"
tags: ["Receivables"]
---

# Update the line items of a receivable

`PUT /receivables/{receivable_id}/line_items`

## Request

- Base URL: `https://api.sandbox.monite.com/v1`
- URL: `https://api.sandbox.monite.com/v1/receivables/{receivable_id}/line_items`
- Auth: HTTP bearer

Use this endpoint to update the line items in:

 * draft quotes,
 * invoices in the `draft` and `recurring` statuses,
 * ([non-compliant mode only](https://docs.monite.com/accounts-receivable/regulatory-compliance/invoice-compliance)) invoices in the `issued` and `overdue` statuses.

Invoices and quotes in other statuses cannot be updated.

The list of line items provided in the request body fully replaces all previous line items in the specified document.

To update the line items in draft credit notes, use [`PATCH /receivables/{receivable_id}`](https://docs.monite.com/api/receivables/patch-receivables-id) instead.

## Path parameters

- `receivable_id` string, required

## Headers

- `x-monite-version` string, required
- `x-monite-entity-id` string, required

## Request body

- object
  - `data` LineItem[], required: The new list of line items that will replace existing line items.
    - `accounting_tax_rate_id` string, uuid: ID of the tax rate in the connected accounting system, to be used when pushing the invoice to that accounting system. Use `GET /accounting_tax_rates` to get these IDs. If omitted, Monite will attempt to match the tax rates based on their numeric value.
    - `custom_vat_rate_id` string, uuid: ID of the user-defined VAT or tax rate created via `/custom_vat_rates`. Can be used by entities in any country. This field is mutually exclusive with `vat_rate_id` and `tax_rate_value`.
    - `discount` Discount
      - `amount` integer, required: The actual discount of the product in [minor units](https://docs.monite.com/references/currencies#minor-units) if type field equals amount, else in percent minor units
      - `type` 'amount' | 'percentage', required
    - `product` LineItemProductCreate
      - `description` string: Description of the product.
      - `external_reference` string: A user-defined identifier of the product. For example, an internal product code or SKU (stock keeping unit). Client applications can use this field to map the products in Monite to an external product catalog.
      - `ledger_account_id` string, uuid
      - `measure_unit` UnitRequest
        - `description` string
        - `name` string, required
      - `name` string, required: Name of the product.
      - `price` Price, required
        - `currency` 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SEK' | 'SGD' | 'SHP' | 'SLE' | 'SOS' | 'SRD' | 'SSP' | 'SVC' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYU' | 'UZS' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMW', required
        - `value` integer, required: The actual price of the product.
      - `smallest_amount` number, double: The smallest amount allowed for this product.
      - `type` 'product' | 'service'
    - `product_id` string, uuid: Unique identifier of the product.
    - `quantity` number, double, required: The quantity of each of the goods, materials, or services listed in the receivable.
    - `tax_rate_name` string: Has effect only if `tax_rate_value` is used. Specifies the display name of that tax rate.
    - `tax_rate_value` integer: The VAT or tax rate value multiplied by 100. For example, 12.5% is represented as 1250. Can be used only by entities from [countries](https://docs.monite.com/accounts-receivable/vat-rates#supported-countries) not covered by Monite's built-in catalog of VAT rates. This field is mutually exclusive with `vat_rate_id` and `custom_vat_rate_id`.
    - `tax_status` 'taxable' | 'exempt' | 'non_taxable'
    - `vat_rate_id` string, uuid: ID of a VAT or tax rate from Monite's [built-in catalog](https://docs.monite.com/api/vat-rates/get-vat-rates). Can be used only for [select countries](https://docs.monite.com/accounts-receivable/vat-rates#supported-countries). This field is mutually exclusive with `custom_vat_rate_id` and `tax_rate_value`.

## Response `200`

Successful Response

- LineItemsResponse
  - `data` ResponseItem[], required: The list of line items.
    - `discount` Discount
      - `amount` integer, required: The actual discount of the product in [minor units](https://docs.monite.com/references/currencies#minor-units) if type field equals amount, else in percent minor units
      - `type` 'amount' | 'percentage', required
    - `product` LineItemProduct, required
      - `id` string, uuid, required: Unique ID of the product.
      - `accounting_tax_rate_id` string, uuid: Unique identifier of the accounting tax rate object.
      - `description` string: Description of the product.
      - `external_reference` string: A user-defined identifier of the product. For example, an internal product code or SKU (stock keeping unit). Client applications can use this field to map the products in Monite to an external product catalog.
      - `is_inline` boolean: Indicates whether the product is inline
      - `ledger_account_id` string, uuid
      - `measure_unit` LineItemProductMeasureUnit
        - `id` string, uuid
        - `description` string
        - `name` string, required
      - `name` string, required: Name of the product.
      - `price` Price, required
        - `currency` 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SEK' | 'SGD' | 'SHP' | 'SLE' | 'SOS' | 'SRD' | 'SSP' | 'SVC' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYU' | 'UZS' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMW', required
        - `value` integer, required: The actual price of the product.
      - `price_after_vat` Price, required
        - `currency` 'AED' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AUD' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BDT' | 'BGN' | 'BHD' | 'BIF' | 'BMD' | 'BND' | 'BOB' | 'BRL' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BZD' | 'CAD' | 'CDF' | 'CHF' | 'CLP' | 'CNY' | 'COP' | 'CRC' | 'CVE' | 'CZK' | 'DJF' | 'DKK' | 'DOP' | 'DZD' | 'EGP' | 'ETB' | 'EUR' | 'FJD' | 'FKP' | 'GBP' | 'GEL' | 'GHS' | 'GIP' | 'GMD' | 'GNF' | 'GTQ' | 'GYD' | 'HKD' | 'HNL' | 'HTG' | 'HUF' | 'IDR' | 'ILS' | 'INR' | 'IQD' | 'ISK' | 'JMD' | 'JOD' | 'JPY' | 'KES' | 'KGS' | 'KHR' | 'KMF' | 'KRW' | 'KWD' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'LRD' | 'LSL' | 'LYD' | 'MAD' | 'MDL' | 'MGA' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MUR' | 'MVR' | 'MWK' | 'MXN' | 'MYR' | 'MZN' | 'NAD' | 'NGN' | 'NIO' | 'NOK' | 'NPR' | 'NZD' | 'OMR' | 'PAB' | 'PEN' | 'PGK' | 'PHP' | 'PKR' | 'PLN' | 'PYG' | 'QAR' | 'RON' | 'RSD' | 'RUB' | 'RWF' | 'SAR' | 'SBD' | 'SCR' | 'SEK' | 'SGD' | 'SHP' | 'SLE' | 'SOS' | 'SRD' | 'SSP' | 'SVC' | 'SZL' | 'THB' | 'TJS' | 'TMT' | 'TND' | 'TOP' | 'TRY' | 'TTD' | 'TWD' | 'TZS' | 'UAH' | 'UGX' | 'USD' | 'UYU' | 'UZS' | 'VND' | 'VUV' | 'WST' | 'XAF' | 'XCD' | 'XOF' | 'XPF' | 'YER' | 'ZAR' | 'ZMW', required
        - `value` integer, required: The actual price of the product.
      - `smallest_amount` number, double: The smallest amount allowed for this product.
      - `type` 'product' | 'service'
      - `vat_rate` LineItemProductVatRate, required
        - `id` string, uuid: Unique identifier of the vat rate object.
        - `components` VatRateComponent[]: Sub-taxes included in the VAT.
          - `name` string, required: Display name of the Tax.
          - `value` number, double, required: Percent multiplied by a 100. Example: 12.125% is 1212.5. Will be rounded to 2 decimal places
        - `country` 'AF' | 'AX' | 'AL' | 'DZ' | 'AS' | 'AD' | 'AO' | 'AI' | 'AQ' | 'AG' | 'AR' | 'AM' | 'AW' | 'AU' | 'AT' | 'AZ' | 'BS' | 'BH' | 'BD' | 'BB' | 'BY' | 'BE' | 'BZ' | 'BJ' | 'BM' | 'BT' | 'BO' | 'BA' | 'BW' | 'BV' | 'BR' | 'IO' | 'BN' | 'BG' | 'BF' | 'BI' | 'KH' | 'CM' | 'CA' | 'IC' | 'CV' | 'KY' | 'CF' | 'EA' | 'TD' | 'CL' | 'CN' | 'CX' | 'CC' | 'CO' | 'KM' | 'CG' | 'CD' | 'CK' | 'CR' | 'CI' | 'HR' | 'CU' | 'CY' | 'CZ' | 'DK' | 'DJ' | 'DM' | 'DO' | 'EC' | 'EG' | 'SV' | 'GQ' | 'ER' | 'EE' | 'SZ' | 'ET' | 'FK' | 'FO' | 'FJ' | 'FI' | 'FR' | 'GF' | 'PF' | 'TF' | 'GA' | 'GM' | 'GE' | 'DE' | 'GH' | 'GI' | 'GR' | 'GL' | 'GD' | 'GP' | 'GU' | 'GT' | 'GG' | 'GN' | 'GW' | 'GY' | 'HT' | 'HM' | 'VA' | 'HN' | 'HK' | 'HU' | 'IS' | 'IN' | 'ID' | 'IR' | 'IQ' | 'IE' | 'IM' | 'IL' | 'IT' | 'JM' | 'JP' | 'JE' | 'JO' | 'KZ' | 'KE' | 'KI' | 'KP' | 'KR' | 'KW' | 'KG' | 'LA' | 'LV' | 'LB' | 'LS' | 'LR' | 'LY' | 'LI' | 'LT' | 'LU' | 'MO' | 'MG' | 'MW' | 'MY' | 'MV' | 'ML' | 'MT' | 'MH' | 'MQ' | 'MR' | 'MU' | 'YT' | 'MX' | 'FM' | 'MD' | 'MC' | 'MN' | 'ME' | 'MS' | 'MA' | 'MZ' | 'MM' | 'NA' | 'NR' | 'NP' | 'NL' | 'AN' | 'NC' | 'NZ' | 'NI' | 'NE' | 'NG' | 'NU' | 'NF' | 'MP' | 'MK' | 'NO' | 'OM' | 'PK' | 'PW' | 'PS' | 'PA' | 'PG' | 'PY' | 'PE' | 'PH' | 'PN' | 'PL' | 'PT' | 'PR' | 'QA' | 'RE' | 'RO' | 'RU' | 'RW' | 'SH' | 'KN' | 'LC' | 'PM' | 'VC' | 'WS' | 'SM' | 'ST' | 'SA' | 'SN' | 'RS' | 'SC' | 'SL' | 'SG' | 'SK' | 'SI' | 'SB' | 'SO' | 'ZA' | 'SS' | 'GS' | 'ES' | 'LK' | 'SD' | 'SR' | 'SJ' | 'SE' | 'CH' | 'SY' | 'TW' | 'TJ' | 'TZ' | 'TH' | 'TL' | 'TG' | 'TK' | 'TO' | 'TT' | 'TN' | 'TR' | 'TM' | 'TC' | 'TV' | 'UG' | 'UA' | 'AE' | 'GB' | 'US' | 'UM' | 'UY' | 'UZ' | 'VU' | 'VE' | 'VN' | 'VG' | 'VI' | 'WF' | 'EH' | 'YE' | 'ZM' | 'ZW' | 'BL' | 'BQ' | 'CW' | 'MF' | 'SX', required
        - `is_custom` boolean: Indicates whether this vat rate is defined by user.
        - `name` string: Display name of the vat rate.
        - `value` integer, required: Percent minor units. Example: 12.5% is 1250.
    - `quantity` number, double, required: The quantity of each of the goods, materials, or services listed in the receivable.
    - `tax_status` 'taxable' | 'exempt' | 'non_taxable'
    - `total_after_vat` integer, required: Total of line_item after VAT with applied line item discount in [minor units](https://docs.monite.com/references/currencies#minor-units).
    - `total_before_vat` integer, required: Total of line_item before VAT in [minor units](https://docs.monite.com/references/currencies#minor-units).

## Other responses

- `400`: Bad Request
- `401`: The `Authorization` header is missing or contains an invalid or expired access token. See [Authentication](https://docs.monite.com/api/concepts/authentication) to learn how to authenticate API calls.
- `403`: The specified access token does not have permissions to perform this operation.
- `404`: An invoice or quote with the specified ID was not found.
- `409`: Possible reasons: * The specified invoice or quote is in a status that cannot be edited. * `receivable_id` specifies an unsupported document type, such as a credit note.
- `422`: Validation Error
- `429`: API rate limit has been exceeded. Check the response headers for the rate limit information.

---

[API](https://skmtc.dev/monite/apis/monite-2.md) - [All operations](https://skmtc.dev/monite/apis/monite-2/llms.txt) - [OpenAPI document](https://skmtc.dev/monite/apis/monite-2/revisions/4299ccf95edb?raw)
