Custom fields are used in form_fill steps to collect structured data from users. Fields can be simple inputs or semantic fields that integrate with automation rules for automatic validation.
Field Categories
Basic Fields Standard inputs: text, number, date, boolean, select, file
Contact Fields Email, phone, URL with validation options
Semantic Fields Country, name, wallet, domain with automatic rule integration
Complex Fields Address, entity arrays, sub-merchants, nested objects
Common Field Properties
All field types share these base properties:
Property Type Required Description field_idstring ✓ Unique identifier for the field (auto-generated) namestring ✓ Display name shown to user typestring ✓ Field type field_keystring Portable key for webhooks - use instead of field_id in your coderequiredboolean Whether field is required (default: false) descriptionstring Internal description tooltipstring Tooltip shown on hover instructionsstring Instructions shown below field placeholderstring Placeholder text in input help_textstring Help text shown below field default_valueany Default value for the field validation_rulesobject Custom validation rules conditional_logicobject Show/hide based on other field values
Use field_key for portable integrations : The field_id is auto-generated and different between staging and production. Define a field_key (e.g., full_name, date_of_birth, is_pep) to get a consistent identifier in webhooks that works across all environments.
Basic Fields
Text Field
Simple text input.
{
"field_id" : "occupation" ,
"name" : "Occupation" ,
"type" : "text" ,
"required" : true ,
"max_length" : 100 ,
"placeholder" : "Enter your occupation"
}
Property Type Description max_lengthinteger Maximum character length
Number Field
Numeric input with optional range validation.
{
"field_id" : "age" ,
"name" : "Age" ,
"type" : "number" ,
"required" : true ,
"min_value" : 18 ,
"max_value" : 120
}
Property Type Description min_valuenumber Minimum allowed value max_valuenumber Maximum allowed value
Date Field
Date picker with optional range constraints.
{
"field_id" : "date_of_birth" ,
"name" : "Date of Birth" ,
"type" : "date" ,
"required" : true ,
"max_date" : "today"
}
Property Type Description min_datestring Minimum date (ISO format or “today”) max_datestring Maximum date (ISO format or “today”)
Boolean Field
Checkbox/toggle input.
{
"field_id" : "terms_accepted" ,
"name" : "I accept the Terms and Conditions" ,
"type" : "boolean" ,
"required" : true
}
Select Field
Dropdown selection with predefined options.
{
"field_id" : "employment_status" ,
"name" : "Employment Status" ,
"type" : "select" ,
"required" : true ,
"options" : [ "Employed" , "Self-employed" , "Unemployed" , "Retired" , "Student" ],
"allow_custom_option" : false
}
Property Type Description optionsarray List of available options allow_custom_optionboolean Allow user to enter custom value
Multi-Select Field
Multiple selection dropdown.
{
"field_id" : "business_activities" ,
"name" : "Business Activities" ,
"type" : "multi_select" ,
"required" : true ,
"options" : [ "Import/Export" , "E-commerce" , "Financial Services" , "Consulting" , "Manufacturing" ],
"min_selections" : 1 ,
"max_selections" : 5
}
Property Type Description optionsarray List of available options min_selectionsinteger Minimum required selections max_selectionsinteger Maximum allowed selections
File Field
File upload input.
{
"field_id" : "additional_document" ,
"name" : "Additional Document" ,
"type" : "file" ,
"required" : false ,
"allowed_mime_types" : [ "application/pdf" , "image/jpeg" , "image/png" ]
}
Property Type Description allowed_mime_typesarray List of allowed MIME types
Email Field
Email input with optional verification.
{
"field_id" : "email" ,
"name" : "Email Address" ,
"type" : "email" ,
"required" : true ,
"validate_email" : true ,
"block_disposable" : true ,
"block_role_based" : false
}
Property Type Description validate_emailboolean Verify email exists via provider lookup block_disposableboolean Block disposable/temporary email domains block_role_basedboolean Block role-based emails (info@, admin@, etc.)
Email verification can be used with EmailVerificationRule in automation rules to auto-deny invalid emails or flag disposable domains.
Phone Field
Phone number input with validation options.
{
"field_id" : "phone" ,
"name" : "Phone Number" ,
"type" : "phone" ,
"required" : true ,
"format" : "international" ,
"validate_carrier" : false ,
"block_voip" : true ,
"block_disposable" : true ,
"require_mobile" : true
}
Property Type Description formatstring Expected format: international, national, any validate_carrierboolean Validate carrier information via lookup block_voipboolean Block VoIP/virtual phone numbers block_disposableboolean Block disposable/temporary phone numbers require_mobileboolean Require mobile phone (not landline)
URL Field
URL/website input.
{
"field_id" : "website" ,
"name" : "Company Website" ,
"type" : "url" ,
"required" : true ,
"auto_validate" : false ,
"validation_profile" : null
}
Property Type Description auto_validateboolean Run web validation on this URL validation_profilestring Custom web validation profile ID
Semantic Fields
Semantic fields have special meaning and integrate with automation rules for automatic validation.
Country Field
Country selection with semantic type for automation rules.
{
"field_id" : "nationality" ,
"name" : "Nationality" ,
"type" : "country" ,
"country_type" : "nationality" ,
"required" : true ,
"allowed_countries" : null ,
"blocked_countries" : [ "KP" , "IR" , "SY" ]
}
Property Type Description country_typestring Required. Semantic type that determines which automation rules applyallowed_countriesarray List of allowed ISO 3166-1 alpha-2 country codes (frontend validation) blocked_countriesarray List of blocked ISO 3166-1 alpha-2 country codes (frontend validation)
Country Types
Type Description Use Case nationalityPerson’s nationality/citizenship Individual KYC residenceCountry of residence Individual KYC incorporationCountry of incorporation Company KYC tax_residenceCountry of tax residence Tax compliance birth_countryCountry of birth Individual KYC business_operationCountry where business operates Company/Merchant KYC
Country fields with a country_type will automatically trigger matching CountryRule automation rules. For example, if you have a rule for nationality from KP, it will only apply to fields with country_type: "nationality".
Name Field
Name input with automatic sanctions/adverse media validation.
{
"field_id" : "full_name" ,
"name" : "Full Legal Name" ,
"type" : "name" ,
"name_type" : "individual" ,
"entity_role" : null ,
"validate_lists" : true ,
"validate_adverse_media" : false ,
"required" : true
}
Property Type Description name_typestring Type of name: individual, company, legal_name entity_rolestring Optional. Entity role for watchlist tagging: individual, ubo, director, shareholder, representative. When set, names extracted from this field are tagged with this role when auto-added to watchlists. validate_listsboolean Run this name against sanction lists (OFAC, UN, etc.) validate_adverse_mediaboolean Run adverse media check on this name
Enabling validate_lists or validate_adverse_media on name fields will trigger list checks during session processing and can trigger ListMatchRule automation rules.
Use entity_role to automatically tag names for watchlist auto-add. For example, set entity_role: "ubo" on a name field for beneficial owners, and when the session is processed with watchlist_auto_add enabled, these names will be tagged as ubo in the watchlist.
Wallet Field
Cryptocurrency wallet address input.
{
"field_id" : "eth_wallet" ,
"name" : "Ethereum Wallet Address" ,
"type" : "wallet" ,
"blockchain" : "ethereum" ,
"validate_crypto" : true ,
"required" : false
}
Property Type Description blockchainstring Expected blockchain: ethereum, bitcoin, any validate_cryptoboolean Validate wallet against crypto sanction lists
Document ID Field
Document identification number with format validation.
{
"field_id" : "tax_id" ,
"name" : "Tax ID Number" ,
"type" : "document_id" ,
"id_type" : "tax_id" ,
"country" : "US" ,
"validate_format" : true ,
"validate_checksum" : true ,
"validate_against_lists" : false ,
"required" : true
}
Property Type Description id_typestring Type: passport, national_id, tax_id, company_reg, other countrystring ISO 3166-1 alpha-2 country code for format validation validate_formatboolean Validate ID format according to country/type rules validate_checksumboolean Validate checksum if applicable (e.g., IBAN, tax IDs) validate_against_listsboolean Check if document ID appears in sanction/watchlists
Domain Field
Domain/URL with optional web validation.
{
"field_id" : "business_domain" ,
"name" : "Business Website" ,
"type" : "domain" ,
"auto_validate" : true ,
"validation_profile" : null ,
"required" : true
}
Property Type Description auto_validateboolean Automatically run web validation on this domain validation_profilestring Web validation profile to use
Financial Fields
Currency Field
Monetary amount input.
{
"field_id" : "monthly_revenue" ,
"name" : "Monthly Revenue" ,
"type" : "currency" ,
"currency" : "USD" ,
"min_amount" : 0 ,
"max_amount" : null ,
"amount_type" : "monthly_volume" ,
"apply_volume_rules" : true ,
"required" : true
}
Property Type Description currencystring Expected currency code (ISO 4217) min_amountnumber Minimum allowed amount max_amountnumber Maximum allowed amount amount_typestring Semantic type: transaction, monthly_volume, annual_revenue, capital, investment, other apply_volume_rulesboolean Apply workflow VolumeRule to this field
Percentage Field
Percentage input (0-100).
{
"field_id" : "ownership_percentage" ,
"name" : "Ownership Percentage" ,
"type" : "percentage" ,
"min_percentage" : 0 ,
"max_percentage" : 100 ,
"required" : true
}
Property Type Description min_percentagenumber Minimum percentage max_percentagenumber Maximum percentage
Volume Field
Transaction volume input with automation rule support.
{
"field_id" : "expected_volume" ,
"name" : "Expected Monthly Volume" ,
"type" : "volume" ,
"currency" : "USD" ,
"period" : "monthly" ,
"include_transaction_count" : true ,
"volume_tiers" : [ "0-10K" , "10K-100K" , "100K-1M" , "1M+" ],
"apply_volume_rules" : true ,
"required" : true
}
Property Type Description currencystring Currency for volume amount (default: USD) periodstring Period: monthly, annual include_transaction_countboolean Also capture expected transaction count volume_tiersarray Predefined volume tiers for selection apply_volume_rulesboolean Apply workflow VolumeRule to this field
Volume fields with apply_volume_rules: true will trigger matching VolumeRule automation rules during session processing.
Complex Fields
Address Field
Complete address input with optional country-based automation.
{
"field_id" : "home_address" ,
"name" : "Home Address" ,
"type" : "address" ,
"require_postal_code" : true ,
"require_country" : true ,
"capture_geolocation" : false ,
"country_type" : "residence" ,
"required" : true
}
Property Type Description require_postal_codeboolean Require postal/zip code require_countryboolean Require country selection (default: true) capture_geolocationboolean Capture GPS coordinates country_typestring If set, apply CountryRule to the country from this address. Options: residence, business_operation, mailing, billing
Entity Array Field
Array of related entities (directors, shareholders, beneficial owners).
{
"field_id" : "directors" ,
"name" : "Company Directors" ,
"type" : "entity_array" ,
"entity_role" : "director" ,
"min_items" : 1 ,
"max_items" : 10 ,
"allow_company_entities" : false ,
"max_recursion_depth" : 1 ,
"validate_lists" : true ,
"validate_adverse_media" : false ,
"required" : true ,
"item_schema" : {
"full_name" : { "type" : "name" , "required" : true },
"nationality" : { "type" : "country" , "country_type" : "nationality" , "required" : true },
"date_of_birth" : { "type" : "date" , "required" : true },
"ownership_percentage" : { "type" : "percentage" , "required" : false }
}
}
Property Type Description entity_rolestring Role: director, shareholder, beneficial_owner, representative, custom min_itemsinteger Minimum number of entities required max_itemsinteger Maximum number of entities allowed allow_company_entitiesboolean Allow company entities (for multi-level UBO structures) max_recursion_depthinteger Max depth for nested company structures validate_listsboolean Run each entity name against sanction lists validate_adverse_mediaboolean Run adverse media on each entity item_schemaobject Schema for each entity item
Entity array fields support ListMatchRule with entity_scope: "related_parties" to apply different actions for list matches on directors/shareholders vs the primary subject.
Sub-Merchant Field
Sub-merchant information for payment facilitator onboarding.
{
"field_id" : "sub_merchants" ,
"name" : "Sample Sub-Merchants" ,
"type" : "sub_merchant" ,
"min_items" : 1 ,
"max_items" : 10 ,
"require_industry" : true ,
"require_sample_url" : true ,
"required" : true
}
Property Type Description min_itemsinteger Minimum number of sub-merchants max_itemsinteger Maximum number of sub-merchants require_industryboolean Require industry for each sub-merchant require_sample_urlboolean Require sample URL for each sub-merchant
Array Field
Generic array input.
{
"field_id" : "previous_addresses" ,
"name" : "Previous Addresses (last 3 years)" ,
"type" : "array" ,
"min_items" : 0 ,
"max_items" : 5 ,
"item_schema" : {
"type" : "address"
}
}
Property Type Description min_itemsinteger Minimum number of items max_itemsinteger Maximum number of items item_schemaobject Schema for array items
Nested Object Field
Nested object with multiple sub-fields.
{
"field_id" : "source_of_funds" ,
"name" : "Source of Funds" ,
"type" : "nested_object" ,
"required" : true ,
"nested_fields" : [
{
"field_id" : "source_type" ,
"name" : "Source Type" ,
"type" : "select" ,
"options" : [ "Employment" , "Business" , "Investments" , "Inheritance" , "Other" ],
"required" : true
},
{
"field_id" : "description" ,
"name" : "Description" ,
"type" : "text" ,
"required" : true
},
{
"field_id" : "amount" ,
"name" : "Amount" ,
"type" : "currency" ,
"currency" : "USD"
}
]
}
Property Type Description nested_fieldsarray Array of field definitions for the nested object
Conditional Logic
Fields can be shown/hidden based on other field values.
{
"field_id" : "pep_details" ,
"name" : "PEP Details" ,
"type" : "text" ,
"required" : true ,
"conditional_logic" : {
"show_when" : {
"field_id" : "pep_status" ,
"operator" : "not_equals" ,
"value" : "No"
}
}
}
Conditional Operators
Operator Description equalsField value equals specified value not_equalsField value does not equal specified value inField value is in array of values not_inField value is not in array of values is_emptyField is empty/null is_not_emptyField has a value
Field Types Reference
Type Description Automation Integration textSimple text input - numberNumeric input - dateDate picker - booleanCheckbox FormFieldRuleselectDropdown FormFieldRulemulti_selectMulti-select dropdown FormFieldRulefileFile upload - emailEmail with verification EmailVerificationRulephonePhone with validation - urlURL input - currencyMoney amount VolumeRulepercentagePercentage - volumeTransaction volume VolumeRulecountryCountry selection CountryRulenameName with list check ListMatchRulewalletCrypto wallet Crypto validation document_idID number Format validation domainDomain/URL WebValidationRulesaddressFull address CountryRule (via country_type)entity_arrayDirectors/shareholders ListMatchRule (related_parties)sub_merchantSub-merchant info Web validation arrayGeneric array - nested_objectNested fields -