Procurify API Documentation

Download OpenAPI specification:Download

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.

oauth

Authenticate with OAuth

Getting access to Procurify API involves the following three steps:

  1. Request credentials for your Procurify account.
  2. Request access token using your credentials.
  3. Use access token to access Procurify API resources.

Request credentials for your Procurify account.

The first step is to request credentials from Procurify. Your role must have access to manage integrations settings in order to request API credentials. You can request API credentials by going to go:

  1. Settings in the left navigation bar.
  2. Integrations in the Tools section.
  3. View button beside API item

This page will allow you to enter an optional description of the application you are developing with the Procurify API and once you are ready, click on “Create Application”. On the next screen, you will be presented with a Client ID and a Client Secret. You will need to copy and save these credentials securely. Please note that the Client Secret is only presented once.

Request access token using your credentials.

Once you have the client credentials, you will need to request an access token using these credentials that can be used as a bearer token when making a request to Procurify API. You will need the following information to request an access token:

Info Value
Token URL: https://<your-domain>.procurify.com/oauth/token
Client ID: From the previous step
Client Secret: From the previous step
Audience: https://api.procurify.com/
Grant Type: client_credentials

Once you have the access token, you will need to cache it until it expires (24 hrs). Please let Procurify support know if you would like help with this.

An example request and response using cURL (replace client id and client secret)

$ curl -H "content-type: application/json" -X POST \
    -d '{"client_id": "~your_client_id~", \
         "client_secret": "~your_client_secret~", \
         "audience": "https://api.procurify.com/", \
         "grant_type": "client_credentials"}' \
    https://<your-domain>.procurify.com/oauth/token

{"access_token": "~your-access-token~",
 "scope": "urn:procurify-api:domain:~your_domain~ urn:procurify-api:email:~your_email~",
 "expires_in": 86400,
 "token_type": "Bearer"}

Use access token to access Procurify API resources.

Once you have the access token, you can make requests to Procurify API resources. You will need to set the following headers when making the request.

Key Value
Authorization: Bearer access_token from previous step
X-Procurify-Client: api

An example request and response using cURL (replace access token and your procurify domain)

$ curl -H "Authorization: Bearer ~access_token~" \
    -H "X-Procurify-Client: api" \
    https://<your-domain>.procurify.com/api/v3/vendors/

    {"data":[{"id":1,"name":"OTHER","active":true,"addressLineOne":"OTHER"...}
Request
Request Body schema: application/json
client_id
string
client_secret
string
audience
string
grant_type
string
Responses
200

Successful authentication

Response Schema: application/json
access_token
string
scope
string
expires_in
number
token_type
string
Value: "Bearer"
post/oauth/token
Request samples
application/json
{
  • "client_id": "~your_client_id~",
  • "client_secret": "~your_client_secret~",
  • "grant_type": "client_credentials"
}
Response samples
application/json
{
  • "access_token": "~your-access-token~",
  • "scope": "urn:procurify-api:domain:~your_domain~ urn:procurify-api:email:~your_email~",
  • "expires_in": 86400,
  • "token_type": "Bearer"
}

permissions

Get Available User Permissions

SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
query Parameters
format
string
Enum: "csv" "json"
order_by
string

Which field to use when ordering the results.

page
integer

A page number within the paginated result set.

page_size
integer

Number of results to return per page.

search
string

A search term.

Responses
200
Response Schema:
object
Array of objects (PermissionRead)
get/api/v3/permissions/
Response samples
{
  • "metadata": {
    },
  • "data": [
    ]
}

Get Available System Roles

SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
query Parameters
format
string
Enum: "csv" "json"
order_by
string

Which field to use when ordering the results.

page
integer

A page number within the paginated result set.

page_size
integer

Number of results to return per page.

permission
string
search
string

A search term.

type
integer
user
integer
userprofile
integer
Responses
200
Response Schema:
object
Array of objects (PermissionGroup)
get/api/v3/permissions/groups/
Response samples
{
  • "metadata": {
    },
  • "data": [
    ]
}

users

List Users

SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
query Parameters
format
string
Enum: "csv" "json"
is_active
boolean
location
string
order_by
string

Which field to use when ordering the results.

page
integer

A page number within the paginated result set.

page_size
integer

Number of results to return per page.

pending_invite
boolean
permission
string
role
integer
search
string

A search term.

Responses
200
Response Schema:
object
Array of objects (UserProfileUnoptimized)
get/api/v3/users/
Response samples
{
  • "metadata": {
    },
  • "data": [
    ]
}

Create New User

SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
query Parameters
format
string
Enum: "csv" "json"
Request Body schema:
required
Array
email
required
string <email> non-empty
send_invitation_email
boolean
Default: true
first_name
string
Default: ""
last_name
string
Default: ""
phone
string
Default: ""
position
string
Default: ""
role_id
integer >= 0
Default: 0
all_locations
boolean
Default: false
Array of objects (LocationIdValidationSerializersRequest)
Default: []
home_department
integer >= 0
Default: 0
home_location
integer >= 0
Default: 0
Responses
201
Response Schema:
object
Default: {}
required
Array of objects (UserProfileUnoptimized)
post/api/v3/users/
Request samples
[
  • {
    }
]
Response samples
{
  • "metadata": { },
  • "data": [
    ]
}

Update User

SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
path Parameters
id
required
integer

A unique integer value identifying this user profile.

query Parameters
format
string
Enum: "csv" "json"
Request Body schema:
required
id
integer
user
integer
email
required
string <email> [ 1 .. 254 ] characters
firstName
required
string non-empty
lastName
required
string non-empty
location
required
integer or null
department
required
integer or null
position
string
Default: ""
phone
string
Default: ""
profile_image
string or null
is_sso_enabled
boolean
Default: false
mark_for_skip
boolean
Default: false
mark_for_delete
boolean
Default: false
Responses
200
Response Schema:
object
Default: {}
required
object (UserProfileUnoptimized)
put/api/v3/users/{id}/
Request samples
{
  • "id": 0,
  • "user": 0,
  • "email": "user@example.com",
  • "firstName": "string",
  • "lastName": "string",
  • "location": 0,
  • "department": 0,
  • "position": "",
  • "phone": "",
  • "profile_image": "string",
  • "is_sso_enabled": false,
  • "mark_for_skip": false,
  • "mark_for_delete": false
}
Response samples
{
  • "metadata": { },
  • "data": {
    }
}

Deactivate User

SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
path Parameters
id
required
integer

A unique integer value identifying this user profile.

query Parameters
format
string
Enum: "csv" "json"
Responses
204

No response body

delete/api/v3/users/{id}/

Get Logged-in User

Get the logged in user account information

SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
query Parameters
format
string
Enum: "csv" "json"
Responses
200
Response Schema:
object
Default: {}
required
object (UserProfileMe)
get/api/v3/users/me/
Response samples
{
  • "data": {
    },
  • "metadata": { }
}

locations

Get Locations

SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
query Parameters
active
boolean
format
string
Enum: "csv" "json"
headquarter
boolean
order_by
string

Which field to use when ordering the results.

page
integer

A page number within the paginated result set.

page_size
integer

Number of results to return per page.

search
string

A search term.

Responses
200
Response Schema:
object
Array of objects (LocationViewSerializerList)
get/api/v2/locations/
Response samples
{
  • "metadata": {
    },
  • "data": [
    ]
}

Create New Location

Create New Location. Note: only users with superuser permission can create locations.

SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
query Parameters
format
string
Enum: "csv" "json"
Request Body schema:
required
name
required
string [ 1 .. 150 ] characters
url
string or null
logo
string or null
currency
required
string non-empty
phoneOne
required
string [ 1 .. 20 ] characters
fax
string or null <= 20 characters
email
string or null <email> <= 254 characters
required
object (AddressRequest)
required
object (AddressRequest)
required
Array of objects (AddressRequest)
language
integer [ -2147483648 .. 2147483647 ]
  • 1 - English
Value: 1
(LocationTimezoneEnum (integer or null)) or (BlankEnum (integer or null)) or (NullEnum (integer or null))
active
boolean
external_id
string or null <= 100 characters

External id

Responses
201
Response Schema:
object
Default: {}
required
object (LocationView)
post/api/v2/locations/
Request samples
{
  • "name": "string",
  • "url": "string",
  • "logo": "string",
  • "currency": "string",
  • "phoneOne": "string",
  • "fax": "string",
  • "email": "user@example.com",
  • "primary_billing_address": {
    },
  • "primary_shipping_address": {
    },
  • "shipping_addresses": [
    ],
  • "language": 1,
  • "locationTimezone": "Africa/Abidjan",
  • "active": true,
  • "external_id": "string"
}
Response samples
{
  • "metadata": { },
  • "data": {
    }
}

Get Location by ID

SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
path Parameters
id
required
string
query Parameters
format
string
Enum: "csv" "json"
Responses
200
Response Schema:
object
Default: {}
required
object (LocationView)
get/api/v2/locations/{id}/
Response samples
{
  • "metadata": { },
  • "data": {
    }
}

departments

List Departments

SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
query Parameters
branch
integer

Filter departments by their branch.

format
string
Enum: "csv" "json"
include_is_active_for_account_code
integer

Setting this adds the addition of the booeal field 'has_active_account' to each department object of the response. The query param accepts an integer representing the primary key of the account code to check if there exists an account object associated with the department with that account code.

location_perm_override
boolean

Setting this overrides the need to enable the PROCUREMENT_ACCESS and/or RECEIVE_BY_DEPARTMENT feature switches. This parameter can only be used in conjunction with permission and user and cannot function without both of those parameters explicitly set.

locations
Array of integers

Filter departments by the locations (branches) passed in.

order_by
string

Which field to use when ordering the results.

page
integer

A page number within the paginated result set.

page_size
integer

Number of results to return per page.

permission
integer

Filter by permission. In isolation, this parameter can only be set to 68 (add purchase order); 841 (view report); or 899 (receive_po), which correlate with permission to add purchase orders, view reports, and receive purchase orders respectively. However, the results returned correlate with the “by department” version of these permissions, which means that results are filtered by permission to add purchase orders by department, permission to view reports by department, and receive purchase orders by department. This should only be used in conjunction with the PROCUREMENT_ACCESS and/or RECEIVE_BY_DEPARTMENT feature switches. If used in conjunction with location_perm_override=true and user, the value can be set to any permission, and the result will be departments filtered by the provided user and permission values. If used in conjunction with the RECEIVE_BY_DEPARTMENT feature flag, the permission can only be set to 68, 841, or 899 (see second sentence for what these permissions do). The result will be all departments filtered by the provided user value.

requestable
string

Fetch all requestable departments by the currently authorized user. Accepts ORDER, EXPENSE, TRAVEL, and PAY_REQUEST.

search
string

A search term.

user
integer

Filter by user. If this parameter is set, the user must be a superuser or have the add_po_by_department or receive_po_by_department permissions. In isolation, this parameter should only be used in conjunction with the PROCUREMENT_ACCESS and/or RECEIVE_BY_DEPARTMENT feature switches. If used in conjunction with location_perm_override=true and permission query parameter, the result returned will be departments filtered by the provided user and permission values. If used in conjunction with the RECEIVE_BY_DEPARTMENT feature flag, the result will be departments filtered by the user provided and the permission set to 68 (add purchase order); 841 (view report); or 899 (receive purchase order) (see permission query parameter explanation for more information on what these stand for).

Responses
200
Response Schema:
object
Array of objects (DepartmentRead)
get/api/v3/departments/
Response samples
{
  • "metadata": {
    },
  • "data": [
    ]
}

Create New Department

SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
query Parameters
format
string
Enum: "csv" "json"
Request Body schema:
required
branch
required
integer
external_id
string or null <= 100 characters

External id

name
required
string [ 1 .. 150 ] characters
active
boolean
punchout_email
string or null non-empty
Responses
201
Response Schema:
object
Default: {}
required
object (DepartmentRead)
post/api/v3/departments/
Request samples
{
  • "branch": 0,
  • "external_id": "string",
  • "name": "string",
  • "active": true,
  • "punchout_email": "string"
}
Response samples
{
  • "metadata": { },
  • "data": {
    }
}

Update Department

SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
path Parameters
id
required
integer

A unique integer value identifying this department.

query Parameters
format
string
Enum: "csv" "json"
Request Body schema:
required
branch
required
integer
external_id
string or null <= 100 characters

External id

name
required
string [ 1 .. 150 ] characters
active
boolean
punchout_email
string or null non-empty
Responses
200
Response Schema:
object
Default: {}
required
object (DepartmentRead)
put/api/v3/departments/{id}/
Request samples
{
  • "branch": 0,
  • "external_id": "string",
  • "name": "string",
  • "active": true,
  • "punchout_email": "string"
}
Response samples
{
  • "metadata": { },
  • "data": {
    }
}

account-codes

Get Account Codes

Account Code Types

Account Code Type Type
ASSETS 0
LIABILITY 1
EXPENSE 2
INCOME 3
EQUITY 4
OTHER 5
SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
query Parameters
active
boolean
code
string
format
string
Enum: "csv" "json"
is_parent
boolean
order_by
string

Which field to use when ordering the results.

page
integer

A page number within the paginated result set.

page_size
integer

Number of results to return per page.

search
string

A search term.

Responses
200
Response Schema:
object
Array of objects (AccountCodeRead)
get/api/v3/account-codes/
Response samples
{
  • "metadata": {
    },
  • "data": [
    ]
}

Create Account Codes

Account Code Types

Account Code Type Type
ASSETS 0
LIABILITY 1
EXPENSE 2
INCOME 3
EQUITY 4
OTHER 5
SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
query Parameters
format
string
Enum: "csv" "json"
Request Body schema:
required
code
required
string [ 1 .. 50 ] characters
description
required
string [ 1 .. 200 ] characters
parent
integer or null
account_type
integer [ -2147483648 .. 2147483647 ]
  • 0 - Assets
  • 1 - Liability
  • 2 - Expense
  • 3 - Income
  • 4 - Equity
  • 5 - Other
Enum: 0 1 2 3 4 5
departments
Array of integers
Responses
201
Response Schema:
object
Default: {}
required
object (AccountCodeRead)
post/api/v3/account-codes/
Request samples
{
  • "code": "string",
  • "description": "string",
  • "parent": 0,
  • "account_type": 0,
  • "departments": [
    ]
}
Response samples
{
  • "metadata": { },
  • "data": {
    }
}

Update Account Code

Account Code Types

Account Code Type Type
ASSETS 0
LIABILITY 1
EXPENSE 2
INCOME 3
EQUITY 4
OTHER 5
SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
path Parameters
id
required
integer

A unique integer value identifying this account code.

query Parameters
format
string
Enum: "csv" "json"
Request Body schema:
required
code
required
string [ 1 .. 50 ] characters
description
required
string [ 1 .. 200 ] characters
account_type
integer [ -2147483648 .. 2147483647 ]
  • 0 - Assets
  • 1 - Liability
  • 2 - Expense
  • 3 - Income
  • 4 - Equity
  • 5 - Other
Enum: 0 1 2 3 4 5
parent
integer or null
Responses
200
Response Schema:
object
Default: {}
required
object (AccountCodeRead)
put/api/v3/account-codes/{id}/
Request samples
{
  • "code": "string",
  • "description": "string",
  • "account_type": 0,
  • "parent": 0
}
Response samples
{
  • "metadata": { },
  • "data": {
    }
}

accounts

Get Accounts

SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
query Parameters
account_code
integer
active
boolean
department
integer
departments
string

A comma-separated list of integers.

format
string
Enum: "csv" "json"
id
integer
in_effect
boolean
locations
string

A comma-separated list of integers.

order_by
string

Which field to use when ordering the results.

page
integer

A page number within the paginated result set.

page_size
integer

Number of results to return per page.

search
string

A search term.

with_expired_budgets
boolean
Responses
200
Response Schema:
object
Array of objects (ChartOfAccountsAccount)
get/api/v3/accounts/
Response samples
{
  • "metadata": {
    },
  • "data": [
    ]
}

vendors

Get list of all active vendors

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.
SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
path Parameters
vendor_group
required
string

"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.

Enum: "all" "credit_card_providers" "default" "other" "preferred" "purchasable" "requestable"
query Parameters
exclude_other
boolean
external_id
string
format
string
Enum: "csv" "json"
name
string
order_by
string

Which field to use when ordering the results.

page
integer

A page number within the paginated result set.

page_size
integer

Number of results to return per page.

search
string

A search term.

type
integer

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
Enum: 1 2 3 4 5 6 7
type__in
Array of strings
  • other - other
  • amazon_punchout - amazon_punchout
  • preferred - preferred
  • regular - regular
  • employee - employee
  • cc_provider - cc_provider
  • checkout - checkout
  • pending - pending
Items Enum: "amazon_punchout" "cc_provider" "checkout" "employee" "other" "pending" "preferred" "regular"
Responses
200
Response Schema:
object
Array of objects (OptimizedVendor)
get/api/v3/vendors/
Response samples
{
  • "metadata": {
    },
  • "data": [
    ]
}

Create Vendor

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
SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
query Parameters
format
string
Enum: "csv" "json"
Request Body schema:
required
name
required
string [ 1 .. 150 ] characters

Name of the vendor

active
boolean
addressLineOne
string or null (Address line 1) <= 300 characters

First line of address

addressLineTwo
string or null (Address line 2) <= 300 characters

Second line of address

postalCode
string or null (Postal Code) <= 20 characters

Postal or Zip code of the vendor

city
string or null <= 50 characters

City of the vendor

state_province
string or null (State/Province) <= 40 characters

State or Province of the vendor

country
string or null <= 80 characters

Country of the vendor

phoneOne
string or null <= 20 characters

Primary phone no. of the vendor

phoneTwo
string or null <= 20 characters

Secondary phone no. of the vendor

fax
string or null <= 20 characters

Fax no. of the vendor

email
required
Array of strings <email>
comments
string or null

Notes about the vendor

contact
string or null <= 50 characters

Contact person of the vendor

url
string or null <= 200 characters

Website of the vendor

external_id
string or null <= 100 characters

External id of the vendor

currency
integer or null
object or null
object or null
object or null
object or null
tax
integer or null
type
required
integer (VendorTypeEnum)
  • 2 - amazon punchout
  • 3 - preferred
  • 4 - regular
  • 6 - credit card provider
  • 7 - checkout
Enum: 2 3 4 6 7
default_payment_method
integer or null
is_1099_eligible
boolean or null (1099 Eligible?)
overall_score
required
string or null <decimal> ^-?\d{0,2}(?:\.\d{0,3})?$
is_auto_email_po_enabled
boolean
po_pdf_labels
string <= 200 characters

Placeholder for a KVStore value

Responses
201
Response Schema:
object
Default: {}
required
object (VendorDetail)
post/api/v3/vendors/
Request samples
{
  • "name": "string",
  • "active": true,
  • "addressLineOne": "string",
  • "addressLineTwo": "string",
  • "postalCode": "string",
  • "city": "string",
  • "state_province": "string",
  • "country": "string",
  • "phoneOne": "string",
  • "phoneTwo": "string",
  • "fax": "string",
  • "email": [
    ],
  • "comments": "string",
  • "contact": "string",
  • "url": "string",
  • "external_id": "string",
  • "currency": 0,
  • "payment_term_ref": {
    },
  • "shipping_term_ref": {
    },
  • "payment_method_ref": {
    },
  • "shipping_method_ref": {
    },
  • "tax": 0,
  • "type": 2,
  • "default_payment_method": 0,
  • "is_1099_eligible": true,
  • "overall_score": "string",
  • "is_auto_email_po_enabled": true,
  • "po_pdf_labels": "string"
}
Response samples
{
  • "metadata": { },
  • "data": {
    }
}

Get Vendor by ID

Get detail of a vendor by id

SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
path Parameters
id
required
integer

A unique integer value identifying this vendor.

query Parameters
format
string
Enum: "csv" "json"
Responses
200
Response Schema:
object
Default: {}
required
object (VendorDetail)
get/api/v3/vendors/{id}/
Response samples
{
  • "metadata": { },
  • "data": {
    }
}

Update Vendor

SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
path Parameters
id
required
integer

A unique integer value identifying this vendor.

query Parameters
format
string
Enum: "csv" "json"
Request Body schema:
required
name
required
string [ 1 .. 150 ] characters

Name of the vendor

active
boolean
addressLineOne
string or null (Address line 1) <= 300 characters

First line of address

addressLineTwo
string or null (Address line 2) <= 300 characters

Second line of address

postalCode
string or null (Postal Code) <= 20 characters

Postal or Zip code of the vendor

city
string or null <= 50 characters

City of the vendor

state_province
string or null (State/Province) <= 40 characters

State or Province of the vendor

country
string or null <= 80 characters

Country of the vendor

phoneOne
string or null <= 20 characters

Primary phone no. of the vendor

phoneTwo
string or null <= 20 characters

Secondary phone no. of the vendor

fax
string or null <= 20 characters

Fax no. of the vendor

email
required
Array of strings <email>
comments
string or null

Notes about the vendor

contact
string or null <= 50 characters

Contact person of the vendor

url
string or null <= 200 characters

Website of the vendor

external_id
string or null <= 100 characters

External id of the vendor

currency
integer or null
object or null
object or null
object or null
object or null
tax
integer or null
type
required
integer (VendorTypeEnum)
  • 2 - amazon punchout
  • 3 - preferred
  • 4 - regular
  • 6 - credit card provider
  • 7 - checkout
Enum: 2 3 4 6 7
default_payment_method
integer or null
is_1099_eligible
boolean or null (1099 Eligible?)
overall_score
required
string or null <decimal> ^-?\d{0,2}(?:\.\d{0,3})?$
is_auto_email_po_enabled
boolean
po_pdf_labels
string <= 200 characters

Placeholder for a KVStore value

Responses
200
Response Schema:
object
Default: {}
required
object (Vendor)
put/api/v3/vendors/{id}/
Request samples
{
  • "name": "string",
  • "active": true,
  • "addressLineOne": "string",
  • "addressLineTwo": "string",
  • "postalCode": "string",
  • "city": "string",
  • "state_province": "string",
  • "country": "string",
  • "phoneOne": "string",
  • "phoneTwo": "string",
  • "fax": "string",
  • "email": [
    ],
  • "comments": "string",
  • "contact": "string",
  • "url": "string",
  • "external_id": "string",
  • "currency": 0,
  • "payment_term_ref": {
    },
  • "shipping_term_ref": {
    },
  • "payment_method_ref": {
    },
  • "shipping_method_ref": {
    },
  • "tax": 0,
  • "type": 2,
  • "default_payment_method": 0,
  • "is_1099_eligible": true,
  • "overall_score": "string",
  • "is_auto_email_po_enabled": true,
  • "po_pdf_labels": "string"
}
Response samples
{
  • "metadata": { },
  • "data": {
    }
}

Partial Update Vendor

SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
path Parameters
id
required
integer

A unique integer value identifying this vendor.

query Parameters
format
string
Enum: "csv" "json"
Request Body schema:
name
string [ 1 .. 150 ] characters

Name of the vendor

active
boolean
addressLineOne
string or null (Address line 1) <= 300 characters

First line of address

addressLineTwo
string or null (Address line 2) <= 300 characters

Second line of address

postalCode
string or null (Postal Code) <= 20 characters

Postal or Zip code of the vendor

city
string or null <= 50 characters

City of the vendor

state_province
string or null (State/Province) <= 40 characters

State or Province of the vendor

country
string or null <= 80 characters

Country of the vendor

phoneOne
string or null <= 20 characters

Primary phone no. of the vendor

phoneTwo
string or null <= 20 characters

Secondary phone no. of the vendor

fax
string or null <= 20 characters

Fax no. of the vendor

email
Array of strings <email>
comments
string or null

Notes about the vendor

contact
string or null <= 50 characters

Contact person of the vendor

url
string or null <= 200 characters

Website of the vendor

external_id
string or null <= 100 characters

External id of the vendor

currency
integer or null
object or null
object or null
object or null
object or null
tax
integer or null
type
integer (VendorTypeEnum)
  • 2 - amazon punchout
  • 3 - preferred
  • 4 - regular
  • 6 - credit card provider
  • 7 - checkout
Enum: 2 3 4 6 7
default_payment_method
integer or null
is_1099_eligible
boolean or null (1099 Eligible?)
overall_score
string or null <decimal> ^-?\d{0,2}(?:\.\d{0,3})?$
is_auto_email_po_enabled
boolean
po_pdf_labels
string <= 200 characters

Placeholder for a KVStore value

Responses
200
Response Schema:
object
Default: {}
required
object (OptimizedVendor)
patch/api/v3/vendors/{id}/
Request samples
{
  • "name": "string",
  • "active": true,
  • "addressLineOne": "string",
  • "addressLineTwo": "string",
  • "postalCode": "string",
  • "city": "string",
  • "state_province": "string",
  • "country": "string",
  • "phoneOne": "string",
  • "phoneTwo": "string",
  • "fax": "string",
  • "email": [
    ],
  • "comments": "string",
  • "contact": "string",
  • "url": "string",
  • "external_id": "string",
  • "currency": 0,
  • "payment_term_ref": {
    },
  • "shipping_term_ref": {
    },
  • "payment_method_ref": {
    },
  • "shipping_method_ref": {
    },
  • "tax": 0,
  • "type": 2,
  • "default_payment_method": 0,
  • "is_1099_eligible": true,
  • "overall_score": "string",
  • "is_auto_email_po_enabled": true,
  • "po_pdf_labels": "string"
}
Response samples
{
  • "metadata": { },
  • "data": {
    }
}

currencies

Get Active/Inactive Currencies

SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
query Parameters
active
boolean
base
boolean
description
string
format
string
Enum: "csv" "json"
name
string
order_by
string

Which field to use when ordering the results.

page
integer

A page number within the paginated result set.

page_size
integer

Number of results to return per page.

rate
number
search
string

A search term.

Responses
200
Response Schema:
object
Array of objects (Currency)
get/api/v2/currencies/
Response samples
{
  • "metadata": {
    },
  • "data": [
    ]
}

catalog

Get All Catalog Bundles

SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
query Parameters
format
string
Enum: "csv" "json"
order_by
string

Which field to use when ordering the results.

page
integer

A page number within the paginated result set.

page_size
integer

Number of results to return per page.

search
string

A search term.

Responses
200
Response Schema:
object
Array of objects (CatalogItemBundleRead)
get/api/v3/catalog-bundles/
Response samples
{
  • "metadata": {
    },
  • "data": [
    ]
}

Get All Catalog Items

SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
query Parameters
bundle
integer
department
string

A comma-separated list of integers.

format
string
Enum: "csv" "json"
internalSKU
string
location
string

A comma-separated list of integers.

max_price
number
min_price
number
order_by
string

Which field to use when ordering the results.

page
integer

A page number within the paginated result set.

page_size
integer

Number of results to return per page.

pref_vendor
integer
search
string

A search term.

Responses
200
Response Schema:
object
Array of objects (CatalogItemRead)
get/api/v3/catalog-items/
Response samples
{
  • "metadata": {
    },
  • "data": [
    ]
}

Create Catalog Item

SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
query Parameters
format
string
Enum: "csv" "json"
Request Body schema:
required
id
integer
name
required
string [ 1 .. 255 ] characters
image
string
unitType
string <= 30 characters
pref_vendor
integer or null
account_code
integer or null
internalSKU
string <= 50 characters
description
string or null
product_url
string or null
currency
required
integer
price
string <decimal> ^-?\d{0,13}(?:\.\d{0,8})?$
rfo_lock
boolean
departments
Array of integers
required
Array of objects
Responses
201
Response Schema:
object
Default: {}
required
object (CatalogItemRead)
post/api/v3/catalog-items/
Request samples
{
  • "id": 0,
  • "name": "string",
  • "image": "string",
  • "unitType": "string",
  • "pref_vendor": 0,
  • "account_code": 0,
  • "internalSKU": "string",
  • "description": "string",
  • "product_url": "string",
  • "currency": 0,
  • "price": "string",
  • "rfo_lock": true,
  • "departments": [
    ],
  • "custom_fields": [
    ]
}
Response samples
{
  • "metadata": { },
  • "data": {
    }
}

Update Catalog Item

SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
path Parameters
id
required
integer

A unique integer value identifying this catalog items.

query Parameters
format
string
Enum: "csv" "json"
Request Body schema:
required
id
integer
name
required
string [ 1 .. 255 ] characters
image
string
unitType
string <= 30 characters
pref_vendor
integer or null
account_code
integer or null
internalSKU
string <= 50 characters
description
string or null
product_url
string or null
currency
required
integer
price
string <decimal> ^-?\d{0,13}(?:\.\d{0,8})?$
rfo_lock
boolean
departments
Array of integers
required
Array of objects
Responses
200
Response Schema:
object
Default: {}
required
object (CatalogItemRead)
put/api/v3/catalog-items/{id}/
Request samples
{
  • "id": 0,
  • "name": "string",
  • "image": "string",
  • "unitType": "string",
  • "pref_vendor": 0,
  • "account_code": 0,
  • "internalSKU": "string",
  • "description": "string",
  • "product_url": "string",
  • "currency": 0,
  • "price": "string",
  • "rfo_lock": true,
  • "departments": [
    ],
  • "custom_fields": [
    ]
}
Response samples
{
  • "metadata": { },
  • "data": {
    }
}

requisitions

Get All Order Items

Order Item Status Codes

Order Item Type Code Description
PURCHASE_PENDING 0 Approved but not purchased.
PURCHASE_INUSE 1 Added to purchaser's PO list.
RECEIVE_PENDING 2 Purchased but not yet received, i.e. receivedPassQty == 0.
RECEIVED 3 Fully received, i.e. receivedPassQty == quantity.
REJECTED_FOR_PURCHASE 4 Rejected at procurement, i.e. denied.
RECEIVE_PARTIAL 5 Partially received, i.e. receivedPassQty != quantity and receivedPassQty > 0.
FULFILLED 6 Received but unused.
APPROVAL_DENIED 7 Denied in approval routing (by approver).
REQUEST_DRAFT 8 Preparing for draft instead of using sessions.
SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
query Parameters
account
integer
account_code
integer

Account Code

active
boolean
approved_datetime_0
string <date>

Approved Date

approved_datetime_1
string <date>

Approved Date

approved_price
number
approved_quantity
number
approver
number
approver_id
number
branch
integer

Location

catalog
boolean
catalog_item
string

A comma-separated list of integers.

currency
integer
department
integer

Department

departments
string

A comma-separated list of integers.

exclude
string

A comma-separated list of integers.

exclude_punchout
boolean
format
string
Enum: "csv" "json"
fulfilment_status
string
is_purchased
boolean
is_recurring
boolean
last_changed_by
integer
last_modified_0
string <date>

Last Modified Date

last_modified_1
string <date>

Last Modified Date

lineComment
string
location
integer

Location

locations
string

A comma-separated list of integers.

name
string
num
string
orderNum
integer
orderNum__status
integer
  • 0 - Pending
  • 1 - Approved
  • 2 - Denied
  • 3 - Purchased
  • 4 - Cancelled
  • 5 - Received
  • 6 - Draft
Enum: 0 1 2 3 4 5 6
order_by
string

Which field to use when ordering the results.

order_created_date_0
string <date>

Order Created Date

order_created_date_1
string <date>

Order Created Date

page
integer

A page number within the paginated result set.

page_size
integer

Number of results to return per page.

po_created_date_0
string <date>

Purchased Date

po_created_date_1
string <date>

Purchased Date

po_vendor
integer

Purchased Vendor

pref_vendor
integer
price
number
purchase_agreement
number
purchased_date_0
string <date>

Purchased Date

purchased_date_1
string <date>

Purchased Date

purchaser
integer
quantity
number
receivedFailQty
number
receivedPassQty
number
requester
integer

Requester

search
string

A search term.

sku
string
status
integer or null
  • 0 - Purchase Pending
  • 1 - Purchaser In-Use
  • 2 - Receive Pending
  • 3 - Received
  • 4 - Rejected for Purchase
  • 5 - Partial Received
  • 6 - Fulfilled
  • 7 - Approval Denied
  • 8 - Request Draft
Enum: 0 1 2 3 4 5 6 7 8
type
integer
  • 0 - One Time
  • 1 - Recurring
  • 2 - Blanket
Enum: 0 1 2
unit
string
Responses
200
Response Schema:
object
Array of objects (OrderItem)
get/api/v2/global/order_items/
Response samples
{
  • "metadata": {
    },
  • "data": [
    ]
}

Get All Orders

Order Status Codes

Order Type Code
PENDING 0
APPROVED 1
REJECTED 2
PURCHASED 3
CANCELLED (legacy) 4
RECEIVED 5
DRAFT 6
SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
query Parameters
branch
integer
dateRequired
string <date-time>
date_0
string <date>

Date

date_1
string <date>

Date

department
integer
format
string
Enum: "csv" "json"
has_blanket_order_items
boolean
is_punchout
boolean
lineCount
integer
location
integer
modified_date_0
string <date>

Last Modified Date

modified_date_1
string <date>

Last Modified Date

order_by
string

Which field to use when ordering the results.

page
integer

A page number within the paginated result set.

page_size
integer

Number of results to return per page.

required_date_0
string <date>

Date Required

required_date_1
string <date>

Date Required

search
string

A search term.

status
integer
  • 0 - Pending
  • 1 - Approved
  • 2 - Denied
  • 3 - Purchased
  • 4 - Cancelled
  • 5 - Received
  • 6 - Draft
Enum: 0 1 2 3 4 5 6
totalPrice
number
Responses
200
Response Schema:
object
Array of objects (OrderRead)
get/api/v2/global/orders/
Response samples
{
  • "metadata": {
    },
  • "data": [
    ]
}

Creating a requisition

SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
query Parameters
format
string
Enum: "csv" "json"
Request Body schema:
required
required_date
required
string <date>
location_name
required
string non-empty
department_name
required
string non-empty
required
Array of objects (RequisitionLineCreateRequest)
Responses
201
Response Schema:
object
Default: {}
required
object (RequisitionRead)
post/api/v3/requisitions/
Request samples
{
  • "required_date": "2019-08-24",
  • "location_name": "string",
  • "department_name": "string",
  • "line_items": [
    ]
}
Response samples
{
  • "metadata": { },
  • "data": {
    }
}

purchase-orders

Revise a Purchase OrderDeprecated

Deprecated method for revising a purchase order. Pending removable after November 16, 2023. Use PUT on /api/v3/purchase-orders/{id} instead.

SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
path Parameters
procurify_PO
required
integer (Procurify PO Number)

A unique integer value identifying this po.

query Parameters
confirm_duplicate_external_po_number
string
Default: "False"

Mechanism to check for duplicate custom PO number. If there is a duplicate, API will fail unless this query param is set to True.

Enum: "False" "True"
format
string
Enum: "csv" "json"
Request Body schema:
required
required
Array of objects (OrderItemPurchaseEditRequest)
Array of objects
Default: []
PO_Num
string or null (PO Number) <= 30 characters
buyer_name
required
string [ 1 .. 100 ] characters
buyer_contact
required
string [ 1 .. 100 ] characters
buyer_addressLineOne
required
string (Address line) [ 1 .. 300 ] characters
buyer_postalCode
required
string (Postal Code) [ 1 .. 20 ] characters
buyer_city
required
string [ 1 .. 50 ] characters
buyer_state_province
string (State/Province) <= 40 characters
buyer_country
required
string (Country) [ 1 .. 80 ] characters
buyer_address
required
integer
comment
string or null (Notes)
receiver_name
required
string [ 1 .. 100 ] characters
receiver_contact
required
string [ 1 .. 100 ] characters
receiver_addressLineOne
required
string (Address line) [ 1 .. 300 ] characters
receiver_postalCode
required
string (Postal Code) [ 1 .. 20 ] characters
receiver_city
required
string [ 1 .. 50 ] characters
receiver_state_province
string (State/Province) <= 40 characters
receiver_country
required
string (Country) [ 1 .. 80 ] characters
receiver_address
required
integer
promise_date
required
string <date-time>
freight
string or null <decimal> ^-?\d{0,13}(?:\.\d{0,6})?$
required
object
required
object
other
string or null <decimal> ^-?\d{0,13}(?:\.\d{0,6})?$
disclaimer_description
string or null <= 100 characters
disclaimer_text
string or null
payment_term_ref
integer or null
shipping_term_ref
integer or null
payment_method_ref
integer or null
shipping_method_ref
integer or null
creditcard
integer or null
version
required
integer
expiry_date
string or null <date-time>
contract
integer or null
Responses
200
Response Schema:
object
Default: {}
required
object (PurchaseOrderDetail)
put/api/v2/purchase_order/revise/{procurify_PO}/
Request samples
{
  • "order_items": [
    ],
  • "custom_fields": [ ],
  • "PO_Num": "string",
  • "buyer_name": "string",
  • "buyer_contact": "string",
  • "buyer_addressLineOne": "string",
  • "buyer_postalCode": "string",
  • "buyer_city": "string",
  • "buyer_state_province": "string",
  • "buyer_country": "string",
  • "buyer_address": 0,
  • "comment": "string",
  • "receiver_name": "string",
  • "receiver_contact": "string",
  • "receiver_addressLineOne": "string",
  • "receiver_postalCode": "string",
  • "receiver_city": "string",
  • "receiver_state_province": "string",
  • "receiver_country": "string",
  • "receiver_address": 0,
  • "promise_date": "2019-08-24T14:15:22Z",
  • "freight": "string",
  • "discount": {
    },
  • "tax": {
    },
  • "other": "string",
  • "disclaimer_description": "string",
  • "disclaimer_text": "string",
  • "payment_term_ref": 0,
  • "shipping_term_ref": 0,
  • "payment_method_ref": 0,
  • "shipping_method_ref": 0,
  • "creditcard": 0,
  • "version": 0,
  • "expiry_date": "2019-08-24T14:15:22Z",
  • "contract": 0
}
Response samples
{
  • "metadata": { },
  • "data": {
    }
}

Get Purchase Order by ID (with items)

Purchase Order State Codes

Order Type Code
PURCHASED 0
CANCELLED 1
(legacy code) 2
CLOSED 3
PAID 4
REOPENED 5
SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
path Parameters
id
required
string

Procurify PO or UUID

query Parameters
format
string
Enum: "csv" "json"
Responses
200
Response Schema:
required
object (PermissionsEditDelete)
required
object (PurchaseOrderDetail)
get/api/v2/purchase_orders/{id}/
Response samples
{
  • "metadata": {
    },
  • "data": {
    }
}

Get Purchase Orders by Role & Status

SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
path Parameters
role
required
string
Enum: "purchased" "receivable"
status
required
string
Enum: "all" "cancelled" "closed" "open" "paid" "partial"
query Parameters
contract
integer

Contract

date_0
string <date>

YYYY-MM-DD (start date): Filter POs by Created Date range

date_1
string <date>

YYYY-MM-DD (end date): Filter POs by Created Date range

expiry_date_0
string <date>

Expiry Date

expiry_date_1
string <date>

Expiry Date

has_blanket_order_items
boolean
modified_date_0
string <date>

YYYY-MM-DD (start date): Filter POs by Last Modified Date range

modified_date_1
string <date>

YYYY-MM-DD (end date): Filter POs by Last Modified Date range

order_by
string

Sort by field

page
integer
page_size
integer
pref_vendor
integer

ID of Vendor

promise_date_0
string <date>

YYYY-MM-DD (start date): Filter POs by Promise Date range

promise_date_1
string <date>

YYYY-MM-DD (end date): Filter POs by Promise Date range

Responses
200
Response Schema:
required
object (PurchaseOrderListMeta)
required
Array of objects (PurchaseOrderDocs)
get/api/v2/purchase_orders/{role}/{status}/
Response samples
{
  • "metadata": {
    },
  • "data": [
    ]
}

Update a Purchase Order

SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
path Parameters
procurify_PO
required
integer (Procurify PO Number)

A unique integer value identifying this po.

query Parameters
format
string
Enum: "csv" "json"
Request Body schema:
required
required
Array of objects (OrderItemPurchaseEditRequest)
Array of objects
Default: []
PO_Num
string or null (PO Number) <= 30 characters
buyer_name
required
string [ 1 .. 100 ] characters
buyer_contact
required
string [ 1 .. 100 ] characters
buyer_addressLineOne
required
string (Address line) [ 1 .. 300 ] characters
buyer_postalCode
required
string (Postal Code) [ 1 .. 20 ] characters
buyer_city
required
string [ 1 .. 50 ] characters
buyer_state_province
string (State/Province) <= 40 characters
buyer_country
required
string (Country) [ 1 .. 80 ] characters
buyer_address
required
integer
comment
string or null (Notes)
receiver_name
required
string [ 1 .. 100 ] characters
receiver_contact
required
string [ 1 .. 100 ] characters
receiver_addressLineOne
required
string (Address line) [ 1 .. 300 ] characters
receiver_postalCode
required
string (Postal Code) [ 1 .. 20 ] characters
receiver_city
required
string [ 1 .. 50 ] characters
receiver_state_province
string (State/Province) <= 40 characters
receiver_country
required
string (Country) [ 1 .. 80 ] characters
receiver_address
required
integer
promise_date
required
string <date-time>
freight
string or null <decimal> ^-?\d{0,13}(?:\.\d{0,6})?$
required
object
required
object
other
string or null <decimal> ^-?\d{0,13}(?:\.\d{0,6})?$
disclaimer_description
string or null <= 100 characters
disclaimer_text
string or null
payment_term_ref
integer or null
shipping_term_ref
integer or null
payment_method_ref
integer or null
shipping_method_ref
integer or null
creditcard
integer or null
version
required
integer
expiry_date
string or null <date-time>
contract
integer or null
Responses
200
Response Schema:
object
Default: {}
required
object (PurchaseOrderUpdate)
put/api/v3/purchase-orders/{procurify_PO}/
Request samples
{
  • "order_items": [
    ],
  • "custom_fields": [ ],
  • "PO_Num": "string",
  • "buyer_name": "string",
  • "buyer_contact": "string",
  • "buyer_addressLineOne": "string",
  • "buyer_postalCode": "string",
  • "buyer_city": "string",
  • "buyer_state_province": "string",
  • "buyer_country": "string",
  • "buyer_address": 0,
  • "comment": "string",
  • "receiver_name": "string",
  • "receiver_contact": "string",
  • "receiver_addressLineOne": "string",
  • "receiver_postalCode": "string",
  • "receiver_city": "string",
  • "receiver_state_province": "string",
  • "receiver_country": "string",
  • "receiver_address": 0,
  • "promise_date": "2019-08-24T14:15:22Z",
  • "freight": "string",
  • "discount": {
    },
  • "tax": {
    },
  • "other": "string",
  • "disclaimer_description": "string",
  • "disclaimer_text": "string",
  • "payment_term_ref": 0,
  • "shipping_term_ref": 0,
  • "payment_method_ref": 0,
  • "shipping_method_ref": 0,
  • "creditcard": 0,
  • "version": 0,
  • "expiry_date": "2019-08-24T14:15:22Z",
  • "contract": 0
}
Response samples
{
  • "metadata": { },
  • "data": {
    }
}

Close a Purchase Order

SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
path Parameters
procurify_PO
required
integer (Procurify PO Number)

A unique integer value identifying this po.

query Parameters
format
string
Enum: "csv" "json"
Responses
200
Response Schema:
object
Default: {}
required
object (PurchaseOrderReadDocs)
post/api/v3/purchase-orders/{procurify_PO}/close/
Response samples
{
  • "metadata": { },
  • "data": {
    }
}

Reopen a Purchase Order

SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
path Parameters
procurify_PO
required
integer (Procurify PO Number)

A unique integer value identifying this po.

query Parameters
format
string
Enum: "csv" "json"
Responses
200

No response body

post/api/v3/purchase-orders/{procurify_PO}/reopen/

View billing history of a Purchase Order

SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
query Parameters
format
string
Enum: "csv" "json"
Responses
200
Response Schema:
object
Default: {}
required
Array of objects (PurchaseOrderBillingHistory)
get/api/v3/purchase-orders/billing-history/
Response samples
{
  • "metadata": { },
  • "data": [
    ]
}

order-items

Get list of all order items

Order Item Status Codes

Order Item Type Code Description
PURCHASE_PENDING 0 Approved but not purchased.
PURCHASE_INUSE 1 Added to purchaser's PO list.
RECEIVE_PENDING 2 Purchased but not yet received, i.e. receivedPassQty == 0.
RECEIVED 3 Fully received, i.e. receivedPassQty == quantity.
REJECTED_FOR_PURCHASE 4 Rejected at procurement, i.e. denied.
RECEIVE_PARTIAL 5 Partially received, i.e. receivedPassQty != quantity and receivedPassQty > 0.
FULFILLED 6 Received but unused.
APPROVAL_DENIED 7 Denied in approval routing (by approver).
REQUEST_DRAFT 8 Preparing for draft instead of using sessions.
SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
query Parameters
account
integer
account_code
integer

Account Code

active
boolean
approved_datetime_0
string <date>

Approved Date

approved_datetime_1
string <date>

Approved Date

approved_price
number
approved_quantity
number
approver
number
approver_id
number
branch
integer

Location

catalog
boolean
catalog_item
string

A comma-separated list of integers.

currency
integer
department
integer

Department

departments
string

A comma-separated list of integers.

exclude
string

A comma-separated list of integers.

exclude_punchout
boolean
format
string
Enum: "csv" "json"
fulfilment_status
string
is_purchased
boolean
is_recurring
boolean
last_changed_by
integer
last_modified_0
string <date>

Last Modified Date

last_modified_1
string <date>

Last Modified Date

lineComment
string
location
integer

Location

locations
string

A comma-separated list of integers.

name
string
num
string
orderNum
integer
orderNum__status
integer
  • 0 - Pending
  • 1 - Approved
  • 2 - Denied
  • 3 - Purchased
  • 4 - Cancelled
  • 5 - Received
  • 6 - Draft
Enum: 0 1 2 3 4 5 6
order_by
string

Which field to use when ordering the results.

order_created_date_0
string <date>

Order Created Date

order_created_date_1
string <date>

Order Created Date

page
integer

A page number within the paginated result set.

page_size
integer

Number of results to return per page.

po_created_date_0
string <date>

Purchased Date

po_created_date_1
string <date>

Purchased Date

po_vendor
integer

Purchased Vendor

pref_vendor
integer
price
number
purchase_agreement
number
purchased_date_0
string <date>

Purchased Date

purchased_date_1
string <date>

Purchased Date

purchaser
integer
quantity
number
receivedFailQty
number
receivedPassQty
number
requester
integer

Requester

search
string

A search term.

sku
string
status
integer or null
  • 0 - Purchase Pending
  • 1 - Purchaser In-Use
  • 2 - Receive Pending
  • 3 - Received
  • 4 - Rejected for Purchase
  • 5 - Partial Received
  • 6 - Fulfilled
  • 7 - Approval Denied
  • 8 - Request Draft
Enum: 0 1 2 3 4 5 6 7 8
type
integer
  • 0 - One Time
  • 1 - Recurring
  • 2 - Blanket
Enum: 0 1 2
unit
string
Responses
200
Response Schema:
object
Array of objects (OrderItem)
get/api/v3/order-items/
Response samples
{
  • "metadata": {
    },
  • "data": [
    ]
}

ap

Get Bills by ID

SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
path Parameters
id
required
string^[0-9a-f-]+$
query Parameters
format
string
Enum: "csv" "json"
Responses
200
Response Schema:
required
object (SingleBillMetadataDocs)
required
object (BillRead)
get/api/v2/ap/bills/{id}/
Response samples
{
  • "metadata": {
    },
  • "data": {
    }
}

Get list of Company Payment Methods

Payment Method Types:

Payment Method Type
OTHER 0
CHECK 1
CHEQUE 1
ACH 2
EFT 3
WIRE 4

The context of 'data' field varies based on different Payment Method type:

Payment Method 'data' field structure
OTHER {"description": <string>}
CHECK/CHEQUE {"payable_to": <string>}
ACH {"routing_number": <string>, "account_number": <string>, "company_name": <string>}
SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
query Parameters
currency
integer
format
string
Enum: "csv" "json"
order_by
string

Which field to use when ordering the results.

page
integer

A page number within the paginated result set.

page_size
integer

Number of results to return per page.

search
string

A search term.

type
integer (Payment Method)
  • 0 - OTHER
  • 1 - CHEQUE
  • 2 - ACH
  • 3 - EFT
  • 4 - WIRE
  • 1 - CHECK
  • 5 - PAPER CHECK
  • 6 - PROCURIFY_ACH
  • 7 - PROCURIFY_WIRE
Enum: 0 1 1 2 3 4 5 6 7
Responses
200
Response Schema:
object
Array of objects (CompanyPaymentMethodRead)
get/api/v2/ap/company-payment-methods/
Response samples
{
  • "metadata": {
    },
  • "data": [
    ]
}

Create Company Payment Method

Payment Method Types:

Payment Method Type
OTHER 0
CHECK 1
CHEQUE 1
ACH 2
EFT 3
WIRE 4

The context of 'data' field varies based on different Payment Method type:

Payment Method 'data' field structure
OTHER {"description": <string>}
CHECK/CHEQUE {"payable_to": <string>}
ACH {"routing_number": <string>, "account_number": <string>, "company_name": <string>}
SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
query Parameters
format
string
Enum: "csv" "json"
Request Body schema:
required
name
string <= 255 characters
type
integer (Payment Method) [ 0 .. 4294967295 ]
  • 0 - OTHER
  • 1 - CHECK
  • 2 - ACH
  • 3 - EFT
  • 4 - WIRE
  • 5 - PAPER CHECK
  • 6 - PROCURIFY_ACH
  • 7 - PROCURIFY_WIRE
Enum: 0 1 2 3 4 5 6 7
data
required
any
currency
integer
gl_code
string <= 100 characters
Responses
201
Response Schema:
id
integer
name
string <= 255 characters
type
integer (Payment Method) [ 0 .. 4294967295 ]
  • 0 - OTHER
  • 1 - CHECK
  • 2 - ACH
  • 3 - EFT
  • 4 - WIRE
  • 5 - PAPER CHECK
  • 6 - PROCURIFY_ACH
  • 7 - PROCURIFY_WIRE
Enum: 0 1 2 3 4 5 6 7
data
required
any
currency
integer
gl_code
string <= 100 characters
post/api/v2/ap/company-payment-methods/
Request samples
{
  • "name": "Bank Account",
  • "type": 0,
  • "data": {
    },
  • "gl_code": "9000",
  • "currency": 3
}
Response samples
{
  • "id": 1,
  • "name": "Bank Account",
  • "type": 0,
  • "data": {
    },
  • "currency": {
    },
  • "gl_code": "9000"
}

Get Unbilled/Billed Items

SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
query Parameters
bill
integer
bill_uuid
string <uuid>
billed
boolean
budget
integer
created_at_0
string <date>
created_at_1
string <date>
department
number
exclude
string
format
string
Enum: "csv" "json"
location
number
order_by
string

Which field to use when ordering the results.

page
integer

A page number within the paginated result set.

page_size
integer

Number of results to return per page.

received_on_0
string <date>
received_on_1
string <date>
reimburse
boolean
requester
number
search
string

A search term.

vendor
integer
Responses
200
Response Schema:
required
object (BillItemsMetadataDocs)
required
Array of objects (ItemReadSerializer_v2)
get/api/v2/ap/items/
Response samples
{
  • "metadata": {
    },
  • "data": [
    ]
}

Get Payments

SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
query Parameters
approver
integer
currency
integer
format
string
Enum: "csv" "json"
order_by
string

Which field to use when ordering the results.

page
integer

A page number within the paginated result set.

page_size
integer

Number of results to return per page.

payment_date_0
string <date>
payment_date_1
string <date>
payment_method__type
integer (Payment Method)
  • 0 - OTHER
  • 1 - CHEQUE
  • 2 - ACH
  • 3 - EFT
  • 4 - WIRE
  • 1 - CHECK
  • 5 - PAPER CHECK
  • 6 - PROCURIFY_ACH
  • 7 - PROCURIFY_WIRE
Enum: 0 1 1 2 3 4 5 6 7
search
string

A search term.

Responses
200
Response Schema:
required
object (PaymentMetadataDocs)
required
Array of objects (PaymentListRead)
get/api/v2/ap/payments/
Response samples
{
  • "metadata": {
    },
  • "data": [
    ]
}

Get Approver Choices

SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
path Parameters
id
required
integer

A unique integer value identifying this payment.

query Parameters
format
string
Enum: "csv" "json"
Responses
200
Response Schema:
required
object (ApproverChoicesMetadataDocs)
required
Array of objects (ApproverReadDocs)
get/api/v2/ap/payments/{id}/approver-choices/
Response samples
{
  • "metadata": {
    },
  • "data": [
    ]
}

Get list of Vendor Payment Methods

Payment Method Types:

Payment Method Type
OTHER 0
CHECK 1
CHEQUE 1
ACH 2
EFT 3
WIRE 4

The context of 'data' field varies based on different Payment Method type:

Payment Method 'data' field structure
OTHER {"description": <string>}
CHECK/CHEQUE {"payable_to": <string>}
ACH {"routing_number": <string>, "account_number": <string>, "company_name": <string>}
SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
query Parameters
currency
integer
format
string
Enum: "csv" "json"
order_by
string

Which field to use when ordering the results.

page
integer

A page number within the paginated result set.

page_size
integer

Number of results to return per page.

search
string

A search term.

type
integer (Payment Method)
  • 0 - OTHER
  • 1 - CHEQUE
  • 2 - ACH
  • 3 - EFT
  • 4 - WIRE
  • 1 - CHECK
  • 5 - PAPER CHECK
  • 6 - PROCURIFY_ACH
  • 7 - PROCURIFY_WIRE
Enum: 0 1 1 2 3 4 5 6 7
vendor
integer
Responses
200
Response Schema:
object
Array of objects (VendorPaymentMethodRead)
get/api/v2/ap/vendor-payment-methods/
Response samples
{
  • "metadata": {
    },
  • "data": [
    ]
}

Create Vendor Payment Method

Payment Method Types:

Payment Method Type
OTHER 0
CHECK 1
CHEQUE 1
ACH 2
EFT 3
WIRE 4

The context of 'data' field varies based on different Payment Method type:

Payment Method 'data' field structure
OTHER {"description": <string>}
CHECK/CHEQUE {"payable_to": <string>}
ACH {"routing_number": <string>, "account_number": <string>, "company_name": <string>}
SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
query Parameters
format
string
Enum: "csv" "json"
Request Body schema:
required
vendor
required
integer
name
string <= 255 characters
type
integer (Payment Method) [ 0 .. 4294967295 ]
  • 0 - OTHER
  • 1 - CHECK
  • 2 - ACH
  • 3 - EFT
  • 4 - WIRE
  • 5 - PAPER CHECK
  • 6 - PROCURIFY_ACH
  • 7 - PROCURIFY_WIRE
Enum: 0 1 2 3 4 5 6 7
data
required
any
currency
integer
Responses
201
Response Schema:
id
integer
vendor
required
integer
name
string <= 255 characters
type
integer (Payment Method) [ 0 .. 4294967295 ]
  • 0 - OTHER
  • 1 - CHECK
  • 2 - ACH
  • 3 - EFT
  • 4 - WIRE
  • 5 - PAPER CHECK
  • 6 - PROCURIFY_ACH
  • 7 - PROCURIFY_WIRE
Enum: 0 1 2 3 4 5 6 7
data
required
any
currency
integer
post/api/v2/ap/vendor-payment-methods/
Request samples
{
  • "vendor": 10,
  • "name": "Technology Inc ACH 98G395E",
  • "type": 2,
  • "data": {
    },
  • "currency": 3
}
Response samples
{
  • "id": 1,
  • "vendor": 10,
  • "name": "Technology Inc ACH 98G395E",
  • "type": 2,
  • "data": {
    },
  • "currency": {
    }
}

Get Bills

list: This endpoint supports OPTIONS method which returns a list of available fields and their types.

SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
query Parameters
approver
integer

Approver

contract
number

Contracts related to bill items' purchase orders

currency
integer
due_date_0
string <date>

Due Date

due_date_1
string <date>

Due Date

exclude_bill_group_ids
string
exclude_expense_bills
string

Exclude expense bills

expense
string

Expense Bills Only

format
string
Enum: "csv" "json"
gl_post_date_0
string <date>

Posting Date

gl_post_date_1
string <date>

Posting Date

group
integer
has_payment
boolean

Without Payment

has_posting_date
boolean

Has Posting Date

include_bill_group_ids
string
invoice_date_0
string <date>

Invoice Date

invoice_date_1
string <date>

Invoice Date

is_exported
boolean

Exported Bills Only

last_export_date_0
string <date>

Last Export Date

last_export_date_1
string <date>

Last Export Date

last_export_user
number

Last Export User

last_modified_datetime_0
string <date-time>

Last Modified Datetime

last_modified_datetime_1
string <date-time>

Last Modified Datetime

modified_date_0
string <date>

Last Modified Date (Deprecated - use 'Last Modified Datetime')

modified_date_1
string <date>

Last Modified Date (Deprecated - use 'Last Modified Datetime')

order_by
string

Which field to use when ordering the results.

page
integer

A page number within the paginated result set.

page_size
integer

Number of results to return per page.

search
string

A search term.

submitted_date_0
string <date>

Submitted Date

submitted_date_1
string <date>

Submitted Date

sync_status_v2
string

Sync Status

type
integer
  • 0 - Order
  • 1 - Expense
  • 2 - Creditcard
Enum: 0 1 2
user
integer
vendor
integer
Responses
200
Response Schema:
required
object (ListBillsMetadataDocs)
required
Array of objects (SimpleBill)
get/api/v3/ap/bills/
Response samples
{
  • "metadata": {
    },
  • "data": [
    ]
}

custom-fields

Update Order Item Custom Field Dropdown Choices

SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
path Parameters
id
required
integer

A unique integer value identifying this custom field.

query Parameters
format
string
Enum: "csv" "json"
Request Body schema:
required
name
required
string [ 1 .. 200 ] characters
default_value
string <= 5000 characters
is_required
boolean
field_type
required
string non-empty
field_choices
Array of strings
Default: []
Responses
200
Response Schema:
object
Default: {}
required
object (CustomFieldRead)
put/api/v3/custom-fields/{id}/
Request samples
{
  • "name": "string",
  • "default_value": "string",
  • "is_required": true,
  • "field_type": "string",
  • "field_choices": [ ]
}
Response samples
{
  • "metadata": { },
  • "data": {
    }
}

Get Active/Inactive Order Item Custom Fields

Get list of custom fields associated with order items

SecurityRemoteAuthentication or M2MAuthentication or BasicAuthentication or cookieAuth
Request
query Parameters
field_type
string
  • t - Text
  • a - Large Text Field
  • i - Integer
  • f - Floating point decimal
  • b - Boolean (Yes/No)
  • m - Dropdown Choices
  • d - Date
  • h - Date Time
Enum: "a" "b" "d" "f" "h" "i" "m" "t"
format
string
Enum: "csv" "json"
meta__is_active
boolean
page
integer

A page number within the paginated result set.

page_size
integer

Number of results to return per page.

Responses
200
Response Schema:
object
Array of objects (CustomFieldRead)
get/api/v3/custom-fields/order-items/
Response samples
{
  • "metadata": {
    },
  • "data": [
    ]
}