Skip to main content
POST
Create cardholder

Authorizations

x-contro-api-key
string
header
required

Partner API key (sk_live_* for production, sk_test_* for sandbox)

Body

application/json
externalUserId
string
required

Your unique identifier for this user. Min 1 character

Minimum string length: 1
Example:

"user_42"

email
string<email>
required

Valid email address

Example:

"jane@example.com"

phoneNumber
string
required

E.164 formatted phone number

Example:

"+14155552671"

kycSource
enum<string>
required

KYC via Contro-hosted web link

Available options:
web
kycSessionId
string
required

KYC session ID from POST /partner/kyc-sessions

Minimum string length: 1

Response

Existing cardholder re-imported from a fresh share token. Returned instead of 201 when a cardholder already existed for this externalUserId.

id
string
required

Contro cardholder ID

Example:

"ch_abc123"

externalUserId
string
required

Your unique identifier for this user

Example:

"user_42"

firstName
string
required

Cardholder's first name

Example:

"Jane"

lastName
string
required

Cardholder's last name

Example:

"Doe"

email
string
required

Email address

Example:

"jane@example.com"

phoneNumber
string | null
required

E.164 formatted phone number, or null if not provided

Example:

"+14155552671"

kycSource
string
required

KYC submission method. One of: api, sumsub, web

Example:

"api"

kycStatus
string
required

KYC verification status. One of: pending, approved, rejected

Example:

"approved"

status
string
required

Cardholder account status. One of: active, suspended, closed

Example:

"active"

createdAt
string
required

ISO 8601 creation timestamp

Example:

"2026-03-20T14:30:00Z"