Skip to main content
POST
Start a customer's KYC verification
Start identity verification (KYC) for an individual — the same flow the in-app Start verification runs. Unlike ingest, this spends credits (or bills the customer), so it needs the separate verification:write scope.

Lanes

  • automated (default) — emails the customer a secure verification link and charges one KYC check to your organisation’s credits. The shareable link is also returned as verification_link.
  • manual — arms the record for an officer to upload documents inside Instant Compliance. Does not charge.

Who pays

payer is optional. Omit it to honour the customer record’s own billing default (set by your org’s billing settings). Set payer: customer to bill the end customer: the check arms payment-pending and the pay link is emailed — the customer pays by card at the portal. No card is handled at API-call time.

Errors worth handling

  • 402 insufficient_credits — your org has no credits and the check is org-paid. Nothing is armed and nothing is charged; top up (or start it customer-paid) and retry.
  • 409 conflict — a verification has already been started for this customer.
  • 422 validation_failed — a precondition is missing (e.g. an automated start on a customer with no email).
Include an Idempotency-Key header so a retried start is not run twice.

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 or your own external_id.

Body

application/json

Options for starting a customer's KYC. All fields optional.

method
enum<string>
default:automated

automated emails the customer a link and charges; manual arms for officer document upload and does not charge.

Available options:
automated,
manual
payer
enum<string>

Who pays for the check. Omit to honour the customer record's own billing default. customer arms the check payment-pending and emails a pay link — the customer pays by card at the portal.

Available options:
organization,
customer
deliverEmail
boolean

Automated lane only — whether to email the link (default true). When false the link is returned in verification_link for you to deliver.

customMessage
string

Optional note included in the verification email.

Maximum string length: 2000
eddCheckTypes
enum<string>[]

Optional enhanced due-diligence add-ons to bill alongside the check.

An enhanced due-diligence add-on check.

Available options:
SOURCE_OF_FUNDS,
SOURCE_OF_WEALTH,
BIOMETRIC_VERIFICATION

Response

The customer record after arming, plus verification_link when a portal link was generated (the automated lane).

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.

Shareable portal link (automated lane only).