# Express QES

Express QES (xQES) allows **non-account signers** to sign with a Qualified Electronic Signature in a single flow — identification and signing happen together, without needing a Skribble account or a pre-registered approval method.

## Requirements

- The business must have **Express QES enabled**
- The signature request quality must be **QES**
- The signer must be a **non-account signer** (using `signer_identity_data`, not `account_email`)

:::info

If `account_email` is provided and a registered user with that email exists, Express QES is not used — the signer follows the standard QES flow instead.

:::

## Creating an Express QES Signature Request

The request creation is the same as a standard signature request. The key difference is in the `signer_identity_data` fields:

```json title="POST /v2/signature-requests"
{
  "title": "Express QES test",
  "message": "Please sign this document.",
  "file_url": "https://your-app.com/documents/contract.pdf",
  "quality": "QES",
  "legislation": "ZERTES",
  "signatures": [
    {
      "notify": true,
      "signer_identity_data": {
        "email_address": "signer@example.com",
        "identification_require_evidence": true
      }
    }
  ]
}
```

### signer_identity_data Fields

| Field | Required | Description |
|-------|----------|-------------|
| `email_address` | No | Optional for Express QES |
| `mobile` | No | If the mobile number is already identified and ready for QES signing, no identification is initiated and normal signing is triggered. Otherwise, the Express QES flow starts regardless of the number provided. |
| `identification_require_evidence` | No | If `true`, a new identification process is started even if the signer is already identified, producing fresh evidence records. If the business has not enabled Express QES, the request is rejected. |

### Response

When the signer opens the `signing_url`, they are guided through an identification process. Depending on the method used, the flow proceeds differently:

- **With NFC** — identification is verified automatically and the signer proceeds directly to signing.
- **Without NFC** — a manual review by back-office agents is required. During office hours (8:00–22:00 CET), this typically takes no longer than **3 minutes**. Outside office hours and on weekends, the review can take up to **72 hours**. The signer does not need to wait — they are notified automatically once the review is complete and can then sign.

Use [callbacks](/sign-api-callbacks) to handle status changes rather than polling for completion.

After the signer completes identification and signs, the response includes an `evidence_id` in the signer's `signer_identity_data`:

```json
{
  "id": "sr-abc-123",
  "status_overall": "SIGNED",
  "signatures": [
    {
      "sid": "sig-def-456",
      "signer_identity_data": {
        "email_address": "signer@example.com",
        "identification_require_evidence": true,
        "evidence_id": "123"
      },
      "status_code": "SIGNED",
      "signing_url": "https://my.skribble.com/view/sr-abc-123/..."
    }
  ]
}
```

## Identification Evidence

After the signer completes the Express QES identification, you can retrieve the evidence records using the `evidence_id` from the signature request response. This is useful for Anti-Money Laundering (AML) compliance and Know Your Customer (KYC) processes where you need to store or verify the signer's identification data.

:::info

The business must have the **Express QES identification evidence** setting enabled, and the identification process must be completed before evidence can be retrieved.

:::

### Retrieve Evidence as JSON

```bash
GET /v2/signature-requests/{sr_id}/identification_evidence/{evidence_id}
```

Returns the full identification evidence data as JSON.

### Download Evidence Files

```bash
GET /v2/signature-requests/{sr_id}/identification_evidence/{evidence_id}/files
```

Downloads all files related to the identification evidence as a ZIP archive.
