> ## Documentation Index
> Fetch the complete documentation index at: https://every.help/llms.txt
> Use this file to discover all available pages before exploring further.

# Update vendor

> Updates a vendor. Every field is optional and only the ones supplied are written, down to the
individual fields of `w9` — renaming a vendor does not mean resending its taxpayer id.

No onboarding link is sent from here, even when the update leaves the W9 incomplete; only
`POST /v1/vendors` starts that.




## OpenAPI

````yaml /api-reference/openapi.yaml put /v1/vendors/{id}
openapi: 3.0.0
info:
  title: Every Public API
  version: 1.0.0
  description: >
    The Every public API. Keys are issued per company and every response is
    scoped to the company

    that owns the calling key.


    Every response carries an `x-request-id` header, generated by Every for that
    request. Quote it

    when contacting support: it is the id the request is recorded under. A
    caller-supplied

    `x-request-id` is never echoed.
servers:
  - url: https://api.public.every.io/company
    description: Production
security:
  - apiKey: []
tags:
  - name: Company
    description: The company the calling key belongs to.
  - name: Vendors
    description: The people and businesses the company pays, and their W9 details.
  - name: Bank accounts
    description: A vendor's accounts at its own bank, the accounts payments are paid into.
  - name: Payments
    description: >-
      ACH payments from the company's Every account to a vendor, and where they
      are.
  - name: Reference data
    description: The categories and departments a payment is filed under.
paths:
  /v1/vendors/{id}:
    put:
      tags:
        - Vendors
      summary: Update vendor
      description: >
        Updates a vendor. Every field is optional and only the ones supplied are
        written, down to the

        individual fields of `w9` — renaming a vendor does not mean resending
        its taxpayer id.


        No onboarding link is sent from here, even when the update leaves the W9
        incomplete; only

        `POST /v1/vendors` starts that.
      operationId: updateVendor
      parameters:
        - name: id
          in: path
          required: true
          schema:
            $ref: '#/components/schemas/Id'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateVendorRequest'
      responses:
        '200':
          description: The vendor updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VendorDetail'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: No such vendor in the calling company
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Another vendor of the company already has this display_name
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VendorConflict'
        '500':
          $ref: '#/components/responses/InternalServerError'
        default:
          $ref: '#/components/responses/UnexpectedError'
components:
  schemas:
    Id:
      type: string
      format: uuid
    UpdateVendorRequest:
      description: >-
        Every field is optional and only the supplied ones are written, down to
        the individual fields of `w9`. Send at least one.
      type: object
      additionalProperties: false
      minProperties: 1
      properties:
        display_name:
          description: The vendor name, as shown in the Every dashboard
          type: string
          minLength: 1
        email:
          description: The vendor contact email
          type: string
          format: email
          nullable: true
        w9:
          $ref: '#/components/schemas/VendorW9Fields'
    VendorDetail:
      description: >-
        A single vendor, with the W9 details it was created or updated with. The
        list omits them: a taxpayer id is not something to hand out a page at a
        time, and even here `tax_ein` is masked.
      allOf:
        - $ref: '#/components/schemas/Vendor'
        - type: object
          required:
            - w9
          properties:
            w9:
              $ref: '#/components/schemas/VendorW9Details'
    Error:
      type: object
      properties:
        message:
          type: string
        errors:
          type: array
          items:
            type: object
    VendorConflict:
      description: >-
        The company already has a vendor with this display_name, compared
        ignoring case. `vendor_id` names it so the caller can use the vendor it
        already has instead of retrying.
      type: object
      required:
        - message
        - vendor_id
      properties:
        message:
          type: string
        vendor_id:
          $ref: '#/components/schemas/Id'
    VendorW9Fields:
      description: >-
        The W9 fields themselves, with nothing required. `PUT /v1/vendors/{id}`
        takes them as they are, so a caller can correct one field;
        `CreateVendorW9` is the same set with the create's required list. Every
        property is nullable: `VendorW9Details` nulls the fields a vendor hasn't
        filed, and this is the same shape a caller reads that response into and
        sends back, less the masked `tax_ein`.
      type: object
      additionalProperties: false
      properties:
        entity_type:
          description: The vendor's tax classification
          type: string
          nullable: true
          enum:
            - C_CORP
            - INDIVIDUAL
            - INTERNATIONAL_BUSINESS
            - INTERNATIONAL_INDIVIDUAL
            - LLC_C
            - LLC_PARTNERSHIP
            - LLC_S
            - LLC_SINGLE
            - PARTNERSHIP
            - S_CORP
        ein_type:
          description: >-
            Whether `tax_ein` is an employer identification number or a social
            security number
          type: string
          nullable: true
          enum:
            - EIN
            - SSN
        tax_ein:
          description: The 9-digit taxpayer identification number, without separators
          type: string
          nullable: true
          pattern: ^\d{9}$
        address_street:
          type: string
          nullable: true
          minLength: 1
        address_street2:
          type: string
          nullable: true
        address_city:
          type: string
          nullable: true
          minLength: 1
        address_state:
          description: The 2-letter state code
          type: string
          nullable: true
          pattern: ^[A-Za-z]{2}$
        address_postal_code:
          type: string
          nullable: true
          minLength: 1
        address_country:
          description: >-
            The 2-letter country code. Defaults to US, which is what a W9 is
            filed under.
          type: string
          nullable: true
          pattern: ^[A-Za-z]{2}$
        mandatory_w9_legal:
          description: >-
            Whether the vendor provides legal services, which are reportable
            whatever the amount
          type: boolean
          nullable: true
    Vendor:
      type: object
      required:
        - id
        - company_id
        - display_name
        - w9_complete
      properties:
        id:
          $ref: '#/components/schemas/Id'
        company_id:
          $ref: '#/components/schemas/Id'
        display_name:
          description: The vendor name, as shown in the Every dashboard
          type: string
        email:
          description: The vendor contact email
          type: string
          nullable: true
        created_at:
          description: The date the vendor was created
          type: string
          format: date
          nullable: true
        w9_complete:
          description: >-
            Whether the vendor's W9 details are on file. False while the vendor
            still has an onboarding form to fill in, whether it was asked
            through this API or in the Every dashboard.
          type: boolean
    VendorW9Details:
      description: >-
        The stored W9 details, in the shape `w9` is written in, so they can be
        read, completed and sent back. Null fields are the ones the vendor has
        not provided. `tax_ein` is the one field that does not round-trip: it is
        served masked, and an update that sends the mask back is refused.
      type: object
      required:
        - mandatory_w9_legal
      properties:
        entity_type:
          type: string
          nullable: true
        ein_type:
          type: string
          nullable: true
        tax_ein:
          description: >-
            The taxpayer identification number, masked to its last four digits
            (`*****6789`). The full number is never served. To change it, send
            all nine digits in `PUT /v1/vendors/{id}`; to keep it, omit it.
          type: string
          nullable: true
          example: '*****6789'
        address_street:
          type: string
          nullable: true
        address_street2:
          type: string
          nullable: true
        address_city:
          type: string
          nullable: true
        address_state:
          type: string
          nullable: true
        address_postal_code:
          type: string
          nullable: true
        address_country:
          type: string
          nullable: true
        mandatory_w9_legal:
          description: >-
            Whether the vendor provides legal services, which are reportable
            whatever the amount
          type: boolean
  responses:
    BadRequest:
      description: Bad request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Forbidden:
      description: >-
        The `x-api-key` header is missing, or the key is unknown, revoked, or
        not enabled for this API. The body is `{"message":"Forbidden"}`.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    InternalServerError:
      description: Internal server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    UnexpectedError:
      description: Unexpected error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.