Procurify vendors API
The vendors API from Procurify — 2 operation(s) for vendors.
The vendors API from Procurify — 2 operation(s) for vendors.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/procurify-vendors-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Procurify API Documentation account-codes Vendors API
version: '1.0'
description: '
# Disclaimer
- Procurify’s API is evolving and is subject to change at any time. Additionally, aspects of the API are undocumented, including certain methods, events, and properties. Given that both documented and undocumented aspects of the Procurify API may change at any time, the client relies on the API at their own risk.
- Client (and/or client’s representative) is responsible for building, testing, and maintaining any API connection between Procurify and any other tool. Procurify’s responsibility strictly involves providing support on clarifications in regards to the issued API document.
- Procurify’s API is offered on an “as is” and “as available” basis, without warranties of any kind. By accepting this agreement, you agree that you have read the current API documentation, and accept the API functionality in its current state including current limitations. For questions and clarification around the documentation, please contact support@procurify.com.
- In accordance with Section 2.(b) of our Subscription Services Agreement, Procurify reserves the right to deny access to our API at any time. If your API requests are too large and time out, contact us immediately to avoid possible suspension of access.
- You may not attempt to reverse engineer or otherwise derive source code, trade secrets, or know-how in the Procurify API or portion thereof. You may not use the Procurify API to replicate or compete with core products or services offered by Procurify.
'
servers:
- url: https://{user_domain}.procurify.com
description: Your Procurify domain
variables:
user_domain:
default: your-domain
description: Your procurify domain
tags:
- name: vendors
paths:
/api/v3/vendors/:
get:
operationId: vendors_list
description: '**Vendor Type Codes**
| Vendor Type | Type | Description |
|---------------------|-----------|-----------------------------------|
| OTHER | 1 | Previously ''OTHER'' vendor (ID=1), used for storing non-vendor
| | | for storing non-vendor Vendor names in request. |
| HIDDEN | 2 | New type of vendors that is reserved for system purposes (eg. Amazon Business). |
| PREFERRED (default) | 3 | The default vendors from previous list
| | | where active vendor dropdowns everywhere previously showed.
| | | Request now ONLY shows these vendors (+OTHER) |
| REGULAR | 4 | New type of vendors that are non-preferred,
| | | for any AP purposes and purchasers to update.
| | | (DOES NOT show up in Request, but shows up in Procure) |
| EMPLOYEE | 5 | New type of vendors that do not show up anywhere except in AP employees list. |
| CC_PROVIDER | 6 | Similar type of vendors to AP employees, but for AP credit card providers. |'
summary: Get list of all active vendors
parameters:
- in: query
name: exclude_other
schema:
type: boolean
- in: query
name: external_id
schema:
type: string
- in: query
name: format
schema:
type: string
enum:
- csv
- json
- in: query
name: name
schema:
type: string
- name: order_by
required: false
in: query
description: Which field to use when ordering the results.
schema:
type: string
- name: page
required: false
in: query
description: A page number within the paginated result set.
schema:
type: integer
- name: page_size
required: false
in: query
description: Number of results to return per page.
schema:
type: integer
- name: search
required: false
in: query
description: A search term.
schema:
type: string
- in: query
name: type
schema:
type: integer
enum:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
description: 'Type of the vendor. See above for possible options.
* `1` - other
* `2` - amazon punchout
* `3` - preferred
* `4` - regular
* `5` - employee
* `6` - credit card provider
* `7` - checkout'
- in: query
name: type__in
schema:
type: array
items:
type: string
enum:
- amazon_punchout
- cc_provider
- checkout
- employee
- other
- pending
- preferred
- regular
description: '* `other` - other
* `amazon_punchout` - amazon_punchout
* `preferred` - preferred
* `regular` - regular
* `employee` - employee
* `cc_provider` - cc_provider
* `checkout` - checkout
* `pending` - pending'
explode: true
style: form
- in: path
name: vendor_group
schema:
type: string
enum:
- all
- credit_card_providers
- default
- other
- preferred
- purchasable
- requestable
description: '
**"all"**: Get list of all vendors.
**"credit_card_providers"**: Get list of credit card provider vendors. These vendors are displayed in Payee Management for Credit Card Providers.
**"default"**: Get list of "preferred" and "regular" vendors. These vendors are displayed in Procure (procurement, vendors, etc) and AP i.e., default vendor list. OTHER is discontinued from procure.
**"other"**: Get list of "other" vendors. Only returns the ''OTHER'' vendor reserved for requesting non-vendor names.
**"preferred"**: Get list of "preferred" vendors.
**"purchasable"**: Get list of "purchasable" vendors.
**"requestable"**: Get list of "requestable" vendors. These vendors are displayed in Request and designated by Purchaser.'
required: true
tags:
- vendors
security:
- RemoteAuthentication: []
- M2MAuthentication: []
- BasicAuthentication: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedOptimizedVendorList'
text/csv:
schema:
$ref: '#/components/schemas/PaginatedOptimizedVendorList'
description: ''
post:
operationId: vendors_create
description: 'Create a new vendor
Due to having multiple vendors with the same name, especially
common if user keeps deleting vendors with the same name, these
deleted vendors get thrown into the inactive list.
**Vendor Types**
| Vendor Type | Type |
|---------------------|-----------|
| OTHER | 1 |
| HIDDEN | 2 |
| PREFERRED (default) | 3 |
| REGULAR | 4 |
| EMPLOYEE | 5 |
| CC_PROVIDER | 6 |'
summary: Create Vendor
parameters:
- in: query
name: format
schema:
type: string
enum:
- csv
- json
tags:
- vendors
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/OptimizedVendorRequest'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/OptimizedVendorRequest'
? ''
: schema:
$ref: '#/components/schemas/OptimizedVendorRequest'
application/xml:
schema:
$ref: '#/components/schemas/OptimizedVendorRequest'
multipart/form-data:
schema:
$ref: '#/components/schemas/OptimizedVendorRequest'
required: true
security:
- RemoteAuthentication: []
- M2MAuthentication: []
- BasicAuthentication: []
- cookieAuth: []
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/VendorDetailSerializerSingleCreate'
text/csv:
schema:
$ref: '#/components/schemas/VendorDetailSerializerSingleCreate'
description: ''
/api/v3/vendors/{id}/:
get:
operationId: vendors_retrieve
description: Get detail of a vendor by id
summary: Get Vendor by ID
parameters:
- in: query
name: format
schema:
type: string
enum:
- csv
- json
- in: path
name: id
schema:
type: integer
description: A unique integer value identifying this vendor.
required: true
tags:
- vendors
security:
- RemoteAuthentication: []
- M2MAuthentication: []
- BasicAuthentication: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/VendorDetailSerializerSingleRetrieve'
text/csv:
schema:
$ref: '#/components/schemas/VendorDetailSerializerSingleRetrieve'
description: ''
put:
operationId: vendors_update
summary: Update Vendor
parameters:
- in: query
name: format
schema:
type: string
enum:
- csv
- json
- in: path
name: id
schema:
type: integer
description: A unique integer value identifying this vendor.
required: true
tags:
- vendors
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/OptimizedVendorRequest'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/OptimizedVendorRequest'
? ''
: schema:
$ref: '#/components/schemas/OptimizedVendorRequest'
application/xml:
schema:
$ref: '#/components/schemas/OptimizedVendorRequest'
multipart/form-data:
schema:
$ref: '#/components/schemas/OptimizedVendorRequest'
required: true
security:
- RemoteAuthentication: []
- M2MAuthentication: []
- BasicAuthentication: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/VendorSerializerSingle'
text/csv:
schema:
$ref: '#/components/schemas/VendorSerializerSingle'
description: ''
patch:
operationId: vendors_partial_update
summary: Partial Update Vendor
parameters:
- in: query
name: format
schema:
type: string
enum:
- csv
- json
- in: path
name: id
schema:
type: integer
description: A unique integer value identifying this vendor.
required: true
tags:
- vendors
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PatchedOptimizedVendorRequest'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/PatchedOptimizedVendorRequest'
? ''
: schema:
$ref: '#/components/schemas/PatchedOptimizedVendorRequest'
application/xml:
schema:
$ref: '#/components/schemas/PatchedOptimizedVendorRequest'
multipart/form-data:
schema:
$ref: '#/components/schemas/PatchedOptimizedVendorRequest'
security:
- RemoteAuthentication: []
- M2MAuthentication: []
- BasicAuthentication: []
- cookieAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/OptimizedVendorSerializerSingle'
text/csv:
schema:
$ref: '#/components/schemas/OptimizedVendorSerializerSingle'
description: ''
components:
schemas:
ShippingTermRequest:
type: object
properties:
name:
type: string
minLength: 1
maxLength: 100
description:
type:
- string
- 'null'
active:
type: boolean
required:
- name
ShippingMethodRequest:
type: object
properties:
name:
type: string
minLength: 1
maxLength: 100
description:
type:
- string
- 'null'
active:
type: boolean
required:
- name
PaymentTermRequest:
type: object
properties:
name:
type: string
minLength: 1
maxLength: 100
description:
type:
- string
- 'null'
active:
type: boolean
required:
- name
ShippingTerm:
type: object
properties:
id:
type: integer
readOnly: true
name:
type: string
maxLength: 100
description:
type:
- string
- 'null'
active:
type: boolean
required:
- name
CreditCardAssignee:
type: object
properties:
id:
type: integer
readOnly: true
firstName:
type: string
maxLength: 100
lastName:
type: string
maxLength: 100
email:
type: string
format: email
maxLength: 254
profile_image:
type:
- string
- 'null'
required:
- email
Vendor:
type: object
properties:
id:
type: integer
readOnly: true
name:
type: string
description: Name of the vendor
maxLength: 150
active:
type: boolean
addressLineOne:
type:
- string
- 'null'
title: Address line 1
description: First line of address
maxLength: 300
addressLineTwo:
type:
- string
- 'null'
title: Address line 2
description: Second line of address
maxLength: 300
postalCode:
type:
- string
- 'null'
title: Postal Code
description: Postal or Zip code of the vendor
maxLength: 20
city:
type:
- string
- 'null'
description: City of the vendor
maxLength: 50
state_province:
type:
- string
- 'null'
title: State/Province
description: State or Province of the vendor
maxLength: 40
country:
type:
- string
- 'null'
description: Country of the vendor
maxLength: 80
phoneOne:
type:
- string
- 'null'
description: Primary phone no. of the vendor
maxLength: 20
phoneTwo:
type:
- string
- 'null'
description: Secondary phone no. of the vendor
maxLength: 20
fax:
type:
- string
- 'null'
description: Fax no. of the vendor
maxLength: 20
email:
type: array
items:
type: string
format: email
comments:
type:
- string
- 'null'
description: Notes about the vendor
contact:
type:
- string
- 'null'
description: Contact person of the vendor
maxLength: 50
url:
type:
- string
- 'null'
description: Website of the vendor
maxLength: 200
external_id:
type:
- string
- 'null'
description: External id of the vendor
maxLength: 100
dateModified:
type: string
format: date-time
readOnly: true
currency:
type:
- integer
- 'null'
payment_term_ref:
type:
- integer
- 'null'
shipping_term_ref:
type:
- integer
- 'null'
payment_method_ref:
type:
- integer
- 'null'
shipping_method_ref:
type:
- integer
- 'null'
payment_methods:
type: array
items:
$ref: '#/components/schemas/PaymentMethodRead'
readOnly: true
tax:
type:
- integer
- 'null'
type:
$ref: '#/components/schemas/VendorTypeEnum'
default_payment_method:
type:
- integer
- 'null'
creditcards:
type: array
items:
$ref: '#/components/schemas/CreditCard'
readOnly: true
is_1099_eligible:
type:
- boolean
- 'null'
title: 1099 Eligible?
overall_score:
type:
- number
- 'null'
format: double
readOnly: true
is_auto_email_po_enabled:
type: boolean
po_pdf_labels:
type: string
description: Placeholder for a KVStore value
maxLength: 200
email_configurations:
type: object
additionalProperties:
$ref: '#/components/schemas/EmailConfiguration'
required:
- name
- type
VendorSerializerSingle:
type: object
properties:
metadata:
type: object
additionalProperties: {}
default: {}
data:
$ref: '#/components/schemas/Vendor'
required:
- data
PaymentMethodRead:
type: object
properties:
id:
type: integer
readOnly: true
name:
type: string
maxLength: 255
type:
allOf:
- $ref: '#/components/schemas/PaymentMethodTypeEnum'
title: Payment Method
minimum: 0
maximum: 4294967295
data: {}
currency:
$ref: '#/components/schemas/Currency'
payment_rail:
type: string
readOnly: true
bank_account_country_code:
type:
- string
- 'null'
readOnly: true
required:
- currency
- data
PaymentMethod:
type: object
properties:
id:
type: integer
readOnly: true
name:
type: string
maxLength: 100
description:
type:
- string
- 'null'
active:
type: boolean
required:
- name
CreditCard:
type: object
properties:
id:
type: integer
readOnly: true
uuid:
type: string
format: uuid
is_active:
type: boolean
created_at:
type: string
format: date-time
readOnly: true
updated_at:
type: string
format: date-time
readOnly: true
name:
type: string
maxLength: 255
number:
type: string
pattern: ^[0-9]{4}$
maxLength: 19
balance:
type:
- integer
- 'null'
maximum: 2147483647
minimum: -2147483648
gl_code:
type: string
maxLength: 100
type:
allOf:
- $ref: '#/components/schemas/CreditCardTypeEnum'
minimum: -2147483648
maximum: 2147483647
category:
minimum: -2147483648
maximum: 2147483647
oneOf:
- $ref: '#/components/schemas/CategoryEnum'
- $ref: '#/components/schemas/NullEnum'
type:
- integer
- 'null'
external_id:
type: string
description: External id of the Credit Card
maxLength: 100
status:
description: 'The status of the Credit Card
* `pending` - Pending
* `active` - Active
* `inactive` - Inactive
* `canceled` - Canceled
* `lost` - Lost
* `stolen` - Stolen'
oneOf:
- $ref: '#/components/schemas/CreditCardStatusEnum'
- $ref: '#/components/schemas/BlankEnum'
- $ref: '#/components/schemas/NullEnum'
type:
- integer
- 'null'
require_activation:
type: boolean
title: Require new activation?
description: Does this card require new activation?
last_changed_by:
type:
- integer
- 'null'
title: Last changed by user
vendor:
type: integer
payment_method:
type:
- integer
- 'null'
currency:
type: integer
currency_name:
type: string
readOnly: true
creator:
type:
- integer
- 'null'
title: Card Issuer
assignees:
type: array
items:
$ref: '#/components/schemas/CreditCardAssignee'
required:
- assignees
- currency
- uuid
- vendor
PaginatedOptimizedVendorList:
type: object
properties:
metadata:
type: object
properties:
pagination:
type: object
properties:
count:
type: integer
example: 10
next:
type:
- string
- 'null'
format: uri
example: null
previous:
type:
- string
- 'null'
format: uri
example: null
page_size:
type: integer
example: 10
num_pages:
type: integer
example: 1
current_page:
type: integer
example: 1
example:
pagination:
count: 10
next: null
previous: null
page_size: 10
num_pages: 1
current_page: 1
data:
type: array
items:
$ref: '#/components/schemas/OptimizedVendor'
BlankEnum:
enum:
- ''
VendorPerformance:
type: object
properties:
overall_score:
type: number
format: float
readOnly: true
average_delivery_time:
type:
- string
- 'null'
format: decimal
pattern: ^-?\d{0,3}(?:\.\d{0,3})?$
readOnly: true
breakdown:
allOf:
- $ref: '#/components/schemas/VendorBreakdownDocs'
readOnly: true
PaymentTerm:
type: object
properties:
id:
type: integer
readOnly: true
name:
type: string
maxLength: 100
description:
type:
- string
- 'null'
active:
type: boolean
required:
- name
CategoryEnum:
enum:
- 0
- 1
type: integer
description: '* `0` - Physical
* `1` - Virtual'
Currency:
type: object
properties:
id:
type: integer
readOnly: true
name:
type: string
maxLength: 10
description:
type: string
maxLength: 100
rate:
type: string
format: decimal
pattern: ^-?\d{0,9}(?:\.\d{0,6})?$
base:
type: boolean
active:
type: boolean
required:
- name
- rate
NestedVendorRequest:
type: object
properties:
id:
type: integer
readOnly: true
requester:
type: string
readOnly: true
submitted_date:
type: string
format: date-time
next_approver:
type: string
readOnly: true
permissions:
type: object
additionalProperties: {}
readOnly: true
required:
- submitted_date
PaymentMethodTypeEnum:
enum:
- 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
type: integer
description: '* `0` - OTHER
* `1` - CHECK
* `2` - ACH
* `3` - EFT
* `4` - WIRE
* `5` - PROCURIFY_CHECK
* `6` - PROCURIFY_ACH
* `7` - PROCURIFY_WIRE
* `8` - AIRWALLEX'
VendorDetailSerializerSingleRetrieve:
type: object
properties:
metadata:
type: object
additionalProperties: {}
default: {}
data:
$ref: '#/components/schemas/VendorDetail'
required:
- data
NullEnum:
enum:
- null
PatchedOptimizedVendorRequest:
type: object
properties:
name:
type: string
minLength: 1
description: Name of the vendor
maxLength: 150
active:
type: boolean
addressLineOne:
type:
- string
- 'null'
title: Address line 1
description: First line of address
maxLength: 300
addressLineTwo:
type:
- string
- 'null'
title: Address line 2
description: Second line of address
maxLength: 300
postalCode:
type:
- string
- 'null'
title: Postal Code
description: Postal or Zip code of the vendor
maxLength: 20
city:
type:
- string
- 'null'
description: City of the vendor
maxLength: 50
state_province:
type:
- string
- 'null'
title: State/Province
description: State or Province of the vendor
maxLength: 40
country:
type:
- string
- 'null'
description: Country of the vendor
maxLength: 80
phoneOne:
type:
- string
- 'null'
description: Primary phone no. of the vendor
maxLength: 20
phoneTwo:
type:
- string
- 'null'
description: Secondary phone no. of the vendor
maxLength: 20
fax:
type:
- string
- 'null'
description: Fax no. of the vendor
maxLength: 20
email:
type: array
items:
type: string
format: email
minLength: 1
comments:
type:
- string
- 'null'
description: Notes about the vendor
contact:
type:
- string
- 'null'
description: Contact person of the vendor
maxLength: 50
url:
type:
- string
- 'null'
description: Website of the vendor
maxLength: 200
external_id:
type:
- string
- 'null'
description: External id of the vendor
maxLength: 100
currency:
type:
- integer
- 'null'
payment_term_ref:
allOf:
- $ref: '#/components/schemas/PaymentTermRequest'
type:
- object
- 'null'
shipping_term_ref:
allOf:
- $ref: '#/components/schemas/ShippingTermRequest'
type:
- object
- 'null'
payment_method_ref:
allOf:
- $ref: '#/components/schemas/PaymentMethodRequest'
type:
- object
- 'null'
shipping_method_ref:
allOf:
- $ref: '#/components/schemas/ShippingMethodRequest'
type:
- object
- 'null'
tax:
type:
- integer
- 'null'
type:
$ref: '#/components/schemas/VendorTypeEnum'
default_payment_method:
type:
- integer
- 'null'
is_1099_eligible:
type:
- boolean
- 'null'
title: 1099 Eligible?
overall_score:
type:
- string
- 'null'
format: decimal
pattern: ^-?\d{0,2}(?:\.\d{0,3})?$
is_auto_email_po_enabled:
type: boolean
po_pdf_labels:
type: string
description: Placeholder for a KVStore value
maxLength: 200
email_configurations:
type: object
additionalProperties:
$ref: '#/components/schemas/EmailConfigurationRequest'
OptimizedVendorRequest:
type: object
properties:
name:
type: string
minLength: 1
description: Name of the vendor
maxLength: 150
active:
type: boolean
addressLineOne:
type:
- string
- 'null'
title: Address line 1
description: First line of address
maxLength: 300
addressLineTwo:
type:
- string
- 'null'
title: Address line 2
description: Second line of address
maxLength: 300
postalCode:
type:
- string
- 'null'
title: Postal Code
description: Postal or Zip code of the vendor
maxLength: 20
city:
type:
- string
- 'null'
description: City of the vendor
maxLength: 50
state_province:
type:
- string
- 'null'
title: State/Province
description: State or Province of the vendor
maxLength: 40
country:
type:
- string
- 'null'
description: Country of the vendor
maxLength: 80
phoneOne:
type:
- string
- 'null'
description: Primary phone no. of the vendor
maxLength: 20
phoneTwo:
type:
- string
- 'null'
description: Secondary phone no. of the vendor
maxLength: 20
fax:
type:
- string
- 'null'
description: Fax no. of the vendor
maxLength: 20
email:
type: array
items:
type: string
format: email
minLength: 1
comments:
type:
- string
- 'null'
description: Notes about the vendor
contact:
type:
- string
- 'null'
description: Contact person of the vendor
maxLength: 50
url:
type:
- string
- 'null'
description: Website of the vendor
maxLength: 200
external_id:
type:
- string
- 'null'
description: External id of the vendor
maxLength: 100
currency:
type:
- integer
- 'null'
payment_term_ref:
allOf:
# --- truncated at 32 KB (46 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/procurify/refs/heads/main/openapi/procurify-vendors-api-openapi.yml