---
title: "Filter vendors"
method: POST
path: "/vendors/filter"
tags: ["Vendors"]
---

# Filter vendors

`POST /vendors/filter`

Query vendors using flexible filter criteria with AND/OR logic.

By default, only non-deleted vendors are returned (deletedAt: { isNull: true }).
Override this by explicitly setting deletedAt filter criteria.

## Request body

- VendorFilterRequest — Request body for filtering vendors
  - `filter` VendorFilter — Filter criteria for vendors with AND/OR logic support
    - `and` VendorFilter[] — All conditions must match (recursive)
    - `or` VendorFilter[] — At least one condition must match (recursive)
    - `not` VendorFilter — recursive
    - `id` IDFilter — Filter options for ID fields (limited operations - exact match only)
      - `equalTo` string, uuid — Exact match
      - `in` string[] — Matches any UUID in the array
    - `friendlyId` StringFilter — Filter options for string fields
      - `equalTo` string — Exact match
      - `notEqualTo` string — Not equal to
      - `in` string[] — Matches any value in the array
      - `notIn` string[] — Does not match any value in the array
      - `includes` string — Contains substring (case-insensitive)
      - `notIncludes` string — Does not contain substring (case-insensitive)
      - `startsWith` string — Starts with prefix (case-insensitive)
      - `notStartsWith` string — Does not start with prefix (case-insensitive)
      - `endsWith` string — Ends with suffix (case-insensitive)
      - `notEndsWith` string — Does not end with suffix (case-insensitive)
      - `isNull` boolean — Field is null (true) or not null (false)
    - `name` StringFilter — Filter options for string fields
      - `equalTo` string — Exact match
      - `notEqualTo` string — Not equal to
      - `in` string[] — Matches any value in the array
      - `notIn` string[] — Does not match any value in the array
      - `includes` string — Contains substring (case-insensitive)
      - `notIncludes` string — Does not contain substring (case-insensitive)
      - `startsWith` string — Starts with prefix (case-insensitive)
      - `notStartsWith` string — Does not start with prefix (case-insensitive)
      - `endsWith` string — Ends with suffix (case-insensitive)
      - `notEndsWith` string — Does not end with suffix (case-insensitive)
      - `isNull` boolean — Field is null (true) or not null (false)
    - `key` ClientKeyFilter — Filter options for client key fields (limited operations - exact match only)
      - `equalTo` string — Exact match
      - `in` string[] — Matches any value in the array
      - `isNull` boolean — Field is null (true) or not null (false)
    - `email` StringFilter — Filter options for string fields
      - `equalTo` string — Exact match
      - `notEqualTo` string — Not equal to
      - `in` string[] — Matches any value in the array
      - `notIn` string[] — Does not match any value in the array
      - `includes` string — Contains substring (case-insensitive)
      - `notIncludes` string — Does not contain substring (case-insensitive)
      - `startsWith` string — Starts with prefix (case-insensitive)
      - `notStartsWith` string — Does not start with prefix (case-insensitive)
      - `endsWith` string — Ends with suffix (case-insensitive)
      - `notEndsWith` string — Does not end with suffix (case-insensitive)
      - `isNull` boolean — Field is null (true) or not null (false)
    - `phone` StringFilter — Filter options for string fields
      - `equalTo` string — Exact match
      - `notEqualTo` string — Not equal to
      - `in` string[] — Matches any value in the array
      - `notIn` string[] — Does not match any value in the array
      - `includes` string — Contains substring (case-insensitive)
      - `notIncludes` string — Does not contain substring (case-insensitive)
      - `startsWith` string — Starts with prefix (case-insensitive)
      - `notStartsWith` string — Does not start with prefix (case-insensitive)
      - `endsWith` string — Ends with suffix (case-insensitive)
      - `notEndsWith` string — Does not end with suffix (case-insensitive)
      - `isNull` boolean — Field is null (true) or not null (false)
    - `status` VendorStatusFilter — Filter for vendor status enum field
      - `equalTo` 'ACTIVE' | 'INACTIVE' | 'DO_NOT_USE' — Vendor status
      - `notEqualTo` 'ACTIVE' | 'INACTIVE' | 'DO_NOT_USE' — Vendor status
      - `in` VendorStatus[] — Matches any value in the list
      - `notIn` VendorStatus[] — Does not match any value in the list
      - `isNull` boolean — Field is null (true) or not null (false)
    - `notes` StringFilter — Filter options for string fields
      - `equalTo` string — Exact match
      - `notEqualTo` string — Not equal to
      - `in` string[] — Matches any value in the array
      - `notIn` string[] — Does not match any value in the array
      - `includes` string — Contains substring (case-insensitive)
      - `notIncludes` string — Does not contain substring (case-insensitive)
      - `startsWith` string — Starts with prefix (case-insensitive)
      - `notStartsWith` string — Does not start with prefix (case-insensitive)
      - `endsWith` string — Ends with suffix (case-insensitive)
      - `notEndsWith` string — Does not end with suffix (case-insensitive)
      - `isNull` boolean — Field is null (true) or not null (false)
    - `taxId` StringFilter — Filter options for string fields
      - `equalTo` string — Exact match
      - `notEqualTo` string — Not equal to
      - `in` string[] — Matches any value in the array
      - `notIn` string[] — Does not match any value in the array
      - `includes` string — Contains substring (case-insensitive)
      - `notIncludes` string — Does not contain substring (case-insensitive)
      - `startsWith` string — Starts with prefix (case-insensitive)
      - `notStartsWith` string — Does not start with prefix (case-insensitive)
      - `endsWith` string — Ends with suffix (case-insensitive)
      - `notEndsWith` string — Does not end with suffix (case-insensitive)
      - `isNull` boolean — Field is null (true) or not null (false)
    - `currency` CurrencyFilter — Filter for currency enum field
      - `equalTo` 'ARS' | 'AUD' | 'BRL' | 'CAD' | 'CNY' | 'EUR' | 'GBP' | 'IDR' | 'INR' | 'JPY' | 'KRW' | 'MXN' | 'RUB' | 'SAR' | 'TRY' | 'USD' | 'ZAR' — Currency code
      - `notEqualTo` 'ARS' | 'AUD' | 'BRL' | 'CAD' | 'CNY' | 'EUR' | 'GBP' | 'IDR' | 'INR' | 'JPY' | 'KRW' | 'MXN' | 'RUB' | 'SAR' | 'TRY' | 'USD' | 'ZAR' — Currency code
      - `in` VendorsCurrency[] — Matches any value in the list
      - `notIn` VendorsCurrency[] — Does not match any value in the list
      - `isNull` boolean — Field is null (true) or not null (false)
    - `paymentTermId` UUIDFilter — Filter options for UUID fields (all operations)
      - `equalTo` string, uuid — Exact match
      - `notEqualTo` string, uuid — Not equal to
      - `in` string[] — Matches any UUID in the array
      - `notIn` string[] — Does not match any UUID in the array
      - `isNull` boolean — Field is null (true) or not null (false)
    - `isMvmnt` BooleanFilter — Filter options for boolean fields
      - `equalTo` boolean — Exact match
      - `notEqualTo` boolean — Not equal to
      - `isNull` boolean — Field is null (true) or not null (false)
    - `deletedById` UUIDFilter — Filter options for UUID fields (all operations)
      - `equalTo` string, uuid — Exact match
      - `notEqualTo` string, uuid — Not equal to
      - `in` string[] — Matches any UUID in the array
      - `notIn` string[] — Does not match any UUID in the array
      - `isNull` boolean — Field is null (true) or not null (false)
    - `createdAt` DatetimeFilter — Filter options for datetime fields
      - `equalTo` string, date-time — Exact match
      - `notEqualTo` string, date-time — Not equal to
      - `lessThan` string, date-time — Before this datetime
      - `lessThanOrEqualTo` string, date-time — On or before this datetime
      - `greaterThan` string, date-time — After this datetime
      - `greaterThanOrEqualTo` string, date-time — On or after this datetime
      - `isNull` boolean — Field is null (true) or not null (false)
    - `updatedAt` DatetimeFilter — Filter options for datetime fields
      - `equalTo` string, date-time — Exact match
      - `notEqualTo` string, date-time — Not equal to
      - `lessThan` string, date-time — Before this datetime
      - `lessThanOrEqualTo` string, date-time — On or before this datetime
      - `greaterThan` string, date-time — After this datetime
      - `greaterThanOrEqualTo` string, date-time — On or after this datetime
      - `isNull` boolean — Field is null (true) or not null (false)
    - `deletedAt` DatetimeFilter — Filter options for datetime fields
      - `equalTo` string, date-time — Exact match
      - `notEqualTo` string, date-time — Not equal to
      - `lessThan` string, date-time — Before this datetime
      - `lessThanOrEqualTo` string, date-time — On or before this datetime
      - `greaterThan` string, date-time — After this datetime
      - `greaterThanOrEqualTo` string, date-time — On or after this datetime
      - `isNull` boolean — Field is null (true) or not null (false)
  - `pageSize` integer — Number of results per page
  - `cursor` string — Pagination cursor for next page

## Response `200`

Filtered vendors with pagination

- object
  - `data` Vendor[], required
    - `object` 'VENDOR' — Object type identifier
    - `id` string, uuid, required — Unique vendor identifier
    - `friendlyId` string, required — Human-readable vendor identifier
    - `name` string, required — Vendor legal name
    - `key` string, nullable — Client-defined reference identifier
    - `email` string, email, nullable — Primary email address
    - `phone` string, nullable — Primary phone number
    - `status` string, nullable — Vendor status
    - `notes` string, nullable — Internal notes about the vendor
    - `taxId` string, nullable — Tax identification number
    - `currency` 'ARS' | 'AUD' | 'BRL' | 'CAD' | 'CNY' | 'EUR' | 'GBP' | 'IDR' | 'INR' | 'JPY' | 'KRW' | 'MXN' | 'RUB' | 'SAR' | 'TRY' | 'USD' | 'ZAR' — Currency code
    - `corporateAddress` Address — Physical address/location details (nested, without id). This is an embedded object representing a Location record. The id is managed internally and not exposed in the API.
      - `line1` string, required — Primary street address line
      - `line2` string, nullable — Secondary address line (suite, floor, etc.)
      - `city` string, required — City name
      - `state` string, nullable — State or province code
      - `zipCode` string, nullable — Postal / ZIP code
      - `country` string, required — Country name or code
      - `market` string, required — Market or region identifier
      - `latitude` string, nullable — Latitude coordinate
      - `longitude` string, nullable — Longitude coordinate
      - `isAirportOrAirbase` boolean, required — Whether this location is an airport or airbase
      - `isConstructionOrUtilitySite` boolean, required — Whether this location is a construction or utility site
      - `isSmartyValidated` boolean, required — Whether address has been validated by SmartyStreets
      - `obeysDst` boolean, required — Whether this location observes daylight saving time
      - `cityId` string, uuid, nullable — Reference to standardized city record (internal use)
    - `billingAddress` Address — Physical address/location details (nested, without id). This is an embedded object representing a Location record. The id is managed internally and not exposed in the API.
      - `line1` string, required — Primary street address line
      - `line2` string, nullable — Secondary address line (suite, floor, etc.)
      - `city` string, required — City name
      - `state` string, nullable — State or province code
      - `zipCode` string, nullable — Postal / ZIP code
      - `country` string, required — Country name or code
      - `market` string, required — Market or region identifier
      - `latitude` string, nullable — Latitude coordinate
      - `longitude` string, nullable — Longitude coordinate
      - `isAirportOrAirbase` boolean, required — Whether this location is an airport or airbase
      - `isConstructionOrUtilitySite` boolean, required — Whether this location is a construction or utility site
      - `isSmartyValidated` boolean, required — Whether address has been validated by SmartyStreets
      - `obeysDst` boolean, required — Whether this location observes daylight saving time
      - `cityId` string, uuid, nullable — Reference to standardized city record (internal use)
    - `paymentTerm` PaymentTermReference — Enhanced reference to a payment term resource (returned in responses). Includes full payment term details in addition to id/key.
      - `id` string, uuid, required — Payment term UUID
      - `key` string, nullable — Client-defined reference ID if set
      - `name` string, required — Payment term name
      - `description` string, nullable — Payment term description or notes
      - `days` integer, nullable — Number of days until payment is due
      - `quickPayFee` number, float, nullable — Quick pay fee percentage (e.g., 0.05 for 5%)
      - `apOnly` boolean, nullable — Whether this payment term is for accounts payable only
      - `doNotUse` boolean, nullable — Flag to prevent using this payment term for new transactions
      - `createdAt` string, date-time, required — When the payment term was created
      - `updatedAt` string, date-time, required — When the payment term was last updated
      - `deletedAt` string, date-time, nullable — When the payment term was soft deleted (null if active)
    - `isMvmnt` boolean, nullable — Whether this vendor is MVMNT itself
    - `requiredDocuments` string[], nullable — List of required document types
    - `paymentMethods` VendorPaymentMethodReference[] — Payment methods configured for this vendor
      - `id` string, uuid, required — Unique vendor payment method identifier
      - `key` string, nullable — Client-defined reference identifier
      - `paymentMethodType` 'ACH_WIRE' | 'ZELLE' | 'VENMO' | 'ACH' | 'CHECK' | 'WIRE' | 'CAD_EFT' | 'TRIUMPH_PAY' | 'COMCHECK' | 'EFS' | 'ECHECK', required — Payment method type
      - `status` string, nullable — Payment method status
      - `isPreferred` boolean, nullable — Whether this is the preferred payment method
      - `email` string, email, nullable — Email address for payment notifications
      - `phone` string, nullable — Phone number for payment contact
      - `companyName` string, nullable — Company name for this payment method
      - `username` string, nullable — Username for payment platforms
      - `bankName` string, nullable — Bank name
      - `bankAddress` string, nullable — Bank address
      - `accountName` string, nullable — Bank account holder name
      - `accountNumber` string, nullable — Bank account number (masked in responses)
      - `abaAch` string, nullable — ABA/ACH routing number
      - `wire` string, nullable — Wire transfer routing number
      - `swiftCode` string, nullable — SWIFT/BIC code
      - `eftInstitution` string, nullable — EFT institution number (Canadian banking)
      - `eftTransit` string, nullable — EFT transit number (Canadian banking)
      - `clabe` string, nullable — CLABE number (Mexican banking)
      - `currency` string, nullable — Preferred currency code
      - `paymentTerm` PaymentTermReference — Enhanced reference to a payment term resource (returned in responses). Includes full payment term details in addition to id/key.
        - `id` string, uuid, required — Payment term UUID
        - `key` string, nullable — Client-defined reference ID if set
        - `name` string, required — Payment term name
        - `description` string, nullable — Payment term description or notes
        - `days` integer, nullable — Number of days until payment is due
        - `quickPayFee` number, float, nullable — Quick pay fee percentage (e.g., 0.05 for 5%)
        - `apOnly` boolean, nullable — Whether this payment term is for accounts payable only
        - `doNotUse` boolean, nullable — Flag to prevent using this payment term for new transactions
        - `createdAt` string, date-time, required — When the payment term was created
        - `updatedAt` string, date-time, required — When the payment term was last updated
        - `deletedAt` string, date-time, nullable — When the payment term was soft deleted (null if active)
      - `createdAt` string, date-time, required — When the payment method was created
      - `updatedAt` string, date-time, required — When the payment method was last updated
      - `deletedAt` string, date-time, nullable — When the payment method was soft deleted
      - `deletedBy` UserReference — Enhanced reference to a user resource (returned in responses). Includes full user details in addition to id/key. Note: Does NOT include nested references (teams, etc.) to prevent recursion. Maximum nesting depth: 1 level.
        - `id` string, uuid, required — User UUID
        - `key` string, nullable — Client-defined reference ID if set
        - `email` string, email, required — User's email address
        - `name` string, nullable — User's full name
        - `phone` string, nullable — User's phone number
        - `phoneExt` string, nullable — Phone extension
        - `status` 'PENDING' | 'ACTIVE' | 'INACTIVE', required — User account status
        - `avatarId` string, uuid, nullable — Profile avatar document ID
        - `createdAt` string, date-time, required — When the user was created
        - `updatedAt` string, date-time, required — When the user was last updated
        - `deletedAt` string, date-time, nullable — When the user was soft deleted (null if active)
    - `contacts` VendorContactReference[] — Contacts for this vendor
      - `object` 'VENDOR_CONTACT' — Object type identifier
      - `id` string, uuid, required — Unique contact identifier
      - `key` string, nullable — Client-defined reference identifier
      - `email` string, email, nullable — Contact email address
      - `phone` string, nullable — Contact phone number
      - `role` string, nullable — Contact role or title (deprecated - use roles array)
      - `roles` VendorContactRole[], nullable — Types/roles this contact serves
      - `deletedBy` UserReference — Enhanced reference to a user resource (returned in responses). Includes full user details in addition to id/key. Note: Does NOT include nested references (teams, etc.) to prevent recursion. Maximum nesting depth: 1 level.
        - `id` string, uuid, required — User UUID
        - `key` string, nullable — Client-defined reference ID if set
        - `email` string, email, required — User's email address
        - `name` string, nullable — User's full name
        - `phone` string, nullable — User's phone number
        - `phoneExt` string, nullable — Phone extension
        - `status` 'PENDING' | 'ACTIVE' | 'INACTIVE', required — User account status
        - `avatarId` string, uuid, nullable — Profile avatar document ID
        - `createdAt` string, date-time, required — When the user was created
        - `updatedAt` string, date-time, required — When the user was last updated
        - `deletedAt` string, date-time, nullable — When the user was soft deleted (null if active)
      - `createdAt` string, date-time, required — When the contact was created
      - `deletedAt` string, date-time, nullable — When the contact was soft deleted
    - `deletedBy` UserReference — Enhanced reference to a user resource (returned in responses). Includes full user details in addition to id/key. Note: Does NOT include nested references (teams, etc.) to prevent recursion. Maximum nesting depth: 1 level.
      - `id` string, uuid, required — User UUID
      - `key` string, nullable — Client-defined reference ID if set
      - `email` string, email, required — User's email address
      - `name` string, nullable — User's full name
      - `phone` string, nullable — User's phone number
      - `phoneExt` string, nullable — Phone extension
      - `status` 'PENDING' | 'ACTIVE' | 'INACTIVE', required — User account status
      - `avatarId` string, uuid, nullable — Profile avatar document ID
      - `createdAt` string, date-time, required — When the user was created
      - `updatedAt` string, date-time, required — When the user was last updated
      - `deletedAt` string, date-time, nullable — When the user was soft deleted (null if active)
    - `createdAt` string, date-time, required — When the vendor was created
    - `updatedAt` string, date-time, required — When the vendor was last updated
    - `deletedAt` string, date-time, nullable — When the vendor was soft deleted (null if active)
  - `pageInfo` PaginationInfo, required
    - `pageSize` integer, required — Number of items per page
    - `hasNextPage` boolean, required — Whether there are more pages
    - `hasPreviousPage` boolean — Whether there are previous pages
    - `endCursor` string, nullable — Cursor for the next page (null if no next page)

## Other responses

- `400` — Bad request - invalid input
- `401` — Unauthorized - invalid or missing access token
- `500` — Internal server error

---

[API](https://skmtc.dev/mvmnt/apis/mvmnt-api.md) · [All operations](https://skmtc.dev/mvmnt/apis/mvmnt-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/mvmnt/mvmnt-api/revisions/7af4e91459ca/schema)
