Mobile App Permissions

Hosted lending journeys may require device capabilities at specific steps. Your mobile app must make those capabilities available to the Hosted surface and to lender-owned pages opened during the journey.

This page is stack-neutral. Map these requirements to the WebView, browser surface, or mobile app container used by your product.

Why Permissions Matter

Lending journeys can include:

  • location checks for address, eligibility, fraud, or lender policy
  • camera access for selfie capture, document capture, video KYC, or lender KYC pages
  • microphone access when a video KYC step requires audio
  • file or media upload for PAN, Aadhaar, bank statements, income documents, photographs, or other lender-required documents

These steps may be shown inside Hosted Experience, inside lender-owned pages, or inside an app-controlled external surface opened from Hosted.

If the app container does not handle permissions correctly, the same lender page may work in a normal mobile browser but fail inside your app.

Permission Layers

Mobile Hosted integrations usually need three layers:

LayerWhat it means
Platform declarationsDeclare the capabilities your app may request, such as camera, location, microphone, or photo/media access.
Runtime requestsAsk the borrower for permission at the moment the journey needs it.
WebView or browser-surface handlingForward web permission requests from Hosted or lender pages to the native permission model, then grant or deny safely.

The third layer is commonly missed. A web page inside your app cannot always access camera, location, microphone, or file upload unless the parent app handles the request.

  • Do not request every permission at app launch.
  • Explain why the permission is needed before asking.
  • Request the permission close to the step that needs it.
  • Grant web permissions only for trusted Hosted and lender domains.
  • Deny permission requests from unknown or untrusted domains.
  • Provide a clear retry path when the borrower denies permission.
  • Provide an app-settings path when the borrower has permanently denied permission.

Capability Guide

CapabilityWhy it may be neededApp responsibility
LocationAddress verification, eligibility, fraud checks, or lender policy checks.Declare foreground location access, check whether location services are enabled, request while-in-use permission, and handle approximate location where applicable.
CameraSelfie capture, document capture, KYC, or video KYC.Declare camera access, request it in context, and grant WebView camera requests only for trusted journey or lender pages.
MicrophoneVideo KYC or audio-enabled verification.Declare microphone access only if required, request it in context, and grant it only to trusted pages.
File or media uploadDocuments, photos, statements, or lender-required proofs.Use system pickers or scoped media/file access where possible. Avoid broad storage access unless there is a separately approved need.

Platform Declarations

At app build time, declare only the permissions your app may need.

For Android apps, this usually means declaring the relevant permissions in the app manifest, such as:

  • internet access
  • foreground location
  • camera
  • microphone only when audio/video verification is required

Avoid broad or background permissions unless your product has a clear, approved need.

For iOS apps, this usually means adding user-facing privacy strings for:

  • location while in use
  • camera
  • microphone only when audio/video verification is required
  • photo library or media selection when your app accesses the user’s media library

Write permission text that a borrower can understand. The text should explain that the permission is used for lending journey verification steps, not for unrelated app behavior.

Runtime Permission Flow

Use this borrower flow:

Borrower reaches a verification step
|
v
App explains why the permission is needed
|
v
App requests the permission
|
+--> granted:
| continue the Hosted or lender step
|
+--> denied:
| show a retry or alternate path
|
+--> permanently denied:
explain how to enable from app settings

Suggested borrower-facing explanation:

To continue this lending journey, a lender may ask for camera, location, or document upload access. These permissions are used only for verification steps such as KYC, e-mandate, e-sign, and document collection.

Suggested denial message:

This verification step needs permission to continue. You can grant access now or return later after enabling it in app settings.

WebView Permission Handling

When Hosted or a lender page runs inside a WebView or embedded browser surface, the app must handle web permission requests.

Your app should:

  • enable JavaScript for Hosted and lender pages
  • enable DOM storage
  • support cookies and session storage
  • handle camera and microphone requests from trusted pages
  • handle location requests from trusted pages
  • handle file inputs and document picker requests
  • deny requests from untrusted pages
  • show a borrower-friendly error when a permission cannot be granted

Do not grant WebView permissions globally. Check the requesting origin before granting access.

Trusted Domain Policy

Maintain a list of trusted Hosted and lender origins that are allowed to request device capabilities.

Recommended behavior:

  • allow only HTTPS origins
  • include your approved Hosted domains
  • include lender domains provided for your integration
  • avoid broad wildcard matching unless your security team has approved it
  • deny permission requests from unknown origins
  • log denied requests with the URL host, requested resource, and journey context

If lender domains are dynamic, load them from a trusted configuration source rather than hardcoding random URLs in app code.

File Upload Guidance

“File upload permission” is not usually a single permission in the same way as camera or location.

Recommended behavior:

  • use system file, photo, or document pickers
  • allow the borrower to select only the files they want to share
  • avoid broad storage permissions by default
  • validate file type and file size before upload
  • handle borrower cancellation without showing a scary error
  • do not log raw document contents

Common accepted file types depend on lender requirements, but many lending journeys use formats such as PDF, JPG, JPEG, and PNG.

Permission Failure Handling

FailureBorrower experienceWhat to log
Location services disabledAsk the borrower to turn on location services to continue the verification step.Step, journey/application context, platform, service disabled.
Location deniedExplain that location is needed for this lender verification step.Permission status and step.
Approximate location onlyContinue if allowed; otherwise explain that precise location may be required.Accuracy level and step.
Camera deniedExplain that camera access is needed for selfie, document capture, or KYC.Permission status and step.
Microphone deniedExplain that microphone access is needed only for audio/video verification.Permission status and step.
File picker cancelledReturn to the upload screen without treating it as a system error.Borrower cancelled, step.
Unsupported file typeAsk the borrower to choose a supported format.File extension and size.
File too largeAsk the borrower to upload a smaller file.File size and configured limit.
Web request from untrusted domainDeny the permission and keep the journey safe.URL host, requested resource, deny decision.
Lender page fails after permission grantShow retry or support path.URL host, step, WebView error code or failure reason.

Testing Checklist

Test on real devices before production launch.

General

  • fresh install permission prompts appear in context
  • permissions are not requested unnecessarily at app launch
  • denial states show clear recovery copy
  • permanent denial states show an app-settings path
  • app logs are useful but do not contain sensitive borrower data or full lender URLs

Location

  • location service disabled
  • location permission denied
  • location permission granted
  • approximate location granted, where applicable
  • precise location granted, where applicable

Camera And Microphone

  • camera grant and denial
  • video KYC or audio-enabled step if microphone is required
  • camera request from Hosted page
  • camera request from lender page
  • permission request from untrusted page is denied

File Upload

  • upload a supported PDF
  • upload a supported image
  • cancel file selection
  • upload unsupported file type
  • upload oversized file
  • return to the app after the system picker or camera flow

WebView And Bridge

  • Hosted loads with JavaScript and storage enabled
  • lender page can request required permissions inside the app
  • lender popups or child surfaces can open when needed
  • borrower can return from the lender page to Hosted
  • Hosted continues from the correct journey state after return

Launch Checklist

Before enabling Hosted Experience for mobile borrowers, confirm:

  • required platform permissions are declared
  • permission prompts use borrower-friendly wording
  • runtime requests happen in context
  • WebView or browser-surface permission requests are handled
  • trusted origin policy is configured
  • file upload uses scoped picker behavior where possible
  • camera, location, microphone, and file upload failures have clear UI states
  • the mobile app bridge is implemented for lender-owned external steps