The QES (Qualified Electronic Signature) module shows the user documents to sign, collects their consent, and captures a Qualified Electronic Signature (QES), the highest-assurance electronic signature under the EU eIDAS Regulation. A qualified certificate from a Qualified Trust Service Provider (QTSP) backs the signature, making it legally equivalent to a handwritten signature across EU member states.
For an overview of this module and how it works, see Qualified Electronic Signature.
How you use this module depends on your integration pattern. In Patterns 1 and 2, you add the module to a FlowConfig in code as shown on this page. In Pattern 3, you define your modules and configuration in Dashboard as a Flow or Workflow and reference it by ID with startFlow() or startWorkflow() as shown on Run Flows Configured in Dashboard.
Add QES
Add identity check modules before QES. This can include ID Scan and Selfie Scan.
Add the module with
addQES(qes).flowConfigBuilder.addQES(qes)flowConfigBuilder.addQES(qes);
Example
The example below builds a QES module that downloads the signed PDF, adds it to the flow, and listens for the result through onQESCompleted().
val qes = QES.Builder()
.setDownloadDocument(true)
.build()
val flowConfig = FlowConfig.Builder()
.addQES(qes)
.build()
val onboardingListener = object : OnboardingListener() {
override fun onQESCompleted(qesResult: QESResult) {
// QES step finished. Process the result.
}
}
IncodeWelcome.getInstance()
.startOnboarding(activityContext, sessionConfig, flowConfig, onboardingListener)
QES qes = new QES.Builder()
.setDownloadDocument(true)
.build();
FlowConfig flowConfig = new FlowConfig.Builder()
.addQES(qes)
.build();
IncodeWelcome.OnboardingListener onboardingListener = new IncodeWelcome.OnboardingListener() {
@Override
public void onQESCompleted(@NonNull QESResult qesResult) {
// QES step finished. Process the result.
}
};
IncodeWelcome.getInstance()
.startOnboarding(activityContext, sessionConfig, flowConfig, onboardingListener);
Configuration Options
Configure the module with QES.Builder. The table below lists the available option.
| Setting | Description |
|---|---|
setDownloadDocument(Boolean) |
If true, downloads signed PDFs and shows the Confirmed Signature Details screen at the end of the QES flow. Defaults to false. |
For the complete option set, see QES.Builder in API Reference.
Result
QES delivers a QESResult to the onQESCompleted(QESResult) callback on the OnboardingListener. Key fields include:
documentSigning:trueif the document was signed using a qualified electronic signature.resourcesNotFound:trueif the required signing resources could not be found.- Fields inherited from
BaseResult:resultCode: TheResultCodefor this result.error: WhenresultCodeisERROR, theThrowablethat caused it; otherwise,null.deviceStats: TheDeviceStatssnapshot of the device state when the result was produced.motionStatus: Device motion assessment during capture. One of the following:UNCLEAR: Motion could not be determined; the default.PASS: Device motion was within acceptable limits.FAIL: Excessive device motion was detected.
If the step fails, the error surfaces through OnboardingListener.onError(Throwable). This module does not define a module-specific exception subtype.
For all fields, see QESResult in API Reference.