Skip to main content
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:
PropertyTypeRequiredDescription
field_idstringUnique identifier for the field (auto-generated)
namestringDisplay name shown to user
typestringField type
field_keystringPortable key for webhooks - use instead of field_id in your code
requiredbooleanWhether field is required (default: false)
descriptionstringInternal description
tooltipstringTooltip shown on hover
instructionsstringInstructions shown below field
placeholderstringPlaceholder text in input
help_textstringHelp text shown below field
default_valueanyDefault value for the field
validation_rulesobjectCustom validation rules
conditional_logicobjectShow/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"
}
PropertyTypeDescription
max_lengthintegerMaximum 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
}
PropertyTypeDescription
min_valuenumberMinimum allowed value
max_valuenumberMaximum 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"
}
PropertyTypeDescription
min_datestringMinimum date (ISO format or “today”)
max_datestringMaximum 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
}
PropertyTypeDescription
optionsarrayList of available options
allow_custom_optionbooleanAllow 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
}
PropertyTypeDescription
optionsarrayList of available options
min_selectionsintegerMinimum required selections
max_selectionsintegerMaximum 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"]
}
PropertyTypeDescription
allowed_mime_typesarrayList of allowed MIME types

Contact Fields

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
}
PropertyTypeDescription
validate_emailbooleanVerify email exists via provider lookup
block_disposablebooleanBlock disposable/temporary email domains
block_role_basedbooleanBlock 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
}
PropertyTypeDescription
formatstringExpected format: international, national, any
validate_carrierbooleanValidate carrier information via lookup
block_voipbooleanBlock VoIP/virtual phone numbers
block_disposablebooleanBlock disposable/temporary phone numbers
require_mobilebooleanRequire 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
}
PropertyTypeDescription
auto_validatebooleanRun web validation on this URL
validation_profilestringCustom 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"]
}
PropertyTypeDescription
country_typestringRequired. Semantic type that determines which automation rules apply
allowed_countriesarrayList of allowed ISO 3166-1 alpha-2 country codes (frontend validation)
blocked_countriesarrayList of blocked ISO 3166-1 alpha-2 country codes (frontend validation)

Country Types

TypeDescriptionUse Case
nationalityPerson’s nationality/citizenshipIndividual KYC
residenceCountry of residenceIndividual KYC
incorporationCountry of incorporationCompany KYC
tax_residenceCountry of tax residenceTax compliance
birth_countryCountry of birthIndividual KYC
business_operationCountry where business operatesCompany/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
}
PropertyTypeDescription
name_typestringType of name: individual, company, legal_name
entity_rolestringOptional. 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_listsbooleanRun this name against sanction lists (OFAC, UN, etc.)
validate_adverse_mediabooleanRun 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
}
PropertyTypeDescription
blockchainstringExpected blockchain: ethereum, bitcoin, any
validate_cryptobooleanValidate 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
}
PropertyTypeDescription
id_typestringType: passport, national_id, tax_id, company_reg, other
countrystringISO 3166-1 alpha-2 country code for format validation
validate_formatbooleanValidate ID format according to country/type rules
validate_checksumbooleanValidate checksum if applicable (e.g., IBAN, tax IDs)
validate_against_listsbooleanCheck 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
}
PropertyTypeDescription
auto_validatebooleanAutomatically run web validation on this domain
validation_profilestringWeb 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
}
PropertyTypeDescription
currencystringExpected currency code (ISO 4217)
min_amountnumberMinimum allowed amount
max_amountnumberMaximum allowed amount
amount_typestringSemantic type: transaction, monthly_volume, annual_revenue, capital, investment, other
apply_volume_rulesbooleanApply 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
}
PropertyTypeDescription
min_percentagenumberMinimum percentage
max_percentagenumberMaximum 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
}
PropertyTypeDescription
currencystringCurrency for volume amount (default: USD)
periodstringPeriod: monthly, annual
include_transaction_countbooleanAlso capture expected transaction count
volume_tiersarrayPredefined volume tiers for selection
apply_volume_rulesbooleanApply 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
}
PropertyTypeDescription
require_postal_codebooleanRequire postal/zip code
require_countrybooleanRequire country selection (default: true)
capture_geolocationbooleanCapture GPS coordinates
country_typestringIf 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}
  }
}
PropertyTypeDescription
entity_rolestringRole: director, shareholder, beneficial_owner, representative, custom
min_itemsintegerMinimum number of entities required
max_itemsintegerMaximum number of entities allowed
allow_company_entitiesbooleanAllow company entities (for multi-level UBO structures)
max_recursion_depthintegerMax depth for nested company structures
validate_listsbooleanRun each entity name against sanction lists
validate_adverse_mediabooleanRun adverse media on each entity
item_schemaobjectSchema 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
}
PropertyTypeDescription
min_itemsintegerMinimum number of sub-merchants
max_itemsintegerMaximum number of sub-merchants
require_industrybooleanRequire industry for each sub-merchant
require_sample_urlbooleanRequire 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"
  }
}
PropertyTypeDescription
min_itemsintegerMinimum number of items
max_itemsintegerMaximum number of items
item_schemaobjectSchema 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"
    }
  ]
}
PropertyTypeDescription
nested_fieldsarrayArray 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

OperatorDescription
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

TypeDescriptionAutomation Integration
textSimple text input-
numberNumeric input-
dateDate picker-
booleanCheckboxFormFieldRule
selectDropdownFormFieldRule
multi_selectMulti-select dropdownFormFieldRule
fileFile upload-
emailEmail with verificationEmailVerificationRule
phonePhone with validation-
urlURL input-
currencyMoney amountVolumeRule
percentagePercentage-
volumeTransaction volumeVolumeRule
countryCountry selectionCountryRule
nameName with list checkListMatchRule
walletCrypto walletCrypto validation
document_idID numberFormat validation
domainDomain/URLWebValidationRules
addressFull addressCountryRule (via country_type)
entity_arrayDirectors/shareholdersListMatchRule (related_parties)
sub_merchantSub-merchant infoWeb validation
arrayGeneric array-
nested_objectNested fields-