Overview
The Form module’s React provider supports extensive customization of each screen’s content, styling, and behavior. Configuration is passed as module options when creating the form component.ReactFormConfig
The main configuration type for the React form provider:Copy
Ask AI
type ReactFormConfig = {
name: ReactFormIdsKeys;
mode?: 'individual';
type?: 'ocr' | 'manual' | 'doc_upload';
} & TPageConfig;
| Property | Type | Required | Description |
|---|---|---|---|
name | ReactFormIdsKeys | Yes | The starting screen. One of: 'WELCOME', 'CONSENT', 'DOCUMENT', 'REVIEW', 'PERSONAL', 'LOADING', 'RESULT', 'RETRY', 'DOC_UPLOAD', 'START', 'REQUIRED_DOCUMENT_UPLOAD', 'PARTIAL_DOCUMENT_UPLOAD', 'OPTIONAL_DOCUMENT_UPLOAD'. |
mode | 'individual' | No | Verification mode. Defaults to 'individual' for personal KYC. |
type | 'ocr' | 'manual' | 'doc_upload' | No | The verification flow type. 'ocr' for document capture with auto-extraction, 'manual' for manual data entry, 'doc_upload' for file uploads. See Configuration Types for details on which screens are affected. |
Configuration Types
Thetype option determines the overall verification flow and primarily affects the Document Selection, Personal Details, Review, and Retry screens. Static screens (Welcome, Consent, Start) and progress screens (Loading, Result) are not affected by type. Doc upload screens are only shown when type is 'doc_upload'.
OCR Type
Used to display and review data that was automatically extracted by the IDV or OCR modules. In a typical OCR flow, the IDV flow handles document capture, and the form module is used to present the extracted data on the Review screen for user confirmation. Screens affected:- Review - Displays OCR-extracted data for user review and submission
- Document Selection - Shows document type selection. Useful for specifying document type before mounting the OCR module. Unlike manual mode, OCR mode does not show manual input fields after selection.
Copy
Ask AI
// OCR capture is handled by the IDV flow
const idv = sdk.flow('idv');
// The form module is used for the review screen
const review = sdk.component('form', {
name: 'REVIEW',
mode: 'individual',
type: 'ocr'
});
Manual Type
For manual data entry flows. Users select their document type and manually enter their details. Screens affected:- Document Selection - Shows
numberOfIDsand document options withctabutton. After selection, displays manual input fields for the selected document. - Personal Details - Shown for manual data entry with country-specific field configurations
- Review - Displays manually entered data with
verify,hiddenForms, andreadOnlyFormsoptions - Retry - Allows re-entry of data that failed verification
Copy
Ask AI
const welcome = sdk.component('form', {
name: 'WELCOME',
mode: 'individual',
type: 'manual'
});
Doc Upload Type
For supporting document file upload flows. Requires document upload configuration in the recipe. Screens affected:- Required/Partial/Optional Document Upload - These screens are only shown in this type
- Review - Displays document upload summary
- Personal Details - Not shown
Copy
Ask AI
const welcome = sdk.component('form', {
name: 'WELCOME',
mode: 'individual',
type: 'doc_upload'
});
Page Configuration Types
The Form module uses four page configuration types depending on the screen:IStaticPageConfig
Used by: Welcome, Consent, Start, Document Upload screensCopy
Ask AI
type IStaticPageConfig = IBasicInfo & {
cta?: ActionContent;
instructions?: ListInfo; // Instruction items
checkbox?: Content; // Consent checkbox content
additionalInstructions?: ListInfo;
}
| Property | Type | Description |
|---|---|---|
cta | ActionContent | Call-to-action button configuration |
instructions | ListInfo | List of instruction items displayed on the screen |
checkbox | Content | Consent checkbox content (used on Consent screen) |
additionalInstructions | ListInfo | Additional instruction items |
IIdCardPageConfig
Used by: Document Selection (manual, ocr, and doc_upload modes), Retry screensOCR mode vs Manual mode: In OCR mode, Document Selection shows only the document type picker, useful for specifying the document type before mounting the OCR module. In manual mode, Document Selection shows the document type picker followed by manual input fields for the selected document.
Copy
Ask AI
type IIdCardPageConfig = IBasicInfo & {
type: 'ocr' | 'manual' | 'doc_upload';
showPreps?: boolean; // Show document preparation tips
documents: IDocuments[]; // Available document types
numberOfIDs?: number; // Required IDs (manual mode)
cta?: ActionContent; // Action button (manual mode)
}
| Property | Type | Description |
|---|---|---|
type | 'ocr' | 'manual' | 'doc_upload' | Required. Determines the document selection behavior. See Configuration Types. |
showPreps | boolean | Show document preparation tips before capture |
documents | IDocuments[] | Available document types for selection. Each entry configures a document type with optional country-specific field overrides. |
numberOfIDs | number | Number of required identity documents (manual mode only) |
cta | ActionContent | Action button (manual mode only) |
IProgressPageConfig
Used by: Loading, Result screensCopy
Ask AI
type IProgressPageConfig = {
name: string;
title?: Content;
descriptions?: Content[];
style?: Styles;
logo?: { src: string };
icon?: string;
state?: keyof RESULT_STATE; // Result only
creditHeaderIssueTitle?: { label, style }; // Result only
creditHeaderIssueDescriptions?: { label }[]; // Result only
cta?: ActionContent; // Result only
}
| Property | Type | Description |
|---|---|---|
name | string | Screen identifier |
title | Content | Screen title |
descriptions | Content[] | Description items |
style | Styles | Custom CSS styles |
logo | { src: string } | Logo image URL |
icon | string | Icon to display |
state | keyof RESULT_STATE | Result screen state. One of: 'SUCCESS', 'FAIL', 'PENDING', 'PARTIAL', 'UPLOAD_SUCCESS', 'UPLOAD_FAIL', 'PROVIDER_ERROR'. Result screen only. |
creditHeaderIssueTitle | { label, style } | Credit issue header title. Result screen only. |
creditHeaderIssueDescriptions | { label }[] | Credit issue descriptions. Result screen only. |
cta | ActionContent | Call-to-action button. Result screen only. |
IFormPageConfig
Used by: Review, Personal Details, Retry screensCopy
Ask AI
type IFormPageConfig = {
name: string;
title: Content;
style?: Styles;
logo?: { src: string };
cta?: ActionContent;
descriptions?: Content[];
type?: 'ocr' | 'manual' | 'doc_upload';
// Document fields (Review, Retry)
documentDetails?: Record<DocumentTypes, {
fields: FormField[];
}>;
// Personal detail fields (Personal, Retry)
personalDetails?: {
fields: FormField[];
};
// Manual mode options (Review)
verify?: boolean;
customResult?: boolean;
hiddenForms?: string[];
readOnlyForms?: string[];
}
| Property | Type | Description |
|---|---|---|
name | string | Screen identifier |
title | Content | Screen title (required) |
style | Styles | Custom CSS styles |
logo | { src: string } | Logo image URL |
cta | ActionContent | Call-to-action button |
descriptions | Content[] | Description items |
type | 'ocr' | 'manual' | 'doc_upload' | Verification flow type. See Configuration Types. |
documentDetails | Record<DocumentTypes, { fields: FormField[] }> | Document-specific form fields. Used on Review and Retry screens. |
personalDetails | { fields: FormField[] } | Personal detail form fields. Used on Personal Details and Retry screens. Not affected by configuration type. |
verify | boolean | Enable verification on submit. Manual mode Review screen only. |
customResult | boolean | Use custom result handling. Manual mode Review screen only. |
hiddenForms | string[] | Form section names to hide. Review screen only. |
readOnlyForms | string[] | Form section names to make read-only. Review screen only. |
Content Customization
Content Object
Most text elements use theContent type for customization:
Copy
Ask AI
type Content = {
icon?: string | ReactComponent | null;
label?: string;
shortLabel?: string;
subText?: string;
style?: Styles;
hidden?: boolean;
image?: string; // For document types only
}
| Property | Type | Description |
|---|---|---|
icon | string | ReactComponent | null | Icon to display. Can be a string (icon name/URL) or React component. |
label | string | Primary text content |
shortLabel | string | Shortened version of the label |
subText | string | Secondary text displayed below the label |
style | Styles | Custom CSS styles |
hidden | boolean | Whether to hide this content element |
image | string | Image URL (available for document type content) |
IBasicInfo
Base configuration shared by all static and card-based screens:Copy
Ask AI
type IBasicInfo = {
name: string;
mode?: 'individual';
logo?: { src: string };
title?: Content;
subtitle?: Content;
descriptions?: Content[];
style?: Styles;
type?: 'ocr' | 'manual' | 'doc_upload';
// Font configuration
name?: string; // Font family name
url?: string; // Font URL
}
| Property | Type | Description |
|---|---|---|
name | string | Screen identifier |
mode | 'individual' | Verification mode. Defaults to 'individual'. |
logo | { src: string } | Logo image URL |
title | Content | Screen title |
subtitle | Content | Screen subtitle |
descriptions | Content[] | Description items |
style | Styles | Custom CSS styles |
type | 'ocr' | 'manual' | 'doc_upload' | Verification flow type. See Configuration Types. |
name (font) | string | Font family name (within font configuration) |
url (font) | string | Font URL (within font configuration) |
ActionContent
Used for buttons and call-to-action elements:Copy
Ask AI
type ActionContent = Content & {
onClick?: () => void;
timeoutRetryMiliseconds?: number;
retryAmount?: number;
retryAttemptString?: string;
maxRetryAttemptedString?: string;
}
| Property | Type | Description |
|---|---|---|
onClick | () => void | Click handler for the action |
timeoutRetryMiliseconds | number | Timeout before retry is enabled |
retryAmount | number | Number of retry attempts allowed |
retryAttemptString | string | Text shown during retry countdown |
maxRetryAttemptedString | string | Text shown when max retries reached |
ListInfo
Used for instruction lists on static screens:Copy
Ask AI
type ListInfo = Content[];
Content objects. Each item represents an instruction or list entry, rendered with the ff-instruction-item and ff-instruction-icon CSS classes.
IDocuments
Configures a document type available for selection on the Document Selection screen, with optional country and state-specific field overrides.Copy
Ask AI
type IDocuments = {
type: string;
countries?: CountryConfig;
}
| Property | Type | Description |
|---|---|---|
type | string | Document type identifier. Supported values include 'DRIVERS_LICENCE', 'PASSPORT', 'NATIONAL_ID', 'NATIONAL_HEALTH_ID'. |
countries | CountryConfig | Country and state-specific field overrides for this document type. Allows different fields to be shown based on the user’s selected country and state. |
CSS Styling
The Form module provides CSS class keys for styling customization through thestyle property on configuration objects.
CSS Class Keys
| Key | CSS Class | Description |
|---|---|---|
wrapper | ff-wrapper | Main form wrapper |
innerWrapper | ff-inner-wrapper | Inner content wrapper |
description | ff-description | Description text container |
instructions | ff-instructions | Instructions list container |
documents | ff-documents | Document list container |
checkbox | ff-checkbox | Checkbox container |
label | ff-label | Label text elements |
title | ff-title | Title text elements |
subtitle | ff-subtitle | Subtitle text elements |
button | ff-button | Primary button |
disabledButton | ff-disabled-button | Disabled button state |
cancelButton | ff-cancel-button | Cancel/back button |
checkboxItem | ff-checkbox-item | Individual checkbox items |
descriptionItem | ff-description-item | Individual description items |
instructionItem | ff-instruction-item | Individual instruction items |
instructionIcon | ff-instruction-icon | Instruction item icons |
checkboxInput | ff-checkbox-input | Checkbox input elements |
documentItem | ff-document-item | Individual document items |
font | font | Font configuration |
formWrapper | ff-form-wrapper | Form fields wrapper |
formField | ff-form-field | Individual form fields |
progressWrapper | ff-progress-wrapper | Progress indicator wrapper |
progressItem | ff-progress-item | Individual progress items |
loading | ff-loading | Loading indicator |
noteContainer | ff-note-container | Note/info box container |
noteTitle | ff-note-title | Note title |
noteDescription | ff-note-description | Note description text |
editIcon | ff-edit-button | Edit icon/button |
logo | ff-logo | Logo element |
Copy
Ask AI
const formComponent = sdk.component('form', {
name: 'WELCOME',
mode: 'individual',
type: 'manual',
style: {
'ff-title': {
color: '#1a1a1a',
fontSize: '28px',
fontWeight: 700
},
'ff-button': {
backgroundColor: '#4F46E5',
borderRadius: '8px'
},
'ff-wrapper': {
padding: '24px',
maxWidth: '600px',
margin: '0 auto'
},
font: {
name: 'Inter',
url: 'https://fonts.googleapis.com/css2?family=Inter'
}
}
});
Form Fields
Form-based screens (Review, Personal Details, Retry) use configurable form fields.Field Types
| Type | Description |
|---|---|
input | Standard text input |
label | Read-only label display |
number | Numeric input |
date | Date picker |
select | Dropdown select |
multiselect | Multi-option select |
textarea | Multi-line text area |
checkbox | Checkbox |
radio | Radio button group |
contact-number | Contact number with formatting |
address | Address input with autocomplete |
phone | Phone number with country code |
hidden | Hidden field |
FormField Type
Copy
Ask AI
type FormField = {
name: string; // Field identifier
fieldType: InputConfigType; // Field type (see table above)
dataType?: FormFieldDataType; // Data category
hide?: boolean; // Hide this field
style?: Styles; // Custom CSS styles
showToggle?: boolean; // Show toggle control
image?: string; // Field image/icon
title?: Content; // Field title/label
helperText?: string; // Helper text below field
disabledVisually?: boolean; // Visual disabled state (input only)
// + validation rules
// + field-type-specific props
}
| Property | Type | Description |
|---|---|---|
name | string | Field identifier used for data binding |
fieldType | InputConfigType | Field type. See Field Types. |
dataType | FormFieldDataType | Data category. See Field Data Types. |
hide | boolean | Hide this field from the form |
style | Styles | Custom CSS styles |
showToggle | boolean | Show a toggle control for this field |
image | string | Field image or icon URL |
title | Content | Field title/label |
helperText | string | Helper text displayed below the field |
disabledVisually | boolean | Visual disabled state (input fields only) |
rules | FieldRules | Validation rules for the field |
Field-Type-Specific Properties
In addition to the commonFormField properties above, each fieldType supports its own specific properties.
input / number / textarea / hidden
| Property | Type | Description |
|---|---|---|
placeholder | string | Placeholder text shown when the field is empty |
type | string | HTML input type: 'email', 'password', 'tel', 'text', 'url', 'search', 'date', 'number' |
maxLength | number | Maximum character length |
minLength | number | Minimum character length |
min | string | number | Minimum value (for number inputs) |
max | string | number | Maximum value (for number inputs) |
pattern | string | Regex pattern for validation |
date
Date fields support a calendarConfig property that controls the calendar system, locale, and age validation.
| Property | Type | Description |
|---|---|---|
calendarConfig | object | Calendar configuration (see below) |
calendarConfig properties:
| Property | Type | Default | Description |
|---|---|---|---|
type | string | 'gregorian' | Calendar system to use. Supported values: 'gregorian', 'nepali'. |
locale | string | 'en' | Calendar locale. Supported values: 'en', 'np'. |
day | object | — | Day field config: { hide?: boolean, placeholder?: string } |
month | object | — | Month field config: { hide?: boolean, placeholder?: string } |
year | object | — | Year field config: { placeholder?: string } |
age | object | — | Age validation constraints |
age.min | number | — | Minimum allowed age |
age.max | number | — | Maximum allowed age |
age.message | string | — | Validation message when age is outside the allowed range |
dateRange | object | — | Date range constraints: { min?: { value, message }, max?: { value, message } } |
Copy
Ask AI
{
fieldType: 'date',
name: 'dateOfBirth',
label: 'Date of Birth',
calendarConfig: {
type: 'gregorian',
locale: 'en',
age: {
min: 18,
max: 85,
message: 'Age must be between 18 and 85'
}
}
}
select / multiselect
| Property | Type | Description |
|---|---|---|
options | Array<{ label: string, value: string }> | Required. List of selectable options. Each option has a label (display text) and value. |
placeholder | string | Placeholder text when no option is selected |
autocomplete | boolean | Enable type-ahead search within options |
emptyText | string | Text shown when no options match a search. Default: 'No record' |
clearable | boolean | Allow clearing the selected value |
address
| Property | Type | Description |
|---|---|---|
placeholder | string | Placeholder text for the autocomplete input |
manualFieldConfig | FormField[] | Required. Array of FormField objects defining the manual address entry fields (country, unit number, street, suburb, state, postal code). When customizing, you must override all fields — not just individual ones. |
isManual | boolean | Default: false. When true, shows only the manual entry fields (skips autocomplete). |
actionLabel | string | Label for the manual entry toggle link. Default: 'Enter address manually' |
acceptedCountries | string[] | Restrict address autocomplete to specific countries (ISO 3166-1 alpha-2 codes) |
phone
| Property | Type | Description |
|---|---|---|
placeholder | { cc: string, phoneNumber: string } | Required. Placeholder text for the country code and phone number inputs. |
options | Array<{ label: string, value: string }> | Required. Country code options. Example: [{ label: 'AU +61', value: '+61' }, { label: 'NZ +64', value: '+64' }] |
checkbox / radio
| Property | Type | Description |
|---|---|---|
options | Array<{ label: string, value: string }> | List of options for selection |
contact-number
| Property | Type | Description |
|---|---|---|
placeholder | string | Placeholder text for the contact number input |
label
The label fieldType renders static display text. It has no additional field-type-specific properties beyond the common FormField properties.
Field Data Types
| DataType | Description |
|---|---|
phone | Phone number data |
email | Email address data |
individual_extra | Extra individual-level data |
document_extra | Extra document-level data |
previous_addr | Previous address |
current_addr | Current address |
text | Generic text |
number | Numeric data |
Validation Rules
Fields support validation through therules property:
Copy
Ask AI
type FieldRules = {
rules?: {
required?: string | { value: boolean; message: string };
min?: { value: number; message: string };
max?: { value: number; message: string };
minLength?: { value: number; message: string };
maxLength?: { value: number; message: string };
pattern?: { value: string; message: string };
validate?: (value) => string | boolean;
}
}
Default Screen Configurations
The form module provides built-in default configurations for each screen. When you pass custom configuration, your values are merged with the defaults — you only need to specify the properties you want to override. Properties not included in your configuration retain their defaults.Configuration overrides are shallow-merged at each level. If you override a specific country or state key (e.g.,
AUS.NSW), only that key is replaced — all other country/state keys remain with their defaults. This means overriding just one country/state will leave all others using the built-in default configuration, which may produce unexpected behavior if the defaults don’t match your requirements. To ensure consistency, override all country/state keys you intend to support.Welcome
OCR mode default
OCR mode default
Copy
Ask AI
{
name: 'WELCOME',
mode: 'individual',
type: 'ocr',
title: { label: "Let's verify your identity" },
descriptions: [
{
label: "We need to collect some personal information to verify your identity. It's important you enter your details as accurately as possible."
}
],
instructions: {
label: 'You will need',
content: [
{ label: "An ID on you (this could be a driver's licence, passport or Medicare card)" },
{ label: 'Grant access permission on the camera of your phone so we can capture your ID' },
{ label: 'You must be an Australian citizen, permanent resident or Visa holder.' }
]
},
cta: { label: 'Start identity verification' }
}
Manual mode default (1 ID, AU)
Manual mode default (1 ID, AU)
Copy
Ask AI
{
name: 'WELCOME',
mode: 'individual',
type: 'manual',
numberOfIDs: 1,
title: { label: "Let's verify your identity" },
descriptions: [
{
label: 'We need to collect some personal information to verify your identity. All fields must be filled and it is important you enter your details accurately.'
}
],
instructions: {
label: 'You will need',
content: [
{ label: 'A few mins to complete this application' },
{ label: "An ID on you (this could be a driver's licence, passport or Medicare card)" },
{ label: 'You must be over 18 years of age' },
{ label: 'You must be an Australian citizen, permanent resident or Visa holder.' }
]
},
cta: { label: 'Start identity verification' }
}
Doc Upload mode default
Doc Upload mode default
Copy
Ask AI
// Doc upload welcome is dynamically generated from the recipe's docUpload config.
// The requested/partial/optional documents are listed as instructions.
{
name: 'WELCOME',
mode: 'individual',
type: 'doc_upload',
title: { label: 'Document request' },
descriptions: [
{
label: 'The following documents are required as part of our verification process. Please ensure you have these documents on hand:'
}
],
instructions: {
label: 'Requested documents',
content: [/* generated from requestedDocuments in recipe */]
},
additionalInstructions: [/* generated from partialDocuments and optionalDocuments in recipe */],
cta: { label: 'Next' }
}
Consent
Manual mode default
Manual mode default
Copy
Ask AI
{
name: 'CONSENT',
mode: 'individual',
type: 'manual',
title: { label: 'Your consent matters' },
descriptions: [
{
label: "Your personal information being collected and used in accordance with [Company]'s <a href=\"https://www.frankieone.com/privacy\" target=\"_blank\">Privacy Policy</a>."
},
{
label: 'In addition, for the purposes of verifying your identity, you consent to: a) the verification of my personal information with credit bureau header files (for verification only); b) against records held by official document issues or official record holders via third party systems; and c) verification agent(s) acting as a nominated intermediary in accordance with Australian Privacy Principles.'
},
{
label: 'You consent to the use by third parties of the results of any verification checks on my identity for the purposes of monitoring and improving their verification services.'
}
],
checkbox: {
content: [
{ label: 'I have read and agree the above disclosure' }
]
},
cta: { label: 'Continue' }
}
Start
Copy
Ask AI
{
name: 'START',
mode: 'individual',
type: 'manual',
cta: { label: 'Get Started' }
}
Document Selection (Manual)
Full default config
Full default config
Copy
Ask AI
{
name: 'DOCUMENT',
mode: 'individual',
type: 'manual',
numberOfIDs: 1,
title: { label: 'Select your first ID' },
subtitle: { label: 'Your ID must be valid and not expired' },
descriptions: [
{ label: 'We need one form of ID document to verify your identity.' }
],
documents: [
{
type: 'DRIVERS_LICENCE',
label: "Driver's licence",
subtitle: '(recommended)',
countries: {
default: {
default: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: "Country of Driver's Licence",
options: [{ label: 'Australia', value: 'AUS' }, { label: 'New Zealand', value: 'NZL' }],
rules: { required: { value: true, message: 'Please select a country' } }
},
{
fieldType: 'date', dataType: 'text', name: 'idExpiry',
label: 'Expiry Date',
calendarConfig: { type: 'gregory', locale: 'en' }
}
]
}
},
AUS: {
default: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: "Country of Driver's Licence",
options: [{ label: 'Australia', value: 'AUS' }, { label: 'New Zealand', value: 'NZL' }],
rules: { required: { value: true, message: 'Please select a country' } }
},
{
fieldType: 'select', name: 'region', dataType: 'text',
label: 'State or Territory of Issue',
options: [
{ label: 'Australian Capital Territory', value: 'ACT' },
{ label: 'New South Wales', value: 'NSW' },
{ label: 'Northern Territory', value: 'NT' },
{ label: 'Queensland', value: 'QLD' },
{ label: 'South Australia', value: 'SA' },
{ label: 'Tasmania', value: 'TAS' },
{ label: 'Victoria', value: 'VIC' },
{ label: 'Western Australia', value: 'WA' }
],
rules: { required: { value: true, message: 'Please select your state' } }
},
{
fieldType: 'input', dataType: 'text', name: 'idNumber',
label: 'Licence Number', placeholder: 'e.g. 1234567890',
rules: {
required: { value: true, message: 'Please enter your licence number' },
minLength: { value: 6, message: 'Licence number must be at least 6 characters' },
maxLength: { value: 8, message: 'Licence number must not exceed 8 characters' },
pattern: { value: '^[a-zA-Z0-9]+$', message: 'Please enter alphanumeric values only' }
}
},
{
fieldType: 'input', dataType: 'text', name: 'extraData.document_number',
label: 'Card Number', placeholder: 'e.g. 1234567890',
rules: {
required: { value: true, message: 'Please enter your card number' },
minLength: { value: 10, message: 'Card number must be at least 10 digits' },
maxLength: { value: 10, message: 'Card number must not exceed 10 digits' },
pattern: { value: '^[0-9]+$', message: 'Please enter numeric values only' }
}
},
{
fieldType: 'date', dataType: 'text', name: 'idExpiry',
label: 'Expiry Date',
calendarConfig: { type: 'gregory', locale: 'en' }
}
]
},
NSW: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: "Country of Driver's Licence",
options: [{ label: 'Australia', value: 'AUS' }, { label: 'New Zealand', value: 'NZL' }],
placeholder: 'Please select',
rules: { required: { value: true, message: 'Please select a country' } }
},
{
fieldType: 'select', name: 'region', dataType: 'text',
label: 'State or Territory of Issue',
options: [
{ label: 'Australian Capital Territory', value: 'ACT' },
{ label: 'New South Wales', value: 'NSW' },
{ label: 'Northern Territory', value: 'NT' },
{ label: 'Queensland', value: 'QLD' },
{ label: 'South Australia', value: 'SA' },
{ label: 'Tasmania', value: 'TAS' },
{ label: 'Victoria', value: 'VIC' },
{ label: 'Western Australia', value: 'WA' }
],
placeholder: 'Please select',
rules: { required: { value: true, message: 'Please select your state' } }
},
{
fieldType: 'input', dataType: 'text', name: 'idNumber',
label: 'Licence Number', placeholder: 'e.g. 1234567890',
rules: {
required: { value: true, message: 'Please enter your licence number' },
minLength: { value: 6, message: 'Licence number must be at least 6 characters' },
maxLength: { value: 8, message: 'Licence number must not exceed 8 characters' },
pattern: { value: '^[a-zA-Z0-9]+$', message: 'Please enter alphanumeric values only' }
}
},
{
fieldType: 'input', dataType: 'text', name: 'extraData.document_number',
label: 'Card Number', placeholder: 'e.g. 1234567890',
helperText: 'You will find your Card Number on the front of your card, in the top right corner above your photo.',
rules: {
required: { value: true, message: 'Please enter your card number' },
minLength: { value: 10, message: 'Card number must be at least 10 digits' },
maxLength: { value: 10, message: 'Card number must not exceed 10 digits' },
pattern: { value: '^[0-9]+$', message: 'Please enter numeric values only' }
}
},
{
fieldType: 'date', dataType: 'text', name: 'idExpiry',
label: 'Expiry Date',
calendarConfig: {
type: 'gregory', locale: 'en',
day: { placeholder: 'Day' }, month: { placeholder: 'Month' }, year: { placeholder: 'Year' }
},
standardDate: true, configYear: true
}
]
},
ACT: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: "Country of Driver's Licence",
options: [{ label: 'Australia', value: 'AUS' }, { label: 'New Zealand', value: 'NZL' }],
placeholder: 'Please select',
rules: { required: { value: true, message: 'Please select a country' } }
},
{
fieldType: 'select', name: 'region', dataType: 'text',
label: 'State or Territory of Issue',
options: [
{ label: 'Australian Capital Territory', value: 'ACT' },
{ label: 'New South Wales', value: 'NSW' },
{ label: 'Northern Territory', value: 'NT' },
{ label: 'Queensland', value: 'QLD' },
{ label: 'South Australia', value: 'SA' },
{ label: 'Tasmania', value: 'TAS' },
{ label: 'Victoria', value: 'VIC' },
{ label: 'Western Australia', value: 'WA' }
],
placeholder: 'Please select',
rules: { required: { value: true, message: 'Please select your state' } }
},
{
fieldType: 'input', dataType: 'text', name: 'idNumber',
label: 'Licence Number', placeholder: 'e.g. 1234567890',
rules: {
required: { value: true, message: 'Please enter your licence number' },
minLength: { value: 1, message: 'Licence number must be at least 1 character' },
maxLength: { value: 10, message: 'Licence number must not exceed 10 characters' },
pattern: { value: '^[0-9]+$', message: 'Please enter numeric values only' }
}
},
{
fieldType: 'input', dataType: 'text', name: 'extraData.document_number',
label: 'Card Number', placeholder: 'e.g. 1234567890',
rules: {
required: { value: true, message: 'Please enter your card number' },
minLength: { value: 10, message: 'Card number must be at least 10 digits' },
maxLength: { value: 10, message: 'Card number must not exceed 10 digits' },
pattern: { value: '^[a-zA-Z0-9]+$', message: 'Please enter alphanumeric values only' }
}
},
{
fieldType: 'date', dataType: 'text', name: 'idExpiry',
label: 'Expiry Date',
calendarConfig: {
type: 'gregory', locale: 'en',
day: { placeholder: 'Day' }, month: { placeholder: 'Month' }, year: { placeholder: 'Year' }
},
standardDate: true, configYear: true
}
]
},
VIC: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: "Country of Driver's Licence",
options: [{ label: 'Australia', value: 'AUS' }, { label: 'New Zealand', value: 'NZL' }],
placeholder: 'Please select',
rules: { required: { value: true, message: 'Please select a country' } }
},
{
fieldType: 'select', name: 'region', dataType: 'text',
label: 'State or Territory of Issue',
options: [
{ label: 'Australian Capital Territory', value: 'ACT' },
{ label: 'New South Wales', value: 'NSW' },
{ label: 'Northern Territory', value: 'NT' },
{ label: 'Queensland', value: 'QLD' },
{ label: 'South Australia', value: 'SA' },
{ label: 'Tasmania', value: 'TAS' },
{ label: 'Victoria', value: 'VIC' },
{ label: 'Western Australia', value: 'WA' }
],
placeholder: 'Please select',
rules: { required: { value: true, message: 'Please select your state' } }
},
{
fieldType: 'input', dataType: 'text', name: 'idNumber',
label: 'Licence Number', placeholder: 'e.g. 1234567890',
rules: {
required: { value: true, message: 'Please enter your licence number' },
minLength: { value: 1, message: 'Licence number must be at least 1 character' },
maxLength: { value: 10, message: 'Licence number must not exceed 10 characters' },
pattern: { value: '^[0-9]+$', message: 'Please enter numeric values only' }
}
},
{
fieldType: 'input', dataType: 'text', name: 'extraData.document_number',
label: 'Card Number', placeholder: 'e.g. P1234567',
helperText: 'You will find your Card Number on the back of your card, either in the top right corner or middle right.',
rules: {
required: { value: true, message: 'Please enter your card number' },
minLength: { value: 8, message: 'Card number must be at least 8 characters' },
maxLength: { value: 8, message: 'Card number must not exceed 8 characters' },
pattern: { value: '^[a-zA-Z0-9]+$', message: 'Please enter alphanumeric values only' }
}
},
{
fieldType: 'date', dataType: 'text', name: 'idExpiry',
label: 'Expiry Date',
calendarConfig: {
type: 'gregory', locale: 'en',
day: { placeholder: 'Day' }, month: { placeholder: 'Month' }, year: { placeholder: 'Year' }
},
standardDate: true, configYear: true
}
]
},
QLD: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: "Country of Driver's Licence",
options: [{ label: 'Australia', value: 'AUS' }, { label: 'New Zealand', value: 'NZL' }],
placeholder: 'Please select',
rules: { required: { value: true, message: 'Please select a country' } }
},
{
fieldType: 'select', name: 'region', dataType: 'text',
label: 'State or Territory of Issue',
options: [
{ label: 'Australian Capital Territory', value: 'ACT' },
{ label: 'New South Wales', value: 'NSW' },
{ label: 'Northern Territory', value: 'NT' },
{ label: 'Queensland', value: 'QLD' },
{ label: 'South Australia', value: 'SA' },
{ label: 'Tasmania', value: 'TAS' },
{ label: 'Victoria', value: 'VIC' },
{ label: 'Western Australia', value: 'WA' }
],
placeholder: 'Please select',
rules: { required: { value: true, message: 'Please select your state' } }
},
{
fieldType: 'input', dataType: 'text', name: 'idNumber',
label: 'Licence Number', placeholder: 'e.g. 1234567890',
rules: {
required: { value: true, message: 'Please enter your licence number' },
minLength: { value: 8, message: 'Licence number must be at least 8 characters' },
maxLength: { value: 9, message: 'Licence number must not exceed 9 characters' },
pattern: { value: '^[0-9]+$', message: 'Please enter numeric values only' }
}
},
{
fieldType: 'input', dataType: 'text', name: 'extraData.document_number',
label: 'Card Number', placeholder: 'e.g. 1234567890',
helperText: 'You will find your Card Number on the front of your card, in the bottom middle, or the back of your card, on the bottom right side.',
rules: {
required: { value: true, message: 'Please enter your card number' },
minLength: { value: 10, message: 'Card number must be at least 10 digits' },
maxLength: { value: 10, message: 'Card number must not exceed 10 digits' },
pattern: { value: '^[a-zA-Z0-9]+$', message: 'Please enter alphanumeric values only' }
}
},
{
fieldType: 'date', dataType: 'text', name: 'idExpiry',
label: 'Expiry Date',
calendarConfig: {
type: 'gregory', locale: 'en',
day: { placeholder: 'Day' }, month: { placeholder: 'Month' }, year: { placeholder: 'Year' }
},
standardDate: true, configYear: true
}
]
},
SA: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: "Country of Driver's Licence",
options: [{ label: 'Australia', value: 'AUS' }, { label: 'New Zealand', value: 'NZL' }],
placeholder: 'Please select',
rules: { required: { value: true, message: 'Please select a country' } }
},
{
fieldType: 'select', name: 'region', dataType: 'text',
label: 'State or Territory of Issue',
options: [
{ label: 'Australian Capital Territory', value: 'ACT' },
{ label: 'New South Wales', value: 'NSW' },
{ label: 'Northern Territory', value: 'NT' },
{ label: 'Queensland', value: 'QLD' },
{ label: 'South Australia', value: 'SA' },
{ label: 'Tasmania', value: 'TAS' },
{ label: 'Victoria', value: 'VIC' },
{ label: 'Western Australia', value: 'WA' }
],
placeholder: 'Please select',
rules: { required: { value: true, message: 'Please select your state' } }
},
{
fieldType: 'input', dataType: 'text', name: 'idNumber',
label: 'Licence Number', placeholder: 'e.g. 1234567890',
rules: {
required: { value: true, message: 'Please enter your licence number' },
minLength: { value: 6, message: 'Licence number must be at least 6 characters' },
maxLength: { value: 6, message: 'Licence number must not exceed 6 characters' },
pattern: { value: '^[a-zA-Z0-9]+$', message: 'Please enter alphanumeric values only' }
}
},
{
fieldType: 'input', dataType: 'text', name: 'extraData.document_number',
label: 'Card Number', placeholder: 'e.g. 1234567890',
helperText: 'You will find your Card Number on the back of your card, in the top right corner.',
rules: {
required: { value: true, message: 'Please enter your card number' },
minLength: { value: 9, message: 'Card number must be at least 9 characters' },
maxLength: { value: 9, message: 'Card number must not exceed 9 characters' },
pattern: { value: '^[a-zA-Z0-9]+$', message: 'Please enter alphanumeric values only' }
}
},
{
fieldType: 'date', dataType: 'text', name: 'idExpiry',
label: 'Expiry Date',
calendarConfig: {
type: 'gregory', locale: 'en',
day: { placeholder: 'Day' }, month: { placeholder: 'Month' }, year: { placeholder: 'Year' }
},
standardDate: true, configYear: true
}
]
},
TAS: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: "Country of Driver's Licence",
options: [{ label: 'Australia', value: 'AUS' }, { label: 'New Zealand', value: 'NZL' }],
placeholder: 'Please select',
rules: { required: { value: true, message: 'Please select a country' } }
},
{
fieldType: 'select', name: 'region', dataType: 'text',
label: 'State or Territory of Issue',
options: [
{ label: 'Australian Capital Territory', value: 'ACT' },
{ label: 'New South Wales', value: 'NSW' },
{ label: 'Northern Territory', value: 'NT' },
{ label: 'Queensland', value: 'QLD' },
{ label: 'South Australia', value: 'SA' },
{ label: 'Tasmania', value: 'TAS' },
{ label: 'Victoria', value: 'VIC' },
{ label: 'Western Australia', value: 'WA' }
],
placeholder: 'Please select',
rules: { required: { value: true, message: 'Please select your state' } }
},
{
fieldType: 'input', dataType: 'text', name: 'idNumber',
label: 'Licence Number', placeholder: 'e.g. 1234567890',
rules: {
required: { value: true, message: 'Please enter your licence number' },
minLength: { value: 6, message: 'Licence number must be at least 6 characters' },
maxLength: { value: 8, message: 'Licence number must not exceed 8 characters' },
pattern: { value: '^[a-zA-Z0-9]+$', message: 'Please enter alphanumeric values only' }
}
},
{
fieldType: 'input', dataType: 'text', name: 'extraData.document_number',
label: 'Card Number', placeholder: 'e.g. 1234567890',
helperText: 'You will find your Card Number on the back of your card, in the top right corner.',
rules: {
required: { value: true, message: 'Please enter your card number' },
minLength: { value: 9, message: 'Card number must be at least 9 characters' },
maxLength: { value: 9, message: 'Card number must not exceed 9 characters' },
pattern: { value: '^[a-zA-Z0-9]+$', message: 'Please enter alphanumeric values only' }
}
},
{
fieldType: 'date', dataType: 'text', name: 'idExpiry',
label: 'Expiry Date',
calendarConfig: {
type: 'gregory', locale: 'en',
day: { placeholder: 'Day' }, month: { placeholder: 'Month' }, year: { placeholder: 'Year' }
},
standardDate: true, configYear: true
}
]
},
NT: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: "Country of Driver's Licence",
options: [{ label: 'Australia', value: 'AUS' }, { label: 'New Zealand', value: 'NZL' }],
placeholder: 'Please select',
rules: { required: { value: true, message: 'Please select a country' } }
},
{
fieldType: 'select', name: 'region', dataType: 'text',
label: 'State or Territory of Issue',
options: [
{ label: 'Australian Capital Territory', value: 'ACT' },
{ label: 'New South Wales', value: 'NSW' },
{ label: 'Northern Territory', value: 'NT' },
{ label: 'Queensland', value: 'QLD' },
{ label: 'South Australia', value: 'SA' },
{ label: 'Tasmania', value: 'TAS' },
{ label: 'Victoria', value: 'VIC' },
{ label: 'Western Australia', value: 'WA' }
],
placeholder: 'Please select',
rules: { required: { value: true, message: 'Please select your state' } }
},
{
fieldType: 'input', dataType: 'text', name: 'idNumber',
label: 'Licence Number', placeholder: 'e.g. 1234567890',
rules: {
required: { value: true, message: 'Please enter your licence number' },
minLength: { value: 1, message: 'Licence number must be at least 1 character' },
maxLength: { value: 10, message: 'Licence number must not exceed 10 characters' },
pattern: { value: '^[0-9]+$', message: 'Please enter numeric values only' }
}
},
{
fieldType: 'input', dataType: 'text', name: 'extraData.document_number',
label: 'Card Number', placeholder: 'e.g. 1234567890',
helperText: 'The card number is located on the back of your card, either in the bottom left corner or bottom middle.',
rules: {
required: { value: true, message: 'Please enter your card number' },
minLength: { value: 6, message: 'Card number must be at least 6 digits' },
maxLength: { value: 8, message: 'Card number must not exceed 8 digits' },
pattern: { value: '^[0-9]+$', message: 'Please enter numeric values only' }
}
},
{
fieldType: 'date', dataType: 'text', name: 'idExpiry',
label: 'Expiry Date',
calendarConfig: {
type: 'gregory', locale: 'en',
day: { placeholder: 'Day' }, month: { placeholder: 'Month' }, year: { placeholder: 'Year' }
},
standardDate: true, configYear: true
}
]
},
WA: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: "Country of Driver's Licence",
options: [{ label: 'Australia', value: 'AUS' }, { label: 'New Zealand', value: 'NZL' }],
placeholder: 'Please select',
rules: { required: { value: true, message: 'Please select a country' } }
},
{
fieldType: 'select', name: 'region', dataType: 'text',
label: 'State or Territory of Issue',
options: [
{ label: 'Australian Capital Territory', value: 'ACT' },
{ label: 'New South Wales', value: 'NSW' },
{ label: 'Northern Territory', value: 'NT' },
{ label: 'Queensland', value: 'QLD' },
{ label: 'South Australia', value: 'SA' },
{ label: 'Tasmania', value: 'TAS' },
{ label: 'Victoria', value: 'VIC' },
{ label: 'Western Australia', value: 'WA' }
],
placeholder: 'Please select',
rules: { required: { value: true, message: 'Please select your state' } }
},
{
fieldType: 'input', dataType: 'text', name: 'idNumber',
label: 'Licence Number', placeholder: 'e.g. 1234567890',
rules: {
required: { value: true, message: 'Please enter your licence number' },
minLength: { value: 7, message: 'Licence number must be at least 7 characters' },
maxLength: { value: 7, message: 'Licence number must not exceed 7 characters' },
pattern: { value: '^[0-9]+$', message: 'Please enter numeric values only' }
}
},
{
fieldType: 'input', dataType: 'text', name: 'extraData.document_number',
label: 'Card Number', placeholder: 'e.g. 1234567890',
helperText: 'You will find your Card Number on the back of your card, in the middle of the right side.',
rules: {
required: { value: true, message: 'Please enter your card number' },
minLength: { value: 8, message: 'Card number must be at least 8 characters' },
maxLength: { value: 10, message: 'Card number must not exceed 10 characters' },
pattern: { value: '^[a-zA-Z0-9]+$', message: 'Please enter alphanumeric values only' }
}
},
{
fieldType: 'date', dataType: 'text', name: 'idExpiry',
label: 'Expiry Date',
calendarConfig: {
type: 'gregory', locale: 'en',
day: { placeholder: 'Day' }, month: { placeholder: 'Month' }, year: { placeholder: 'Year' }
},
standardDate: true, configYear: true
}
]
}
},
NZL: {
default: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: "Country of Driver's Licence",
rules: { required: { value: true, message: 'Please select a country' } }
},
{
fieldType: 'input', dataType: 'text', name: 'idNumber',
label: 'Licence Number',
rules: {
required: { value: true, message: 'Please enter your licence number' },
pattern: { value: '^[a-zA-Z0-9]+$', message: 'Please enter alphanumeric values only' }
}
},
{
fieldType: 'input', dataType: 'number', name: 'extraData.licence_version',
label: 'Version Number', placeholder: 'e.g. 123',
rules: {
required: { value: true, message: 'Please enter your version number' },
minLength: { value: 3, message: 'Version number must be at least 3 characters' },
maxLength: { value: 3, message: 'Version number must not exceed 3 characters' },
pattern: { value: '^[0-9]+$', message: 'Please enter numeric values only' }
}
},
{
fieldType: 'date', dataType: 'text', name: 'idExpiry',
label: 'Expiry Date',
calendarConfig: { type: 'gregory', locale: 'en' }
}
]
}
}
}
},
{
type: 'PASSPORT',
label: 'Passport',
countries: {
default: {
default: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: 'Passport Issuing Country',
options: [
// All ISO 3166-1 alpha-3 countries, sorted alphabetically by label.
// Contains ~250 entries in the format { label: 'Country Name', value: 'ALPHA3_CODE' }.
// First few: { label: 'Afghanistan', value: 'AFG' }, { label: 'Albania', value: 'ALB' }, ...
// Last: { label: 'Zambia', value: 'ZMB' }, { label: 'Zimbabwe', value: 'ZWE' }
],
rules: { required: { value: true, message: 'Please select a country' } }
},
{
fieldType: 'input', dataType: 'text', name: 'idNumber',
label: 'Passport Number', placeholder: 'e.g. A1234567890',
rules: { required: { value: true, message: 'Please enter your passport number' } }
}
]
}
},
AUS: {
default: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: 'Passport Issuing Country',
options: [/* all ISO 3166-1 alpha-3 countries, sorted alphabetically */],
rules: { required: { value: true, message: 'Please select a country' } }
},
{
fieldType: 'input', dataType: 'text', name: 'idNumber',
label: 'Passport Number', placeholder: 'e.g. A1234567890',
rules: {
required: { value: true, message: 'Please enter your passport number' },
minLength: { value: 8, message: 'Passport number must be at least 8 characters' },
maxLength: { value: 9, message: 'Passport number must not exceed 9 characters' }
}
}
]
}
},
NZL: {
default: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: 'Passport Issuing Country',
options: [/* all ISO 3166-1 alpha-3 countries, sorted alphabetically */],
rules: { required: { value: true, message: 'Please select a country' } }
},
{
fieldType: 'input', dataType: 'text', name: 'idNumber',
label: 'Passport Number', placeholder: 'e.g. A1234567890',
rules: {
required: { value: true, message: 'Please enter your passport number' }
}
},
{
fieldType: 'date', dataType: 'text', name: 'idExpiry',
label: 'Date of Expiry',
rules: {
required: { value: true, message: "Please enter your passport's expiry date" }
},
calendarConfig: {
type: 'gregory', locale: 'en',
day: { placeholder: 'Day' }, month: { placeholder: 'Month' }, year: { placeholder: 'Year' },
dateRange: {
min: { value: 'now' },
max: { value: '+10 years' }
},
message: "Please enter your passport's expiry date"
}
}
]
}
},
IND: {
default: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: 'Passport Issuing Country',
options: [/* all ISO 3166-1 alpha-3 countries, sorted alphabetically */],
rules: { required: { value: true, message: 'Please select a country' } }
},
{
fieldType: 'input', dataType: 'text', name: 'idNumber',
label: 'Passport Number', placeholder: 'e.g. A1234567890',
rules: {
required: { value: true, message: 'Please enter your passport number' }
}
},
{
fieldType: 'input', name: 'extraData.document_number', dataType: 'document_extra',
label: 'File Number', placeholder: 'e.g. ABCD12345678',
rules: {
required: { value: true, message: 'Please enter your File Number' }
}
}
]
}
}
}
},
{
type: 'NATIONAL_HEALTH_ID',
label: 'Medicare card',
countries: {
default: {
default: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'idSubType',
label: 'Medicare Card Colour',
options: [
{ label: 'Green', value: 'G' },
{ label: 'Blue', value: 'B' },
{ label: 'Yellow', value: 'Y' }
],
placeholder: 'Select Medicare Card Colour',
rules: { required: { value: true, message: 'Please select your Medicare card colour' } }
},
{
fieldType: 'input', dataType: 'text', name: 'idNumber',
label: 'Medicare Card Number',
rules: {
required: { value: true, message: 'Please enter your Medicare card number' },
pattern: { value: '^[0-9]+$', message: 'Please enter numeric values only' },
minLength: { value: 10, message: 'Medicare card number must be at least 10 digits' },
maxLength: { value: 10, message: 'Medicare card number must be not exceed 10 digits' }
}
},
{
fieldType: 'input', dataType: 'document_extra', name: 'extraData.reference',
label: 'Position on Card',
rules: {
required: { value: true, message: 'Please enter your position on card' },
pattern: { value: '^[0-9]+$', message: 'Please enter numeric values only' },
maxLength: { value: 1, message: 'Position on card must not exceed 1 digit' }
}
},
{
fieldType: 'date', dataType: 'text', name: 'idExpiry',
label: 'Date of Expiry',
rules: { required: { value: true, message: 'Please enter your Medicare expiry date' } },
calendarConfig: {
type: 'gregory', locale: 'en',
message: 'Please enter valid Medicare expiry date'
}
},
{
fieldType: 'select', dataType: 'text', name: 'middleNameDisplayType',
label: 'How is middle name displayed on the card?',
options: [
{ label: 'No Middle Name', value: 'No middle name' },
{ label: 'Initial Only', value: 'Initial only' },
{ label: 'Full Middle Name', value: 'Full middle name' }
]
},
{
fieldType: 'input', dataType: 'text', name: 'extraData.display_name_line1',
label: 'Name displayed on card',
disabledVisually: true
},
{
fieldType: 'hidden', dataType: 'text', name: 'extraData.display_middle_name',
label: 'Middle name displayed on card'
}
]
}
}
}
}
],
cta: { label: 'Next' }
}
Personal Details
Full default config
Full default config
Copy
Ask AI
{
name: 'PERSONAL',
title: { label: 'Personal details' },
descriptions: [
{
label: 'The details you provide below will be used to verify your identity – make sure they match your ID documents.'
}
],
personal: {
countries: {
default: {
default: {
fields: [
{
fieldType: 'input', dataType: 'text', name: 'givenName',
hide: false, label: 'Given Name',
rules: {
required: { value: true, message: 'Please enter your given name' },
pattern: {
value: "^[a-zA-Z]+(?:[''][a-zA-Z]+)*(?:\\s+[a-zA-Z]+(?:[''][a-zA-Z]+)*)*$",
message: 'Please enter alphabetic characters with apostrophe only'
}
}
},
{
fieldType: 'input', dataType: 'text', name: 'middleName',
hide: false, label: 'Middle Name(s)',
showToggle: true,
rules: {
required: { value: true, message: 'Please enter your middle name' },
pattern: {
value: "^[a-zA-Z]+(?:[''][a-zA-Z]+)*(?:\\s+[a-zA-Z]+(?:[''][a-zA-Z]+)*)*$",
message: 'Please enter alphabetic characters with apostrophe only'
}
},
toggleConfig: {
label: 'Do you have any Middle Names?',
rules: {
required: { value: true, message: 'Please let us know if you have any middle names' }
}
}
},
{
fieldType: 'input', dataType: 'text', name: 'familyName',
hide: false, label: 'Family Name',
rules: {
required: { value: true, message: 'Please enter your family name' },
pattern: {
value: "^[a-zA-Z]+(?:[''][a-zA-Z]+)*(?:\\s+[a-zA-Z]+(?:[''][a-zA-Z]+)*)*$",
message: 'Please enter alphabetic characters with apostrophe only'
}
}
},
{
fieldType: 'phone', dataType: 'number', name: 'extraData.phone',
hide: true, label: 'Phone Number',
options: [
{ label: 'AU +61', value: '+61' },
{ label: 'NZ +64', value: '+64' }
],
placeholder: { cc: 'Code', phoneNumber: 'e.g. 0400 000 000' },
rules: {
required: { value: true, message: 'Please enter the phone number' },
minLength: { value: 10, message: 'Phone number must be at least 10 digits' },
maxLength: { value: 10, message: 'Phone number must not exceed 10 characters' },
pattern: { value: '^[0-9]+$', message: 'Please enter numeric values only' }
}
},
{
fieldType: 'input', dataType: 'text', name: 'extraData.email',
hide: true, label: 'Email',
rules: {
required: { value: true, message: 'Please enter the email' },
pattern: {
value: '^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}$',
message: 'Please enter a valid email address'
}
}
},
{
fieldType: 'date', dataType: 'text', name: 'dateOfBirth',
hide: false, label: 'Date of Birth',
rules: { required: { value: true, message: 'Please enter your date of birth' } },
calendarConfig: {
type: 'gregory', locale: 'en',
day: { placeholder: 'Day' },
month: { placeholder: 'Month' },
year: { placeholder: 'Year' },
message: 'Please enter your date of birth'
}
},
{
fieldType: 'address', dataType: 'current_addr', name: 'address.fullAddress',
hide: false, label: 'Residential Address',
placeholder: 'Type in your address',
helperText: 'Cannot be a PO Box',
rules: { required: { value: true, message: 'Please enter your residential address' } },
manualFieldConfig: [
{
fieldType: 'select', dataType: 'text', name: 'address.country',
hide: false, label: 'Country',
options: [/* all ISO 3166-1 alpha-3 countries, sorted alphabetically */],
rules: { required: { value: true, message: 'Please select your country' } }
},
{
fieldType: 'input', dataType: 'text', name: 'address.unitNumber',
hide: false, label: 'Unit Number (optional)'
},
{
fieldType: 'input', dataType: 'text', name: 'address.streetAddress',
hide: false, label: 'Street Address',
rules: { required: { value: true, message: 'Please enter your street address' } }
},
{
fieldType: 'input', dataType: 'text', name: 'address.town',
hide: false, label: 'Suburb / Town',
rules: { required: { value: true, message: 'Please enter your suburb/town.' } }
},
{
fieldType: 'select', dataType: 'text', name: 'address.state',
hide: false, label: 'State',
placeholder: 'Select Your State',
options: [
{ label: 'Australian Capital Territory', value: 'ACT' },
{ label: 'New South Wales', value: 'NSW' },
{ label: 'Northern Territory', value: 'NT' },
{ label: 'Queensland', value: 'QLD' },
{ label: 'South Australia', value: 'SA' },
{ label: 'Tasmania', value: 'TAS' },
{ label: 'Victoria', value: 'VIC' },
{ label: 'Western Australia', value: 'WA' }
],
rules: { required: { value: true, message: 'Please select your state' } }
},
{
fieldType: 'input', dataType: 'text', name: 'address.postalCode',
hide: false, label: 'Postcode',
rules: {
required: { value: true, message: 'Please enter your postal code' },
minLength: { value: 0, message: '' },
maxLength: { value: 100, message: '' }
}
}
]
}
]
}
},
AUS: {
default: {
fields: [
{
fieldType: 'input', dataType: 'text', name: 'givenName',
hide: false, label: 'Given Name',
rules: {
required: { value: true, message: 'Please enter your given name' },
pattern: { value: "^[a-zA-Z]+(?:[''][a-zA-Z]+)*(?:\\s+[a-zA-Z]+(?:[''][a-zA-Z]+)*)*$", message: 'Please enter alphabetic characters with apostrophe only' }
}
},
{
fieldType: 'input', dataType: 'text', name: 'middleName',
hide: false, label: 'Middle Name(s)',
showToggle: true,
rules: {
required: { value: true, message: 'Please enter your middle name' },
pattern: { value: "^[a-zA-Z]+(?:[''][a-zA-Z]+)*(?:\\s+[a-zA-Z]+(?:[''][a-zA-Z]+)*)*$", message: 'Please enter alphabetic characters with apostrophe only' }
},
toggleConfig: {
label: 'Do you have any Middle Names?',
rules: { required: { value: true, message: 'Please let us know if you have any middle names' } }
}
},
{
fieldType: 'input', dataType: 'text', name: 'familyName',
hide: false, label: 'Family Name',
rules: {
required: { value: true, message: 'Please enter your family name' },
pattern: { value: "^[a-zA-Z]+(?:[''][a-zA-Z]+)*(?:\\s+[a-zA-Z]+(?:[''][a-zA-Z]+)*)*$", message: 'Please enter alphabetic characters with apostrophe only' }
}
},
{
fieldType: 'phone', dataType: 'number', name: 'extraData.phone',
hide: true, label: 'Phone Number',
options: [{ label: 'AU +61', value: '+61' }, { label: 'NZ +64', value: '+64' }],
placeholder: { cc: 'Code', phoneNumber: 'e.g. 0400 000 000' },
rules: {
required: { value: true, message: 'Please enter the phone number' },
minLength: { value: 10, message: 'Phone number must be at least 10 digits' },
maxLength: { value: 10, message: 'Phone number must not exceed 10 characters' },
pattern: { value: '^[0-9]+$', message: 'Please enter numeric values only' }
}
},
{
fieldType: 'input', dataType: 'text', name: 'extraData.email',
hide: true, label: 'Email',
rules: {
required: { value: true, message: 'Please enter the email' },
pattern: { value: '^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}$', message: 'Please enter a valid email address' }
}
},
{
fieldType: 'date', dataType: 'text', name: 'dateOfBirth',
hide: false, label: 'Date of Birth',
rules: { required: { value: true, message: 'Please enter your date of birth' } },
calendarConfig: {
type: 'gregory', locale: 'en',
day: { placeholder: 'Day' }, month: { placeholder: 'Month' }, year: { placeholder: 'Year' },
message: 'Please enter your date of birth'
}
},
{
fieldType: 'address', dataType: 'current_addr', name: 'address.fullAddress',
hide: false, label: 'Residential Address',
placeholder: 'Type in your address',
helperText: 'Cannot be a PO Box',
rules: { required: { value: true, message: 'Please enter your residential address' } },
manualFieldConfig: [
{
fieldType: 'select', dataType: 'text', name: 'address.country',
hide: false, label: 'Country',
options: [/* all ISO 3166-1 alpha-3 countries, sorted alphabetically */],
rules: { required: { value: true, message: 'Please select your country' } }
},
{ fieldType: 'input', dataType: 'text', name: 'address.unitNumber', hide: false, label: 'Unit Number (optional)' },
{
fieldType: 'input', dataType: 'text', name: 'address.streetAddress',
hide: false, label: 'Street Address',
rules: { required: { value: true, message: 'Please enter your street address' } }
},
{
fieldType: 'input', dataType: 'text', name: 'address.town',
hide: false, label: 'Suburb / Town',
rules: { required: { value: true, message: 'Please enter your suburb/town.' } }
},
{
fieldType: 'select', dataType: 'text', name: 'address.state',
hide: false, label: 'State', placeholder: 'Select Your State',
options: [
{ label: 'Australian Capital Territory', value: 'ACT' },
{ label: 'New South Wales', value: 'NSW' },
{ label: 'Northern Territory', value: 'NT' },
{ label: 'Queensland', value: 'QLD' },
{ label: 'South Australia', value: 'SA' },
{ label: 'Tasmania', value: 'TAS' },
{ label: 'Victoria', value: 'VIC' },
{ label: 'Western Australia', value: 'WA' }
],
rules: { required: { value: true, message: 'Please select your state' } }
},
{
fieldType: 'input', dataType: 'text', name: 'address.postalCode',
hide: false, label: 'Postcode',
rules: {
required: { value: true, message: 'Please enter your postal code' },
minLength: { value: 4, message: 'Postal code must be at least 4 characters' },
maxLength: { value: 4, message: 'Postal code must not exceed 4 characters' }
}
}
]
}
]
}
}
}
},
cta: { label: 'Next' }
}
When customizing the address
manualFieldConfig, you must override all fields in manualFieldConfig, not just individual ones. This is because the manualFieldConfig array is replaced entirely, not merged field-by-field. Additionally, if you have specified acceptedCountries on the address field, you will need to define the configuration for each country in the personal.countries property.Review
OCR mode default
OCR mode default
Copy
Ask AI
{
name: 'REVIEW',
type: 'ocr',
verify: false,
title: { label: 'Are your details correct?' },
personal: {
countries: {
default: {
default: {
fields: [
{
fieldType: 'input', dataType: 'text', name: 'givenName',
hide: false, label: 'Given Name',
rules: {
required: { value: true, message: 'Please enter your given name' },
pattern: { value: "^[a-zA-Z]+(?:[''][a-zA-Z]+)*(?:\\s+[a-zA-Z]+(?:[''][a-zA-Z]+)*)*$", message: 'Please enter alphabetic characters with apostrophe only' }
}
},
{
fieldType: 'input', dataType: 'text', name: 'middleName',
hide: false, label: 'Middle Name(s)',
rules: {
pattern: { value: "^[a-zA-Z]+(?:[''][a-zA-Z]+)*(?:\\s+[a-zA-Z]+(?:[''][a-zA-Z]+)*)*$", message: 'Please enter alphabetic characters with apostrophe only' }
},
helperText: 'As displayed on your ID'
},
{
fieldType: 'input', dataType: 'text', name: 'familyName',
hide: false, label: 'Family Name',
rules: {
required: { value: true, message: 'Please enter your family name' },
pattern: { value: "^[a-zA-Z]+(?:[''][a-zA-Z]+)*(?:\\s+[a-zA-Z]+(?:[''][a-zA-Z]+)*)*$", message: 'Please enter alphabetic characters with apostrophe only' }
}
},
{
fieldType: 'date', dataType: 'text', name: 'dateOfBirth',
hide: false, label: 'Date of Birth',
rules: { required: { value: true, message: 'Please enter your date of birth' } },
calendarConfig: {
type: 'gregory', locale: 'en',
day: { placeholder: 'Day' }, month: { placeholder: 'Month' }, year: { placeholder: 'Year' },
message: 'Please enter your date of birth'
},
standardDate: true, configYear: true
},
{
fieldType: 'address', name: 'address.fullAddress', dataType: 'current_addr',
hide: false, label: 'Residential Address',
placeholder: 'Type in your address',
helperText: 'Cannot be a PO Box',
rules: { required: { value: true, message: 'Please enter your residential address' } },
isManual: true,
manualFieldConfig: [
{
fieldType: 'select', dataType: 'text', name: 'address.country',
hide: false, label: 'Country',
options: [/* all ISO 3166-1 alpha-3 countries, sorted alphabetically */],
rules: {
required: { value: true, message: 'Please select your country' },
pattern: { value: "^(?! )[a-zA-Z0-9 ]+(?<! )$", message: 'Please enter alphanumeric values only' }
}
},
{
fieldType: 'input', dataType: 'text', name: 'address.unitNumber',
hide: false, label: 'Unit Number (optional)',
rules: { pattern: { value: "^(?! )[a-zA-Z0-9 ]+(?<! )$", message: 'Please enter alphanumeric values only' } }
},
{
fieldType: 'input', dataType: 'text', name: 'address.streetAddress',
hide: false, label: 'Street Address',
rules: {
required: { value: true, message: 'Please enter your street address' },
pattern: { value: "^(?! )[a-zA-Z0-9,. - \\-() \\-[\\] /]+(?<! )$", message: 'Please enter valid characters only' }
}
},
{
fieldType: 'input', dataType: 'text', name: 'address.town',
hide: false, label: 'Suburb / Town',
rules: {
required: { value: true, message: 'Please enter your suburb/town.' },
pattern: { value: "^(?! )[a-zA-Z0-9 ]+(?<! )$", message: 'Please enter alphanumeric values only' }
}
},
{
fieldType: 'select', dataType: 'text', name: 'address.state',
hide: false, label: 'State', placeholder: 'Select Your State',
options: [
{ label: 'Australian Capital Territory', value: 'ACT' },
{ label: 'New South Wales', value: 'NSW' },
{ label: 'Northern Territory', value: 'NT' },
{ label: 'Queensland', value: 'QLD' },
{ label: 'South Australia', value: 'SA' },
{ label: 'Tasmania', value: 'TAS' },
{ label: 'Victoria', value: 'VIC' },
{ label: 'Western Australia', value: 'WA' }
],
rules: {
required: { value: true, message: 'Please select your state' },
pattern: { value: "^(?! )[a-zA-Z0-9 ]+(?<! )$", message: 'Please enter alphanumeric values only' }
}
},
{
fieldType: 'input', dataType: 'text', name: 'address.postalCode',
hide: false, label: 'Postcode',
rules: {
required: { value: true, message: 'Please enter your postal code' },
pattern: { value: "^(?! )[a-zA-Z0-9 ]+(?<! )$", message: 'Please enter alphanumeric values only' },
minLength: { value: 0, message: '' },
maxLength: { value: 100, message: '' }
}
}
]
}
]
}
},
AUS: {
default: {
fields: [
{
fieldType: 'input', dataType: 'text', name: 'givenName',
hide: false, label: 'Given Name',
rules: {
required: { value: true, message: 'Please enter your given name' },
pattern: { value: "^[a-zA-Z]+(?:[''][a-zA-Z]+)*(?:\\s+[a-zA-Z]+(?:[''][a-zA-Z]+)*)*$", message: 'Please enter alphabetic characters with apostrophe only' }
}
},
{
fieldType: 'input', dataType: 'text', name: 'middleName',
hide: false, label: 'Middle Name(s)',
rules: {
pattern: { value: "^[a-zA-Z]+(?:[''][a-zA-Z]+)*(?:\\s+[a-zA-Z]+(?:[''][a-zA-Z]+)*)*$", message: 'Please enter alphabetic characters with apostrophe only' }
},
helperText: 'As displayed on your ID'
},
{
fieldType: 'input', dataType: 'text', name: 'familyName',
hide: false, label: 'Family Name',
rules: {
required: { value: true, message: 'Please enter your family name' },
pattern: { value: "^[a-zA-Z]+(?:[''][a-zA-Z]+)*(?:\\s+[a-zA-Z]+(?:[''][a-zA-Z]+)*)*$", message: 'Please enter alphabetic characters with apostrophe only' }
}
},
{
fieldType: 'date', dataType: 'text', name: 'dateOfBirth',
hide: false, label: 'Date of Birth',
rules: { required: { value: true, message: 'Please enter your date of birth' } },
calendarConfig: {
type: 'gregory', locale: 'en',
day: { placeholder: 'Day' }, month: { placeholder: 'Month' }, year: { placeholder: 'Year' },
message: 'Please enter your date of birth'
},
standardDate: true, configYear: true
},
{
fieldType: 'address', name: 'address.fullAddress', dataType: 'current_addr',
hide: false, label: 'Residential Address',
placeholder: 'Type in your address',
helperText: 'Cannot be a PO Box',
rules: { required: { value: true, message: 'Please enter your residential address' } },
isManual: true,
manualFieldConfig: [
{
fieldType: 'select', dataType: 'text', name: 'address.country',
hide: false, label: 'Country',
options: [/* all ISO 3166-1 alpha-3 countries, sorted alphabetically */],
rules: {
required: { value: true, message: 'Please select your country' },
pattern: { value: "^(?! )[a-zA-Z0-9 ]+(?<! )$", message: 'Please enter alphanumeric values only' }
}
},
{
fieldType: 'input', dataType: 'text', name: 'address.unitNumber',
hide: false, label: 'Unit Number (optional)',
rules: { pattern: { value: "^(?! )[a-zA-Z0-9 ]+(?<! )$", message: 'Please enter alphanumeric values only' } }
},
{
fieldType: 'input', dataType: 'text', name: 'address.streetAddress',
hide: false, label: 'Street Address',
rules: {
required: { value: true, message: 'Please enter your street address' },
pattern: { value: "^(?! )[a-zA-Z0-9,. - \\-() \\-[\\] /]+(?<! )$", message: 'Please enter valid characters only' }
}
},
{
fieldType: 'input', dataType: 'text', name: 'address.town',
hide: false, label: 'Suburb / Town',
rules: {
required: { value: true, message: 'Please enter your suburb/town.' },
pattern: { value: "^(?! )[a-zA-Z0-9 ]+(?<! )$", message: 'Please enter alphanumeric values only' }
}
},
{
fieldType: 'select', dataType: 'text', name: 'address.state',
hide: false, label: 'State', placeholder: 'Select Your State',
options: [
{ label: 'Australian Capital Territory', value: 'ACT' },
{ label: 'New South Wales', value: 'NSW' },
{ label: 'Northern Territory', value: 'NT' },
{ label: 'Queensland', value: 'QLD' },
{ label: 'South Australia', value: 'SA' },
{ label: 'Tasmania', value: 'TAS' },
{ label: 'Victoria', value: 'VIC' },
{ label: 'Western Australia', value: 'WA' }
],
rules: {
required: { value: true, message: 'Please select your state' },
pattern: { value: "^(?! )[a-zA-Z0-9 ]+(?<! )$", message: 'Please enter alphanumeric values only' }
}
},
{
fieldType: 'input', dataType: 'text', name: 'address.postalCode',
hide: false, label: 'Postcode',
rules: {
required: { value: true, message: 'Please enter your postal code' },
pattern: { value: "^(?! )[a-zA-Z0-9 ]+(?<! )$", message: 'Please enter alphanumeric values only' },
minLength: { value: 4, message: 'Postal code must be at least 4 characters' },
maxLength: { value: 4, message: 'Postal code must not exceed 4 characters' }
}
}
]
}
]
}
}
}
},
documents: [
{
type: 'DRIVERS_LICENCE',
countries: {
default: {
default: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: 'Document Issuing Country',
placeholder: 'Select issuing country',
options: [/* all ISO 3166-1 alpha-3 countries, sorted alphabetically */],
rules: { required: { value: true, message: 'Please select your issuing country' } }
},
{ fieldType: 'input', dataType: 'number', name: 'idNumber', label: 'Document Number',
rules: { required: { value: true, message: 'Please enter your document number' }, minLength: { value: 1, message: 'Document number must be at least 1 character' } } },
{ fieldType: 'date', name: 'idExpiry', label: 'Expiry Date', calendarConfig: { type: 'gregory', locale: 'en' } }
]
}
},
AUS: {
default: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: 'Document Issuing Country',
placeholder: 'Select issuing country',
options: [{ label: 'Australia', value: 'AUS' }, { label: 'New Zealand', value: 'NZL' }],
rules: { required: { value: true, message: 'Please select your issuing country' } }
},
{
fieldType: 'select', dataType: 'text', name: 'region',
label: "Driver's Licence State or Territory",
placeholder: 'Select DL State or Territory',
options: [
{ label: 'Australian Capital Territory', value: 'ACT' },
{ label: 'New South Wales', value: 'NSW' },
{ label: 'Northern Territory', value: 'NT' },
{ label: 'Queensland', value: 'QLD' },
{ label: 'South Australia', value: 'SA' },
{ label: 'Tasmania', value: 'TAS' },
{ label: 'Victoria', value: 'VIC' },
{ label: 'Western Australia', value: 'WA' }
],
rules: {
required: { value: true, message: "Please select your driver's licence state or territory" },
pattern: { value: '^(NSW|ACT|NT|QLD|SA|TAS|VIC|WA)$', message: "Please select your driver's licence state or territory" }
}
},
{ fieldType: 'input', name: 'idNumber', label: 'Licence Number',
rules: { required: { value: true, message: "Please enter your driver's licence number" },
minLength: { value: 1, message: 'Licence number must be at least 1 characters' },
maxLength: { value: 15, message: 'Licence number must not exceed 15 characters' },
pattern: { value: '^[a-zA-Z0-9]+$', message: 'Please enter alphanumeric values only' } } },
{ fieldType: 'input', name: 'extraData.document_number', label: 'Card Number',
rules: { required: { value: true, message: "Please enter your driver's licence card number" },
minLength: { value: 1, message: 'Card number must be at least 1 characters' },
maxLength: { value: 15, message: 'Card number must not exceed 15 characters' },
pattern: { value: '^[a-zA-Z0-9]+$', message: 'Please enter alphanumeric values only' } } },
{
fieldType: 'date', dataType: 'text', name: 'idExpiry',
label: 'Expiry Date',
calendarConfig: { type: 'gregory', locale: 'en', day: { placeholder: 'Day' }, month: { placeholder: 'Month' }, year: { placeholder: 'Year' } },
standardDate: true, configYear: true
}
]
},
NSW: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: 'Document Issuing Country',
placeholder: 'Select issuing country',
options: [{ label: 'Australia', value: 'AUS' }, { label: 'New Zealand', value: 'NZL' }],
rules: { required: { value: true, message: 'Please select your issuing country' } }
},
{
fieldType: 'select', dataType: 'text', name: 'region',
label: "Driver's Licence State or Territory",
placeholder: 'Select DL State or Territory',
options: [
{ label: 'Australian Capital Territory', value: 'ACT' },
{ label: 'New South Wales', value: 'NSW' },
{ label: 'Northern Territory', value: 'NT' },
{ label: 'Queensland', value: 'QLD' },
{ label: 'South Australia', value: 'SA' },
{ label: 'Tasmania', value: 'TAS' },
{ label: 'Victoria', value: 'VIC' },
{ label: 'Western Australia', value: 'WA' }
],
rules: {
required: { value: true, message: "Please select your driver's licence state or territory" },
pattern: { value: '^(NSW|ACT|NT|QLD|SA|TAS|VIC|WA)$', message: "Please select your driver's licence state or territory" }
}
},
{
fieldType: 'date', dataType: 'text', name: 'idExpiry',
label: 'Expiry Date',
calendarConfig: { type: 'gregory', locale: 'en', day: { placeholder: 'Day' }, month: { placeholder: 'Month' }, year: { placeholder: 'Year' } },
standardDate: true, configYear: true
},
{
fieldType: 'input', dataType: 'number', name: 'idNumber',
label: 'Licence Number',
rules: {
required: { value: true, message: "Please enter your driver's licence number" },
minLength: { value: 6, message: 'Licence number must be at least 6 characters' },
maxLength: { value: 8, message: 'Licence number must not exceed 8 characters' },
pattern: { value: '^[a-zA-Z0-9]+$', message: 'Please enter alphanumeric values only' }
}
},
{
fieldType: 'input', dataType: 'number', name: 'extraData.document_number',
label: 'Card Number',
rules: {
required: { value: true, message: "Please enter your driver's licence card number" },
minLength: { value: 10, message: 'Card number must be at least 10 characters' },
maxLength: { value: 10, message: 'Card number must not exceed 10 characters' },
pattern: { value: '^[0-9]+$', message: 'Please enter numeric values only' }
}
}
]
},
ACT: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: 'Document Issuing Country',
placeholder: 'Select issuing country',
options: [{ label: 'Australia', value: 'AUS' }, { label: 'New Zealand', value: 'NZL' }],
rules: { required: { value: true, message: 'Please select your issuing country' } }
},
{
fieldType: 'select', dataType: 'text', name: 'region',
label: "Driver's Licence State or Territory",
placeholder: 'Select DL State or Territory',
options: [
{ label: 'Australian Capital Territory', value: 'ACT' },
{ label: 'New South Wales', value: 'NSW' },
{ label: 'Northern Territory', value: 'NT' },
{ label: 'Queensland', value: 'QLD' },
{ label: 'South Australia', value: 'SA' },
{ label: 'Tasmania', value: 'TAS' },
{ label: 'Victoria', value: 'VIC' },
{ label: 'Western Australia', value: 'WA' }
],
rules: {
required: { value: true, message: "Please select your driver's licence state or territory" },
pattern: { value: '^(NSW|ACT|NT|QLD|SA|TAS|VIC|WA)$', message: "Please select your driver's licence state or territory" }
}
},
{
fieldType: 'date', dataType: 'text', name: 'idExpiry',
label: 'Expiry Date',
calendarConfig: { type: 'gregory', locale: 'en', day: { placeholder: 'Day' }, month: { placeholder: 'Month' }, year: { placeholder: 'Year' } },
standardDate: true, configYear: true
},
{
fieldType: 'input', dataType: 'number', name: 'idNumber',
label: 'Licence Number',
rules: {
required: { value: true, message: "Please enter your driver's licence number" },
minLength: { value: 1, message: 'Licence number must be at least 1 character' },
maxLength: { value: 10, message: 'Licence number must not exceed 10 characters' },
pattern: { value: '^[0-9]+$', message: 'Please enter numeric values only' }
}
},
{
fieldType: 'input', dataType: 'number', name: 'extraData.document_number',
label: 'Card Number',
rules: {
required: { value: true, message: "Please enter your driver's licence card number" },
minLength: { value: 10, message: 'Card number must be at least 10 characters' },
maxLength: { value: 10, message: 'Card number must not exceed 10 characters' },
pattern: { value: '^[a-zA-Z0-9]+$', message: 'Please enter alphanumeric values only' }
}
}
]
},
VIC: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: 'Document Issuing Country',
placeholder: 'Select issuing country',
options: [{ label: 'Australia', value: 'AUS' }, { label: 'New Zealand', value: 'NZL' }],
rules: { required: { value: true, message: 'Please select your issuing country' } }
},
{
fieldType: 'select', dataType: 'text', name: 'region',
label: "Driver's Licence State or Territory",
placeholder: 'Select DL State or Territory',
options: [
{ label: 'Australian Capital Territory', value: 'ACT' },
{ label: 'New South Wales', value: 'NSW' },
{ label: 'Northern Territory', value: 'NT' },
{ label: 'Queensland', value: 'QLD' },
{ label: 'South Australia', value: 'SA' },
{ label: 'Tasmania', value: 'TAS' },
{ label: 'Victoria', value: 'VIC' },
{ label: 'Western Australia', value: 'WA' }
],
rules: {
required: { value: true, message: "Please select your driver's licence state or territory" },
pattern: { value: '^(NSW|ACT|NT|QLD|SA|TAS|VIC|WA)$', message: "Please select your driver's licence state or territory" }
}
},
{
fieldType: 'date', dataType: 'text', name: 'idExpiry',
label: 'Expiry Date',
calendarConfig: { type: 'gregory', locale: 'en', day: { placeholder: 'Day' }, month: { placeholder: 'Month' }, year: { placeholder: 'Year' } },
standardDate: true, configYear: true
},
{
fieldType: 'input', dataType: 'number', name: 'idNumber',
label: 'Licence Number',
rules: {
required: { value: true, message: "Please enter your driver's licence number" },
minLength: { value: 1, message: 'Licence number must be at least 1 character' },
maxLength: { value: 10, message: 'Licence number must not exceed 10 characters' },
pattern: { value: '^[0-9]+$', message: 'Please enter numeric values only' }
}
},
{
fieldType: 'input', dataType: 'number', name: 'extraData.document_number',
label: 'Card Number',
rules: {
required: { value: true, message: "Please enter your driver's licence card number" },
minLength: { value: 8, message: 'Card number must be at least 8 characters' },
maxLength: { value: 8, message: 'Card number must not exceed 8 characters' },
pattern: { value: '^[a-zA-Z0-9]+$', message: 'Please enter alphanumeric values only' }
}
}
]
},
QLD: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: 'Document Issuing Country',
placeholder: 'Select issuing country',
options: [{ label: 'Australia', value: 'AUS' }, { label: 'New Zealand', value: 'NZL' }],
rules: { required: { value: true, message: 'Please select your issuing country' } }
},
{
fieldType: 'select', dataType: 'text', name: 'region',
label: "Driver's Licence State or Territory",
placeholder: 'Select DL State or Territory',
options: [
{ label: 'Australian Capital Territory', value: 'ACT' },
{ label: 'New South Wales', value: 'NSW' },
{ label: 'Northern Territory', value: 'NT' },
{ label: 'Queensland', value: 'QLD' },
{ label: 'South Australia', value: 'SA' },
{ label: 'Tasmania', value: 'TAS' },
{ label: 'Victoria', value: 'VIC' },
{ label: 'Western Australia', value: 'WA' }
],
rules: {
required: { value: true, message: "Please select your driver's licence state or territory" },
pattern: { value: '^(NSW|ACT|NT|QLD|SA|TAS|VIC|WA)$', message: "Please select your driver's licence state or territory" }
}
},
{
fieldType: 'date', dataType: 'text', name: 'idExpiry',
label: 'Expiry Date',
calendarConfig: { type: 'gregory', locale: 'en', day: { placeholder: 'Day' }, month: { placeholder: 'Month' }, year: { placeholder: 'Year' } },
standardDate: true, configYear: true
},
{
fieldType: 'input', dataType: 'number', name: 'idNumber',
label: 'Licence Number',
rules: {
required: { value: true, message: "Please enter your driver's licence number" },
minLength: { value: 8, message: 'Licence number must be at least 8 characters' },
maxLength: { value: 9, message: 'Licence number must not exceed 9 characters' },
pattern: { value: '^[a-zA-Z0-9]+$', message: 'Please enter alphanumeric values only' }
}
},
{
fieldType: 'input', dataType: 'number', name: 'extraData.document_number',
label: 'Card Number',
rules: {
required: { value: true, message: "Please enter your driver's licence card number" },
minLength: { value: 10, message: 'Card number must be at least 10 characters' },
maxLength: { value: 10, message: 'Card number must not exceed 10 characters' },
pattern: { value: '^[a-zA-Z0-9]+$', message: 'Please enter alphanumeric values only' }
}
}
]
},
SA: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: 'Document Issuing Country',
placeholder: 'Select issuing country',
options: [{ label: 'Australia', value: 'AUS' }, { label: 'New Zealand', value: 'NZL' }],
rules: { required: { value: true, message: 'Please select your issuing country' } }
},
{
fieldType: 'select', dataType: 'text', name: 'region',
label: "Driver's Licence State or Territory",
placeholder: 'Select DL State or Territory',
options: [
{ label: 'Australian Capital Territory', value: 'ACT' },
{ label: 'New South Wales', value: 'NSW' },
{ label: 'Northern Territory', value: 'NT' },
{ label: 'Queensland', value: 'QLD' },
{ label: 'South Australia', value: 'SA' },
{ label: 'Tasmania', value: 'TAS' },
{ label: 'Victoria', value: 'VIC' },
{ label: 'Western Australia', value: 'WA' }
],
rules: {
required: { value: true, message: "Please select your driver's licence state or territory" },
pattern: { value: '^(NSW|ACT|NT|QLD|SA|TAS|VIC|WA)$', message: "Please select your driver's licence state or territory" }
}
},
{
fieldType: 'date', dataType: 'text', name: 'idExpiry',
label: 'Expiry Date',
calendarConfig: { type: 'gregory', locale: 'en', day: { placeholder: 'Day' }, month: { placeholder: 'Month' }, year: { placeholder: 'Year' } },
standardDate: true, configYear: true
},
{
fieldType: 'input', dataType: 'number', name: 'idNumber',
label: 'Licence Number',
rules: {
required: { value: true, message: "Please enter your driver's licence number" },
minLength: { value: 6, message: 'Licence number must be at least 6 characters' },
maxLength: { value: 6, message: 'Licence number must not exceed 6 characters' },
pattern: { value: '^[a-zA-Z0-9]+$', message: 'Please enter alphanumeric values only' }
}
},
{
fieldType: 'input', dataType: 'number', name: 'extraData.document_number',
label: 'Card Number',
rules: {
required: { value: true, message: "Please enter your driver's licence card number" },
minLength: { value: 9, message: 'Card number must be at least 9 characters' },
maxLength: { value: 9, message: 'Card number must not exceed 9 characters' },
pattern: { value: '^[a-zA-Z0-9]+$', message: 'Please enter alphanumeric values only' }
}
}
]
},
TAS: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: 'Document Issuing Country',
placeholder: 'Select issuing country',
options: [{ label: 'Australia', value: 'AUS' }, { label: 'New Zealand', value: 'NZL' }],
rules: { required: { value: true, message: 'Please select your issuing country' } }
},
{
fieldType: 'select', dataType: 'text', name: 'region',
label: "Driver's Licence State or Territory",
placeholder: 'Select DL State or Territory',
options: [
{ label: 'Australian Capital Territory', value: 'ACT' },
{ label: 'New South Wales', value: 'NSW' },
{ label: 'Northern Territory', value: 'NT' },
{ label: 'Queensland', value: 'QLD' },
{ label: 'South Australia', value: 'SA' },
{ label: 'Tasmania', value: 'TAS' },
{ label: 'Victoria', value: 'VIC' },
{ label: 'Western Australia', value: 'WA' }
],
rules: {
required: { value: true, message: "Please select your driver's licence state or territory" },
pattern: { value: '^(NSW|ACT|NT|QLD|SA|TAS|VIC|WA)$', message: "Please select your driver's licence state or territory" }
}
},
{
fieldType: 'date', dataType: 'text', name: 'idExpiry',
label: 'Expiry Date',
calendarConfig: { type: 'gregory', locale: 'en', day: { placeholder: 'Day' }, month: { placeholder: 'Month' }, year: { placeholder: 'Year' } },
standardDate: true, configYear: true
},
{
fieldType: 'input', dataType: 'number', name: 'idNumber',
label: 'Licence Number',
rules: {
required: { value: true, message: "Please enter your driver's licence number" },
minLength: { value: 6, message: 'Licence number must be at least 6 characters' },
maxLength: { value: 8, message: 'Licence number must not exceed 8 characters' },
pattern: { value: '^[a-zA-Z0-9]+$', message: 'Please enter alphanumeric values only' }
}
},
{
fieldType: 'input', dataType: 'number', name: 'extraData.document_number',
label: 'Card Number',
rules: {
required: { value: true, message: "Please enter your driver's licence card number" },
minLength: { value: 9, message: 'Card number must be at least 9 characters' },
maxLength: { value: 9, message: 'Card number must not exceed 9 characters' },
pattern: { value: '^[a-zA-Z0-9]+$', message: 'Please enter alphanumeric values only' }
}
}
]
},
NT: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: 'Document Issuing Country',
placeholder: 'Select issuing country',
options: [{ label: 'Australia', value: 'AUS' }, { label: 'New Zealand', value: 'NZL' }],
rules: { required: { value: true, message: 'Please select your issuing country' } }
},
{
fieldType: 'select', dataType: 'text', name: 'region',
label: "Driver's Licence State or Territory",
placeholder: 'Select DL State or Territory',
options: [
{ label: 'Australian Capital Territory', value: 'ACT' },
{ label: 'New South Wales', value: 'NSW' },
{ label: 'Northern Territory', value: 'NT' },
{ label: 'Queensland', value: 'QLD' },
{ label: 'South Australia', value: 'SA' },
{ label: 'Tasmania', value: 'TAS' },
{ label: 'Victoria', value: 'VIC' },
{ label: 'Western Australia', value: 'WA' }
],
rules: {
required: { value: true, message: "Please select your driver's licence state or territory" },
pattern: { value: '^(NSW|ACT|NT|QLD|SA|TAS|VIC|WA)$', message: "Please select your driver's licence state or territory" }
}
},
{
fieldType: 'date', dataType: 'text', name: 'idExpiry',
label: 'Expiry Date',
calendarConfig: { type: 'gregory', locale: 'en', day: { placeholder: 'Day' }, month: { placeholder: 'Month' }, year: { placeholder: 'Year' } },
standardDate: true, configYear: true
},
{
fieldType: 'input', dataType: 'number', name: 'idNumber',
label: 'Licence Number',
rules: {
required: { value: true, message: "Please enter your driver's licence number" },
minLength: { value: 1, message: 'Licence number must be at least 1 character' },
maxLength: { value: 10, message: 'Licence number must not exceed 10 characters' },
pattern: { value: '^[0-9]+$', message: 'Please enter numeric values only' }
}
},
{
fieldType: 'input', dataType: 'number', name: 'extraData.document_number',
label: 'Card Number',
rules: {
required: { value: true, message: "Please enter your driver's licence card number" },
minLength: { value: 6, message: 'Card number must be at least 6 characters' },
maxLength: { value: 8, message: 'Card number must not exceed 8 characters' },
pattern: { value: '^[0-9]+$', message: 'Please enter numeric values only' }
}
}
]
},
WA: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: 'Document Issuing Country',
placeholder: 'Select issuing country',
options: [{ label: 'Australia', value: 'AUS' }, { label: 'New Zealand', value: 'NZL' }],
rules: { required: { value: true, message: 'Please select your issuing country' } }
},
{
fieldType: 'select', dataType: 'text', name: 'region',
label: "Driver's Licence State or Territory",
placeholder: 'Select DL State or Territory',
options: [
{ label: 'Australian Capital Territory', value: 'ACT' },
{ label: 'New South Wales', value: 'NSW' },
{ label: 'Northern Territory', value: 'NT' },
{ label: 'Queensland', value: 'QLD' },
{ label: 'South Australia', value: 'SA' },
{ label: 'Tasmania', value: 'TAS' },
{ label: 'Victoria', value: 'VIC' },
{ label: 'Western Australia', value: 'WA' }
],
rules: {
required: { value: true, message: "Please select your driver's licence state or territory" },
pattern: { value: '^(NSW|ACT|NT|QLD|SA|TAS|VIC|WA)$', message: "Please select your driver's licence state or territory" }
}
},
{
fieldType: 'date', dataType: 'text', name: 'idExpiry',
label: 'Expiry Date',
calendarConfig: { type: 'gregory', locale: 'en', day: { placeholder: 'Day' }, month: { placeholder: 'Month' }, year: { placeholder: 'Year' } },
standardDate: true, configYear: true
},
{
fieldType: 'input', dataType: 'number', name: 'idNumber',
label: 'Licence Number',
rules: {
required: { value: true, message: "Please enter your driver's licence number" },
minLength: { value: 7, message: 'Licence number must be at least 7 characters' },
maxLength: { value: 7, message: 'Licence number must not exceed 7 characters' }
}
},
{
fieldType: 'input', dataType: 'number', name: 'extraData.document_number',
label: 'Card Number',
rules: {
required: { value: true, message: "Please enter your driver's licence card number" },
minLength: { value: 8, message: 'Card number must be at least 8 characters' },
maxLength: { value: 10, message: 'Card number must not exceed 10 characters' },
pattern: { value: '^[a-zA-Z0-9]+$', message: 'Please enter alphanumeric values only' }
}
}
]
}
},
NZL: {
default: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: 'Document Issuing Country',
placeholder: 'Select issuing country',
options: [{ label: 'Australia', value: 'AUS' }, { label: 'New Zealand', value: 'NZL' }],
rules: { required: { value: true, message: 'Please select your issuing country' } }
},
{
fieldType: 'date', dataType: 'text', name: 'idExpiry',
label: 'Expiry Date',
calendarConfig: { type: 'gregory', locale: 'en', day: { placeholder: 'Day' }, month: { placeholder: 'Month' }, year: { placeholder: 'Year' } },
standardDate: true, configYear: true
},
{
fieldType: 'input', dataType: 'text', name: 'idNumber',
hide: false, label: 'Licence Number',
rules: {
required: { value: true, message: "Please enter your driver's licence number" },
minLength: { value: 6, message: 'Licence number must be at least 6 characters' },
maxLength: { value: 8, message: 'Licence number must not exceed 8 characters' },
pattern: { value: '^[a-zA-Z0-9]+$', message: 'Please enter alphanumeric values only' }
}
},
{
fieldType: 'input', dataType: 'number', name: 'extraData.licence_version',
label: 'Version Number', placeholder: 'e.g. 123',
rules: {
required: { value: true, message: 'Please enter your version number' },
minLength: { value: 3, message: 'Version number must be at least 3 characters' },
maxLength: { value: 3, message: 'Version number must not exceed 3 characters' },
pattern: { value: '^[0-9]+$', message: 'Please enter numeric values only' }
}
}
]
}
}
}
},
{
type: 'NATIONAL_HEALTH_ID',
countries: {
default: {
default: {
fields: [
{ fieldType: 'select', name: 'country', label: 'Country of Medicare Card' },
{ fieldType: 'select', name: 'idSubType', label: 'Medicare Card Colour',
options: [
{ label: 'Green', value: 'G' },
{ label: 'Blue', value: 'B' },
{ label: 'Yellow', value: 'Y' }
], placeholder: 'Select Medicare Card Colour' },
{ fieldType: 'input', name: 'idNumber', label: 'Medicare Card Number',
rules: { required: { value: true, message: 'Please enter your Medicare card number' },
pattern: { value: '^[0-9]+$' }, minLength: { value: 10 }, maxLength: { value: 10 } } },
{ fieldType: 'input', dataType: 'document_extra', name: 'extraData.reference',
label: 'Position on Card',
rules: { required: { value: true }, pattern: { value: '^[0-9]+$' }, maxLength: { value: 1 } } },
{ fieldType: 'date', name: 'idExpiry', label: 'Medicare Date of Expiry',
calendarConfig: { type: 'gregory', locale: 'en', message: 'Please select your Medicare expiry date' } }
]
}
}
}
},
{
type: 'PASSPORT',
countries: {
default: {
default: {
fields: [
{ fieldType: 'select', name: 'country', label: 'Country of Passport', options: [/* all ISO 3166-1 alpha-3 countries, sorted alphabetically */] },
{ fieldType: 'input', name: 'idNumber', label: 'Passport Number',
rules: { required: { value: true, message: 'Please enter your passport number' },
pattern: { value: '^[a-zA-Z0-9]+$' }, minLength: { value: 1 }, maxLength: { value: 9 } } }
]
}
},
AUS: {
default: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: 'Country of Passport',
placeholder: 'Select issuing country',
options: [/* all ISO 3166-1 alpha-3 countries, sorted alphabetically */],
rules: { required: { value: true, message: 'Please select your issuing country' } }
},
{
fieldType: 'input', dataType: 'number', name: 'idNumber',
label: 'Passport Number',
rules: {
required: { value: true, message: 'Please enter your passport number' },
pattern: { value: '^[a-zA-Z0-9]+$', message: 'Please enter alphanumeric values only' },
minLength: { value: 8, message: 'Passport number must be at least 8 characters' },
maxLength: { value: 9, message: 'Passport number must not exceed 9 characters' }
}
}
]
}
},
NZL: {
default: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: 'Country of Passport',
placeholder: 'Select issuing country',
options: [/* all ISO 3166-1 alpha-3 countries, sorted alphabetically */],
rules: { required: { value: true, message: 'Please select your issuing country' } }
},
{
fieldType: 'input', dataType: 'number', name: 'idNumber',
label: 'Passport Number',
rules: {
required: { value: true, message: 'Please enter your passport number' },
pattern: { value: '^[a-zA-Z0-9]+$', message: 'Please enter alphanumeric values only' },
minLength: { value: 1, message: 'Passport number must be at least 1 character' },
maxLength: { value: 9, message: 'Passport number must not exceed 9 characters' }
}
},
{
fieldType: 'date', dataType: 'text', name: 'idExpiry',
label: 'Date of Expiry',
rules: { required: { value: true, message: "Please enter your passport's expiry date" } },
calendarConfig: {
type: 'gregory', locale: 'en',
day: { placeholder: 'Day' }, month: { placeholder: 'Month' }, year: { placeholder: 'Year' },
dateRange: { min: { value: 'current date' }, max: { value: '+10 years from current date' } },
message: "Please enter your passport's expiry date"
}
}
]
}
},
IND: {
default: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: 'Country of Passport',
placeholder: 'Select issuing country',
options: [/* all ISO 3166-1 alpha-3 countries, sorted alphabetically */],
rules: { required: { value: true, message: 'Please select your issuing country' } }
},
{
fieldType: 'input', dataType: 'number', name: 'idNumber',
label: 'Passport Number',
rules: {
required: { value: true, message: 'Please enter your passport number' },
pattern: { value: '^[a-zA-Z0-9]+$', message: 'Please enter alphanumeric values only' },
minLength: { value: 1, message: 'Passport number must be at least 1 character' },
maxLength: { value: 9, message: 'Passport number must not exceed 9 characters' }
}
},
{
fieldType: 'input', name: 'extraData.document_number', dataType: 'document_extra',
label: 'File Number',
rules: { required: { value: true, message: 'Please enter your File Number' } }
}
]
}
}
}
},
{
type: 'NATIONAL_ID',
countries: {
default: {
default: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: 'Document Issuing Country',
placeholder: 'Select issuing country',
options: [/* all ISO 3166-1 alpha-3 countries, sorted alphabetically */],
rules: { required: { value: true, message: 'Please select your issuing country' } }
},
{
fieldType: 'input', dataType: 'number', name: 'idNumber',
label: 'Document Number',
rules: {
required: { value: true, message: 'Please enter your document number' },
minLength: { value: 1, message: 'Document number must be at least 1 character' }
}
}
]
}
}
}
}
],
instruction: {
content: [
{ label: 'I confirm that all provided information is accurate.' }
]
},
cta: {
label: 'Looks good, submit',
timeoutRetryMiliseconds: 3000,
retryAmount: 3,
retryAttemptString: 'Error submitting form. Give it a moment to retry.',
maxRetryAttemptedString: 'Something went wrong, please contact customer service or try again in a few moments.'
}
}
Doc Upload mode default
Doc Upload mode default
Copy
Ask AI
{
name: 'REVIEW',
type: 'doc_upload',
title: { label: 'Review your documents' },
cta: { label: 'Submit documents' }
}
Loading
The Loading screen has different defaults per mode:Copy
Ask AI
// OCR mode
{ name: 'LOADING', title: { label: 'Loading...' }, descriptions: [{ label: 'Data extracting...' }] }
// Manual mode
{
name: 'LOADING',
title: { label: 'Verifying your identity' },
descriptions: [
{ label: "Hold tight, this can take a few seconds. Please do not refresh this page or click the 'back' button on your browser." }
]
}
// Doc Upload mode
{
name: 'LOADING',
title: { label: 'Submitting documents' },
descriptions: [{ label: 'Please do not close this tab while your documents are being processed...' }]
}
Result
The Result screen defaults vary by state. The initial state isPENDING.
Full default config per state
Full default config per state
Copy
Ask AI
// Base config
{ name: 'RESULT', state: 'PENDING' }
// Defaults per state (merged based on the state value):
// SUCCESS
{
title: { label: 'Congratulations, your identity has been successfully verified', shortLabel: 'Your identity has been verified' },
creditHeaderIssueTitle: { label: 'Please Note' },
creditHeaderIssueDescriptions: [
{ label: "The details you provided didn't match the records held on file by one or all of the credit reporting agencies we checked (Illion, Equifax and/or Experian)." },
{ label: "Don't worry, this doesn't mark or affect credit history in any way." },
{ label: 'There is nothing you need to do, however if you\'d like more information please feel free to get in touch with our customer service team.' },
{ label: 'You may now safely navigate away from this page.' }
],
cta: { label: 'Done' }
}
// FAIL
{
title: { label: 'Unfortunately we are unable to verify your identity' },
descriptions: [{ label: 'Please contact the customer support team to help you with creating your account.' }],
creditHeaderIssueTitle: { label: 'Please Note' },
creditHeaderIssueDescriptions: [
{ label: "The details you provided didn't match the records held on file by one or all of the credit reporting agencies we checked (Illion, Equifax and/or Experian)." },
{ label: "Don't worry, this doesn't mark or affect credit history in any way. However this could be why we've had trouble verifying your identity." },
{ label: "There is nothing you need to do, however if you'd like more information please feel free to get in touch with our customer service team." },
{ label: 'You may now safely navigate away from this page.' }
],
cta: { label: 'Done' }
}
// PENDING
{
title: { label: 'Thanks, your information has been submitted for verification' },
descriptions: [{ label: "You're all done. We will be in touch once we have your results." }],
creditHeaderIssueTitle: { label: 'Please Note' },
creditHeaderIssueDescriptions: [
{ label: "The details you provided didn't match the records held on file by one or all of the credit reporting agencies we checked (Illion, Equifax and/or Experian)." },
{ label: "Don't worry, this doesn't mark or affect credit history in any way. However this could be why we've had trouble verifying your identity." },
{ label: "There is nothing you need to do, however if you'd like more information please feel free to get in touch with our customer service team." },
{ label: 'You may now safely navigate away from this page.' }
],
cta: { label: 'Done' }
}
// PARTIAL
{
title: { label: 'We are having trouble verifying your identity' },
descriptions: [{ label: "Most of the time it's just a typo, let's check your ID details have been entered correctly." }],
creditHeaderIssueTitle: { label: 'Please Note' },
creditHeaderIssueDescriptions: [
{ label: "The details you provided didn't match the records held on file by one or all of the credit reporting agencies we checked (Illion, Equifax and/or Experian)." },
{ label: "Don't worry, this doesn't mark or affect credit history in any way. However this could be why we've had trouble verifying your identity." },
{ label: "There is nothing you need to do, however if you'd like more information please feel free to get in touch with our customer service team." },
{ label: 'You may now safely navigate away from this page.' }
],
cta: { label: 'Review details' }
}
// UPLOAD_SUCCESS
{
title: { label: 'Thanks, your document has been uploaded' },
descriptions: [{ label: "You're all done, and can close the page." }]
}
// UPLOAD_FAIL
{
title: { label: 'There was an issue uploading your document' },
descriptions: [{ label: 'This could be a technical issue with the upload. Please retry submitting document.' }],
cta: { label: 'Retry submitting documents' }
}
// PROVIDER_ERROR
{
title: { label: 'We are having trouble verifying your identity' },
descriptions: [{ label: 'Please try again a few minutes.' }],
creditHeaderIssueTitle: { label: 'Please Note' },
creditHeaderIssueDescriptions: [
{ label: "The details you provided didn't match the records held on file by one or all of the credit reporting agencies we checked (Illion, Equifax and/or Experian)." },
{ label: "Don't worry, this doesn't mark or affect credit history in any way. However this could be why we've had trouble verifying your identity." },
{ label: "There is nothing you need to do, however if you'd like more information please feel free to get in touch with our customer service team." },
{ label: 'You may now safely navigate away from this page.' }
],
cta: { label: 'Retry' }
}
Retry
The Retry screen extends the Review config with the Personal Details fields and Document Selection documents. It adds a previous address toggle field.Full default config
Full default config
Copy
Ask AI
{
name: 'RETRY',
title: { label: 'Review personal details' },
descriptions: [{ label: 'We need one form of ID document to verify your identity.' }],
personal: {
countries: {
default: {
default: {
fields: [
{
fieldType: 'input', dataType: 'text', name: 'givenName',
hide: false, label: 'Given Name',
rules: {
required: { value: true, message: 'Please enter your given name' },
pattern: {
value: "^[a-zA-Z]+(?:[''][a-zA-Z]+)*(?:\\s+[a-zA-Z]+(?:[''][a-zA-Z]+)*)*$",
message: 'Please enter alphabetic characters with apostrophe only'
}
}
},
{
fieldType: 'input', dataType: 'text', name: 'middleName',
hide: false, label: 'Middle Name(s)',
showToggle: true,
rules: {
required: { value: true, message: 'Please enter your middle name' },
pattern: {
value: "^[a-zA-Z]+(?:[''][a-zA-Z]+)*(?:\\s+[a-zA-Z]+(?:[''][a-zA-Z]+)*)*$",
message: 'Please enter alphabetic characters with apostrophe only'
}
},
toggleConfig: {
label: 'Do you have any Middle Names?',
rules: {
required: { value: true, message: 'Please let us know if you have any middle names' }
}
}
},
{
fieldType: 'input', dataType: 'text', name: 'familyName',
hide: false, label: 'Family Name',
rules: {
required: { value: true, message: 'Please enter your family name' },
pattern: {
value: "^[a-zA-Z]+(?:[''][a-zA-Z]+)*(?:\\s+[a-zA-Z]+(?:[''][a-zA-Z]+)*)*$",
message: 'Please enter alphabetic characters with apostrophe only'
}
}
},
{
fieldType: 'phone', dataType: 'number', name: 'extraData.phone',
hide: true, label: 'Phone Number',
options: [
{ label: 'AU +61', value: '+61' },
{ label: 'NZ +64', value: '+64' }
],
placeholder: { cc: 'Code', phoneNumber: 'e.g. 0400 000 000' },
rules: {
required: { value: true, message: 'Please enter the phone number' },
minLength: { value: 10, message: 'Phone number must be at least 10 digits' },
maxLength: { value: 10, message: 'Phone number must not exceed 10 characters' },
pattern: { value: '^[0-9]+$', message: 'Please enter numeric values only' }
}
},
{
fieldType: 'input', dataType: 'text', name: 'extraData.email',
hide: true, label: 'Email',
rules: {
required: { value: true, message: 'Please enter the email' },
pattern: {
value: '^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}$',
message: 'Please enter a valid email address'
}
}
},
{
fieldType: 'date', dataType: 'text', name: 'dateOfBirth',
hide: false, label: 'Date of Birth',
rules: { required: { value: true, message: 'Please enter your date of birth' } },
calendarConfig: {
type: 'gregory', locale: 'en',
day: { placeholder: 'Day' },
month: { placeholder: 'Month' },
year: { placeholder: 'Year' },
message: 'Please enter your date of birth'
}
},
{
fieldType: 'address', dataType: 'current_addr', name: 'address.fullAddress',
hide: false, label: 'Residential Address',
placeholder: 'Type in your address',
helperText: 'Cannot be a PO Box',
rules: { required: { value: true, message: 'Please enter your residential address' } },
manualFieldConfig: [
{
fieldType: 'select', dataType: 'text', name: 'address.country',
hide: false, label: 'Country',
options: [/* all ISO 3166-1 alpha-3 countries, sorted alphabetically */],
rules: { required: { value: true, message: 'Please select your country' } }
},
{
fieldType: 'input', dataType: 'text', name: 'address.unitNumber',
hide: false, label: 'Unit Number (optional)'
},
{
fieldType: 'input', dataType: 'text', name: 'address.streetAddress',
hide: false, label: 'Street Address',
rules: { required: { value: true, message: 'Please enter your street address' } }
},
{
fieldType: 'input', dataType: 'text', name: 'address.town',
hide: false, label: 'Suburb / Town',
rules: { required: { value: true, message: 'Please enter your suburb/town.' } }
},
{
fieldType: 'select', dataType: 'text', name: 'address.state',
hide: false, label: 'State',
placeholder: 'Select Your State',
options: [
{ label: 'Australian Capital Territory', value: 'ACT' },
{ label: 'New South Wales', value: 'NSW' },
{ label: 'Northern Territory', value: 'NT' },
{ label: 'Queensland', value: 'QLD' },
{ label: 'South Australia', value: 'SA' },
{ label: 'Tasmania', value: 'TAS' },
{ label: 'Victoria', value: 'VIC' },
{ label: 'Western Australia', value: 'WA' }
],
rules: { required: { value: true, message: 'Please select your state' } }
},
{
fieldType: 'input', dataType: 'text', name: 'address.postalCode',
hide: false, label: 'Postcode',
rules: {
required: { value: true, message: 'Please enter your postal code' },
minLength: { value: 0, message: '' },
maxLength: { value: 100, message: '' }
}
}
]
},
{
fieldType: 'address', dataType: 'previous_addr', name: 'address1.fullAddress',
hide: true, label: 'What was your previous residential address?',
showToggle: true,
title: { label: 'Residential address' },
placeholder: 'Type in your previous address',
rules: { required: { value: true, message: 'Please enter your previous address' } },
toggleConfig: {
label: 'Have you been at your current residential address for less than 6 months?',
rules: { required: { value: true, message: 'Please let us know if you have any previous address' } }
},
manualFieldConfig: [
{ fieldType: 'select', dataType: 'text', name: 'address1.country', hide: false, label: 'Country',
options: [/* all ISO 3166-1 alpha-3 countries, sorted alphabetically */],
rules: { required: { value: true, message: 'Please select your country' } } },
{ fieldType: 'input', dataType: 'text', name: 'address1.unitNumber', hide: false, label: 'Unit Number (optional)' },
{ fieldType: 'input', dataType: 'text', name: 'address1.streetAddress', hide: false, label: 'Street Address',
rules: { required: { value: true, message: 'Please enter your street address' } } },
{ fieldType: 'input', dataType: 'text', name: 'address1.town', hide: false, label: 'Suburb / Town',
rules: { required: { value: true, message: 'Please enter your suburb/town.' } } },
{ fieldType: 'select', dataType: 'text', name: 'address1.state', hide: false, label: 'State',
placeholder: 'Select Your State',
options: [
{ label: 'Australian Capital Territory', value: 'ACT' },
{ label: 'New South Wales', value: 'NSW' },
{ label: 'Northern Territory', value: 'NT' },
{ label: 'Queensland', value: 'QLD' },
{ label: 'South Australia', value: 'SA' },
{ label: 'Tasmania', value: 'TAS' },
{ label: 'Victoria', value: 'VIC' },
{ label: 'Western Australia', value: 'WA' }
],
rules: { required: { value: true, message: 'Please select your state' } } },
{ fieldType: 'input', dataType: 'text', name: 'address1.postalCode', hide: false, label: 'Postcode',
rules: { required: { value: true, message: 'Please enter your postal code' }, minLength: { value: 0, message: '' }, maxLength: { value: 100, message: '' } } }
]
}
]
}
},
AUS: {
default: {
fields: [
{
fieldType: 'input', dataType: 'text', name: 'givenName',
hide: false, label: 'Given Name',
rules: {
required: { value: true, message: 'Please enter your given name' },
pattern: { value: "^[a-zA-Z]+(?:[''][a-zA-Z]+)*(?:\\s+[a-zA-Z]+(?:[''][a-zA-Z]+)*)*$", message: 'Please enter alphabetic characters with apostrophe only' }
}
},
{
fieldType: 'input', dataType: 'text', name: 'middleName',
hide: false, label: 'Middle Name(s)',
showToggle: true,
rules: {
required: { value: true, message: 'Please enter your middle name' },
pattern: { value: "^[a-zA-Z]+(?:[''][a-zA-Z]+)*(?:\\s+[a-zA-Z]+(?:[''][a-zA-Z]+)*)*$", message: 'Please enter alphabetic characters with apostrophe only' }
},
toggleConfig: {
label: 'Do you have any Middle Names?',
rules: { required: { value: true, message: 'Please let us know if you have any middle names' } }
}
},
{
fieldType: 'input', dataType: 'text', name: 'familyName',
hide: false, label: 'Family Name',
rules: {
required: { value: true, message: 'Please enter your family name' },
pattern: { value: "^[a-zA-Z]+(?:[''][a-zA-Z]+)*(?:\\s+[a-zA-Z]+(?:[''][a-zA-Z]+)*)*$", message: 'Please enter alphabetic characters with apostrophe only' }
}
},
{
fieldType: 'phone', dataType: 'number', name: 'extraData.phone',
hide: true, label: 'Phone Number',
options: [{ label: 'AU +61', value: '+61' }, { label: 'NZ +64', value: '+64' }],
placeholder: { cc: 'Code', phoneNumber: 'e.g. 0400 000 000' },
rules: {
required: { value: true, message: 'Please enter the phone number' },
minLength: { value: 10, message: 'Phone number must be at least 10 digits' },
maxLength: { value: 10, message: 'Phone number must not exceed 10 characters' },
pattern: { value: '^[0-9]+$', message: 'Please enter numeric values only' }
}
},
{
fieldType: 'input', dataType: 'text', name: 'extraData.email',
hide: true, label: 'Email',
rules: {
required: { value: true, message: 'Please enter the email' },
pattern: { value: '^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}$', message: 'Please enter a valid email address' }
}
},
{
fieldType: 'date', dataType: 'text', name: 'dateOfBirth',
hide: false, label: 'Date of Birth',
rules: { required: { value: true, message: 'Please enter your date of birth' } },
calendarConfig: {
type: 'gregory', locale: 'en',
day: { placeholder: 'Day' }, month: { placeholder: 'Month' }, year: { placeholder: 'Year' },
message: 'Please enter your date of birth'
}
},
{
fieldType: 'address', dataType: 'current_addr', name: 'address.fullAddress',
hide: false, label: 'Residential Address',
placeholder: 'Type in your address',
helperText: 'Cannot be a PO Box',
rules: { required: { value: true, message: 'Please enter your residential address' } },
manualFieldConfig: [
{
fieldType: 'select', dataType: 'text', name: 'address.country',
hide: false, label: 'Country',
options: [/* all ISO 3166-1 alpha-3 countries, sorted alphabetically */],
rules: { required: { value: true, message: 'Please select your country' } }
},
{ fieldType: 'input', dataType: 'text', name: 'address.unitNumber', hide: false, label: 'Unit Number (optional)' },
{
fieldType: 'input', dataType: 'text', name: 'address.streetAddress',
hide: false, label: 'Street Address',
rules: { required: { value: true, message: 'Please enter your street address' } }
},
{
fieldType: 'input', dataType: 'text', name: 'address.town',
hide: false, label: 'Suburb / Town',
rules: { required: { value: true, message: 'Please enter your suburb/town.' } }
},
{
fieldType: 'select', dataType: 'text', name: 'address.state',
hide: false, label: 'State', placeholder: 'Select Your State',
options: [
{ label: 'Australian Capital Territory', value: 'ACT' },
{ label: 'New South Wales', value: 'NSW' },
{ label: 'Northern Territory', value: 'NT' },
{ label: 'Queensland', value: 'QLD' },
{ label: 'South Australia', value: 'SA' },
{ label: 'Tasmania', value: 'TAS' },
{ label: 'Victoria', value: 'VIC' },
{ label: 'Western Australia', value: 'WA' }
],
rules: { required: { value: true, message: 'Please select your state' } }
},
{
fieldType: 'input', dataType: 'text', name: 'address.postalCode',
hide: false, label: 'Postcode',
rules: {
required: { value: true, message: 'Please enter your postal code' },
minLength: { value: 4, message: 'Postal code must be at least 4 characters' },
maxLength: { value: 4, message: 'Postal code must not exceed 4 characters' }
}
}
]
},
{
fieldType: 'address', dataType: 'previous_addr', name: 'address1.fullAddress',
hide: true, label: 'What was your previous residential address?',
showToggle: true,
title: { label: 'Residential address' },
placeholder: 'Type in your previous address',
rules: { required: { value: true, message: 'Please enter your previous address' } },
toggleConfig: {
label: 'Have you been at your current residential address for less than 6 months?',
rules: { required: { value: true, message: 'Please let us know if you have any previous address' } }
},
manualFieldConfig: [
{ fieldType: 'select', dataType: 'text', name: 'address1.country', hide: false, label: 'Country',
options: [/* all ISO 3166-1 alpha-3 countries, sorted alphabetically */],
rules: { required: { value: true, message: 'Please select your country' } } },
{ fieldType: 'input', dataType: 'text', name: 'address1.unitNumber', hide: false, label: 'Unit Number (optional)' },
{ fieldType: 'input', dataType: 'text', name: 'address1.streetAddress', hide: false, label: 'Street Address',
rules: { required: { value: true, message: 'Please enter your street address' } } },
{ fieldType: 'input', dataType: 'text', name: 'address1.town', hide: false, label: 'Suburb / Town',
rules: { required: { value: true, message: 'Please enter your suburb/town.' } } },
{ fieldType: 'select', dataType: 'text', name: 'address1.state', hide: false, label: 'State',
placeholder: 'Select Your State',
options: [
{ label: 'Australian Capital Territory', value: 'ACT' },
{ label: 'New South Wales', value: 'NSW' },
{ label: 'Northern Territory', value: 'NT' },
{ label: 'Queensland', value: 'QLD' },
{ label: 'South Australia', value: 'SA' },
{ label: 'Tasmania', value: 'TAS' },
{ label: 'Victoria', value: 'VIC' },
{ label: 'Western Australia', value: 'WA' }
],
rules: { required: { value: true, message: 'Please select your state' } } },
{ fieldType: 'input', dataType: 'text', name: 'address1.postalCode', hide: false, label: 'Postcode',
rules: { required: { value: true, message: 'Please enter your postal code' }, minLength: { value: 4, message: 'Postal code must be at least 4 characters' }, maxLength: { value: 4, message: 'Postal code must not exceed 4 characters' } } }
]
}
]
}
}
}
},
documents: [
{
type: 'DRIVERS_LICENCE',
label: "Driver's licence",
subtitle: '(recommended)',
countries: {
default: {
default: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: "Country of Driver's Licence",
options: [{ label: 'Australia', value: 'AUS' }, { label: 'New Zealand', value: 'NZL' }],
rules: { required: { value: true, message: 'Please select a country' } }
},
{
fieldType: 'date', dataType: 'text', name: 'idExpiry',
label: 'Expiry Date',
calendarConfig: { type: 'gregory', locale: 'en' }
}
]
}
},
AUS: {
default: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: "Country of Driver's Licence",
options: [{ label: 'Australia', value: 'AUS' }, { label: 'New Zealand', value: 'NZL' }],
rules: { required: { value: true, message: 'Please select a country' } }
},
{
fieldType: 'select', name: 'region', dataType: 'text',
label: 'State or Territory of Issue',
options: [
{ label: 'Australian Capital Territory', value: 'ACT' },
{ label: 'New South Wales', value: 'NSW' },
{ label: 'Northern Territory', value: 'NT' },
{ label: 'Queensland', value: 'QLD' },
{ label: 'South Australia', value: 'SA' },
{ label: 'Tasmania', value: 'TAS' },
{ label: 'Victoria', value: 'VIC' },
{ label: 'Western Australia', value: 'WA' }
],
rules: { required: { value: true, message: 'Please select your state' } }
},
{
fieldType: 'input', dataType: 'text', name: 'idNumber',
label: 'Licence Number', placeholder: 'e.g. 1234567890',
rules: {
required: { value: true, message: 'Please enter your licence number' },
minLength: { value: 6, message: 'Licence number must be at least 6 characters' },
maxLength: { value: 8, message: 'Licence number must not exceed 8 characters' },
pattern: { value: '^[a-zA-Z0-9]+$', message: 'Please enter alphanumeric values only' }
}
},
{
fieldType: 'input', dataType: 'text', name: 'extraData.document_number',
label: 'Card Number', placeholder: 'e.g. 1234567890',
rules: {
required: { value: true, message: 'Please enter your card number' },
minLength: { value: 10, message: 'Card number must be at least 10 digits' },
maxLength: { value: 10, message: 'Card number must not exceed 10 digits' },
pattern: { value: '^[0-9]+$', message: 'Please enter numeric values only' }
}
},
{
fieldType: 'date', dataType: 'text', name: 'idExpiry',
label: 'Expiry Date',
calendarConfig: { type: 'gregory', locale: 'en' }
}
]
},
NSW: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: "Country of Driver's Licence",
options: [{ label: 'Australia', value: 'AUS' }, { label: 'New Zealand', value: 'NZL' }],
placeholder: 'Please select',
rules: { required: { value: true, message: 'Please select a country' } }
},
{
fieldType: 'select', name: 'region', dataType: 'text',
label: 'State or Territory of Issue',
options: [
{ label: 'Australian Capital Territory', value: 'ACT' },
{ label: 'New South Wales', value: 'NSW' },
{ label: 'Northern Territory', value: 'NT' },
{ label: 'Queensland', value: 'QLD' },
{ label: 'South Australia', value: 'SA' },
{ label: 'Tasmania', value: 'TAS' },
{ label: 'Victoria', value: 'VIC' },
{ label: 'Western Australia', value: 'WA' }
],
placeholder: 'Please select',
rules: { required: { value: true, message: 'Please select your state' } }
},
{
fieldType: 'input', dataType: 'text', name: 'idNumber',
label: 'Licence Number', placeholder: 'e.g. 1234567890',
rules: {
required: { value: true, message: 'Please enter your licence number' },
minLength: { value: 6, message: 'Licence number must be at least 6 characters' },
maxLength: { value: 8, message: 'Licence number must not exceed 8 characters' },
pattern: { value: '^[a-zA-Z0-9]+$', message: 'Please enter alphanumeric values only' }
}
},
{
fieldType: 'input', dataType: 'text', name: 'extraData.document_number',
label: 'Card Number', placeholder: 'e.g. 1234567890',
helperText: 'You will find your Card Number on the front of your card, in the top right corner above your photo.',
rules: {
required: { value: true, message: 'Please enter your card number' },
minLength: { value: 10, message: 'Card number must be at least 10 digits' },
maxLength: { value: 10, message: 'Card number must not exceed 10 digits' },
pattern: { value: '^[0-9]+$', message: 'Please enter numeric values only' }
}
},
{
fieldType: 'date', dataType: 'text', name: 'idExpiry',
label: 'Expiry Date',
calendarConfig: {
type: 'gregory', locale: 'en',
day: { placeholder: 'Day' }, month: { placeholder: 'Month' }, year: { placeholder: 'Year' }
},
standardDate: true, configYear: true
}
]
},
ACT: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: "Country of Driver's Licence",
options: [{ label: 'Australia', value: 'AUS' }, { label: 'New Zealand', value: 'NZL' }],
placeholder: 'Please select',
rules: { required: { value: true, message: 'Please select a country' } }
},
{
fieldType: 'select', name: 'region', dataType: 'text',
label: 'State or Territory of Issue',
options: [
{ label: 'Australian Capital Territory', value: 'ACT' },
{ label: 'New South Wales', value: 'NSW' },
{ label: 'Northern Territory', value: 'NT' },
{ label: 'Queensland', value: 'QLD' },
{ label: 'South Australia', value: 'SA' },
{ label: 'Tasmania', value: 'TAS' },
{ label: 'Victoria', value: 'VIC' },
{ label: 'Western Australia', value: 'WA' }
],
placeholder: 'Please select',
rules: { required: { value: true, message: 'Please select your state' } }
},
{
fieldType: 'input', dataType: 'text', name: 'idNumber',
label: 'Licence Number', placeholder: 'e.g. 1234567890',
rules: {
required: { value: true, message: 'Please enter your licence number' },
minLength: { value: 1, message: 'Licence number must be at least 1 character' },
maxLength: { value: 10, message: 'Licence number must not exceed 10 characters' },
pattern: { value: '^[0-9]+$', message: 'Please enter numeric values only' }
}
},
{
fieldType: 'input', dataType: 'text', name: 'extraData.document_number',
label: 'Card Number', placeholder: 'e.g. 1234567890',
rules: {
required: { value: true, message: 'Please enter your card number' },
minLength: { value: 10, message: 'Card number must be at least 10 digits' },
maxLength: { value: 10, message: 'Card number must not exceed 10 digits' },
pattern: { value: '^[a-zA-Z0-9]+$', message: 'Please enter alphanumeric values only' }
}
},
{
fieldType: 'date', dataType: 'text', name: 'idExpiry',
label: 'Expiry Date',
calendarConfig: {
type: 'gregory', locale: 'en',
day: { placeholder: 'Day' }, month: { placeholder: 'Month' }, year: { placeholder: 'Year' }
},
standardDate: true, configYear: true
}
]
},
VIC: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: "Country of Driver's Licence",
options: [{ label: 'Australia', value: 'AUS' }, { label: 'New Zealand', value: 'NZL' }],
placeholder: 'Please select',
rules: { required: { value: true, message: 'Please select a country' } }
},
{
fieldType: 'select', name: 'region', dataType: 'text',
label: 'State or Territory of Issue',
options: [
{ label: 'Australian Capital Territory', value: 'ACT' },
{ label: 'New South Wales', value: 'NSW' },
{ label: 'Northern Territory', value: 'NT' },
{ label: 'Queensland', value: 'QLD' },
{ label: 'South Australia', value: 'SA' },
{ label: 'Tasmania', value: 'TAS' },
{ label: 'Victoria', value: 'VIC' },
{ label: 'Western Australia', value: 'WA' }
],
placeholder: 'Please select',
rules: { required: { value: true, message: 'Please select your state' } }
},
{
fieldType: 'input', dataType: 'text', name: 'idNumber',
label: 'Licence Number', placeholder: 'e.g. 1234567890',
rules: {
required: { value: true, message: 'Please enter your licence number' },
minLength: { value: 1, message: 'Licence number must be at least 1 character' },
maxLength: { value: 10, message: 'Licence number must not exceed 10 characters' },
pattern: { value: '^[0-9]+$', message: 'Please enter numeric values only' }
}
},
{
fieldType: 'input', dataType: 'text', name: 'extraData.document_number',
label: 'Card Number', placeholder: 'e.g. P1234567',
helperText: 'You will find your Card Number on the back of your card, either in the top right corner or middle right.',
rules: {
required: { value: true, message: 'Please enter your card number' },
minLength: { value: 8, message: 'Card number must be at least 8 characters' },
maxLength: { value: 8, message: 'Card number must not exceed 8 characters' },
pattern: { value: '^[a-zA-Z0-9]+$', message: 'Please enter alphanumeric values only' }
}
},
{
fieldType: 'date', dataType: 'text', name: 'idExpiry',
label: 'Expiry Date',
calendarConfig: {
type: 'gregory', locale: 'en',
day: { placeholder: 'Day' }, month: { placeholder: 'Month' }, year: { placeholder: 'Year' }
},
standardDate: true, configYear: true
}
]
},
QLD: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: "Country of Driver's Licence",
options: [{ label: 'Australia', value: 'AUS' }, { label: 'New Zealand', value: 'NZL' }],
placeholder: 'Please select',
rules: { required: { value: true, message: 'Please select a country' } }
},
{
fieldType: 'select', name: 'region', dataType: 'text',
label: 'State or Territory of Issue',
options: [
{ label: 'Australian Capital Territory', value: 'ACT' },
{ label: 'New South Wales', value: 'NSW' },
{ label: 'Northern Territory', value: 'NT' },
{ label: 'Queensland', value: 'QLD' },
{ label: 'South Australia', value: 'SA' },
{ label: 'Tasmania', value: 'TAS' },
{ label: 'Victoria', value: 'VIC' },
{ label: 'Western Australia', value: 'WA' }
],
placeholder: 'Please select',
rules: { required: { value: true, message: 'Please select your state' } }
},
{
fieldType: 'input', dataType: 'text', name: 'idNumber',
label: 'Licence Number', placeholder: 'e.g. 1234567890',
rules: {
required: { value: true, message: 'Please enter your licence number' },
minLength: { value: 8, message: 'Licence number must be at least 8 characters' },
maxLength: { value: 9, message: 'Licence number must not exceed 9 characters' },
pattern: { value: '^[0-9]+$', message: 'Please enter numeric values only' }
}
},
{
fieldType: 'input', dataType: 'text', name: 'extraData.document_number',
label: 'Card Number', placeholder: 'e.g. 1234567890',
helperText: 'You will find your Card Number on the front of your card, in the bottom middle, or the back of your card, on the bottom right side.',
rules: {
required: { value: true, message: 'Please enter your card number' },
minLength: { value: 10, message: 'Card number must be at least 10 digits' },
maxLength: { value: 10, message: 'Card number must not exceed 10 digits' },
pattern: { value: '^[a-zA-Z0-9]+$', message: 'Please enter alphanumeric values only' }
}
},
{
fieldType: 'date', dataType: 'text', name: 'idExpiry',
label: 'Expiry Date',
calendarConfig: {
type: 'gregory', locale: 'en',
day: { placeholder: 'Day' }, month: { placeholder: 'Month' }, year: { placeholder: 'Year' }
},
standardDate: true, configYear: true
}
]
},
SA: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: "Country of Driver's Licence",
options: [{ label: 'Australia', value: 'AUS' }, { label: 'New Zealand', value: 'NZL' }],
placeholder: 'Please select',
rules: { required: { value: true, message: 'Please select a country' } }
},
{
fieldType: 'select', name: 'region', dataType: 'text',
label: 'State or Territory of Issue',
options: [
{ label: 'Australian Capital Territory', value: 'ACT' },
{ label: 'New South Wales', value: 'NSW' },
{ label: 'Northern Territory', value: 'NT' },
{ label: 'Queensland', value: 'QLD' },
{ label: 'South Australia', value: 'SA' },
{ label: 'Tasmania', value: 'TAS' },
{ label: 'Victoria', value: 'VIC' },
{ label: 'Western Australia', value: 'WA' }
],
placeholder: 'Please select',
rules: { required: { value: true, message: 'Please select your state' } }
},
{
fieldType: 'input', dataType: 'text', name: 'idNumber',
label: 'Licence Number', placeholder: 'e.g. 1234567890',
rules: {
required: { value: true, message: 'Please enter your licence number' },
minLength: { value: 6, message: 'Licence number must be at least 6 characters' },
maxLength: { value: 6, message: 'Licence number must not exceed 6 characters' },
pattern: { value: '^[a-zA-Z0-9]+$', message: 'Please enter alphanumeric values only' }
}
},
{
fieldType: 'input', dataType: 'text', name: 'extraData.document_number',
label: 'Card Number', placeholder: 'e.g. 1234567890',
helperText: 'You will find your Card Number on the back of your card, in the top right corner.',
rules: {
required: { value: true, message: 'Please enter your card number' },
minLength: { value: 9, message: 'Card number must be at least 9 characters' },
maxLength: { value: 9, message: 'Card number must not exceed 9 characters' },
pattern: { value: '^[a-zA-Z0-9]+$', message: 'Please enter alphanumeric values only' }
}
},
{
fieldType: 'date', dataType: 'text', name: 'idExpiry',
label: 'Expiry Date',
calendarConfig: {
type: 'gregory', locale: 'en',
day: { placeholder: 'Day' }, month: { placeholder: 'Month' }, year: { placeholder: 'Year' }
},
standardDate: true, configYear: true
}
]
},
TAS: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: "Country of Driver's Licence",
options: [{ label: 'Australia', value: 'AUS' }, { label: 'New Zealand', value: 'NZL' }],
placeholder: 'Please select',
rules: { required: { value: true, message: 'Please select a country' } }
},
{
fieldType: 'select', name: 'region', dataType: 'text',
label: 'State or Territory of Issue',
options: [
{ label: 'Australian Capital Territory', value: 'ACT' },
{ label: 'New South Wales', value: 'NSW' },
{ label: 'Northern Territory', value: 'NT' },
{ label: 'Queensland', value: 'QLD' },
{ label: 'South Australia', value: 'SA' },
{ label: 'Tasmania', value: 'TAS' },
{ label: 'Victoria', value: 'VIC' },
{ label: 'Western Australia', value: 'WA' }
],
placeholder: 'Please select',
rules: { required: { value: true, message: 'Please select your state' } }
},
{
fieldType: 'input', dataType: 'text', name: 'idNumber',
label: 'Licence Number', placeholder: 'e.g. 1234567890',
rules: {
required: { value: true, message: 'Please enter your licence number' },
minLength: { value: 6, message: 'Licence number must be at least 6 characters' },
maxLength: { value: 8, message: 'Licence number must not exceed 8 characters' },
pattern: { value: '^[a-zA-Z0-9]+$', message: 'Please enter alphanumeric values only' }
}
},
{
fieldType: 'input', dataType: 'text', name: 'extraData.document_number',
label: 'Card Number', placeholder: 'e.g. 1234567890',
helperText: 'You will find your Card Number on the back of your card, in the top right corner.',
rules: {
required: { value: true, message: 'Please enter your card number' },
minLength: { value: 9, message: 'Card number must be at least 9 characters' },
maxLength: { value: 9, message: 'Card number must not exceed 9 characters' },
pattern: { value: '^[a-zA-Z0-9]+$', message: 'Please enter alphanumeric values only' }
}
},
{
fieldType: 'date', dataType: 'text', name: 'idExpiry',
label: 'Expiry Date',
calendarConfig: {
type: 'gregory', locale: 'en',
day: { placeholder: 'Day' }, month: { placeholder: 'Month' }, year: { placeholder: 'Year' }
},
standardDate: true, configYear: true
}
]
},
NT: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: "Country of Driver's Licence",
options: [{ label: 'Australia', value: 'AUS' }, { label: 'New Zealand', value: 'NZL' }],
placeholder: 'Please select',
rules: { required: { value: true, message: 'Please select a country' } }
},
{
fieldType: 'select', name: 'region', dataType: 'text',
label: 'State or Territory of Issue',
options: [
{ label: 'Australian Capital Territory', value: 'ACT' },
{ label: 'New South Wales', value: 'NSW' },
{ label: 'Northern Territory', value: 'NT' },
{ label: 'Queensland', value: 'QLD' },
{ label: 'South Australia', value: 'SA' },
{ label: 'Tasmania', value: 'TAS' },
{ label: 'Victoria', value: 'VIC' },
{ label: 'Western Australia', value: 'WA' }
],
placeholder: 'Please select',
rules: { required: { value: true, message: 'Please select your state' } }
},
{
fieldType: 'input', dataType: 'text', name: 'idNumber',
label: 'Licence Number', placeholder: 'e.g. 1234567890',
rules: {
required: { value: true, message: 'Please enter your licence number' },
minLength: { value: 1, message: 'Licence number must be at least 1 character' },
maxLength: { value: 10, message: 'Licence number must not exceed 10 characters' },
pattern: { value: '^[0-9]+$', message: 'Please enter numeric values only' }
}
},
{
fieldType: 'input', dataType: 'text', name: 'extraData.document_number',
label: 'Card Number', placeholder: 'e.g. 1234567890',
helperText: 'The card number is located on the back of your card, either in the bottom left corner or bottom middle.',
rules: {
required: { value: true, message: 'Please enter your card number' },
minLength: { value: 6, message: 'Card number must be at least 6 digits' },
maxLength: { value: 8, message: 'Card number must not exceed 8 digits' },
pattern: { value: '^[0-9]+$', message: 'Please enter numeric values only' }
}
},
{
fieldType: 'date', dataType: 'text', name: 'idExpiry',
label: 'Expiry Date',
calendarConfig: {
type: 'gregory', locale: 'en',
day: { placeholder: 'Day' }, month: { placeholder: 'Month' }, year: { placeholder: 'Year' }
},
standardDate: true, configYear: true
}
]
},
WA: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: "Country of Driver's Licence",
options: [{ label: 'Australia', value: 'AUS' }, { label: 'New Zealand', value: 'NZL' }],
placeholder: 'Please select',
rules: { required: { value: true, message: 'Please select a country' } }
},
{
fieldType: 'select', name: 'region', dataType: 'text',
label: 'State or Territory of Issue',
options: [
{ label: 'Australian Capital Territory', value: 'ACT' },
{ label: 'New South Wales', value: 'NSW' },
{ label: 'Northern Territory', value: 'NT' },
{ label: 'Queensland', value: 'QLD' },
{ label: 'South Australia', value: 'SA' },
{ label: 'Tasmania', value: 'TAS' },
{ label: 'Victoria', value: 'VIC' },
{ label: 'Western Australia', value: 'WA' }
],
placeholder: 'Please select',
rules: { required: { value: true, message: 'Please select your state' } }
},
{
fieldType: 'input', dataType: 'text', name: 'idNumber',
label: 'Licence Number', placeholder: 'e.g. 1234567890',
rules: {
required: { value: true, message: 'Please enter your licence number' },
minLength: { value: 7, message: 'Licence number must be at least 7 characters' },
maxLength: { value: 7, message: 'Licence number must not exceed 7 characters' },
pattern: { value: '^[0-9]+$', message: 'Please enter numeric values only' }
}
},
{
fieldType: 'input', dataType: 'text', name: 'extraData.document_number',
label: 'Card Number', placeholder: 'e.g. 1234567890',
helperText: 'You will find your Card Number on the back of your card, in the middle of the right side.',
rules: {
required: { value: true, message: 'Please enter your card number' },
minLength: { value: 8, message: 'Card number must be at least 8 characters' },
maxLength: { value: 10, message: 'Card number must not exceed 10 characters' },
pattern: { value: '^[a-zA-Z0-9]+$', message: 'Please enter alphanumeric values only' }
}
},
{
fieldType: 'date', dataType: 'text', name: 'idExpiry',
label: 'Expiry Date',
calendarConfig: {
type: 'gregory', locale: 'en',
day: { placeholder: 'Day' }, month: { placeholder: 'Month' }, year: { placeholder: 'Year' }
},
standardDate: true, configYear: true
}
]
}
},
NZL: {
default: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: "Country of Driver's Licence",
rules: { required: { value: true, message: 'Please select a country' } }
},
{
fieldType: 'input', dataType: 'text', name: 'idNumber',
label: 'Licence Number',
rules: {
required: { value: true, message: 'Please enter your licence number' },
pattern: { value: '^[a-zA-Z0-9]+$', message: 'Please enter alphanumeric values only' }
}
},
{
fieldType: 'input', dataType: 'number', name: 'extraData.licence_version',
label: 'Version Number', placeholder: 'e.g. 123',
rules: {
required: { value: true, message: 'Please enter your version number' },
minLength: { value: 3, message: 'Version number must be at least 3 characters' },
maxLength: { value: 3, message: 'Version number must not exceed 3 characters' },
pattern: { value: '^[0-9]+$', message: 'Please enter numeric values only' }
}
},
{
fieldType: 'date', dataType: 'text', name: 'idExpiry',
label: 'Expiry Date',
calendarConfig: { type: 'gregory', locale: 'en' }
}
]
}
}
}
},
{
type: 'PASSPORT',
label: 'Passport',
countries: {
default: {
default: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: 'Passport Issuing Country',
options: [
// All ISO 3166-1 alpha-3 countries, sorted alphabetically by label.
// Contains ~250 entries in the format { label: 'Country Name', value: 'ALPHA3_CODE' }.
// First few: { label: 'Afghanistan', value: 'AFG' }, { label: 'Albania', value: 'ALB' }, ...
// Last: { label: 'Zambia', value: 'ZMB' }, { label: 'Zimbabwe', value: 'ZWE' }
],
rules: { required: { value: true, message: 'Please select a country' } }
},
{
fieldType: 'input', dataType: 'text', name: 'idNumber',
label: 'Passport Number', placeholder: 'e.g. A1234567890',
rules: { required: { value: true, message: 'Please enter your passport number' } }
}
]
}
},
AUS: {
default: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: 'Passport Issuing Country',
options: [/* all ISO 3166-1 alpha-3 countries, sorted alphabetically */],
rules: { required: { value: true, message: 'Please select a country' } }
},
{
fieldType: 'input', dataType: 'text', name: 'idNumber',
label: 'Passport Number', placeholder: 'e.g. A1234567890',
rules: {
required: { value: true, message: 'Please enter your passport number' },
minLength: { value: 8, message: 'Passport number must be at least 8 characters' },
maxLength: { value: 9, message: 'Passport number must not exceed 9 characters' }
}
}
]
}
},
NZL: {
default: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: 'Passport Issuing Country',
options: [/* all ISO 3166-1 alpha-3 countries, sorted alphabetically */],
rules: { required: { value: true, message: 'Please select a country' } }
},
{
fieldType: 'input', dataType: 'text', name: 'idNumber',
label: 'Passport Number', placeholder: 'e.g. A1234567890',
rules: {
required: { value: true, message: 'Please enter your passport number' }
}
},
{
fieldType: 'date', dataType: 'text', name: 'idExpiry',
label: 'Date of Expiry',
rules: {
required: { value: true, message: "Please enter your passport's expiry date" }
},
calendarConfig: {
type: 'gregory', locale: 'en',
day: { placeholder: 'Day' }, month: { placeholder: 'Month' }, year: { placeholder: 'Year' },
dateRange: {
min: { value: 'now' },
max: { value: '+10 years' }
},
message: "Please enter your passport's expiry date"
}
}
]
}
},
IND: {
default: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'country',
label: 'Passport Issuing Country',
options: [/* all ISO 3166-1 alpha-3 countries, sorted alphabetically */],
rules: { required: { value: true, message: 'Please select a country' } }
},
{
fieldType: 'input', dataType: 'text', name: 'idNumber',
label: 'Passport Number', placeholder: 'e.g. A1234567890',
rules: {
required: { value: true, message: 'Please enter your passport number' }
}
},
{
fieldType: 'input', name: 'extraData.document_number', dataType: 'document_extra',
label: 'File Number', placeholder: 'e.g. ABCD12345678',
rules: {
required: { value: true, message: 'Please enter your File Number' }
}
}
]
}
}
}
},
{
type: 'NATIONAL_HEALTH_ID',
label: 'Medicare card',
countries: {
default: {
default: {
fields: [
{
fieldType: 'select', dataType: 'text', name: 'idSubType',
label: 'Medicare Card Colour',
options: [
{ label: 'Green', value: 'G' },
{ label: 'Blue', value: 'B' },
{ label: 'Yellow', value: 'Y' }
],
placeholder: 'Select Medicare Card Colour',
rules: { required: { value: true, message: 'Please select your Medicare card colour' } }
},
{
fieldType: 'input', dataType: 'text', name: 'idNumber',
label: 'Medicare Card Number',
rules: {
required: { value: true, message: 'Please enter your Medicare card number' },
pattern: { value: '^[0-9]+$', message: 'Please enter numeric values only' },
minLength: { value: 10, message: 'Medicare card number must be at least 10 digits' },
maxLength: { value: 10, message: 'Medicare card number must be not exceed 10 digits' }
}
},
{
fieldType: 'input', dataType: 'document_extra', name: 'extraData.reference',
label: 'Position on Card',
rules: {
required: { value: true, message: 'Please enter your position on card' },
pattern: { value: '^[0-9]+$', message: 'Please enter numeric values only' },
maxLength: { value: 1, message: 'Position on card must not exceed 1 digit' }
}
},
{
fieldType: 'date', dataType: 'text', name: 'idExpiry',
label: 'Date of Expiry',
rules: { required: { value: true, message: 'Please enter your Medicare expiry date' } },
calendarConfig: {
type: 'gregory', locale: 'en',
message: 'Please enter valid Medicare expiry date'
}
},
{
fieldType: 'select', dataType: 'text', name: 'middleNameDisplayType',
label: 'How is middle name displayed on the card?',
options: [
{ label: 'No Middle Name', value: 'No middle name' },
{ label: 'Initial Only', value: 'Initial only' },
{ label: 'Full Middle Name', value: 'Full middle name' }
]
},
{
fieldType: 'input', dataType: 'text', name: 'extraData.display_name_line1',
label: 'Name displayed on card',
disabledVisually: true
},
{
fieldType: 'hidden', dataType: 'text', name: 'extraData.display_middle_name',
label: 'Middle name displayed on card'
}
]
}
}
}
}
],
cta: { label: 'Next' },
additionInfo: {
label: 'Additional ID',
descriptions: [{ label: 'We need an additional ID verify your identity.' }]
}
}
Doc Upload
Copy
Ask AI
{
name: 'DOC_UPLOAD',
mode: 'business',
type: 'manual',
cta: { label: 'Next' }
}
Required Document Upload
Copy
Ask AI
{
name: 'REQUIRED_DOCUMENT_UPLOAD',
mode: 'individual',
type: 'manual',
title: { label: 'Required Documents' },
descriptions: [{ label: 'All documents in this section must be uploaded' }],
cta: { label: 'Next' }
}
Partial Document Upload
Copy
Ask AI
{
name: 'PARTIAL_DOCUMENT_UPLOAD',
mode: 'individual',
type: 'manual',
title: { label: 'Additional documents' },
descriptions: [{ label: 'Upload <b>at least one</b> document from this list' }],
cta: { label: 'Next' }
}
Optional Document Upload
Copy
Ask AI
{
name: 'OPTIONAL_DOCUMENT_UPLOAD',
mode: 'individual',
type: 'manual',
title: { label: 'Optional documents' },
descriptions: [{ label: 'These documents are optional but may help with your application' }],
cta: { label: 'Next' }
}
Custom Fields
You can add custom fields to the Personal Details and Review screens. Custom field values are stored in theextraData object of the individual entity.
Naming Convention
Custom field names must use theextraData. prefix followed by your desired field name:
Copy
Ask AI
extraData.{fieldName}
extraData.personTitle will store its value under the key personTitle in the individual’s extraData object.
Adding a Custom Field
To add a custom field, include it in thefields array of your country configuration. When you only provide custom fields (without redefining existing fields), they appear at the top of the form, before the default fields.
Copy
Ask AI
const personal = sdk.component('form', {
name: 'PERSONAL',
type: 'manual',
personal: {
countries: {
default: {
default: {
fields: [
{
name: 'extraData.personTitle',
fieldType: 'input',
dataType: 'text',
label: 'Title',
rules: {
required: {
value: true,
message: 'Please enter your title'
}
}
}
]
}
}
}
}
});
You must define custom fields for all your supported countries. Configuration overrides are merged, so if you only define a custom field under one country (e.g.,
AUS), other countries will use the built-in default without your custom field — producing inconsistent forms. If you use country-specific configurations (e.g., AUS, NZL), each country entry must include the custom field.Field Ordering
To control the order of fields on the Personal Details screen, redefine thefields array with entries in the desired order. Each entry needs at least the name property to reference an existing default field.
How It Works
- Fields appear in the order they are listed in the
fieldsarray - To reference an existing default field, include an entry with just
{ name: 'fieldName' }— the default properties are preserved - To add a custom field at a specific position, insert it at the desired index in the array
- Fields from the default configuration that are not included in your array will appear after your defined fields
Reordering Default Fields
For example, if the default order isgivenName, middleName, familyName and you want familyName first:
Copy
Ask AI
const personal = sdk.component('form', {
name: 'PERSONAL',
type: 'manual',
personal: {
countries: {
default: {
default: {
fields: [
{ name: 'familyName' },
{ name: 'givenName' },
{ name: 'middleName' }
]
}
}
}
}
});
Inserting a Custom Field at a Specific Position
To insert a custom field aftergivenName, redefine givenName (with just name) and place the custom field right after it:
Copy
Ask AI
const personal = sdk.component('form', {
name: 'PERSONAL',
type: 'manual',
personal: {
countries: {
default: {
default: {
fields: [
{ name: 'givenName' },
{
name: 'extraData.personTitle',
fieldType: 'input',
dataType: 'text',
label: 'Title',
rules: {
required: {
value: true,
message: 'Please enter your title'
}
}
}
]
}
}
}
}
});
Title directly after Given Name, with all remaining default fields (middleName, familyName, dateOfBirth, address) following after.
Document Upload Configuration
Document upload is configured through the recipe’sdocUpload property:
Copy
Ask AI
const sdk = await OneSdk({
session: { token: 'your-token' },
recipe: {
form: {
provider: {
name: 'react',
googleApiKey: 'your-key'
},
docUpload: {
requestedDocuments: [
{ documentType: 'PROOF_OF_ADDRESS' },
{ documentType: 'BANK_STATEMENT' }
],
partialDocuments: [
{
title: 'Additional Identity Documents',
minimumRequirement: 1,
documents: [
{ documentType: 'BIRTH_CERTIFICATE' },
{ documentType: 'UTILITY_BILL' },
{ documentType: 'TAX_RETURN' }
]
}
],
optionalDocuments: [
{ documentType: 'EMPLOYMENT_LETTER' }
]
}
}
}
});
DocUploadRecipeOptions
| Property | Type | Description |
|---|---|---|
requestedDocuments | array | Documents that must be uploaded. Each item has a documentType property. |
partialDocuments | array | Groups of documents where a minimum number must be uploaded. |
optionalDocuments | array | Documents that may be uploaded but are not required. |
Partial Documents
| Property | Type | Description |
|---|---|---|
title | string | Title displayed for this document group |
documents | array | Available documents in this group |
minimumRequirement | number | Minimum number of documents to upload from this group |
Document Upload Validation
File uploads support validation rules:Copy
Ask AI
type DocUploadRules = {
min_size?: { value: number; message: string };
max_size?: { value: number; message: string };
mime?: {
value: {
'image/jpeg'?: boolean;
'image/png'?: boolean;
'image/gif'?: boolean;
'image/webp'?: boolean;
'image/tiff'?: boolean;
'image/bmp'?: boolean;
'application/pdf'?: boolean;
};
message: string;
}
}
Screen Configuration Examples
Customizing the Welcome Screen
Copy
Ask AI
const welcome = sdk.component('form', {
name: 'WELCOME',
mode: 'individual',
type: 'manual',
// Welcome screen customization (as part of TPageConfig)
welcome: {
name: 'WELCOME',
logo: { src: 'https://your-logo-url.com/logo.png' },
title: {
label: 'Verify Your Identity',
style: {
'ff-title': { color: '#1a1a1a', fontSize: '32px' }
}
},
subtitle: {
label: 'We need to verify your identity to continue.'
},
descriptions: [
{ label: 'This process takes about 2 minutes' },
{ label: 'Have your ID document ready' }
],
cta: {
label: 'Start Verification'
},
style: {
'ff-wrapper': { maxWidth: '500px', margin: '0 auto' },
font: { name: 'Inter', url: 'https://fonts.googleapis.com/css2?family=Inter' }
}
}
});
Customizing the Result Screen
Copy
Ask AI
const result = sdk.component('form', {
name: 'RESULT',
type: 'manual',
state: 'SUCCESS',
title: { label: 'Verification Complete' },
descriptions: [
{ label: 'Your identity has been verified.' }
],
cta: {
label: 'Continue to Dashboard',
onClick: () => window.location.href = '/dashboard'
}
});
Country-Specific Field Configuration
In manual mode, form fields can be configured per country and state using theCountryConfig type. This is used in two places:
- Document Selection screen — inside each entry of the
documentsarray, via thecountriesproperty - Personal Details screen — via the
personal.countriesproperty
Copy
Ask AI
type CountryConfig = {
[countryCode: string]: { // e.g., 'AUS', 'NZL', 'default'
[stateCode: string]: { // e.g., 'NSW', 'VIC', 'default'
image?: string;
fields: FormField[];
}
}
}
'default' as a fallback key when no specific country or state match is found.
Document-Type-Specific Configuration
On the Document Selection screen, thecountries configuration is nested within each document type in the documents array. This means the full configuration hierarchy has three levels:
- Document type — e.g.,
DRIVERS_LICENCE,PASSPORT,NATIONAL_HEALTH_ID - Country — e.g.,
AUS,NZL,default - State — e.g.,
NSW,VIC,default
CountryConfig, so different document types can require entirely different fields for the same country. For example, a driver’s licence in Australia requires a licence number and card number, while a passport for the same country requires a passport number and expiry date.
Copy
Ask AI
const document = sdk.component('form', {
name: 'DOCUMENT',
mode: 'individual',
type: 'manual',
numberOfIDs: 2,
documents: [
{
// Document type level
type: 'DRIVERS_LICENCE',
countries: {
// Country level
AUS: {
// State level
NSW: {
fields: [
{ fieldType: 'input', name: 'licenceNumber', title: { label: 'Licence Number' } },
{ fieldType: 'input', name: 'cardNumber', title: { label: 'Card Number' } }
]
},
default: {
fields: [
{ fieldType: 'input', name: 'licenceNumber', title: { label: 'Licence Number' } }
]
}
}
}
},
{
// Different document type — different fields for the same country
type: 'PASSPORT',
countries: {
AUS: {
default: {
fields: [
{ fieldType: 'input', name: 'passportNumber', title: { label: 'Passport Number' } },
{ fieldType: 'date', name: 'expiryDate', title: { label: 'Expiry Date' } }
]
}
},
default: {
default: {
fields: [
{ fieldType: 'input', name: 'passportNumber', title: { label: 'Passport Number' } }
]
}
}
}
}
]
});
CountryConfig directly under personal.countries.
Document Selection example:
Configures country and state-specific fields for each document type. When a user selects a country (e.g., Australia) and state (e.g., NSW), the matching field configuration is used. The 'default' key acts as a fallback.
Copy
Ask AI
const document = sdk.component('form', {
name: 'DOCUMENT',
mode: 'individual',
type: 'manual',
numberOfIDs: 2,
documents: [
{
type: 'DRIVERS_LICENCE',
countries: {
// Australia — with state-specific fields
AUS: {
NSW: {
fields: [
{ fieldType: 'input', name: 'licenceNumber', title: { label: 'Licence Number' } },
{ fieldType: 'input', name: 'cardNumber', title: { label: 'Card Number' } },
{ fieldType: 'date', name: 'expiryDate', title: { label: 'Expiry Date' } }
]
},
VIC: {
fields: [
{ fieldType: 'input', name: 'licenceNumber', title: { label: 'Licence Number' } },
{ fieldType: 'date', name: 'expiryDate', title: { label: 'Expiry Date' } }
]
},
// Fallback for other Australian states
default: {
fields: [
{ fieldType: 'input', name: 'licenceNumber', title: { label: 'Licence Number' } },
{ fieldType: 'date', name: 'expiryDate', title: { label: 'Expiry Date' } }
]
}
},
// New Zealand — no state-level distinction
NZL: {
default: {
fields: [
{ fieldType: 'input', name: 'licenceNumber', title: { label: 'Licence Number' } },
{ fieldType: 'input', name: 'version', title: { label: 'Version Number' } }
]
}
},
// Fallback for all other countries
default: {
default: {
fields: [
{
fieldType: 'select',
name: 'country',
options: [
{ label: 'Australia', value: 'AUS' },
{ label: 'New Zealand', value: 'NZL' }
]
}
]
}
}
}
},
{
type: 'PASSPORT',
countries: {
default: {
default: {
fields: [
{
fieldType: 'select',
name: 'country',
options: [
{ label: 'Australia', value: 'AUS' },
{ label: 'New Zealand', value: 'NZL' }
]
}
]
}
}
}
}
]
});
Copy
Ask AI
const personal = sdk.component('form', {
name: 'PERSONAL',
mode: 'individual',
type: 'manual',
personal: {
countries: {
// Australia — stricter age range
AUS: {
default: {
fields: [
{
fieldType: 'date',
dataType: 'text',
name: 'dateOfBirth',
hide: false,
calendarConfig: {
age: {
min: 18,
max: 65,
message: 'The age must be between 18 and 65'
}
}
}
]
}
},
// Fallback for all other countries
default: {
default: {
fields: [
{
fieldType: 'date',
dataType: 'text',
name: 'dateOfBirth',
hide: false,
calendarConfig: {
age: {
min: 16,
max: 80,
message: 'The age must be between 16 and 80'
}
}
}
]
}
}
}
}
});
- Exact country + exact state match (e.g.,
AUS→NSW) - Exact country +
defaultstate (e.g.,AUS→default) defaultcountry +defaultstate