Skip to main content

IDV Flow

Overview

The IDV flow is the verification process a user is required to complete after they have finished with the NZ SignUp process. When the user is created and is not yet verified, the user will be directed to the Signup - IDV Step screen. From this first screen, the user will be able to decided whether they want to continue with ID Verification using their NZ Passport, Driver License or use some other document as form of identification. The user may also decide to do this later and can access the IDV Screen again from the More Menu.

The Id verification flow is done through the GreenId process which requires to provide a photo of your Passport/Driver license as well as take a selfie which is used to compare with your previous document. At the end of the ID verification process, the user will be presented by either a Success screen, an Error screen (Verification Failed/Unavailable) or a Pending Review screen.

Completing the verification process allows the user to withdraw from their account, as well as unrestricted deposits and promotional offers.

If the user has already completed verification through TabNZ and decides to create a new account on Betcha using the same account details, then instead of having to complete the IDV flow again, the user will be prompted with the 2FA IDV Leverage screen.

Branding

Both Betcha and TAB have the same texts and structures for IDV Intro, GreenID flow and IDV Leverage, with the only exception being some of the images used in each the screens.

Also, the IDV Leverage screen is only present in Betcha and will only be visible if the user created and verified an account using the same user details previously in TAB.

IDV Intro

This screen only gives the user some information about the verification process and allows the user to select the following options

AndroidiOS
IDV Intro Tabnz
IDV Intro Betcha

Android and iOS differences

Android and iOS differ in navigation and presentation style. Android includes both a native back button and a skip button in the app bar, displaying content in full screen mode. iOS only features a skip button and presents a modal in standard iOS style where some content is visible beneath the view.

NZ Driver License or Passport

  • User is directed to the GreenId flow and requires either a valid NZ Driver License or a valid Passport.

Other ID Documents

  • User is redirected to the OtherId flow.

Skip

  • The user can skip this verification process and complete it later.

IDV Other ID Documents

  • If the user decides to navigate to the Other ID Documents screen, then they will be prompt on how to verify using another document id.
  • Part of the text are data-driven, such as verification due date and deposit limits.
  • From this screen the user can Continue or Contact Customer Support.
  • iOS shows a call sheet when tapping Need Help? Contact us The phone number is dynamically pulled from config for each brand.
IDV Other Id Documents TabnzIDV Other Id Documents Betcha

iOS Contact Customer Support call sheet

IDV Other Id call sheet

IDV Retention Screen

The first time the user skips the IDV flow, they will be presented with a Retention Screen. The intention of the Retention Screen, is to attempt to catch users one more time by offering an additional bonus incentive to return to the IDV flow.

IDV Retention Screen TabNZIDV Retention Screen Betcha

More Menu

If the user wants to continue with the verification, they can do so heading to the More Menu and clicking the Verify Now option.

Verify NowVerify Now

GreenID

This flow is completed through a WebView instead of actual screens.

The user will be prompted with a screen showing all the requirements needed to complete the GreenId verification process.

⚠️ Users are expected to use a valid email address during signup and avoid placeholders like "@example.com," as this may cause issues with the GreenID verification.

From the application's perspective, GreenID functions as a black box. We simply construct a URL containing a user's token, load it in a WebView, and handle incoming messages via JavaScript, responding accordingly on the native client by displaying a UI state.

To access a user's GreenID account information, use the following UAT external links. Ensure your VPN is active, as IP whitelisting is required.

Betcha: https://test-au.vixverify.com/auth/customers/betcha/login

TabNZ: https://test-au.vixverify.com/admin-login/customers/nzracingboard/login.seam

Greenid Requirements

After clicking "Continue", the user will be able to select which type of document will be presenting during the verification.

Greenid Document to Submit

The GreenId requires camera permissions, which are requested to the user during the verification process. The user will be asked to take a photo from the ID document selected.

Greenid Photo

Once the process is completed, if some of the details wasn't able to get extracted correctly from the provided document, then it will prompt a manual form to input your details correctly.

Greenid Manual Details Input

GreenID Javascript Interface Messaging

At the end of the verification process, a Javascript message event is triggered (ReactNativeWebView.postMessage(message: String)) Through this event we can receive the GreenId result and display to the user the correct state.

The following states are possible during the process:

PENDING: Verification is in progress.
LOCKED_OUT: The user has been locked out.
VERIFIED: The user is successfully verified.
VERIFIED_ADMIN: The user is verified by an admin.
VERIFIED_WITH_CHANGES: The user is verified, but changes were made.
CAMERA_UNAVAILABLE: The camera is not accessible.
UNAVAILABLE: The service is currently unavailable.
UNKNOWN_ERROR: A Unknown error.

GreenID Entry points & Navigation

The native GreenID IDV screen can be accessed during the Signup or via the More menu or if the user is presented with a notification on the home screen.

ID verification required notification

Home screen - ID verification required

  • IDV during Signup: Tapping the close button at the top will trigger a confirmation dialog. If you select Cancel, you will remain on the GreenID screen however if you choose Verify Later the flow will proceed to the Offers screen.
Close ConfirmationOffers ScreenSuccess State ButtonsFailure State Buttons
Greenid close confirmation promptoffers screenSuccess stateFailure state
  • IDV via the More menu: Tapping the close button in the top right will dismiss the GreenID modal and return the user to the More Menu, as this view is displayed over it. The same applies when tapping the Continue or Do it later button after verification is complete.

GreenID Result Screen

The result state screen will be shown at the end of the GreenId Verification process. Each state screen contains a description, buttons and a animation.

  • iOS currently uses static images instead of Lottie animations. However, this is expected to be updated in the near future once a technical challenge has been solved.

The possible state are the following:

Success State

  • User is completely verified and can use the application normally.
Greenid Verification Successful TabGreenid Verification Successful Betcha

Failed State

  • The verification process failed and the user may either try again or contact customer service for help.
Greenid Verification Failed TabGreenid Verification Failed Betcha

ID Verification Unavailable State

  • The verification process wasn't able to complete successfully by some unknown reason. The user can either contact customer support or continue using the app without verification.
Greenid Verification Unavailable TabGreenid Verification Unavailable Betcha

Pending Review State

  • The user completed the verification process but requires to be reviewed in order to have verified status on the account.
Greenid Verification Pending Review TabGreenid Verification Pending Review Betcha

ID Verification Unavailable

  • The user will be presented with a GreenID verification is unavailable dialog if the GreenID URL cannot be generated, loaded, or if they are not logged in.
Greenid Verification Unavailable

IDV Leverage (Only Betcha)

If the user tries to create an account with the same details for an already verified account previously done through TabNZ, then it will instead be prompted with 2FA mobile verification flow. This process allows the user to have their Betcha account verified much easier compared to verifying their account again.

2FA SMS Verification: Request Code Screen

  • The user will be asked to verify their account through a SMS message to the phone number they provided during the SignUp process.
  • The user will be able to see the last 3 digits of their phone number to which they will be receiving an SMS with the code to validate.
  • Upon clicking Send Code button, a REST API call will initiate the SMS verification process (CreateSMSVerification)
IDV Leverage Send SMS Code

2FA SMS Verification: Code Validation Screen

  • The user will be prompt to enter the 6 digit code they should have received as an SMS to their phone.
  • After entering the 6 digit code, a second REST API call will apply the verification code entered by the user (ApplyIDVLeverageMatch).
  • On iOS, we use textContentType(.oneTimeCode), enabling the 6 digit code to auto fill the code input from the SMS.
IDV Leverage SMS Code Validation

The results can be either Successful, Invalid Code, or Error, and different messages are shown for each case.

IDV Leverage: Success Screen

  • The user successfully enter the 2FA Verification Code.
IDV Leverage SMS Code Validation Success

IDV Leverage: Failed Screen

  • The user failed to enter the correct 2FA Verification Code.
IDV Leverage SMS Code Validation Failed

IDV Leverage: Failed Three Times Screen

  • The user failed to enter the correct 2FA Verification Code three times, no further attempts are allowed.
  • The user will be asked to verify through another way, which will navigate to IDV Intro.
IDV Leverage SMS Code Validation Failed Three Times

Integrations

Feature Flags

Configuration

  • domain.phones.customerSupport - Customer support Phone Number - from App Config. Required in GreenId and IDV Leverage flows.
  • domain.emlCardLimits.restrictedMaxDeposit - Fetch value of Max Deposit Retention
  • domain.signupForm.idv-skipped-generosity-message - Fetch generosity message used when IDV is skipped

Inputs

GQL: SkipExternalClientVerificationMutation

  • Sets a flag on the user's account that they have skipped verification and accepted the retention offer by tapping Verify Now.

GQL: InitiateOtherVerificationProcessMutation

  • Triggers the sending of an email to the user with instructions to complete verification. This is done by tapping Continue on the Verify ID with Another Document

REST: POST client/client-v2/CreateSMSVerification

  • Used to start the SMS Verification process. Only used in the IDV Leverage flow process.

REST: POST client/client-v2/ApplyIDVLeverageMatch

  • Used to apply the SMS received after staring the verification process. Only used in the IDV Leverage flow process.

GREEN ID URL: $BRAND_HOST/masquerade?path=account/verification/greenid

Query Parameters:
- bodyOnly = true
- token = $JWT_TOKEN
  • The users JWT token is base 64 encoded and appended to the end of the URL path: this allows us to pass user information and kick off the green ID verification process.

Outputs

Since IDV verification is managed externally by the GreenID provider, the native client solely responds to JavaScript messages and displays the received state to the user. The native application does not perform any account manipulation.

Third-Party Dependencies

Troubleshooting

Android

  • Camera permissions are required during the GreenId process. If user fails to provide them, he/she will not be able to complete the verification process.

iOS

  • The camera permission prompt should automatically appear when starting the GreenID verification process. The necessary camera permission has been added to the Info.plist, and the GreenID SDK should handle the prompt.

  • Since the GreenID process requires an authenticated user token to identify the user and initiate verification, ensure the token is valid if any blank screens appear.

  • Ensure a valid email address is used and not a placeholder email such as '@example.com' as this might effect the verification process.

  • Due to a known string manipulation bug in iOS, we've had to concatenate the Base64 encoded token directly to the end of the GreenID URL. This is because URLQueryItem encodes the trailing = character, which breaks the GreenID URL loading.

  • IDV leverage is hard to test in UAT since the 2FA SMS service is not functioning in the UAT environment.

Resources

RoleContact
PMLaura Baggio
Android LeadAnthony Librio
iOS LeadNicholas Vella