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_id for the next step.

  3. Create the cardholder

    Submit KYC data plus either external_user_id or project_user_id.

API Endpoints

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

Schemas

Cardholder

FieldTypeRequiredDescription
cardholder_id
stringRequiredCardholder identifier.
external_user_id
stringOptionalYour external user identifier.
project_user_id
stringOptionalInternal project user ID.
subprovider_id
stringRequiredSubprovider identifier.
registration_status
stringRequiredRegistration status. Enum: pending, active, suspended, failed
kyc_status
stringRequiredKYC status. Enum: not_started, pending, approved, rejected, expired

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.
project_user_id_or_external_user_id_requiredEither external_user_id or project_user_id is required.
invalid_project_user_idproject_user_id is invalid.
project_user_not_foundUser not found for the given identifier.
invalid_subprovider_idsubprovider_id 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