Cardholder Creation

Goal: create a cardholder profile with KYC data so the user is eligible for card issuance.

Review the encrypted request rules in Overview before starting.

Workflow steps

  1. Create a user

    Register the user who will own the cardholder profile.

  2. List card products

    Select a card product and store its subprovider_code for the next step.

  3. Create the cardholder

    Submit KYC data with external_user_id and subprovider_code.

API Endpoints

  • POST/api/v1/users/createCreate the user that owns the cardholder.
  • POST/api/v1/cards/productsList available card products and their subprovider_code.
  • POST/api/v1/cardholders/createCreate the cardholder with KYC data.

Schemas

Cardholder

FieldTypeRequiredDescription
cardholder_id
stringRequiredCardholder identifier.
project_id
stringOptionalProject identifier.
user_id
stringOptionalInternal user identifier.
subprovider_code
stringRequiredSubprovider code. Use this field
subprovider_id
stringOptionalLegacy subprovider ObjectId. Prefer subprovider_code.
registration_status
stringRequiredRegistration status. Enum: pending, active, suspended, failed
kyc_status
stringRequiredKYC status. Enum: not_started, pending, approved, rejected, expired
kyc_level
stringOptionalKYC level if available (none, basic, advanced, full).
registered_at
stringOptionalUTC registration timestamp (ISO 8601).
activated_at
stringOptionalUTC activation timestamp (ISO 8601).
created_at
stringOptionalUTC creation timestamp (ISO 8601).
updated_at
stringOptionalUTC last-update timestamp (ISO 8601).

CardholderKycData

FieldTypeRequiredDescription
first_name
stringRequiredGiven name.
last_name
stringRequiredFamily name.
birth_date
stringRequiredDate of birth (YYYY-MM-DD).
email
stringRequiredValid email address.
phone_number_full
stringRequiredFull international phone number.
country_iso
stringRequiredISO 3166-1 alpha-2 country code.

Error table

These error slugs show up most often during cardholder onboarding.

Error SlugDescription
invalid_requestRequest payload failed validation.
external_user_id_existsUser with this external_user_id already exists.
external_user_id_requiredexternal_user_id is required.
project_user_not_foundUser not found for the given identifier.
invalid_subprovider_idsubprovider_id or subprovider_code is invalid.
subprovider_not_foundSubprovider not found.
subprovider_not_activeSubprovider is not active.
cardholder_already_existsCardholder already exists for the user.
kyc_data_requiredKYC data is missing.
provider_errorProvider-specific failure.

KYC field error patterns

Field-level validation errors share a predictable naming pattern.

FieldExample Error Slugs
first_namefirst_name_required, first_name_invalid_type, first_name_invalid_length
last_namelast_name_required, last_name_invalid_type, last_name_invalid_length
birth_datebirth_date_required, birth_date_invalid_format, birth_date_underage
emailemail_required, email_invalid_format, email_invalid_length
phone_number_fullphone_number_full_required, phone_number_full_invalid_format
country_isocountry_iso_required, country_iso_invalid_length