---
title: "Changes to Create PurchaseOrder record"
method: POST
path: "/public/v2/purchase-orders/"
---

# Changes to Create PurchaseOrder record

`POST /public/v2/purchase-orders/`

> Every recorded change to this operation, newest first.

## Timeline

Changed in 15 of 37 revisions.

- **2026-10-19** `7588ae19aaff`: 1 info
- **2026-10-14** `3d645439b1e4`: 1 info
- **2026-10-09** `78a095dc747f`: 6 info
- **2026-10-06** `f8de2ceea61d`: 1 warning, 6 info
- **2026-10-01** `8f0a589ca348`: 8 breaking, 8 info
- **2026-09-29** `4b2d6ee0dff6`: 7 info
- **2026-09-26** `9f0ddd3870e6`: 2 info
- **2026-09-22** `16adf1baac76`: 10 info
- **2026-09-18** `5bd4dbaf2e9c`: 11 info
- **2026-09-01** `d09369419a42`: 1 info
- **2026-08-28** `48edcb3acb74`: 2 warning, 3 info
- **2026-08-22** `dcb8297898a2`: 1 breaking, 9 info
- **2026-08-12** `34b7cf5b4b6c`: 1 info
- **2026-08-05** `525a590a98f8`: 2 info
- **2026-07-31** `506e6073d191`: 1 breaking, 4 info

## Changes

- **2026-10-19** `7588ae19aaff`: 1 info
  - added the new optional `query` request parameter `apply_default_classifications`
- **2026-10-14** `3d645439b1e4`: 1 info
  - added the new optional request property `auto_calculate_tax`
- **2026-10-09** `78a095dc747f`: 6 info
  - added the new optional request property `expenses`
  - the request property `items` became optional
  - the `items` request property default value `` was added
  - added the optional property `expense_billed_total` to the response with the `200` status
  - added the optional property `expense_due_total` to the response with the `200` status
  - added the optional property `expenses` to the response with the `200` status
- **2026-10-06** `f8de2ceea61d`: 1 warning, 6 info
  - removed the request property `tax_metadata/anyOf[subschema #1: RecordTaxMetadata -> #/components/schemas/RecordTaxMetadata]/avalara`
  - added the optional property `created_by/anyOf[subschema #1: AuditActorSchemaOut]/agent_id` to the response with the `200` status
  - added the optional property `created_by/anyOf[subschema #1: AuditActorSchemaOut]/agent_name` to the response with the `200` status
  - added the optional property `created_by/anyOf[subschema #1: AuditActorSchemaOut]/via` to the response with the `200` status
  - added the optional property `updated_by/anyOf[subschema #1: AuditActorSchemaOut]/agent_id` to the response with the `200` status
  - added the optional property `updated_by/anyOf[subschema #1: AuditActorSchemaOut]/agent_name` to the response with the `200` status
  - added the optional property `updated_by/anyOf[subschema #1: AuditActorSchemaOut]/via` to the response with the `200` status
- **2026-10-01** `8f0a589ca348`: 8 breaking, 8 info
  - the response property `ship_from_address/anyOf[subschema #1: AddressSchemaOut]/country` became optional for the status `200`
  - the response property `ship_from_address/anyOf[subschema #1: AddressSchemaOut]/second_line` became optional for the status `200`
  - the response property `ship_from_address/anyOf[subschema #1: AddressSchemaOut]/state` became optional for the status `200`
  - the response property `ship_to_address/anyOf[subschema #1: AddressSchemaOut]/country` became optional for the status `200`
  - the response property `ship_to_address/anyOf[subschema #1: AddressSchemaOut]/second_line` became optional for the status `200`
  - the response property `ship_to_address/anyOf[subschema #1: AddressSchemaOut]/state` became optional for the status `200`
  - the `ship_from_address/anyOf[subschema #1: AddressSchemaOut]/country` response's property type changed from `string` to no type for status `200`
  - the `ship_to_address/anyOf[subschema #1: AddressSchemaOut]/country` response's property type changed from `string` to no type for status `200`
  - added `#/components/schemas/SystemCountries, subschema #1` to the `ship_from_address/anyOf[subschema #1: AddressSchemaOut]/country` response property `anyOf` list for the response status `200`
  - added `#/components/schemas/SystemCountries, subschema #1` to the `ship_to_address/anyOf[subschema #1: AddressSchemaOut]/country` response property `anyOf` list for the response status `200`
  - the `country` response's property default value `` was added for the status `200`
  - the `country` response's property default value `` was added for the status `200`
  - the `second_line` response's property default value `` was added for the status `200`
  - the `second_line` response's property default value `` was added for the status `200`
  - the `state` response's property default value `` was added for the status `200`
  - the `state` response's property default value `` was added for the status `200`
- **2026-09-29** `4b2d6ee0dff6`: 7 info
  - added the optional property `error_code` to the response with the `404` status
  - added the optional property `error_code` to the response with the `422` status
  - added the optional property `error_code` to the response with the `500` status
  - added the optional property `error_reason` to the response with the `404` status
  - added the optional property `error_reason` to the response with the `422` status
  - added the optional property `error_reason` to the response with the `500` status
  - added the optional property `items/items/tax/anyOf[subschema #1: ItemTaxDataOut]/valid_to` to the response with the `200` status
- **2026-09-26** `9f0ddd3870e6`: 2 info
  - added the optional property `code` to the response with the `200` status
  - added the optional property `items/items/tax/anyOf[subschema #1: ItemTaxDataOut]/rate_description` to the response with the `200` status
- **2026-09-22** `16adf1baac76`: 10 info
  - added the new optional request property `items/items/billable_customer_id`
  - added the new optional request property `items/items/billable_markup_pct`
  - added the new optional request property `items/items/billable_project_id`
  - added the new optional request property `items/items/is_billable`
  - added the optional property `items/items/billable_customer_id` to the response with the `200` status
  - added the optional property `items/items/billable_customer_name` to the response with the `200` status
  - added the optional property `items/items/billable_markup_pct` to the response with the `200` status
  - added the optional property `items/items/billable_project_id` to the response with the `200` status
  - added the optional property `items/items/billable_project_name` to the response with the `200` status
  - added the optional property `items/items/is_billable` to the response with the `200` status
- **2026-09-18** `5bd4dbaf2e9c`: 11 info
  - added the new optional request property `expected_location_id`
  - added the new optional request property `items/items/expected_location_id`
  - added the new optional request property `ship_from_address`
  - added the new optional request property `ship_to_address`
  - added the new optional request property `tax_metadata`
  - added the optional property `expected_location_id` to the response with the `200` status
  - added the optional property `expected_location_name` to the response with the `200` status
  - added the optional property `items/items/expected_location_id` to the response with the `200` status
  - added the optional property `items/items/expected_location_name` to the response with the `200` status
  - added the optional property `ship_from_address` to the response with the `200` status
  - added the optional property `ship_to_address` to the response with the `200` status
- **2026-09-01** `d09369419a42`: 1 info
  - added the required property `lifecycle_status` to the response with the `200` status
- **2026-08-28** `48edcb3acb74`: 2 warning, 3 info
  - removed the optional property `has_more_lines` from the response with the `200` status
  - removed the optional property `lines_count` from the response with the `200` status
  - api operation id `create_PurchaseOrderV2_record` removed and replaced with `create_PurchaseOrder_record`
  - the response property `items` became required for the status `200`
  - the `items` response's property default value `` was removed for the status `200`
- **2026-08-22** `dcb8297898a2`: 1 breaking, 9 info
  - the `items/items/tax/anyOf[subschema #1: ItemTaxDataOut]/tax_components/items/component_type` response's property type changed from `string` to no type for status `200`
  - added `#/components/schemas/GstComponentType, #/components/schemas/TaxFamily` to the `items/items/tax/anyOf[subschema #1: ItemTaxDataOut]/tax_components/items/component_type` response property `anyOf` list for the response status `200`
  - removed the `CESS` enum value from the `items/items/tax/anyOf[subschema #1: ItemTaxDataOut]/tax_components/items/component_type` response property for the response status `200`
  - removed the `CGST` enum value from the `items/items/tax/anyOf[subschema #1: ItemTaxDataOut]/tax_components/items/component_type` response property for the response status `200`
  - removed the `GST` enum value from the `items/items/tax/anyOf[subschema #1: ItemTaxDataOut]/tax_components/items/component_type` response property for the response status `200`
  - removed the `HST` enum value from the `items/items/tax/anyOf[subschema #1: ItemTaxDataOut]/tax_components/items/component_type` response property for the response status `200`
  - removed the `IGST` enum value from the `items/items/tax/anyOf[subschema #1: ItemTaxDataOut]/tax_components/items/component_type` response property for the response status `200`
  - removed the `PST` enum value from the `items/items/tax/anyOf[subschema #1: ItemTaxDataOut]/tax_components/items/component_type` response property for the response status `200`
  - removed the `QST` enum value from the `items/items/tax/anyOf[subschema #1: ItemTaxDataOut]/tax_components/items/component_type` response property for the response status `200`
  - removed the `SGST` enum value from the `items/items/tax/anyOf[subschema #1: ItemTaxDataOut]/tax_components/items/component_type` response property for the response status `200`
- **2026-08-12** `34b7cf5b4b6c`: 1 info
  - added the new optional `header` request parameter `Idempotency-Key`
- **2026-08-05** `525a590a98f8`: 2 info
  - added the new optional request property `items/items/tax/anyOf[subschema #1: ItemTaxData]/tax_metadata`
  - added the optional property `items/items/tax/anyOf[subschema #1: ItemTaxDataOut]/tax_metadata` to the response with the `200` status
- **2026-07-31** `506e6073d191`: 1 breaking, 4 info
  - the response property `items` became optional for the status `200`
  - api operation id `create_PurchaseOrder_record` removed and replaced with `create_PurchaseOrderV2_record`
  - added the optional property `has_more_lines` to the response with the `200` status
  - added the optional property `lines_count` to the response with the `200` status
  - the `items` response's property default value `` was added for the status `200`

---

[Operation](https://skmtc.dev/dualentry/apis/dualentry-public-api/docs/public/v2/purchase-orders/post.md) · [API](https://skmtc.dev/dualentry/apis/dualentry-public-api.md) · [Page](https://skmtc.dev/dualentry/apis/dualentry-public-api/changes/public/v2/purchase-orders/post)
