---
title: "Dispense an Approved request from inventory at pickup (Dispense permission).
Runs the shared dispense engine and fulfills the request's own Pending line;
works for both Rx and phoned-in OTC requests."
method: POST
path: "/medication-requests/{id}/dispense"
tags: ["MedicationRequests"]
---

# Dispense an Approved request from inventory at pickup (Dispense permission).
Runs the shared dispense engine and fulfills the request's own Pending line;
works for both Rx and phoned-in OTC requests.

`POST /medication-requests/{id}/dispense`

## Path parameters

- `id` string, required

## Request body

- DispenseMedicationRequestDto — Dispense an Approved request from inventory (pickup).
  - `lotId` string, nullable
  - `locationId` string, nullable
  - `quantity` union — Confirmed quantity at dispense; defaults to the approved quantity.
    - number, double
    - string, double
  - `witnessUserId` string, nullable — Witness for controlled-substance dispenses. Required by the dispense engine (non-overridable) whenever the item has a DEA book.
  - `containerId` string, nullable — Physical container to draw from (controlled items, ITE-157).
  - `notes` string, nullable
  - `collectorName` string, nullable
  - `collectorIdChecked` boolean, nullable

## Response `200`

OK

- MedicationRequestResultDto
  - `success` boolean
  - `prescriptionId` string, nullable
  - `transactionId` string, nullable
  - `patientId` string
  - `message` string
  - `invoiceLineItemId` string, nullable — Populated when the request supplied string? CreateMedicationRequestDto.InvoiceId and an estimate line item was created in the same call.
  - `invoiceId` string, nullable — The estimate the dispense was attached to — either the one the caller supplied or one auto-created/resolved server-side. Lets a client that had no estimate of its own adopt the server's estimate instead of failing to reconcile the line.
  - `estimateId` string, nullable — The estimate the request's billable line was placed on at creation (in-house / same-day requests). Null for external (non-billable) requests.
  - `estimateLineItemId` string, nullable — The Pending estimate line created for this request at creation, if any.
  - `medicationRequestId` string, nullable — The lifecycle MedicationRequest recorded for this operation. The compound endpoint applies capture → approve → dispense as far as the caller's permissions allow; string? MedicationRequestResultDto.RequestStatus says where it stopped.
  - `requestStatus` string, nullable — Lifecycle status after this call: requested | approved | dispensed.

## Other responses

- `400` — Bad Request
- `409` — Conflict

---

[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/revisions/d8d7501dde48/schema)
