---
title: "PATCH /clinic-config/inventory - Update inventory settings"
method: PATCH
path: "/clinic-config/inventory"
tags: ["ClinicConfig"]
---

# PATCH /clinic-config/inventory - Update inventory settings

`PATCH /clinic-config/inventory`

## Request

- Base URL: `https://api.clinicos.vet/backend/business`
- URL: `https://api.clinicos.vet/backend/business/clinic-config/inventory`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/docs/clinic-config/inventory/patch.ts> (a function with typed inputs; its response is checked against the schema)

## Request body

- InventorySettingsDto: Inventory and pharmacy settings
  - `defaultItemMarkup` union
    - number, double
    - string, double
  - `expiryTrackingEnabled` boolean
  - `parLevelMedications` union
    - integer
    - string, int32
  - `parLevelVaccines` union
    - integer
    - string, int32
  - `parLevelSupplies` union
    - integer
    - string, int32
  - `parLevelFood` union
    - integer
    - string, int32
  - `valuationMethod` string
  - `defaultVendor` string, nullable
  - `preferredShippingMethod` string
  - `vendorAccountId` string, nullable
  - `backorderSubstitutionsEnabled` boolean
  - `vetcoveEnabled` boolean
  - `vetcoveApiKey` string, nullable: Write-only: a new Vetcove API key to store in Secrets Manager. Never returned.
  - `vetcoveApiKeyConfigured` boolean: Read-only: whether a Vetcove API key is stored.
  - `vetcoveApiKeyArn` string, nullable: Deprecated (ITE-1467): always null in responses. Clients from before ITE-1467 send the raw key here; it is treated like string? InventorySettingsDto.VetcoveApiKey.
  - `covetrusEnabled` boolean
  - `covetrusApiKey` string, nullable: Write-only: a new Covetrus API key to store in Secrets Manager. Never returned.
  - `covetrusApiKeyConfigured` boolean: Read-only: whether a Covetrus API key is stored.
  - `covetrusApiKeyArn` string, nullable: Deprecated (ITE-1467); see string? InventorySettingsDto.VetcoveApiKeyArn.
  - `transmissionMethod` string
  - `defaultOnlinePharmacy` string
  - `clientPharmacyOverridesAllowed` boolean
  - `defaultDispenseFee` union
    - number, double
    - string, double
  - `defaultDispenseUnit` string
  - `genericSubstitutionAllowed` boolean
  - `showDispenseFeesSeparately` boolean
  - `labelBranding` string, nullable
  - `multiLanguageLabelsEnabled` boolean
  - `autoLogDeaRegister` boolean
  - `mfaForControlledRx` boolean
  - `barcodeScanBeforeDispense` boolean
  - `refrigeratedMedSensors` boolean
  - `enforceVcprCheck` boolean
  - `vcprRequiredDays` union
    - integer
    - string, int32
  - `maxDispenseQuantity` union
    - number, double
    - string, double
  - `negativeInventoryMode` string, nullable: "Strict" (the default), "Warn" or "Allow" — whether a lot-tracked item may be dispensed past its stock on hand (ITE-1410). Only honoured while the NegativeInventory feature flag is on. GET always populates it; on PATCH, null leaves the stored value unchanged.
  - `overdraftSettlementMode` string, nullable: "Automatic" (the default) or "Review" — whether a receive pays off an item's overdraft lot at once, or files an overdraft-settlement approval that a person approves (ITE-1410). GET always populates it; on PATCH, null leaves the stored value unchanged.
  - `allowAppointmentDispenseWithoutWitness` boolean, nullable: When true, appointment-close dispenses of controlled drugs don't need a separate witness (see `InventorySettings.AllowAppointmentDispenseWithoutWitness`). Nullable so a PATCH that omits it keeps the stored value (null = unchanged); GET always populates it, resolving a missing stored key to true.
  - `automatedCountsEnabled` boolean
  - `countFrequency` string
  - `salesVelocityReportEnabled` boolean

## Response `200`

OK

- InventorySettingsDto: Inventory and pharmacy settings
  - `defaultItemMarkup` union
    - number, double
    - string, double
  - `expiryTrackingEnabled` boolean
  - `parLevelMedications` union
    - integer
    - string, int32
  - `parLevelVaccines` union
    - integer
    - string, int32
  - `parLevelSupplies` union
    - integer
    - string, int32
  - `parLevelFood` union
    - integer
    - string, int32
  - `valuationMethod` string
  - `defaultVendor` string, nullable
  - `preferredShippingMethod` string
  - `vendorAccountId` string, nullable
  - `backorderSubstitutionsEnabled` boolean
  - `vetcoveEnabled` boolean
  - `vetcoveApiKey` string, nullable: Write-only: a new Vetcove API key to store in Secrets Manager. Never returned.
  - `vetcoveApiKeyConfigured` boolean: Read-only: whether a Vetcove API key is stored.
  - `vetcoveApiKeyArn` string, nullable: Deprecated (ITE-1467): always null in responses. Clients from before ITE-1467 send the raw key here; it is treated like string? InventorySettingsDto.VetcoveApiKey.
  - `covetrusEnabled` boolean
  - `covetrusApiKey` string, nullable: Write-only: a new Covetrus API key to store in Secrets Manager. Never returned.
  - `covetrusApiKeyConfigured` boolean: Read-only: whether a Covetrus API key is stored.
  - `covetrusApiKeyArn` string, nullable: Deprecated (ITE-1467); see string? InventorySettingsDto.VetcoveApiKeyArn.
  - `transmissionMethod` string
  - `defaultOnlinePharmacy` string
  - `clientPharmacyOverridesAllowed` boolean
  - `defaultDispenseFee` union
    - number, double
    - string, double
  - `defaultDispenseUnit` string
  - `genericSubstitutionAllowed` boolean
  - `showDispenseFeesSeparately` boolean
  - `labelBranding` string, nullable
  - `multiLanguageLabelsEnabled` boolean
  - `autoLogDeaRegister` boolean
  - `mfaForControlledRx` boolean
  - `barcodeScanBeforeDispense` boolean
  - `refrigeratedMedSensors` boolean
  - `enforceVcprCheck` boolean
  - `vcprRequiredDays` union
    - integer
    - string, int32
  - `maxDispenseQuantity` union
    - number, double
    - string, double
  - `negativeInventoryMode` string, nullable: "Strict" (the default), "Warn" or "Allow" — whether a lot-tracked item may be dispensed past its stock on hand (ITE-1410). Only honoured while the NegativeInventory feature flag is on. GET always populates it; on PATCH, null leaves the stored value unchanged.
  - `overdraftSettlementMode` string, nullable: "Automatic" (the default) or "Review" — whether a receive pays off an item's overdraft lot at once, or files an overdraft-settlement approval that a person approves (ITE-1410). GET always populates it; on PATCH, null leaves the stored value unchanged.
  - `allowAppointmentDispenseWithoutWitness` boolean, nullable: When true, appointment-close dispenses of controlled drugs don't need a separate witness (see `InventorySettings.AllowAppointmentDispenseWithoutWitness`). Nullable so a PATCH that omits it keeps the stored value (null = unchanged); GET always populates it, resolving a missing stored key to true.
  - `automatedCountsEnabled` boolean
  - `countFrequency` string
  - `salesVelocityReportEnabled` boolean

## Changes

- **2026-10-28** `099cf36186e0`: 24 info
  - added the new optional request property `covetrusApiKey` (media type: application/json)
  - added the new optional request property `covetrusApiKey` (media type: text/json)
  - added the new optional request property `covetrusApiKey` (media type: application/*+json)
  - added the new optional request property `covetrusApiKeyConfigured` (media type: application/json)
  - …20 more
- **2026-10-21** `85ee96c0bb96`: 6 warning, 18 info
  - removed the request property `autoAttachDispenseToInvoice` (media type: application/json)
  - removed the request property `autoAttachDispenseToInvoice` (media type: text/json)
  - removed the request property `autoAttachDispenseToInvoice` (media type: application/*+json)
  - removed the optional property `autoAttachDispenseToInvoice` from the response with the `200` status (media type: text/plain)
  - …20 more

[Operation history](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/changes/clinic-config/inventory/patch.md)

---

[API](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1.md) - [All operations](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/llms.txt) - [OpenAPI document](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/revisions/099cf36186e0?raw)
