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:

  1. A verifier displays a QR code
  2. The driver scans the QR code in the wallet
  3. The SDK evaluates the request and prepares the presentation
  4. The driver reviews the request and gives consent
  5. 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 VECUProvider and WalletHub usage pattern