Financial Services Flow Examples

Loan Application

Loan Application Flow

Business Value: Streamline loan application process, reduce drop-off rates, and collect comprehensive applicant information including ID verification for KYC compliance.

Scenario: A customer needs a loan and completes a WhatsApp Flow that guides them through personal information, ID verification, employment details, and loan requirements. The Flow includes conditional logic, image upload for ID verification, and a comprehensive summary screen before submission.

Tools Used: Interactive Flow (within service window) + Loan processing system integration


Step 1: Create the Flow

Multi-screen Flow with routing: Welcome → [Terms, Personal Info] → ID Verification → Employment → Loan Details → Summary

This Flow demonstrates advanced features including:

  • Image component with base64 encoding
  • OptIn component for terms agreement
  • EmbeddedLink navigation to Terms screen
  • PhotoPicker for ID card upload
  • Conditional fields (If component)
  • RichText with markdown formatting
  • Complex routing model with multiple paths

Click to view **Flow JSON Definition**

Endpoint: POST https://chatapps.8x8.com/config/v1/channels/whatsapp/{channelId}/flows

{
"name":"BankSmart Loan Application",
"categories":["OTHER"],
"flowJson": "{\"version\":\"7.2\",\"routing_model\":{\"WELCOME_SCREEN\":[\"TOC_SCREEN\",\"PERSONAL_INFO_SCREEN\"],\"PERSONAL_INFO_SCREEN\":[\"ID_VERIFICATION_SCREEN\"],\"ID_VERIFICATION_SCREEN\":[\"EMPLOYMENT_INFO_SCREEN\"],\"EMPLOYMENT_INFO_SCREEN\":[\"LOAN_DETAILS_SCREEN\"],\"LOAN_DETAILS_SCREEN\":[\"SUMMARY_SCREEN\"]},\"screens\":[{\"id\":\"WELCOME_SCREEN\",\"title\":\"BankSmart Loan\",\"layout\":{\"type\":\"SingleColumnLayout\",\"children\":[{\"type\":\"Image\",\"src\":\"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
}

Response:

{
"id":"loan_app_flow_123",
"success":true
}

Step 2: Publish the Flow

Click to view **Publish Flow Request**

Endpoint: POST https://chatapps.8x8.com/config/v1/channels/whatsapp/{channelId}/flows/loan_app_flow_123/publish

Response: 200 OK (no response body)


Step 3: Send the Flow (Interactive Message)

Click to view **Send Interactive Flow Message**

Endpoint: POST https://chatapps.8x8.com/api/v1/subaccounts/{subAccountId}/messages

{
"user":{
"msisdn":"+15551234567"
},
"type":"Interactive",
"content":{
"interactive":{
"type":"flow",
"header":{
"type":"text",
"text":"Apply for a Loan"
},
"body":{
"text":"Get approved in minutes. Complete your loan application with BankSmart - fast, secure, and simple."
},
"footer":{
"text":"Secure application process"
},
"action":{
"parameters":{
"flowId":"loan_app_flow_123",
"flowCta":"Apply Now"
}
}
}
}
}

Step 4: Handle the Submission

Click to view **Webhook Payload and Processing Logic**

Webhook Payload (Flow Submission):

{
"namespace":"ChatApps",
"eventType":"inbound_message_received",
"payload":{
"umid":"abc-123-def-456",
"subAccountId":"your-subaccount-id",
"user":{
"msisdn":"+15551234567"
},
"type":"Interactive",
"content":{
"interactive":{
"type":"nfmReply",
"nfmReply":{
"responseJson":"{\"full_name\":\"Jane Doe\",\"email\":\"jane@example.com\",\"phone\":\"12345678\",\"dob\":\"1990-01-01\",\"id_photo\":\"base64_encoded_image_data\",\"employment_status\":\"Employed\",\"employer_name\":\"TechCorp\",\"monthly_income\":\"6000\",\"loan_amount\":\"20000\",\"loan_term\":\"5\"}"
}
}
}
}
}

Processing Logic:

app.post('/webhook',async(req, res)=>{
const payload = req.body.payload;
// Identify Flow submission
if(payload.type==='Interactive'&&
payload.content.interactive.type==='nfmReply'){
// Parse submission
const data =JSON.parse(payload.content.interactive.nfmReply.responseJson);
// Extract ID photo (base64 encoded)
const idPhoto = data.id_photo;
// Upload ID photo to secure storage
const idPhotoUrl =awaituploadToSecureStorage(idPhoto,{
userId: payload.user.msisdn,
type:'kyc_document',
timestamp:newDate()
});
// Calculate loan eligibility
const monthlyIncome =parseFloat(data.monthly_income);
const loanAmount =parseFloat(data.loan_amount);
const loanTerm =parseInt(data.loan_term);
// Simple DTI ratio check (30% max)
const monthlyPayment = loanAmount /(loanTerm *12);
const dtiRatio = monthlyPayment / monthlyIncome;
const preliminaryApproval = dtiRatio <=0.3;
// Create loan application in system
const applicationId =awaitcreateLoanApplication({
applicantName: data.full_name,
email: data.email,
phone: data.phone,
dateOfBirth: data.dob,
idPhotoUrl: idPhotoUrl,
employmentStatus: data.employment_status,
employerName: data.employer_name,
monthlyIncome: monthlyIncome,
loanAmount: loanAmount,
loanTerm: loanTerm,
dtiRatio: dtiRatio,
preliminaryStatus: preliminaryApproval ?'approved':'pending_review',
source:'whatsapp_flow',
createdAt:newDate()
});
// Trigger KYC verification workflow
awaittriggerKYCVerification(applicationId, idPhotoUrl);
// Send confirmation message
let responseMessage ='';
if(preliminaryApproval){
responseMessage =`Great news, ${data.full_name}! Your loan application #${applicationId} has been preliminarily approved. \\n\\nLoan Amount: Rp ${loanAmount}\\nTerm: ${loanTerm} years\\n\\nWe're verifying your documents and will contact you within 24 hours to finalize your loan.`;
}else{
responseMessage =`Thank you, ${data.full_name}! Your loan application #${applicationId} has been received and is under review. \\n\\nLoan Amount: Rp ${loanAmount}\\nTerm: ${loanTerm} years\\n\\nOur team will contact you within 24-48 hours to discuss your options.`;
}
awaitsendMessage({
user:{msisdn: payload.user.msisdn},
type:'text',
content:{
text: responseMessage
}
});
// Send notification to loan team
awaitnotifyLoanTeam({
applicationId: applicationId,
applicantName: data.full_name,
loanAmount: loanAmount,
status: preliminaryApproval ?'pre_approved':'pending_review'
});
}
res.status(200).send('OK');
});

Best Practices:

  • Security: Store ID photos and sensitive data in encrypted storage with proper access controls
  • KYC Compliance: Implement automated ID verification (OCR, face matching) to streamline processing
  • Risk Assessment: Use credit scoring APIs and DTI ratio calculations for preliminary approval
  • Transparency: Clearly communicate loan terms, interest rates, and repayment schedules
  • Follow-up: Set up automated reminders for document completion and application status updates
  • Fraud Detection: Cross-reference applicant information with credit bureaus and fraud databases
  • Customer Experience: Provide real-time application status updates via WhatsApp
  • Data Retention: Comply with financial regulations for document storage and retention periods

Related Resources


Source: https://developer.8x8.com/connect/docs/whatsapp/whatsapp-flows-examples-financial · 8x8 CPaaS Developer Docs. Synced for support deflection.

Was this article helpful?
or
0 out of 0 found this helpful

0 Comments

Please sign in to leave a comment.

Didn't find what you were looking for?

Submit a request