---
title: "Modify_PurchaseOrderItems_Bulk"
method: POST
path: "/api/PurchaseOrder/Modify_PurchaseOrderItems_Bulk"
tags: ["PurchaseOrder"]
---

# Modify_PurchaseOrderItems_Bulk

`POST /api/PurchaseOrder/Modify_PurchaseOrderItems_Bulk`

Delete, add and update purchase order items and cause purchase order totals recalculation
<b>Permissions Required: </b> GlobalPermissions.Inventory.PurchaseOrder.EditPurchaseOrderNode
<b>Rate limit: </b><span style="background-color:#0272d9;color:white;padding:4px 8px;text-align:center;border-radius:5px; font-size: small;"><b>150</b></span> / minute

## Request body

- PurchaseOrderModifyPurchaseOrderItemsBulkRequest
  - `request` ModifyPurchaseOrderItemsBulkRequest — Request that contains lists to delete, add and update purchase order items
    - `PurchaseId` string, uuid — Purchase order id
    - `ItemsToAdd` AddPurchaseOrderItem[] — New purchase order items to add
      - `Id` string, uuid — unique row id, the same id will be returned to you in the response
      - `StockItemId` string, uuid — pkStockItemId. Use Get Stock Item API call to get the id of a product by SKU or Title
      - `Qty` integer — Quantity of items in the purchase order line
      - `Cost` number, double — Line Total cost of all the purchase order item inclusive of tax (unitcost * qty) + tax
      - `TaxRate` number, double — Product tax rate
      - `PackQuantity` integer — Number of items in a single pack. This is for reference purposes only. Not used for any calculations.
      - `PackSize` integer — Number of packs ordered. This is for reference purposes only. Not used for any calculations.
    - `ItemsToUpdate` UpdatePurchaseOrderItem[] — Purchase order items to update
      - `Id` string, uuid — unique row id, to uniquely identify submitted item. This Id will be returned in the response so you can match request to response items
      - `PurchaseItemId` string, uuid
      - `StockItemId` string, uuid — pkStockItemId. Use Get Stock Item API call to get the id of a product by SKU or Title
      - `Qty` integer — Quantity of items in the purchase order line
      - `Cost` number, double — Line Total cost of all the purchase order item inclusive of tax (unitcost * qty) + tax
      - `TaxRate` number, double — Product tax rate
      - `PackQuantity` integer — Number of items in a single pack. This is for reference purposes only. Not used for any calculations.
      - `PackSize` integer — Number of packs ordered. This is for reference purposes only. Not used for any calculations.
    - `ItemsToDelete` string[] — Purchase order items to delete. PurchaseOrderItemId(s)

## Response `200`

OK

- ModifyPurchaseOrderItemsBulkResponse — Response class for Modify_PurchaseOrderItems_Bulk
  - `ModifiedItems` ModifiedPurchaseOrderItem[] — Modified purchase order items. Newly added items, updated items. Deleted items not returned back to the client.
    - `Id` string, uuid — unique row id which was supplied in the ModifyPurchaseOrderItem, you can match this id to the request item. The same Id is returned to back from the request parameter
    - `PurchaseItemId` string, uuid — Unique purchase order item id. Purchase order item is deleted and updated by PurchaseOrderItemId
    - `StockItemId` string, uuid — pkStockItemId. Use Get Stock Item API call to get the id of a product by SKU or Title
    - `Qty` integer — Quantity of items in the purchase order line
    - `BoundToOpenOrdersItems` integer
    - `QuantityBoundToOpenOrdersItems` integer
    - `Cost` number, double — Line Total cost of all the purchase order item inclusive of tax (unitcost * qty) + tax
    - `TaxRate` number, double — Product tax rate
    - `PackQuantity` integer — Number of items in a single pack. This is for reference purposes only. Not used for any calculations.
    - `PackSize` integer — Number of packs ordered. This is for reference purposes only. Not used for any calculations.
  - `PurchaseOrderHeader` CommonPurchaseOrderHeader — Class represents purchase order header.
    - `pkPurchaseID` string, uuid — Unique identifier for the purchase order. You have to use this ID for all updates to the PO
    - `fkSupplierId` string, uuid — Unique identifier for the supplier. Empty Guid is default supplier. Otherwise use Supplier API to get the names and additional data for the supplier
    - `fkLocationId` string, uuid — Unique idenfidier of the location where the PO is expected to be delivered to. Empty Guid is default location. Use Locations API methods to get the names and additional details for the locations
    - `ExternalInvoiceNumber` string — Purchase order reference number
    - `Status` 'PENDING' | 'OPEN' | 'PARTIAL' | 'DELIVERED' — Purchase order status. PENDING - purchase order can be changed, not yet affecting stock levels OPEN - purchase order is created and stock levels Due are reflected PARTIAL - partially delivered DELIVERED - fully delivered
    - `Currency` string — Currency of the monetary values in the purchase order
    - `SupplierReferenceNumber` string — Supplier reference number for the purchase order
    - `Locked` boolean — Identified whether the PO is locked. This is for external application use only.
    - `UnitAmountTaxIncludedType` integer — Unit amount includes,exclud or no tax. 0 - Tax Exclusive cost, 1 - Cost Inclusive of tax, 2 - No Tax
    - `LineCount` integer — Number of items in the purchase order
    - `DeliveredLinesCount` integer — Count of all purchase order lines which are delivered (lines where some but not all of the stock has been received are counted as undelivered)
    - `DateOfPurchase` string, date-time — DateTime of the purchase order UTC
    - `DateOfDelivery` string, date-time — DateTime of the purchase order delivered, will be set to DateOfPurchase until the PO is fully delivered UTC
    - `QuotedDeliveryDate` string, date-time — DateTime of the purchase order qouted/expected delivery date UTC
    - `PostagePaid` number, double — **DEPRECIATED** Use additional costs with Shipping flag to record shipping costs. This field remains available in the API for backward compatibility and acts pretty much like an additional cost item with type id = 0
    - `TotalCost` number, double — Total purchase price of the purchase order. Calculated from all purchase order items including tax and postage.
    - `taxPaid` number, double — Total tax of the purchase order. Calculated from all purchase order items (excludes postage).
    - `ShippingTaxRate` number, double — **DEPRECIATED** Use additional costs with Shipping flag to record shipping costs. This field remains available in the API for backward compatibility and acts pretty much like an additional cost item with type id = 0
    - `ConversionRate` number, double — Conversion rate of the purchase order currency. When PO is delivered Stock Value will be multipled by this conversion rate. For example if your system currency is GBP and Purchase order is in EUR the conversion rate is 0.81.
    - `ConvertedShippingCost` number, double — Total shipping cost of the purchase order, converted to system currency
    - `ConvertedShippingTax` number, double — Total shipping cost tax of the purchase order, converted to system currency
    - `ConvertedOtherCost` number, double — Total amount of additional costs of the purchase order, converted to system currency
    - `ConvertedOtherTax` number, double — Total tax amount of additional costs of the purchase order, converted to system currency
    - `ConvertedGrandTotal` number, double — Total amount of the purchase order, converted to system currency

---

[API](https://skmtc.net/linnworks/apis/authenticate-api.md) · [All operations](https://skmtc.net/linnworks/apis/authenticate-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/linnworks/authenticate-api/versions/0123569a22fb/schema)
