COUNTCOUNT
Sign Up
CustomersUpdate a customer

Update a customer

PUT/partners/customers/{uuid}

Updates an existing customer. Only the fields you send are changed.

Send any subset of the writable fields. Fields belonging to firm-managed (system-created) customers, and internal fields such as originalClientId, are ignored.

HMAC signature + Bearer access token
Try this request

Path parameters

uuiduuidrequired

The customer UUID to update.

Request body

customerstring

Updated customer or business name.

emailstring

Updated email.

mainPhonestring

Updated phone number.

websitestring

Updated website URL.

notesstring

Updated notes.

statusenum

Updated status.

One of: active, inactive

paymentTermstring

Updated payment term.

billingAddressobject

Updated billing address.

shippingAddressobject

Updated shipping address.

contactsarray

Updated list of contacts.

Responses

200Customer updated successfully.
404Customer not found.
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
PUThttps://api.getcount.com/partners/customers/{uuid}
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 = 'PUT';
const signingPath = '/customers/3fa85f64-5717-4562-b3fc-2c963f66afa6';
const timestamp = Math.floor(Date.now() / 1000).toString();
const body = {
  "mainPhone": "+1987654321",
  "status": "inactive"
};
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/customers/3fa85f64-5717-4562-b3fc-2c963f66afa6`, {
  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 · 200
{
  "status": "success",
  "message": "Success on updating a customer",
  "data": {
    "updatedCustomer": {
      "id": "dfa3219e-6af8-4c53-997a-037534f63a35",
      "customer": "Acme Corporation",
      "email": "contact@acme.com",
      "mainPhone": "+1234567890",
      "website": "https://acme.com",
      "status": "inactive",
      "notes": "Preferred customer. Net-30 terms.",
      "paymentTerm": "net30",
      "taxNumber": null,
      "taxAutoCalculate": false,
      "taxExcluded": false,
      "contactName": "John Doe",
      "billingAddress": {
        "id": "0b2c1f5e-7a9d-4f2b-9c1e-2a4b6d8e0f12",
        "street": "123 Main St",
        "city": "San Francisco",
        "state": "CA",
        "zipCode": "94102",
        "country": "USA"
      },
      "shippingAddress": null,
      "contacts": [
        {
          "id": "a5da3577-bf85-4e3a-aa73-df85ca69bc67",
          "firstName": "John",
          "lastName": "Doe",
          "email": "john@acme.com",
          "phone": "+1234567890",
          "isPrimary": true
        }
      ],
      "taxes": [],
      "salesRep": null,
      "createdAt": "2026-01-15T10:30:00.000Z",
      "updatedAt": "2026-01-28T14:22:30.000Z"
    }
  }
}