---
title: "Changes to Create an estimate"
method: POST
path: "/quickbooks-desktop/estimates"
---

# Changes to Create an estimate

`POST /quickbooks-desktop/estimates`

> Every recorded change to this operation, newest first.

## Timeline

Changed in 7 of 60 revisions.

- **2026-10-19** `1396ed78f0e1`: 13 warning
- **2026-08-21** `8ee3502091a4`: 1 warning
- **2026-05-02** `1de07095c4b7`: 18 warning
- **2026-05-02** `0adc2851bb7f`: 2 warning
- **2026-04-20** `10d4e9ebd1df`: 105 breaking, 28 info
- **2026-04-20** `8e0b7df2044d`: 86 breaking, 3 warning, 112 info
- **2026-04-20** `5f832f695675`: 108 breaking, 30 info

## Changes

- **2026-10-19** `1396ed78f0e1`: 13 warning
  - the `billingAddress/country` request property's maxLength was set to `31`
  - the `billingAddress/note` request property's maxLength was set to `41`
  - the `lineGroups/items/customFields/items/name` request property's maxLength was set to `31`
  - the `lineGroups/items/unitOfMeasure` request property's maxLength was set to `31`
  - the `lines/items/customFields/items/name` request property's maxLength was set to `31`
  - the `lines/items/description` request property's maxLength was set to `4095`
  - the `lines/items/otherCustomField1` request property's maxLength was set to `29`
  - the `lines/items/otherCustomField2` request property's maxLength was set to `29`
  - the `lines/items/unitOfMeasure` request property's maxLength was set to `31`
  - the `memo` request property's maxLength was set to `4095`
  - the `otherCustomField` request property's maxLength was set to `29`
  - the `shippingAddress/country` request property's maxLength was set to `31`
  - the `shippingAddress/note` request property's maxLength was set to `41`
- **2026-08-21** `8ee3502091a4`: 1 warning
  - added the new `transfer_inventory` enum value to the `linkedTransactions/items/transactionType` response property for the response status `200`
- **2026-05-02** `1de07095c4b7`: 18 warning
  - the `classId` request property's maxLength was set to `36`
  - the `customerId` request property's maxLength was set to `36`
  - the `customerMessageId` request property's maxLength was set to `36`
  - the `documentTemplateId` request property's maxLength was set to `36`
  - the `lineGroups/items/inventorySiteId` request property's maxLength was set to `36`
  - the `lineGroups/items/inventorySiteLocationId` request property's maxLength was set to `36`
  - the `lineGroups/items/itemGroupId` request property's maxLength was set to `36`
  - the `lines/items/classId` request property's maxLength was set to `36`
  - the `lines/items/inventorySiteId` request property's maxLength was set to `36`
  - the `lines/items/inventorySiteLocationId` request property's maxLength was set to `36`
  - the `lines/items/itemId` request property's maxLength was set to `36`
  - the `lines/items/overrideItemAccountId` request property's maxLength was set to `36`
  - the `lines/items/priceLevelId` request property's maxLength was set to `36`
  - the `lines/items/salesTaxCodeId` request property's maxLength was set to `36`
  - the `salesRepresentativeId` request property's maxLength was set to `36`
  - the `salesTaxCodeId` request property's maxLength was set to `36`
  - the `salesTaxItemId` request property's maxLength was set to `36`
  - the `termsId` request property's maxLength was set to `36`
- **2026-05-02** `0adc2851bb7f`: 2 warning
  - the `refNumber` request property's maxLength was set to `11`
  - the `shipmentOrigin` request property's maxLength was set to `13`
- **2026-04-20** `10d4e9ebd1df`: 105 breaking, 28 info
  - response property `customer/fullName` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `customer/id` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `dueDate` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `exchangeRate` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `externalId` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `isQueuedForEmail` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lineGroups/items/description` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lineGroups/items/itemGroup/fullName` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lineGroups/items/itemGroup/id` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lineGroups/items/lines/items/amount` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lineGroups/items/lines/items/description` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lineGroups/items/lines/items/markupRate` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lineGroups/items/lines/items/markupRatePercent` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lineGroups/items/lines/items/otherCustomField1` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lineGroups/items/lines/items/otherCustomField2` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lineGroups/items/lines/items/quantity` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lineGroups/items/lines/items/rate` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lineGroups/items/lines/items/ratePercent` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lineGroups/items/lines/items/unitOfMeasure` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lineGroups/items/quantity` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lineGroups/items/unitOfMeasure` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lines/items/amount` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lines/items/description` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lines/items/markupRate` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lines/items/markupRatePercent` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lines/items/otherCustomField1` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lines/items/otherCustomField2` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lines/items/quantity` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lines/items/rate` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lines/items/ratePercent` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lines/items/unitOfMeasure` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `linkedTransactions/items/amount` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `linkedTransactions/items/linkType` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `linkedTransactions/items/refNumber` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `memo` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `otherCustomField` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `purchaseOrderNumber` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `refNumber` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `salesTaxPercentage` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `salesTaxTotal` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - …93 more
- **2026-04-20** `8e0b7df2044d`: 86 breaking, 3 warning, 112 info
  - the response property `class` became nullable for the status `200`
  - the response property `currency` became nullable for the status `200`
  - the response property `customer/fullName` became nullable for the status `200`
  - the response property `customer/id` became nullable for the status `200`
  - the response property `customerMessage` became nullable for the status `200`
  - the response property `documentTemplate` became nullable for the status `200`
  - the response property `dueDate` became nullable for the status `200`
  - the response property `exchangeRate` became nullable for the status `200`
  - the response property `externalId` became nullable for the status `200`
  - the response property `isQueuedForEmail` became nullable for the status `200`
  - the response property `lineGroups/items/description` became nullable for the status `200`
  - the response property `lineGroups/items/itemGroup/fullName` became nullable for the status `200`
  - the response property `lineGroups/items/itemGroup/id` became nullable for the status `200`
  - the response property `lineGroups/items/lines/items/amount` became nullable for the status `200`
  - the response property `lineGroups/items/lines/items/class` became nullable for the status `200`
  - the response property `lineGroups/items/lines/items/description` became nullable for the status `200`
  - the response property `lineGroups/items/lines/items/inventorySite` became nullable for the status `200`
  - the response property `lineGroups/items/lines/items/inventorySiteLocation` became nullable for the status `200`
  - the response property `lineGroups/items/lines/items/item` became nullable for the status `200`
  - the response property `lineGroups/items/lines/items/markupRate` became nullable for the status `200`
  - the response property `lineGroups/items/lines/items/markupRatePercent` became nullable for the status `200`
  - the response property `lineGroups/items/lines/items/otherCustomField1` became nullable for the status `200`
  - the response property `lineGroups/items/lines/items/otherCustomField2` became nullable for the status `200`
  - the response property `lineGroups/items/lines/items/overrideUnitOfMeasureSet` became nullable for the status `200`
  - the response property `lineGroups/items/lines/items/quantity` became nullable for the status `200`
  - the response property `lineGroups/items/lines/items/rate` became nullable for the status `200`
  - the response property `lineGroups/items/lines/items/ratePercent` became nullable for the status `200`
  - the response property `lineGroups/items/lines/items/salesTaxCode` became nullable for the status `200`
  - the response property `lineGroups/items/lines/items/unitOfMeasure` became nullable for the status `200`
  - the response property `lineGroups/items/overrideUnitOfMeasureSet` became nullable for the status `200`
  - the response property `lineGroups/items/quantity` became nullable for the status `200`
  - the response property `lineGroups/items/unitOfMeasure` became nullable for the status `200`
  - the response property `lines/items/amount` became nullable for the status `200`
  - the response property `lines/items/class` became nullable for the status `200`
  - the response property `lines/items/description` became nullable for the status `200`
  - the response property `lines/items/inventorySite` became nullable for the status `200`
  - the response property `lines/items/inventorySiteLocation` became nullable for the status `200`
  - the response property `lines/items/item` became nullable for the status `200`
  - the response property `lines/items/markupRate` became nullable for the status `200`
  - the response property `lines/items/markupRatePercent` became nullable for the status `200`
  - …161 more
- **2026-04-20** `5f832f695675`: 108 breaking, 30 info
  - added the pattern `^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$` to the request property `dueDate`
  - added the pattern `^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$` to the request property `transactionDate`
  - added the pattern `^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$` to the request property `externalId`
  - response property `customer/fullName` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `customer/id` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `dueDate` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `exchangeRate` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `externalId` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `isQueuedForEmail` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lineGroups/items/description` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lineGroups/items/itemGroup/fullName` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lineGroups/items/itemGroup/id` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lineGroups/items/lines/items/amount` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lineGroups/items/lines/items/description` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lineGroups/items/lines/items/markupRate` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lineGroups/items/lines/items/markupRatePercent` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lineGroups/items/lines/items/otherCustomField1` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lineGroups/items/lines/items/otherCustomField2` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lineGroups/items/lines/items/quantity` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lineGroups/items/lines/items/rate` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lineGroups/items/lines/items/ratePercent` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lineGroups/items/lines/items/unitOfMeasure` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lineGroups/items/quantity` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lineGroups/items/unitOfMeasure` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lines/items/amount` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lines/items/description` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lines/items/markupRate` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lines/items/markupRatePercent` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lines/items/otherCustomField1` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lines/items/otherCustomField2` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lines/items/quantity` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lines/items/rate` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lines/items/ratePercent` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `lines/items/unitOfMeasure` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `linkedTransactions/items/amount` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `linkedTransactions/items/linkType` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `linkedTransactions/items/refNumber` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `memo` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `otherCustomField` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - response property `purchaseOrderNumber` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - …98 more

---

[Operation](https://skmtc.dev/conductor-is/apis/conductor-api/docs/quickbooks-desktop/estimates/post.md) - [API](https://skmtc.dev/conductor-is/apis/conductor-api.md) - [Page](https://skmtc.dev/conductor-is/apis/conductor-api/changes/quickbooks-desktop/estimates/post)
