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:
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.
Recommended Permission Strategy
- 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
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:
Suggested borrower-facing explanation:
Suggested denial message:
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
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