COUNTCOUNT
Sign Up
VendorsCreate vendor

Create vendor

POST/partners/vendors

Creates a new vendor in the workspace.

Only `name` is required. Address and contacts can be created inline.

HMAC signature + Bearer access token
Try this request

Request body

namestringrequired

Vendor display name.

emailstring

Primary email address.

mainPhonestring

Primary phone number.

websitestring

Website URL.

accountNumberstring

Your vendor account number.

statusenum

Vendor status. Defaults to active.

One of: active, inactive

typeenum

Vendor classification. Defaults to MERCHANT.

One of: MERCHANT, SUPPLIER, CONTRACTOR, CONTACT, OWNER

legalNamestring

Legal entity name.

businessNamestring

Doing-business-as name.

taxNumberstring

Tax identification number.

taxTypeenum

Tax id type.

One of: none, ssn, ein, itin, atin

is1099boolean

Whether the vendor is a 1099 contractor.

addToContractorGroupboolean

Add vendor to the contractor group.

addressobject

Mailing address for the vendor.

streetstring

Street address.

citystring

City or locality.

statestring

State, province, or region.

zipCodestring

Postal or ZIP code.

countrystring

Country name or ISO code.

contactsarray

Contact people for this vendor.

firstNamestring

Contact's first name.

lastNamestring

Contact's last name.

emailstring

Contact's email address.

phonestring

Contact's phone number.

isPrimaryboolean

Marks 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. Troubleshoot
403The credential does not have access to this workspace or resource. Troubleshoot
429Rate limit exceeded (100 requests per minute per clientId). Retry after the Retry-After header. Troubleshoot
POSThttps://api.getcount.com/partners/vendors
Request
import 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());
Response · 201
{
  "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"
    }
  }
}