Skip to main content
POST
cURL
Ingest an entity customer — a company, trust, partnership, or SMSF. The record lands in your organisation tagged INTEGRATION with kyb_status = NOT_STARTED. No KYB is triggered. No credits are charged. Your back-office team chooses the KYB method and starts verification in-app when ready.

Individuals vs entities

Entities verify via KYB (business verification + beneficial-owner resolution) instead of KYC, so they live on their own resource. Use POST /customers for individuals and sole traders.

Identifiers

  • AUSTRALIAN entities (the default) take abn (11 digits) and acn (9 digits). Spaces are tolerated and stripped.
  • INTERNATIONAL entities require countryOfFormation (ISO 3166-1 alpha-3) and accept registrationNumber; abn/acn are rejected.

Contact person

KYB needs an individual who acts for the entity — they receive the verification link when your team starts KYB. Pass contact with either customerId (an existing individual’s UUID or external_id) or an inline fullName + email. Inline contacts reuse an exact name+email match or create a contact-role individual; nothing is emailed or billed at ingest time.

Idempotent upsert behaviour

Once the entity’s KYB is VERIFIED, identity fields (name, abn, acn, countryOfFormation) freeze — re-sending unchanged values is fine, changing them returns 422 validation_failed.

Retry safety

Pass Idempotency-Key (a UUID or any string ≤ 255 chars). Repeated calls with the same key within 24 hours replay the original response. See Idempotency.

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

Body

application/json
type
enum<string>
required

Entity customer types accepted by /entities. SMSF is treated as a type of trust and OTHER as a company for verification purposes, but the type you post round-trips back unchanged. Immutable after creation.

Available options:
COMPANY,
TRUST,
PARTNERSHIP,
SMSF,
OTHER
name
string
required

The entity's legal name.

Required string length: 1 - 255
externalId
string

Your CRM identifier. Strongly recommended for idempotent upsert + round-tripping.

Maximum string length: 255
origin
enum<string>

Where the entity is formed. AUSTRALIAN (the default) uses ABN/ACN identifiers; INTERNATIONAL uses countryOfFormation + registrationNumber. Immutable after creation.

Available options:
AUSTRALIAN,
INTERNATIONAL
abn
string | null

Australian Business Number (11 digits; spaces tolerated). AUSTRALIAN entities only.

acn
string | null

Australian Company Number (9 digits; spaces tolerated). AUSTRALIAN entities only.

address
string | null
Maximum string length: 500
countryOfFormation
string | null

ISO 3166-1 alpha-3. Required for INTERNATIONAL entities; rejected for AUSTRALIAN.

registrationNumber
string | null

Company/registry number in the country of formation. INTERNATIONAL entities only.

Maximum string length: 64
contact
object

The entity's primary contact person — the individual who acts for the entity and receives the KYB portal link when your team starts verification. Provide either customerId (an existing individual) or fullName + email (inline create/reuse) — not both.

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.

designatedServices
string[]

The specific designated service(s) provided to the customer, as stable catalog codes. An empty array is an explicit "no designated services". Unknown or non-designated codes are rejected with 422 validation_failed.

The catalog is also available programmatically via GET /designated-services.

Professional services

Real estate

Financial services

Other designated services

Maximum array length: 64
Maximum string length: 64
Example:

Response

Existing entity updated (idempotent upsert).

id
string<uuid>
required

Instant Compliance customer UUID (entities are customers too).

type
enum<string>
required

Entity customer types accepted by /entities. SMSF is treated as a type of trust and OTHER as a company for verification purposes, but the type you post round-trips back unchanged. Immutable after creation.

Available options:
COMPANY,
TRUST,
PARTNERSHIP,
SMSF,
OTHER
name
string
required

The entity's legal name.

origin
enum<string>
required

Where the entity is formed. AUSTRALIAN (the default) uses ABN/ACN identifiers; INTERNATIONAL uses countryOfFormation + registrationNumber. Immutable after creation.

Available options:
AUSTRALIAN,
INTERNATIONAL
kyb_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
abn
string | null
acn
string | null
country_of_formation
string | null

ISO 3166-1 alpha-3. AUS for Australian entities; the country of formation for international entities.

registration_number
string | null

Registry number recorded for international entities.

kyb_started_at
string<date-time> | null
kyb_completed_at
string<date-time> | null
contact
object | null

The entity's current contact person, or null when none is set.