---
title: "Update vendor"
method: PUT
path: "/api/v1/vendors/{id}"
tags: ["vendors"]
---

# Update vendor

`PUT /api/v1/vendors/{id}`

## Request

- Base URL: `https://demo.invoiceninja.com`
- URL: `https://demo.invoiceninja.com/api/v1/vendors/{id}`
- Auth: none declared. Required headers: `X-API-TOKEN`, `X-Requested-With`
- TypeScript: <https://skmtc.dev/invoiceninja/apis/invoice-ninja-api-reference/docs/api/v1/vendors/:id/put.ts> (a function with typed inputs; its response is checked against the schema)

Handles the updating of a vendor by id

## Path parameters

- `id` string, string, required

## Query parameters

- `include` string

## Headers

- `X-API-TOKEN` string, required
- `X-Requested-With` string, required

## Request body

- VendorRequest
  - `name` string, required: Vendor name
  - `address1` string: Primary address line
  - `address2` string: Secondary address line
  - `city` string: City
  - `state` string: State or province
  - `postal_code` string: Postal code
  - `country_id` string: Country ID
  - `phone` string: Phone number
  - `email` string, email: Email address
  - `website` string, uri: Website URL
  - `custom_value1` string: Custom field value 1
  - `custom_value2` string: Custom field value 2
  - `custom_value3` string: Custom field value 3
  - `custom_value4` string: Custom field value 4
  - `is_deleted` boolean: Whether the vendor is deleted
  - `archived_at` integer: Timestamp when vendor was archived
  - `contacts` object[]: Array of vendor contacts
    - `first_name` string
    - `last_name` string
    - `email` string, email
    - `phone` string
    - `send_email` boolean

## Response `200`

Returns the vendor object

- Vendor
  - `id` string: The hashed id of the vendor. This is a unique identifier for the vendor.
  - `user_id` string: The hashed id of the user who created the vendor. This is a unique identifier for the user.
  - `assigned_user_id` string: The hashed id of the assigned user to this vendor. This is a unique identifier for the user.
  - `contacts` VendorContact[]: An array of contacts associated with the vendor.
    - `id` string: The hashed id of the vendor contact
    - `user_id` string: The hashed id of the user id
    - `vendor_id` string: The hashed id of the vendor
    - `first_name` string: The first name of the contact
    - `last_name` string: The last name of the contact
    - `contact_key` string: A unique identifier for the contact
    - `confirmation_code` string: The confirmation code used to authenticate the contacts email address
    - `phone` string: The contacts phone number
    - `custom_value1` string: A custom value
    - `custom_value2` string: A custom value
    - `custom_value3` string: A custom value
    - `custom_value4` string: A custom value
    - `email` string: The contact email address
    - `email_verified_at` number: The date which the contact confirmed their email
    - `password` string: The hashed password of the contact
    - `is_primary` boolean: Boolean flag determining if the contact is the primary contact for the vendor
    - `created_at` number: Timestamp
    - `updated_at` number: Timestamp
    - `deleted_at` number: Timestamp
    - `send_email` boolean: Flag indicating whether to send emails to this contact
    - `cc_only` boolean: When true this contact is only included as a CC recipient on outgoing emails and is not addressed directly.
    - `can_sign` boolean: When true this contact is permitted to electronically sign purchase order invitations.
  - `name` string: The name of the vendor.
  - `classification` string: The classification of the vendor.
  - `website` string: The website of the vendor.
  - `private_notes` string: The private notes of the vendor. These notes are only visible to users with appropriate permissions.
  - `industry_id` string: The industry id of the vendor. This is a unique identifier for the industry.
  - `size_id` string: The size id of the vendor. This is a unique identifier for the size of the vendor.
  - `address1` string: The first line of the vendor's address.
  - `address2` string: The second line of the vendor's address.
  - `city` string: The city of the vendor's address.
  - `state` string: The state of the vendor's address.
  - `postal_code` string: The postal code of the vendor's address.
  - `phone` string: The phone number of the vendor.
  - `country_id` string: The country id of the vendor. This is a unique identifier for the country.
  - `currency_id` string: The currency id of the vendor. This is a unique identifier for the currency.
  - `custom_value1` string: The value of the first custom field for the vendor.
  - `custom_value2` string: The value of the second custom field for the vendor.
  - `custom_value3` string: The value of the third custom field for the vendor.
  - `custom_value4` string: The value of the fourth custom field for the vendor.
  - `vat_number` string: The VAT number of the vendor.
  - `id_number` string: The ID number of the vendor.
  - `number` string: The number of the vendor
  - `is_deleted` boolean: Boolean flag determining if the vendor has been deleted
  - `language_id` string: The language id of the vendor. This is a unique identifier for the language.
  - `vendor_hash` string: The vendor hash of the vendor. This is a unique identifier for the vendor.
  - `transaction_name` string: The transaction name of the vendor.
  - `last_login` number: Timestamp
  - `created_at` number: Timestamp
  - `updated_at` number: Timestamp
  - `display_name` string: The display name of the vendor.
  - `is_tax_exempt` boolean: Flag indicating whether the vendor is exempt from taxes
  - `public_notes` string: Notes that are visible to the vendor
  - `routing_id` string: The routing identifier for e-invoicing

## Other responses

- `401`: Authentication error
- `403`: Authorization error
- `422`: Validation error
- `429`: Rate Limit Exceeded
- `5XX`: Server error
- `default`: Unexpected Error

## Changes

> 110 revisions in range; 1 not diffed.

- **2026-04-20** `69a36036d334`: 2 info
  - added the optional property `contacts/items/can_sign` to the response with the `200` status
  - added the optional property `contacts/items/cc_only` to the response with the `200` status
- **2025-11-22** `00ad5cc89fad`: 4 info
  - added the optional property `contacts/items/send_email` to the response with the `200` status
  - added the optional property `is_tax_exempt` to the response with the `200` status
  - added the optional property `public_notes` to the response with the `200` status
  - added the optional property `routing_id` to the response with the `200` status
- **2025-10-10** `873a5da14619`: 1 breaking
  - added required request body
- **2024-06-06** `8e82a2bd77e0`: 2 breaking, 35 info
  - the response's body type changed from no type to `object` for status `200`
  - the response's body type changed from no type to `object` for status `default`
  - added the optional property `address1` to the response with the `200` status
  - added the optional property `address2` to the response with the `200` status
  - …33 more
- …earlier changes not shown

[Operation history](https://skmtc.dev/invoiceninja/apis/invoice-ninja-api-reference/changes/api/v1/vendors/:id/put.md)

---

[API](https://skmtc.dev/invoiceninja/apis/invoice-ninja-api-reference.md) - [All operations](https://skmtc.dev/invoiceninja/apis/invoice-ninja-api-reference/llms.txt) - [OpenAPI document](https://skmtc.dev/invoiceninja/apis/invoice-ninja-api-reference/revisions/bcda1f823746?raw)
