---
title: "Update customer"
method: PATCH
path: "/customers/{id}"
tags: ["Customers"]
---

# Update customer

`PATCH /customers/{id}`

Partially update a customer. Only provided fields will be updated.

## Path parameters

- `id` string, required

## Query parameters

- `by` 'id' | 'key'

## Request body

- CustomerPatch — Partial customer update. All fields are optional. - **Omitted fields**: Not modified (current value preserved) - **Provided fields**: Updated to the new value - **Null values**: Clear the field (set to null) where applicable
  - `name` string — Customer company name
  - `status` 'NEW' | 'CONTACTED' | 'QUALIFIED' | 'QUOTED' | 'NURTURING' | 'PENDING' | 'ACTIVE' | 'INACTIVE' | 'BLOCKED' | 'CLOSED' — Customer account status (includes lead stages): - `NEW`: New lead, not yet contacted - `CONTACTED`: Initial contact made with lead - `QUALIFIED`: Lead has been qualified as potential customer - `QUOTED`: Quote has been provided to lead - `NURTURING`: Lead being nurtured for future opportunity - `PENDING`: Customer prospect pending activation - `ACTIVE`: Active customer account - `INACTIVE`: Deactivated customer account - `BLOCKED`: Customer account blocked from operations - `CLOSED`: Customer account permanently closed
  - `serviceTier` 'TIER_1' | 'TIER_2' | 'TIER_3' — Service tier level for the customer
  - `website` string, nullable — Customer website URL
  - `phoneNumber` string, nullable — Primary phone number
  - `industry` 'AGRICULTURE_FORESTRY' | 'CONSTRUCTION' | 'CONSUMER_GOODS' | 'EDUCATIONAL_SERVICES' | 'ENTERTAINMENT' | 'FOOD_SERVICES' | 'HEALTHCARE' | 'INDUSTRIAL_MACHINERY' | 'MANUFACTURING' | 'MINING' | 'RETAIL_TRADE' | 'TRANSPORTATION_WAREHOUSING' | 'UTILITIES' | 'WHOLESALE_TRADE' — Industry classification for the customer
  - `annualRevenue` '_0_TO_500K' | '_500K_TO_3M' | '_3M_TO_10M' | '_10M_TO_25M' | '_25M_TO_50M' | '_50M_TO_100M' | '_100M_TO_500M' | '_500M_PLUS' — Annual revenue range
  - `annualSpend` '_0_TO_25K' | '_25_TO_150K' | '_150K_TO_300K' | '_300K_TO_1M' | '_1_TO_5M' | '_5M_TO_25M' | '_25M_TO_75M' | '_75M_PLUS' — Annual freight spend estimate range
  - `spendType` 'CONTRACT' | 'SPOT' — Customer spend type: - `CONTRACT`: Customer operates under contract pricing - `SPOT`: Customer operates on spot market pricing
  - `naics` string, nullable — NAICS industry code
  - `ein` string, nullable — Employer Identification Number
  - `duns` string, nullable — Dun & Bradstreet number
  - `leadSource` string, nullable — How this customer was acquired
  - `dbaName` string, nullable — Doing business as name
  - `numberOfEmployees` '_0_TO_1' | '_2_TO_5' | '_6_TO_9' | '_10_TO_24' | '_25_TO_99' | '_100_TO_249' | '_250_TO_499' | '_500_OR_MORE' — Number of employees in the company
  - `externalId` string, nullable — External system identifier
  - `currency` 'USD' | 'CAD' | 'MXN' | 'EUR' | 'GBP' | 'JPY' | 'CNY' | 'AUD' | 'BRL' | 'INR' | 'KRW' | 'RUB' | 'SAR' | 'TRY' | 'IDR' | 'ARS' | 'ZAR' — Preferred currency for transactions
  - `creditLimit` number, float, nullable — Maximum credit allowed
  - `creditUsageWarning` number, float, nullable — Credit usage warning threshold
  - `freeCreditReq` number, float, nullable — Free credit requirement
  - `defaultMode` 'FTL' | 'LTL' | 'AIR' | 'OCEAN' | 'RAIL' | 'INTERMODAL' | 'DRAYAGE' | 'EXPEDITED_GROUND' | 'EXPEDITED_AIR' | 'AUTO' | 'PTL' — Transportation mode type
  - `defaultMargin` number, float, nullable — Default margin percentage (0-1, e.g., 0.15 for 15%)
  - `minMargin` number, float, nullable — Minimum margin threshold
  - `maxMargin` number, float, nullable — Maximum margin threshold
  - `defaultInternalNotes` string, nullable — Default internal notes template
  - `defaultCarrierNotes` string, nullable — Default carrier-facing notes template used when note splitting is enabled
  - `defaultExternalNotes` string, nullable — Default external notes template
  - `defaultShowNotes` 'ALL' | 'SPLIT' — Controls whether external notes are shown on all documents or split from carrier-facing notes. - `ALL`: Use external notes on customer-facing and carrier-facing documents - `SPLIT`: Use external notes on customer-facing documents and carrier notes on carrier-facing documents
  - `autoAcceptTender` boolean, nullable — Auto-accept tender flag
  - `groupId` string, uuid, nullable — Customer group reference
  - `paymentTerm` union — Reference to another resource by either ID or client key (used in create/update requests)
    - object
      - `id` string, uuid, required — Resource UUID
      - `key` string — Client-defined reference ID
    - object
      - `id` string, uuid — Resource UUID
      - `key` string, required — Client-defined reference ID
  - `notes` string, nullable — Internal notes
  - `deactivationReason` 'NOT_PAYING_INVOICE' | 'ACQUIRED' | 'DUPLICATE' | 'NOT_IN_BUSINESS' | 'OTHER' — Reason for customer deactivation: - `NOT_PAYING_INVOICE`: Customer is not paying invoices - `ACQUIRED`: Customer was acquired by another company - `DUPLICATE`: Duplicate customer record - `NOT_IN_BUSINESS`: Customer is no longer in business - `OTHER`: Other reason (see deactivationNotes for details)
  - `deactivationNotes` string, nullable — Additional deactivation details
  - `deactivationDate` string, date-time, nullable — Deactivation date
  - `corporateAddress` AddressPatch — Partial address update. All fields are optional. - **Omitted fields**: Not modified (current value preserved) - **Provided fields**: Updated to the new value - **Null values**: Clear the field (set to null) where applicable
    - `line1` string — Primary street address line
    - `line2` string, nullable — Secondary address line
    - `city` string — City name
    - `country` string — Country name or code
    - `market` string — Market or region identifier
    - `latitude` string, nullable — Latitude coordinate
    - `longitude` string, nullable — Longitude coordinate
    - `isAirportOrAirbase` boolean — Whether this location is an airport or airbase
    - `isConstructionOrUtilitySite` boolean — Whether this location is a construction or utility site
    - `isSmartyValidated` boolean — Whether address has been validated by SmartyStreets
    - `obeysDst` boolean — Whether this location observes daylight saving time
    - `cityId` string, uuid, nullable — Reference to standardized city record
  - `billingAddress` AddressPatch — Partial address update. All fields are optional. - **Omitted fields**: Not modified (current value preserved) - **Provided fields**: Updated to the new value - **Null values**: Clear the field (set to null) where applicable
    - `line1` string — Primary street address line
    - `line2` string, nullable — Secondary address line
    - `city` string — City name
    - `country` string — Country name or code
    - `market` string — Market or region identifier
    - `latitude` string, nullable — Latitude coordinate
    - `longitude` string, nullable — Longitude coordinate
    - `isAirportOrAirbase` boolean — Whether this location is an airport or airbase
    - `isConstructionOrUtilitySite` boolean — Whether this location is a construction or utility site
    - `isSmartyValidated` boolean — Whether address has been validated by SmartyStreets
    - `obeysDst` boolean — Whether this location observes daylight saving time
    - `cityId` string, uuid, nullable — Reference to standardized city record
  - `qboCustomerId` string, nullable — QuickBooks Online customer ID
  - `key` string, nullable — Client-defined reference identifier

## Response `200`

Customer updated successfully

- Customer
  - `object` 'CUSTOMER' — Object type identifier
  - `id` string, uuid, required — Unique customer identifier
  - `name` string, required — Customer company name
  - `friendlyId` string, required — Human-readable customer identifier, starts with "A"
  - `status` 'NEW' | 'CONTACTED' | 'QUALIFIED' | 'QUOTED' | 'NURTURING' | 'PENDING' | 'ACTIVE' | 'INACTIVE' | 'BLOCKED' | 'CLOSED', required — Customer account status (includes lead stages): - `NEW`: New lead, not yet contacted - `CONTACTED`: Initial contact made with lead - `QUALIFIED`: Lead has been qualified as potential customer - `QUOTED`: Quote has been provided to lead - `NURTURING`: Lead being nurtured for future opportunity - `PENDING`: Customer prospect pending activation - `ACTIVE`: Active customer account - `INACTIVE`: Deactivated customer account - `BLOCKED`: Customer account blocked from operations - `CLOSED`: Customer account permanently closed
  - `serviceTier` 'TIER_1' | 'TIER_2' | 'TIER_3' — Service tier level for the customer
  - `website` string, nullable — Customer website URL
  - `phoneNumber` string, nullable — Primary phone number
  - `industry` 'AGRICULTURE_FORESTRY' | 'CONSTRUCTION' | 'CONSUMER_GOODS' | 'EDUCATIONAL_SERVICES' | 'ENTERTAINMENT' | 'FOOD_SERVICES' | 'HEALTHCARE' | 'INDUSTRIAL_MACHINERY' | 'MANUFACTURING' | 'MINING' | 'RETAIL_TRADE' | 'TRANSPORTATION_WAREHOUSING' | 'UTILITIES' | 'WHOLESALE_TRADE' — Industry classification for the customer
  - `annualRevenue` '_0_TO_500K' | '_500K_TO_3M' | '_3M_TO_10M' | '_10M_TO_25M' | '_25M_TO_50M' | '_50M_TO_100M' | '_100M_TO_500M' | '_500M_PLUS' — Annual revenue range
  - `annualSpend` '_0_TO_25K' | '_25_TO_150K' | '_150K_TO_300K' | '_300K_TO_1M' | '_1_TO_5M' | '_5M_TO_25M' | '_25M_TO_75M' | '_75M_PLUS' — Annual freight spend estimate range
  - `spendType` 'CONTRACT' | 'SPOT' — Customer spend type: - `CONTRACT`: Customer operates under contract pricing - `SPOT`: Customer operates on spot market pricing
  - `naics` string, nullable — NAICS industry code
  - `ein` string, nullable — Employer Identification Number
  - `duns` string, nullable — Dun & Bradstreet number
  - `leadSource` string, nullable — How this customer was acquired
  - `dbaName` string, nullable — Doing business as name
  - `numberOfEmployees` '_0_TO_1' | '_2_TO_5' | '_6_TO_9' | '_10_TO_24' | '_25_TO_99' | '_100_TO_249' | '_250_TO_499' | '_500_OR_MORE' — Number of employees in the company
  - `externalId` string, nullable — External system identifier
  - `currency` 'USD' | 'CAD' | 'MXN' | 'EUR' | 'GBP' | 'JPY' | 'CNY' | 'AUD' | 'BRL' | 'INR' | 'KRW' | 'RUB' | 'SAR' | 'TRY' | 'IDR' | 'ARS' | 'ZAR' — Preferred currency for transactions
  - `creditLimit` number, float, nullable — Maximum credit allowed
  - `creditUsageWarning` number, float, nullable — Credit usage warning threshold
  - `freeCreditReq` number, float, nullable — Free credit requirement
  - `defaultMode` 'FTL' | 'LTL' | 'AIR' | 'OCEAN' | 'RAIL' | 'INTERMODAL' | 'DRAYAGE' | 'EXPEDITED_GROUND' | 'EXPEDITED_AIR' | 'AUTO' | 'PTL' — Transportation mode type
  - `defaultMargin` number, float, nullable — Default margin percentage (0-1, e.g., 0.15 for 15%)
  - `minMargin` number, float, nullable — Minimum margin threshold
  - `maxMargin` number, float, nullable — Maximum margin threshold
  - `defaultInternalNotes` string, nullable — Default internal notes template
  - `defaultCarrierNotes` string, nullable — Default carrier-facing notes template used when note splitting is enabled
  - `defaultExternalNotes` string, nullable — Default external notes template
  - `defaultShowNotes` 'ALL' | 'SPLIT' — Controls whether external notes are shown on all documents or split from carrier-facing notes. - `ALL`: Use external notes on customer-facing and carrier-facing documents - `SPLIT`: Use external notes on customer-facing documents and carrier notes on carrier-facing documents
  - `autoAcceptTender` boolean, nullable — Auto-accept tender flag
  - `group` ResourceReference — Reference to another resource (returned in responses)
    - `id` string, uuid, required — Resource UUID
    - `key` string, nullable — Client-defined reference ID if set
  - `paymentTerm` PaymentTermReference — Enhanced reference to a payment term resource (returned in responses). Includes full payment term details in addition to id/key.
    - `id` string, uuid, required — Payment term UUID
    - `key` string, nullable — Client-defined reference ID if set
    - `name` string, required — Payment term name
    - `description` string, nullable — Payment term description or notes
    - `days` integer, nullable — Number of days until payment is due
    - `quickPayFee` number, float, nullable — Quick pay fee percentage (e.g., 0.05 for 5%)
    - `apOnly` boolean, nullable — Whether this payment term is for accounts payable only
    - `doNotUse` boolean, nullable — Flag to prevent using this payment term for new transactions
    - `createdAt` string, date-time, required — When the payment term was created
    - `updatedAt` string, date-time, required — When the payment term was last updated
    - `deletedAt` string, date-time, nullable — When the payment term was soft deleted (null if active)
  - `notes` string, nullable — Internal notes about this customer
  - `deactivationReason` 'NOT_PAYING_INVOICE' | 'ACQUIRED' | 'DUPLICATE' | 'NOT_IN_BUSINESS' | 'OTHER' — Reason for customer deactivation: - `NOT_PAYING_INVOICE`: Customer is not paying invoices - `ACQUIRED`: Customer was acquired by another company - `DUPLICATE`: Duplicate customer record - `NOT_IN_BUSINESS`: Customer is no longer in business - `OTHER`: Other reason (see deactivationNotes for details)
  - `deactivationNotes` string, nullable — Additional details about deactivation
  - `deactivationDate` string, date-time, nullable — When the customer was deactivated
  - `closedAt` string, date-time, nullable — When the customer account was closed
  - `closedBy` UserReference — Enhanced reference to a user resource (returned in responses). Includes full user details in addition to id/key. Note: Does NOT include nested references (teams, etc.) to prevent recursion. Maximum nesting depth: 1 level.
    - `id` string, uuid, required — User UUID
    - `key` string, nullable — Client-defined reference ID if set
    - `email` string, email, required — User's email address
    - `name` string, nullable — User's full name
    - `phone` string, nullable — User's phone number
    - `phoneExt` string, nullable — Phone extension
    - `status` 'PENDING' | 'ACTIVE' | 'INACTIVE', required — User account status
    - `avatarId` string, uuid, nullable — Profile avatar document ID
    - `createdAt` string, date-time, required — When the user was created
    - `updatedAt` string, date-time, required — When the user was last updated
    - `deletedAt` string, date-time, nullable — When the user was soft deleted (null if active)
  - `closedNotes` string, nullable — Notes about account closure
  - `corporateAddress` Address — Physical address/location details (nested, without id). This is an embedded object representing a Location record. The id is managed internally and not exposed in the API.
    - `line1` string, required — Primary street address line
    - `line2` string, nullable — Secondary address line (suite, floor, etc.)
    - `city` string, required — City name
    - `country` string, required — Country name or code
    - `market` string, required — Market or region identifier
    - `latitude` string, nullable — Latitude coordinate
    - `longitude` string, nullable — Longitude coordinate
    - `isAirportOrAirbase` boolean, required — Whether this location is an airport or airbase
    - `isConstructionOrUtilitySite` boolean, required — Whether this location is a construction or utility site
    - `isSmartyValidated` boolean, required — Whether address has been validated by SmartyStreets
    - `obeysDst` boolean, required — Whether this location observes daylight saving time
    - `cityId` string, uuid, nullable — Reference to standardized city record (internal use)
  - `billingAddress` Address — Physical address/location details (nested, without id). This is an embedded object representing a Location record. The id is managed internally and not exposed in the API.
    - `line1` string, required — Primary street address line
    - `line2` string, nullable — Secondary address line (suite, floor, etc.)
    - `city` string, required — City name
    - `country` string, required — Country name or code
    - `market` string, required — Market or region identifier
    - `latitude` string, nullable — Latitude coordinate
    - `longitude` string, nullable — Longitude coordinate
    - `isAirportOrAirbase` boolean, required — Whether this location is an airport or airbase
    - `isConstructionOrUtilitySite` boolean, required — Whether this location is a construction or utility site
    - `isSmartyValidated` boolean, required — Whether address has been validated by SmartyStreets
    - `obeysDst` boolean, required — Whether this location observes daylight saving time
    - `cityId` string, uuid, nullable — Reference to standardized city record (internal use)
  - `qboCustomerId` string, nullable — QuickBooks Online customer ID
  - `key` string, nullable — Client-defined reference identifier for this customer
  - `contacts` CustomerContactReference[] — Contacts for this customer
    - `object` 'CUSTOMER_CONTACT' — Object type identifier
    - `id` string, uuid, required — Unique contact identifier
    - `key` string, nullable — Client-defined reference identifier
    - `name` string, required — Contact person's name
    - `contactInfo` ContactInfo, required — Contact information details (nested, without id). This is an embedded object representing a Contact record. The id is managed internally and not exposed in the API.
      - `name` string, required — Contact person's full name
      - `email` string, email, nullable — Email address
      - `phoneNumber` string, nullable — Phone number
      - `title` string, nullable — Job title or position
    - `phoneExtension` string, nullable — Phone extension specific to this contact role
    - `isPrimary` boolean, required — Whether this is the primary contact
    - `contactTypes` CustomerContactType[], nullable — Types/roles this contact serves
    - `notifications` CustomerContactNotificationType[], nullable — Shipment notification types
    - `invitedUser` UserReference — Enhanced reference to a user resource (returned in responses). Includes full user details in addition to id/key. Note: Does NOT include nested references (teams, etc.) to prevent recursion. Maximum nesting depth: 1 level.
      - `id` string, uuid, required — User UUID
      - `key` string, nullable — Client-defined reference ID if set
      - `email` string, email, required — User's email address
      - `name` string, nullable — User's full name
      - `phone` string, nullable — User's phone number
      - `phoneExt` string, nullable — Phone extension
      - `status` 'PENDING' | 'ACTIVE' | 'INACTIVE', required — User account status
      - `avatarId` string, uuid, nullable — Profile avatar document ID
      - `createdAt` string, date-time, required — When the user was created
      - `updatedAt` string, date-time, required — When the user was last updated
      - `deletedAt` string, date-time, nullable — When the user was soft deleted (null if active)
    - `deletedBy` UserReference — Enhanced reference to a user resource (returned in responses). Includes full user details in addition to id/key. Note: Does NOT include nested references (teams, etc.) to prevent recursion. Maximum nesting depth: 1 level.
      - `id` string, uuid, required — User UUID
      - `key` string, nullable — Client-defined reference ID if set
      - `email` string, email, required — User's email address
      - `name` string, nullable — User's full name
      - `phone` string, nullable — User's phone number
      - `phoneExt` string, nullable — Phone extension
      - `status` 'PENDING' | 'ACTIVE' | 'INACTIVE', required — User account status
      - `avatarId` string, uuid, nullable — Profile avatar document ID
      - `createdAt` string, date-time, required — When the user was created
      - `updatedAt` string, date-time, required — When the user was last updated
      - `deletedAt` string, date-time, nullable — When the user was soft deleted (null if active)
    - `createdAt` string, date-time, required — When the contact was created
    - `deletedAt` string, date-time, nullable — When the contact was soft deleted
  - `createdAt` string, date-time, required — Timestamp when customer was created
  - `updatedAt` string, date-time, required — Timestamp when customer was last updated
  - `deletedAt` string, date-time, nullable — Timestamp when customer was soft-deleted (null if active)
  - `deletedBy` UserReference — Enhanced reference to a user resource (returned in responses). Includes full user details in addition to id/key. Note: Does NOT include nested references (teams, etc.) to prevent recursion. Maximum nesting depth: 1 level.
    - `id` string, uuid, required — User UUID
    - `key` string, nullable — Client-defined reference ID if set
    - `email` string, email, required — User's email address
    - `name` string, nullable — User's full name
    - `phone` string, nullable — User's phone number
    - `phoneExt` string, nullable — Phone extension
    - `status` 'PENDING' | 'ACTIVE' | 'INACTIVE', required — User account status
    - `avatarId` string, uuid, nullable — Profile avatar document ID
    - `createdAt` string, date-time, required — When the user was created
    - `updatedAt` string, date-time, required — When the user was last updated
    - `deletedAt` string, date-time, nullable — When the user was soft deleted (null if active)

## Other responses

- `400` — Bad request - invalid input
- `401` — Unauthorized - invalid or missing access token
- `404` — Resource not found
- `422` — Validation error - invalid field values
- `429` — Rate limit exceeded

---

[API](https://skmtc.net/mvmnt/apis/mvmnt-api.md) · [All operations](https://skmtc.net/mvmnt/apis/mvmnt-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/mvmnt/mvmnt-api/versions/c44e5e7a4256/schema)
