---
title: "POST /PurchaseOrders/{id}/receive"
method: POST
path: "/PurchaseOrders/{id}/receive"
tags: ["PurchaseOrders"]
---

# POST /PurchaseOrders/{id}/receive

`POST /PurchaseOrders/{id}/receive`

## Path parameters

- `id` string, required

## Request body

- ReceiveOrderDto
  - `items` ReceiveOrderItemDto[]
    - `purchaseOrderItemId` string
    - `quantityReceived` union
      - number, double
      - string, double
    - `lotNumber` string, nullable
    - `expirationDate` string, date-time, nullable
    - `containerId` string, nullable
    - `locationId` string, nullable — Storage location the received stock is placed in. Falls back to the tenant's default location when null/empty. Assigned to the lot (InventoryLotLocation) and to every container created for the received lot.
    - `containers` ReceiveOrderContainerDto[], nullable — Physical containers this lot arrived in (ITE-157). When present and non-empty, the lot is created with one row per container and the received quantity is the sum of their quantities (the top-level decimal ReceiveOrderItemDto.QuantityReceived / string? ReceiveOrderItemDto.ContainerId are ignored). For controlled substances each container gets its own DEA `Received` ledger entry. When null/empty, the single-container behavior is unchanged.
      - `containerCode` string, nullable — Human / DEA identifier for this container (required for controlled substances).
      - `quantity` union
        - number, double
        - string, double
  - `notes` string, nullable

## Response `200`

OK

- PurchaseOrderDto
  - `id` string
  - `orderNumber` string
  - `vendorId` string
  - `vendor` VendorSummaryDto
    - `id` string
    - `name` string
    - `code` string, nullable
  - `status` string
  - `orderDate` string, date-time
  - `expectedDeliveryDate` string, date-time, nullable
  - `receivedDate` string, date-time, nullable
  - `subTotal` union
    - number, double
    - string, double
  - `taxAmount` union
    - number, double
    - string, double
  - `shippingAmount` union
    - number, double
    - string, double
  - `totalAmount` union
    - number, double
    - string, double
  - `externalOrderNumber` string, nullable
  - `trackingNumber` string, nullable
  - `notes` string, nullable
  - `createdBy` DEAUserSummaryDto
    - `id` string
    - `displayName` string
    - `firstName` string, nullable
    - `lastName` string, nullable
    - `email` string
  - `approvedBy` DEAUserSummaryDto
    - `id` string
    - `displayName` string
    - `firstName` string, nullable
    - `lastName` string, nullable
    - `email` string
  - `items` PurchaseOrderItemDto[]
    - `id` string
    - `purchaseOrderId` string
    - `inventoryItemId` string
    - `inventoryItem` InventoryItemSummaryDto
      - `id` string
      - `name` string
      - `sku` string, nullable
      - `category` string
      - `trackLots` boolean
      - `totalOnHand` union
        - integer
        - string, int32
      - `reorderPoint` union
        - integer
        - string, int32
    - `quantityOrdered` union
      - number, double
      - string, double
    - `quantityReceived` union
      - number, double
      - string, double
    - `quantityBackordered` union
      - number, double
      - string, double
    - `unitCost` union
      - number, double
      - string, double
    - `lineTotal` union
      - number, double
      - string, double
    - `lotNumber` string, nullable
    - `expirationDate` string, date-time, nullable
    - `containerId` string, nullable
  - `createdAt` string, date-time
  - `updatedAt` string, date-time

---

[API](https://skmtc.net/clinicos/apis/pawthosx-business-api-v1.md) · [All operations](https://skmtc.net/clinicos/apis/pawthosx-business-api-v1/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/clinicos/pawthosx-business-api-v1/versions/a905bde4e796/schema)
