---
id: ext-document-signing
title: "Document Signing"
description: "Sign PDF documents using a Qualified Electronic Signature from an EUDI Wallet"
hide_title: false
sidebar_label: Document Signing
keywords: [document signing, PDF signing, QESAC, qualified electronic signature, EUDI Wallet, Organisation Wallet, European Business Wallet, eIDAS, digital signature]
slug: /extensions/document-signing
---

> **Build this with an AI coding agent.** Install the iGrant.io Agent Skills, then ask your agent to build the integration:
>
> ```bash
> npx skills add L3-iGrant/skills
> ```


import NoteBox from '@site/src/components/NoteBox';
import ApiEndpoints from '@site/src/components/ApiEndpoint';

The Document Signing extension allows users to securely sign PDF documents using a Qualified Electronic Signature Access Credential (QESAC) presented from their EUDI Wallet.

## How it works

1. The organisation enables the Document Signing extension from the dashboard.
2. An administrator uploads PDF documents for signing and reviews the QES provider configuration.
3. When a user needs to sign a document, a signing request is triggered using the configured QESAC presentation definition.
4. The user presents their QES Access Credential from their EUDI Wallet.
5. The system coordinates with the QES provider to apply a qualified electronic signature to the document.

## Configuration

### QES provider

The extension is pre-configured with a Qualified Electronic Signature provider:

| Field | Value |
|---|---|
| **Provider** | Intesi Group Cloud Signature |
| **Version** | v1.0.4.0 |
| **Region** | IT (Italy) |
| **CSC Compliance** | v1.0.4.0 |

### Document storage

Documents are stored using the default iGrant.io storage provider.

### Document management

Upload and manage PDF documents for signing from the dashboard.

**Upload requirements:**

| Constraint | Value |
|---|---|
| File type | PDF only |
| Maximum file size | 1 MB |
| Maximum pages | 1 (single page) |
| Maximum files | 10 |

**Document actions:**

- **Upload** - Select a PDF file that meets the requirements above
- **View** - Open the uploaded PDF
- **Copy** - Copy the raw JSON data for the document
- **Delete** - Remove the document (with confirmation). Re-upload is allowed after deletion.

### Integration

Once configured, the system uses a **QESAC Presentation Definition** to request the signing credential from the user's wallet. This presentation definition can be viewed from the extension configuration page.

**API endpoints:**

<ApiEndpoints endpoints={[
  { method: 'get', path: '/v3/config/extension/document-signing', description: 'Retrieve documents and configuration' },
  { method: 'post', path: '/v3/config/extension/document-signing/file/upload', description: 'Upload a PDF document' },
  { method: 'delete', path: '/v3/config/extension/document-signing/file/{fileId}', description: 'Delete a document' },
]} />

<NoteBox title="Caution:" variant="caution">
Disabling the Document Signing extension deletes all uploaded documents and configuration. This action is not reversible.
</NoteBox>
