Credential Presentation
Present a vehicle credential to a verifier by scanning the verifier's QR code.
This is the primary verifier-initiated flow supported by the Wallet SDK. At a high level, the verifier shows a QR code, the driver scans it in the wallet, reviews the request, and approves or denies the presentation.
Camera Permission Required
Credential presentation depends on camera access for QR scanning. Before
testing this flow, your host application must configure the required camera
permission entries in AndroidManifest.xml and Info.plist.
The Main Idea
The presentation flow is designed to let a verifier request a credential from the wallet in a standard QR-based experience.
At a high level:
- A verifier displays a QR code
- The driver scans the QR code in the wallet
- The SDK evaluates the request and prepares the presentation
- The driver reviews the request and gives consent
- The SDK returns the presentation result
Most Common Setup
If your application uses WalletHub, the presentation flow is usually handled
as part of the wallet experience.
High-level example:
import { VECUProvider, WalletHub } from '@vecu/wallet-react-native-sdk';
function App() {
return (
<VECUProvider
config={{
authToken,
deploymentStage: 'sandbox',
}}
>
<WalletScreen />
</VECUProvider>
);
}
function WalletScreen() {
return <WalletHub />;
}
In this setup, the host app still owns:
- authentication and token setup
- camera permission setup
- where the wallet screen appears in app navigation
The SDK owns the presentation flow once the user starts scanning and reviewing the request.
What The Driver Sees
During the presentation flow, the driver typically sees:
- a QR scanning step
- a review or consent step
- a success, denial, or failure result
If multiple credentials could satisfy the request, the SDK may also prompt the driver to choose the correct credential before confirming the presentation.
When To Use This Flow
Credential presentation is a good fit when:
- the verifier initiates the request
- the verifier can display a QR code
- the user and verifier are not relying on NFC or Bluetooth handoff
- your app wants a standards-based verification experience
Host App Requirements
Before using this flow, confirm your host app has:
- mounted
VECUProvider - a wallet screen that renders the SDK wallet experience
- camera permission configured in
AndroidManifest.xml - camera usage description configured in
Info.plist - any required QR-scanning dependency installed
See Permissions and Installation for the platform setup details.
If You Need More Custom Control
The SDK also exposes lower-level public hooks and components for teams that need more control over how the presentation flow is triggered or arranged inside a custom wallet experience.
Most external client teams should not start there. Begin with the built-in wallet experience first, then move to lower-level presentation components only if your application truly needs a more customized flow.
Credential Presentation vs. Credential Sharing
Credential presentation is verifier-initiated:
- verifier shows a QR code
- driver scans and approves the request
Credential sharing is wallet-initiated:
- wallet starts the transfer
- verifier receives the credential through a proximity-based or handoff flow
See Credential Sharing for the wallet-initiated flow.
Related Guidance
- Permissions for camera and host app setup requirements
- Installation for dependency and package setup
- Quick Start for the minimum wallet integration path
- Components for the default
VECUProviderandWalletHubusage pattern