Create vendor
/partners/vendorsCreates a new vendor in the workspace.
Only `name` is required. Address and contacts can be created inline.
Request body
namestringrequiredVendor display name.
emailstringPrimary email address.
mainPhonestringPrimary phone number.
websitestringWebsite URL.
accountNumberstringYour vendor account number.
statusenumVendor status. Defaults to active.
One of: active, inactive
typeenumVendor classification. Defaults to MERCHANT.
One of: MERCHANT, SUPPLIER, CONTRACTOR, CONTACT, OWNER
legalNamestringLegal entity name.
businessNamestringDoing-business-as name.
taxNumberstringTax identification number.
taxTypeenumTax id type.
One of: none, ssn, ein, itin, atin
is1099booleanWhether the vendor is a 1099 contractor.
addToContractorGroupbooleanAdd vendor to the contractor group.
addressobjectMailing address for the vendor.
streetstringStreet address.
citystringCity or locality.
statestringState, province, or region.
zipCodestringPostal or ZIP code.
countrystringCountry name or ISO code.
contactsarrayContact people for this vendor.
firstNamestringContact's first name.
lastNamestringContact's last name.
emailstringContact's email address.
phonestringContact's phone number.
isPrimarybooleanMarks the primary contact.
Responses
201Vendor created successfully.400Validation failed or an active vendor with the same name already exists.401Missing or invalid HMAC signature, expired timestamp, or invalid Bearer token. Troubleshoot403The credential does not have access to this workspace or resource. Troubleshoot429Rate limit exceeded (100 requests per minute per clientId). Retry after the Retry-After header. Troubleshoothttps://api.getcount.com/partners/vendorsimport crypto from 'node:crypto';
const BASE_URL = 'https://api.getcount.com';
const CLIENT_ID = process.env.COUNT_CLIENT_ID;
const CLIENT_SECRET = process.env.COUNT_CLIENT_SECRET;
const ACCESS_TOKEN = process.env.COUNT_ACCESS_TOKEN;
const method = 'POST';
const signingPath = '/vendors';
const timestamp = Math.floor(Date.now() / 1000).toString();
const body = {
"name": "Office Depot",
"email": "ap@officedepot.com",
"type": "SUPPLIER",
"status": "active",
"address": {
"street": "500 Supply Chain Blvd",
"city": "Boca Raton",
"state": "FL",
"zipCode": "33431",
"country": "USA"
}
};
const bodyString = JSON.stringify(body);
const bodyHash = crypto.createHash('sha256').update(bodyString).digest('hex');
const baseString = `${method}:${signingPath}:${timestamp}:${bodyHash}`;
const signature = crypto.createHmac('sha256', CLIENT_SECRET).update(baseString).digest('hex');
const response = await fetch(`${BASE_URL}/partners/vendors`, {
method,
headers: {
'x-client-id': CLIENT_ID,
'x-timestamp': timestamp,
'x-signature': signature,
'Content-Type': 'application/json',
Authorization: `Bearer ${ACCESS_TOKEN}`,
},
body: bodyString,
});
console.log(await response.json());{
"status": "success",
"message": "Success on creating vendor.",
"data": {
"vendor": {
"id": "d4e5f6a7-b8c9-0123-defa-234567890123",
"name": "Office Depot",
"email": "ap@officedepot.com",
"mainPhone": "+18001234567",
"website": "https://officedepot.com",
"accountNumber": "V-1001",
"status": "active",
"type": "SUPPLIER",
"legalName": "Office Depot Inc.",
"businessName": null,
"taxNumber": null,
"taxType": "none",
"is1099": false,
"address": {
"street": "500 Supply Chain Blvd",
"city": "Boca Raton",
"state": "FL",
"zipCode": "33431",
"country": "USA"
},
"contacts": [
{
"id": "a5da3577-bf85-4e3a-aa73-df85ca69bc67",
"firstName": "Accounts",
"lastName": "Payable",
"email": "ap@officedepot.com",
"phone": "+18001234567",
"isPrimary": true
}
],
"createdAt": "2026-01-15T10:30:00.000Z",
"updatedAt": "2026-01-28T14:22:30.000Z"
}
}
}