Skip to main content
PATCH
Update a customer
Partial update of a customer record you have ingested. Use this to sync CRM edits across (e.g. the customer changed their phone number).

What you can update

Attempting to change fullName or email after kyc_status becomes VERIFIED returns 422 validation_failed. This is by design — once the document-verified identity is captured, it must not silently drift.

Idempotency

Like POST, supports Idempotency-Key for safe retries.

What you cannot update

The API will not let you change:
  • type (re-ingest with the correct type instead)
  • external_id (treated as immutable once set)
  • Any KYC / AML status field (those move via the verification flow, not the integration API)
Use PUT /customers/{id}/designated-services to replace the customer’s designated-service assignments without resending their identity details.

Authorizations

Authorization
string
header
required

Bearer API key issued from Settings → Developers in your Instant Compliance organisation. Format: ic_live_….

Headers

Idempotency-Key
string

Caller-supplied unique key for safe retries. Repeat the same key within 24 hours and we replay the original response instead of repeating the side effect. Reusing the key with a different request body returns 409 idempotency_conflict.

Maximum string length: 255

Path Parameters

id
string
required

Customer identifier. Accepts either Instant Compliance's UUID (550e8400-…) or your own external_id.

Body

application/json
fullName
string
Required string length: 1 - 255
email
string<email>
Maximum string length: 255
phone
string | null
Maximum string length: 32
risk
object

Optional risk pre-answers. Your back-office team will complete the full risk assessment in-app before triggering KYC; these values seed it.

Response

Updated customer record.

id
string<uuid>
required

Instant Compliance customer UUID.

type
enum<string>
required

Individual customer types — /customers only ingests these. Entity customers (companies, trusts, partnerships, SMSFs) live on /entities with their own EntityType.

Available options:
INDIVIDUAL,
SOLE_TRADER
full_name
string
required
kyc_status
enum<string>
required
Available options:
NOT_STARTED,
PENDING,
IN_PROGRESS,
VERIFIED,
FAILED,
NOT_REQUIRED,
AWAITING_RESUBMISSION
aml
object
required
added_via
enum<string>
required

How the record entered Instant Compliance.

Available options:
ADMIN_MANUAL,
AI_EXTRACTED,
CONTACT_PORTAL,
BULK_IMPORT,
INTEGRATION,
SYSTEM
created_at
string<date-time>
required
updated_at
string<date-time>
required
external_id
string | null
email
string<email> | null
kyc_started_at
string<date-time> | null
kyc_completed_at
string<date-time> | null
identity
object | null

Populated only when kyc_status = VERIFIED. Deliberately minimal — full date of birth and full address are never exposed.