StandardKYCFields

data class StandardKYCFields(val naturalPersonKYCFields: NaturalPersonKYCFields? = null, val organizationKYCFields: OrganizationKYCFields? = null)

Implements SEP-0009 - Standard KYC Fields for Stellar Ecosystem.

Defines standardized Know Your Customer (KYC) and Anti-Money Laundering (AML) fields for use across the Stellar ecosystem. Anchors, exchanges, and other regulated entities use these fields for consistent identity verification.

This class serves as the top-level container for all SEP-09 KYC information, supporting both individual and business customers.

Implementation version: SEP-0009 v1.18.0

Total fields: 76 across 4 categories

  • Natural person: 34 fields (28 text + 6 binary)

  • Organization: 17 fields (15 text + 2 binary)

  • Financial account: 14 fields

  • Card payment: 11 fields

Field categories:

Use cases:

  • Anchor deposit/withdrawal identity verification

  • Exchange account registration

  • Compliance requirements for regulated transfers

  • Cross-border payment identity checks

Example - Natural person:

// Create KYC data for individual customer
val kyc = StandardKYCFields(
naturalPersonKYCFields = NaturalPersonKYCFields(
firstName = "John",
lastName = "Doe",
emailAddress = "john@example.com",
birthDate = LocalDate(1990, 1, 15),
idType = "passport",
idNumber = "123456789",
financialAccountKYCFields = FinancialAccountKYCFields(
bankName = "Example Bank",
bankAccountNumber = "1234567890"
)
)
)

// Extract all fields for submission
val allFields = kyc.fields()
val allFiles = kyc.files()

Example - Organization:

// Create KYC data for business customer
val kyc = StandardKYCFields(
organizationKYCFields = OrganizationKYCFields(
name = "Example Corp",
VATNumber = "123456789",
registrationNumber = "987654321",
directorName = "Jane Smith",
email = "contact@example.com",
financialAccountKYCFields = FinancialAccountKYCFields(
bankName = "Corporate Bank",
bankAccountNumber = "9876543210"
)
)
)

Example - With SEP-12 submission:

// Create KYC fields
val kycFields = StandardKYCFields(
naturalPersonKYCFields = NaturalPersonKYCFields(
firstName = "John",
lastName = "Doe",
emailAddress = "john@example.com"
)
)

// Submit to SEP-12 KYC service
val request = PutCustomerInfoRequest(
jwt = authToken,
kycFields = kycFields
)
val response = kycService.putCustomerInfo(request)

Field format standards:

  • Date fields: ISO 8601 date-only (YYYY-MM-DD) via kotlinx.datetime.LocalDate

  • Country codes: ISO 3166-1 alpha-3 (3 characters, e.g., "USA")

  • Language codes: ISO 639-1 (2 characters, e.g., "en")

  • Phone numbers: E.164 format (e.g., "+14155551234")

  • Occupation: ISCO08 code (3 characters)

  • Binary fields: ByteArray for document images (JPEG, PNG)

Important notes:

  • Fields follow ISO standards where applicable

  • Document images should be in common formats (JPEG, PNG, PDF)

  • Some fields may be required or optional depending on jurisdiction

  • Organization fields use "organization." prefix

  • Card fields use "card." prefix

See also:

Constructors

Link copied to clipboard
constructor(naturalPersonKYCFields: NaturalPersonKYCFields? = null, organizationKYCFields: OrganizationKYCFields? = null)

Properties

Link copied to clipboard

KYC fields for natural persons (individuals)

Link copied to clipboard

KYC fields for organizations (businesses)

Functions

Link copied to clipboard

Converts all text KYC fields to a map for SEP-9 submission.

Link copied to clipboard

Converts all binary KYC fields to a map for SEP-9 submission.