---
title: "Update commodity"
method: PUT
path: "/commodities/{id}"
tags: ["Commodity"]
---

# Update commodity

`PUT /commodities/{id}`

## Request

- Base URL: `https://r38.coupadev.com/api`
- URL: `https://r38.coupadev.com/api/commodities/{id}`
- Auth: one of:
  - OAuth 2
    - Authorization code: `https://r38.coupadev.com/oauth2/authorizations/new`
    - Token URL: `https://r38.coupadev.com/oauth2/token`
  - OAuth 2
    - Client credentials
    - Token URL: `https://r38.coupadev.com/oauth2/access_tokens`
- TypeScript: <https://skmtc.dev/coupa/apis/coupa-api-4/docs/commodities/:id/put.ts> (a function with typed inputs; its response is checked against the schema)

Update commodity

## Path parameters

- `id` integer, required

## Query parameters

- `return_object` 'limited' | 'shallow' | 'none'
- `filter` string

## Request body

- Commodity
  - `active` boolean: A false value will inactivate the account making it no longer available to users. A true value will make it active and available to users.
  - `category` 'goods' | 'services', string(255): Category
  - `created-at` string, datetime: Automatically created by Coupa in the format YYYY-MM-DDTHH:MM:SS+HH:MMZ
  - `created-by` UserSimple
    - `avatar-thumb-url` string, string: Avatar url
    - `created-at` string, datetime: Automatically created by Coupa in the format YYYY-MM-DDTHH:MM:SS+HH:MMZ
    - `email` string, string(255), required: email
    - `employee-number` string, string(255): employee number
    - `firstname` string, string(40), required: first name
    - `fullname` string, string(255): full name
    - `id` integer: Coupa unique identifier
    - `lastname` string, string(40), required: last name
    - `login` string, string(255), required: login
    - `salesforce-id` string, string(255), required: salesforce_id
    - `updated-at` string, datetime: Automatically created by Coupa in the format YYYY-MM-DDTHH:MM:SS+HH:MMZ
  - `deductibility` 'fully_deductible' | 'partially_deductible' | 'not_deductible', string(255): Deductibility
  - `id` integer: Coupa unique identifier
  - `imported-from-taxonomy` boolean: A true value will tell that the commodity is imported from Coupa Taxonomy. A false value will tell that the value is created by a user or system
  - `name` string, string(255), required: name
  - `parent` Commodity (recursive)
  - `preferred` 'Yes' | 'No' | 'Automatic' | 'Always' | 'Never', string(255): A Yes/No value will mark/unmark commodity as preferred. Set to Automate if you want the system to mark preferred. 'Automatic' option is available only if 'Automatic Guided Requests configuration' is enabled in company information
  - `subcategory` 'raw_materials' | 'investment_goods' | 'services_exceptions', string(255): Subcategory
  - `translated-name` string, string: Translated name
  - `updated-at` string, datetime: Automatically created by Coupa in the format YYYY-MM-DDTHH:MM:SS+HH:MMZ
  - `updated-by` UserSimple
    - `avatar-thumb-url` string, string: Avatar url
    - `created-at` string, datetime: Automatically created by Coupa in the format YYYY-MM-DDTHH:MM:SS+HH:MMZ
    - `email` string, string(255), required: email
    - `employee-number` string, string(255): employee number
    - `firstname` string, string(40), required: first name
    - `fullname` string, string(255): full name
    - `id` integer: Coupa unique identifier
    - `lastname` string, string(40), required: last name
    - `login` string, string(255), required: login
    - `salesforce-id` string, string(255), required: salesforce_id
    - `updated-at` string, datetime: Automatically created by Coupa in the format YYYY-MM-DDTHH:MM:SS+HH:MMZ

## Response `200`

Commodity object

- Commodity[]
  - `active` boolean: A false value will inactivate the account making it no longer available to users. A true value will make it active and available to users.
  - `category` 'goods' | 'services', string(255): Category
  - `created-at` string, datetime: Automatically created by Coupa in the format YYYY-MM-DDTHH:MM:SS+HH:MMZ
  - `created-by` UserSimple
    - `avatar-thumb-url` string, string: Avatar url
    - `created-at` string, datetime: Automatically created by Coupa in the format YYYY-MM-DDTHH:MM:SS+HH:MMZ
    - `email` string, string(255), required: email
    - `employee-number` string, string(255): employee number
    - `firstname` string, string(40), required: first name
    - `fullname` string, string(255): full name
    - `id` integer: Coupa unique identifier
    - `lastname` string, string(40), required: last name
    - `login` string, string(255), required: login
    - `salesforce-id` string, string(255), required: salesforce_id
    - `updated-at` string, datetime: Automatically created by Coupa in the format YYYY-MM-DDTHH:MM:SS+HH:MMZ
  - `deductibility` 'fully_deductible' | 'partially_deductible' | 'not_deductible', string(255): Deductibility
  - `id` integer: Coupa unique identifier
  - `imported-from-taxonomy` boolean: A true value will tell that the commodity is imported from Coupa Taxonomy. A false value will tell that the value is created by a user or system
  - `name` string, string(255), required: name
  - `parent` Commodity (recursive)
  - `preferred` 'Yes' | 'No' | 'Automatic' | 'Always' | 'Never', string(255): A Yes/No value will mark/unmark commodity as preferred. Set to Automate if you want the system to mark preferred. 'Automatic' option is available only if 'Automatic Guided Requests configuration' is enabled in company information
  - `subcategory` 'raw_materials' | 'investment_goods' | 'services_exceptions', string(255): Subcategory
  - `translated-name` string, string: Translated name
  - `updated-at` string, datetime: Automatically created by Coupa in the format YYYY-MM-DDTHH:MM:SS+HH:MMZ
  - `updated-by` UserSimple
    - `avatar-thumb-url` string, string: Avatar url
    - `created-at` string, datetime: Automatically created by Coupa in the format YYYY-MM-DDTHH:MM:SS+HH:MMZ
    - `email` string, string(255), required: email
    - `employee-number` string, string(255): employee number
    - `firstname` string, string(40), required: first name
    - `fullname` string, string(255): full name
    - `id` integer: Coupa unique identifier
    - `lastname` string, string(40), required: last name
    - `login` string, string(255), required: login
    - `salesforce-id` string, string(255), required: salesforce_id
    - `updated-at` string, datetime: Automatically created by Coupa in the format YYYY-MM-DDTHH:MM:SS+HH:MMZ

## Other responses

- `400`: Bad Request
- `404`: Not Found

---

[API](https://skmtc.dev/coupa/apis/coupa-api-4.md) - [All operations](https://skmtc.dev/coupa/apis/coupa-api-4/llms.txt) - [OpenAPI document](https://skmtc.dev/coupa/apis/coupa-api-4/revisions/adc09cabd758?raw)
