> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# API de firma electrónica: firma documentos tras el KYC

> Didit permite que la persona verificada o los representantes de una empresa firmen PDF y Word dentro del flujo de verificación con firma electrónica avanzada.

La firma electrónica de Didit permite que la persona que acabas de verificar firme tus documentos en el mismo flujo. Recorre cada documento, añade su firma, sus iniciales y los datos que pidas, y confirma con un código de un solo uso enviado al correo electrónico o al teléfono que verificó antes. Didit devuelve cada documento firmado con una firma electrónica avanzada (AES), además de un PDF de evidencias que vincula la firma con la identidad verificada.Funciona con la verificación de usuarios (KYC), donde firma la persona verificada, y con la verificación de empresas (KYB), donde firman en nombre de la empresa sus representantes legales o personas clave.

Prompt de integración de la firma electrónica
        Copy prompt to clipboard



      
      

\<pre>

\`Goal:
Add Didit Electronic Signature to a verification workflow: the verified person (KYC) or a company's representatives (KYB) sign PDF or Word documents inside the Didit flow, and your backend receives the signed PDFs and the evidence.

Delivery mode:
Electronic Signature is a workflow step (feature SIGNATURE). There is no standalone signing API: the signer signs inside the hosted Didit flow, the Web SDK or a native SDK.

Prerequisites in the workflow:
\- KYC: an ID Verification step before the signature step (the signer's identity must be Approved), plus Email Verification (email codes, the default) or Phone Verification (SMS codes) so the code goes to a verified contact. If the workflow has Liveness, it must be Approved too.
\- KYB: a Key People step whose people complete their own KYC with the same prerequisites. signature_signer "legal_representative" picks the key people with the role representative or authorized_signatory; "key_people" picks every eligible key person (1 to 20 signers).

Steps:
1\. Add the Electronic Signature step to the workflow in the Business Console (or POST /v3/workflows/ with {"feature": "SIGNATURE", "config": {...}}). Upload the documents in the console, or set signature_documents_source to "session" (or "both") to send them per session.
2\. Optional: place fields on each document: signature, initials, full_name, date_signed, text, checkbox, email and read-only data. Workflow documents get their fields in the console's template editor. Session documents carry them in sign.documents[].fields, placed by page and position or by anchor text. Every field has a key; a field with prefill "api.<key>" takes its value from sign.field_values.
3\. Create a session. For per-session documents, send sign.documents with base64 content:

curl -X POST 'https://verification.didit.me/v3/session/' \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"workflow_id": "YOUR_WORKFLOW_ID",
"vendor_data": "user-1234",
"sign": {
  "documents": [
    \{
      "title": "Account agreement",
      "file_name": "agreement.pdf",
      "content_base64": "<base64 of the PDF>",
      "fields": [
        \{ "key": "signature", "type": "signature", "page": 3, "x": 0.09, "y": 0.62, "width": 0.36, "height": 0.085 },
        \{ "key": "credit_limit", "type": "data", "page": 1, "x": 0.34, "y": 0.31, "width": 0.3, "height": 0.03, "prefill": "api.credit_limit" }
      ]
    }
  ],
  "field_values": { "credit_limit": "3,000 EUR" }
}
}'

4\. Send the user to session.url (or open it with the Web or native SDK). Documents with fields need a native SDK release that supports fields; the hosted page and the Web SDK always do.
5\. Wait for the status.updated webhook, then GET /v3/session/{session_id}/decision/.

Decision surface:
signatures[] (one item per signer and signature step). Read:
\- status: the signing stage (intro, review, code, signing, signed, declined).
\- verdict: Not Finished | Approved | In Review | Declined.
\- level ("aes"), format ("pades"), profile ("PAdES-B-LT" once signed).
\- signer, identity_used, confirmation, certificate, timestamp, adopted_signature, electronic_signature_consent_at.
\- documents[]: mode ("fields" or "read_and_agree"), sha256_original, sha256_signed, status, signed_file (download path), source_format, conversion, fields[] (key, type, value, display_value, value_source, filled_at, image_url).
\- evidence_file (download path), warnings[] ({code, node_id}).

Downloads (x-api-key works):
\- GET /v3/session/{session_id}/signatures/{node_id}/documents/{document_id}/file/ -> signed PDF
\- GET /v3/session/{session_id}/signatures/{node_id}/evidence/?signature_id={id} -> evidence PDF
\- GET /v3/session/{session_id}/signatures/{node_id}/fields/{field_id}/image/ -> applied signature or initials (PNG); use the image_url of the field
\- POST /v3/session/{session_id}/signatures/{node_id}/validate/ -> re-checks the stored signatures

Warnings:
SIGNATURE_DECLINED (default REVIEW), SIGNATURE_OTP_FAILED, SIGNATURE_NAME_MISMATCH, SIGNATURE_IDENTITY_NOT_VERIFIED, SIGNATURE_DOCUMENT_CHANGED (default DECLINE), SIGNATURE_FIELD_DATA_MISSING (default REVIEW). Each maps to a signature_*_action setting.

Rules:
\- Level: "aes" only. "qes" is coming soon and saving it returns 400 qes_provider_not_configured.
\- PDF: up to 20 MB and 100 pages each, no password, scripts or attachments. Up to 20 documents and 50 MB per signer.
\- Word: .docx only (.doc, .docm, .odt and .rtf are refused with unsupported_type), up to 20 MB, converted to PDF while the upload or create-session request runs. Fields refer to the converted pages. Macros, tracked changes, external links and embedded objects are refused with signature_document_not_supported; a file that can't be converted returns signature_document_conversion_failed. Both carry a reason.
\- Fields: key matches ^[a-z][a-z0-9_]{0,63}$ and is unique in its document; role defaults to the step's signer; up to 200 fields per document and 500 per signer. Every role with fields on a document needs a signature or initials field. There is no date picker type: use text.
\- Treat a null certificate, timestamp or signed_file as "not signed". Never show success until status is "signed".

See also:
\- /core-technology/electronic-signature/report-electronic-signature
\- /core-technology/electronic-signature/warnings-electronic-signature
\- /management-api/workflows/feature-configs#electronic-signature`

\</pre>



      
      

Paste into

## Niveles de firma| Nivel | Disponibilidad | Qué es |
| - | - | - |
| **AES**, firma electrónica avanzada | Disponible | Cada documento se firma en PAdES, el formato de firma de PDF, con un perfil de validación a largo plazo (`PAdES-B-LT`): la firma incluye un sello de tiempo de confianza y los datos de revocación necesarios para validarla más adelante. Está vinculada de forma única al firmante mediante su identidad verificada y el código de un solo uso que confirmó, y cualquier cambio en el documento tras la firma la invalida. |
| **QES**, firma electrónica cualificada | Próximamente | Se firma con un certificado cualificado emitido a nombre del firmante. La consola muestra la opción como **Próximamente**, y guardar `signature_level: "qes"` mediante la API devuelve `400` con `qes_provider_not_configured`. |AES firma solo en PAdES. Los valores `xades` y `cades` de `signature_format` se rechazan para AES con `signature_format_not_supported`.## Cómo funciona**1. El flujo verifica primero al firmante**El paso de firma se ejecuta después de los pasos que establecen quién firma: la verificación de identidad y la verificación de correo electrónico o de teléfono para el contacto al que se envía el código. Consulta [Antes de empezar](#antes-de-empezar).**2. Didit prepara los documentos**Cuando el firmante llega al paso, Didit copia los documentos y sus campos a la sesión y registra el SHA-256 de cada documento. Los cambios posteriores en el flujo no pueden alterar lo que ve este firmante.**3. El firmante recorre cada documento**En un documento con campos, se guía al firmante de campo en campo. Adopta una firma una sola vez y se aplica a todos los campos de firma e iniciales, y rellena los campos de texto y de casilla. Los valores que Didit toma de la identidad verificada, de la sesión o de tu sistema ya están en la página. En un documento sin campos, lo lee y lo acepta.**4. El firmante confirma con un código**Cuando algún documento tiene campos, el firmante acepta primero firmar los documentos electrónicamente. Didit envía entonces un código de seis dígitos al correo electrónico o al teléfono que verificó antes en la sesión. Al introducirlo, se autoriza la firma de todos los documentos del paso.**5. Didit firma y sella**Didit rellena la fecha de firma, estampa el valor de cada campo en cada PDF, añade la página de evidencias y después aplica la firma PAdES y el sello de tiempo, de modo que la firma cubre todo lo que hay en la página.**6. Recibes los resultados**La decisión y los webhooks de la sesión incluyen `signatures[]` con el firmante, la confirmación, el certificado, el sello de tiempo, los hashes de cada documento y el valor de cada campo. Descargas los PDF firmados y el PDF de evidencias, y Didit puede enviar por correo electrónico una copia al firmante.## Antes de empezarEl firmante debe estar verificado antes de poder firmar. Didit toma su nombre y su contacto de los registros verificados de la propia sesión, nunca de lo que tú o el firmante escriban.**Para la verificación de usuarios (KYC)**, coloca estos pasos antes de la firma electrónica en el flujo:- **Verificación de identidad**, aprobada, con un nombre legible. Sin ella, el paso registra `SIGNATURE_IDENTITY_NOT_VERIFIED`.
- **Verificación de correo electrónico** cuando el código se envía por correo (el valor predeterminado), o **Verificación de teléfono** cuando se envía por SMS. El código solo se envía a un contacto verificado en la misma sesión.
- Si el flujo también tiene **prueba de vida**, debe estar aprobada.Para enviar por correo electrónico al firmante una copia de los documentos firmados, la sesión también necesita un correo electrónico verificado, incluso cuando el código se envía por SMS.**Para la verificación de empresas (KYB)**, los firmantes son las personas clave de la empresa, cada una con su propio KYC aprobado:| `signature_signer` | Quién firma |
| - | - |
| `legal_representative` | Cada persona clave con el rol `representative` o `authorized_signatory` |
| `key_people` | Cada persona clave individual con una sesión KYC |Un paso KYB tiene entre 1 y 20 firmantes, y cada uno necesita un KYC aprobado en el momento de firmar. Cada uno firma su propia copia de los documentos y confirma con un código enviado al contacto verificado en su propia sesión KYC. El nombre declarado de la persona clave debe coincidir con su nombre verificado, sin distinguir mayúsculas ni espacios, o el paso registra `SIGNATURE_NAME_MISMATCH`. El paso termina cuando todos los firmantes han firmado o rechazado.## Documentos### De dónde proceden los documentos`signature_documents_source` define de dónde obtiene un paso sus documentos:| Valor | Documentos |
| - | - |
| `workflow` (predeterminado) | Los documentos que subiste al flujo en la consola. Todas las sesiones firman los mismos. |
| `session` | Los documentos que envías en `sign.documents` cuando [creas la sesión](https://docs.didit.me/sessions-api/create-session.md#electronic-signature-documents). Cada sesión firma los suyos. |
| `both` | Primero los documentos del flujo y después los de la sesión. |Los documentos por sesión son la forma de hacer que una persona firme un contrato con su nombre, importe o condiciones ya rellenados por tu sistema.### Archivos admitidos| | Límite |
| - | - |
| PDF | Hasta 20 MB y 100 páginas cada uno. Sin contraseña, scripts ni archivos adjuntos. |
| Word (`.docx`) | Hasta 20 MB. Se convierte a PDF cuando lo subes o creas la sesión, y el PDF convertido tiene los mismos límites que un PDF. Los archivos `.doc`, `.docm`, `.odt` y `.rtf` se rechazan con `unsupported_type`. |
| Por firmante | Hasta 20 documentos y 50 MB en total. |Cuando subes un documento de Word, Didit lo convierte a PDF mientras se realiza la subida, en un máximo de 60 segundos. Las páginas convertidas son las que el firmante ve y firma, así que revísalas antes de colocar campos: los saltos de línea pueden diferir ligeramente de Word. El archivo de Word y su PDF pertenecen al mismo documento y se eliminan con él. El PDF de evidencias registra la conversión y el SHA-256 de ambos archivos.Didit rechaza un archivo de Word con `signature_document_not_supported` y un `reason` cuando lo que se firmaría es ambiguo: tiene macros (`macros`), cambios con control de cambios sin aceptar (`tracked_changes`), enlaces a contenido externo (`external_links`) u objetos incrustados (`embedded_objects`). Acepta o rechaza los cambios con control de cambios antes de subirlo, para que el PDF muestre el texto que acordaste.Un archivo que no se puede convertir se rechaza con `signature_document_conversion_failed` y uno de estos motivos:| `reason` | Qué falló |
| - | - |
| `docx_password_protected` | El archivo tiene contraseña. Quítala y vuelve a subirlo. |
| `docx_unreadable` | El archivo no es un documento de Word legible. |
| `docx_too_many_pages` | El PDF convertido tiene más de 100 páginas. |
| `docx_too_large` | El archivo es demasiado grande para convertirlo. |
| `conversion_timeout` | La conversión tardó demasiado. Inténtalo de nuevo o sube el documento como PDF. |### Campos en el documentoLos campos convierten un documento en una plantilla que rellena el firmante, igual que prepararías un sobre en una herramienta de firma de escritorio. Un documento sin campos mantiene el flujo más sencillo: el firmante lo lee y lo acepta.| Tipo | Qué hace el firmante | Valor |
| - | - | - |
| `signature` | La toca para aplicar su firma adoptada. El primer campo de firma o de iniciales abre el paso en el que la adopta. | `true` una vez aplicada |
| `initials` | La toca para aplicar sus iniciales adoptadas. | `true` una vez aplicadas |
| `text` | Escribe un valor, comprobado con la [validación](#validación) del campo. Puede estar rellenado previamente. | Cadena |
| `checkbox` | La marca o la desmarca. Una casilla obligatoria debe estar marcada. | Booleano |
| `email` | Nada cuando la sesión tiene un correo electrónico verificado, que lo rellena en solo lectura. De lo contrario, lo escribe. | Cadena |
| `full_name` | Nada: Didit rellena el nombre verificado, en solo lectura. | Cadena |
| `date_signed` | Nada: Didit rellena la fecha en la que se firman los documentos. | Cadena |
| `data` | Nada: Didit rellena en solo lectura un valor de la identidad verificada, de la sesión o de tu sistema. Define su origen en `prefill`. | Cadena |En esta versión no hay un selector de fecha. Usa un campo `text` para una fecha que introduzca el firmante.Un campo tiene estas propiedades:| Propiedad | Reglas |
| - | - |
| `id` | Lo define Didit. |
| `key` | Nombra el campo en los resultados y en `sign.field_values`. Letras minúsculas, dígitos y guiones bajos, empezando por una letra, hasta 64 caracteres (`^[a-z][a-z0-9_]{0,63}$`), y único dentro del documento. |
| `type` | Uno de los tipos anteriores. |
| `role` | Quién lo rellena, con los valores de `signature_signer`: `verified_person`, `legal_representative` o `key_people`. En un documento de sesión, por defecto es el firmante del paso. |
| `page` | De 1 al número de páginas del documento. En un documento de Word, una página del PDF convertido. |
| `x`, `y`, `width`, `height` | Fracciones de la página tal como se muestra (de `0` a `1`), medidas desde la esquina superior izquierda y redondeadas a 4 decimales. El campo debe caber dentro de la página. Mide al menos `0.02` de ancho y `0.012` de alto, y una firma al menos `0.12` por `0.035`. |
| `required` | `signature` e `initials` son obligatorios salvo que establezcas `false`. `full_name`, `date_signed` y `data` siempre son obligatorios. |
| `label` | De 1 a 80 caracteres, se muestra al firmante y en los resultados. |
| `placeholder` | Solo `text` y `email`. Hasta 80 caracteres. |
| `position` | El orden en el que se guía al firmante, desde `0`. Didit lo establece según dónde está el campo: por página, luego de arriba abajo y después de izquierda a derecha. |
| `validation` | Solo `text`. Consulta [Validación](#validación). |
| `prefill` | De dónde procede el valor. Consulta [Valores rellenados previamente](#valores-rellenados-previamente). |
| `editable_when_prefilled` | Solo `text` y `email`: el firmante puede cambiar un valor rellenado previamente. Por defecto, `false`. |
| `checked_by_default` | Solo `checkbox`: la casilla empieza marcada. |
| `date_format` | Solo `date_signed`: `DD/MM/YYYY` (predeterminado), `MM/DD/YYYY`, `YYYY-MM-DD` o `D MMMM YYYY`. |```json theme={null}
{
  "id": "6a2f1c0e-4d8b-4f5e-9a51-0c7b2e9d3f10",
  "key": "occupation",
  "type": "text",
  "role": "verified_person",
  "page": 1,
  "x": 0.34,
  "y": 0.4618,
  "width": 0.57,
  "height": 0.0325,
  "required": true,
  "label": "Occupation",
  "placeholder": "For example, nurse",
  "position": 5,
  "validation": { "kind": "any", "min_length": 0, "max_length": 80, "pattern": null, "message": null },
  "prefill": null,
  "editable_when_prefilled": false,
  "checked_by_default": false,
  "date_format": null
}
```Un documento admite hasta 200 campos, y un firmante hasta 500 entre todos sus documentos.Un paso rellena y estampa únicamente los campos de su propio firmante. Un documento solo puede llevar campos de varios roles cuando varios pasos de firma del flujo lo usan: cada paso rellena los campos de su propio rol y deja los demás vacíos en su copia. Un campo para un rol que ningún paso de firma del flujo usa se rechaza con `role_not_used`. Todo rol que tenga campos en un documento necesita al menos un campo `signature` o `initials` en él, o la versión del flujo no se puede publicar (`signature_field_missing`).#### Validación`validation` se aplica a los campos `text`:```json theme={null}
{ "kind": "any", "min_length": 0, "max_length": 80, "pattern": null, "message": null }
```- `kind`: `any`; `letters` (letras de cualquier alfabeto, espacios, guiones y apóstrofos); `number` (dígitos con un separador decimal opcional); `email`; o `pattern`.
- `min_length`: de `0` hasta `max_length`.
- `max_length`: de `1` a `500`. Por defecto, `120`.
- `pattern`: obligatorio con `kind: "pattern"`. Una expresión regular de hasta 200 caracteres que debe coincidir con todo el valor. No se admiten lookarounds ni referencias inversas.
- `message`: hasta 120 caracteres, se muestra en lugar del error predeterminado.La vista previa de la consola, el flujo de firma y la API aplican las mismas reglas.#### Valores rellenados previamente`prefill` indica el origen del valor de un campo:| `prefill` | Valor |
| - | - |
| `identity.full_name`, `identity.first_name`, `identity.last_name` | El nombre tal como figura en el documento de identidad verificado del firmante. |
| `identity.date_of_birth` | Del documento de identidad verificado, como `DD/MM/YYYY`. |
| `identity.nationality`, `identity.document_number`, `identity.document_type`, `identity.issuing_country` | Del documento de identidad verificado. |
| `identity.address` | La dirección con formato del documento de identidad verificado, o de una prueba de domicilio de la misma sesión. |
| `contact.email`, `contact.phone` | El correo electrónico o el teléfono verificados del firmante. |
| `company.name`, `company.registration_number`, `company.address`, `company.country` | La empresa verificada, para KYB. |
| `session.vendor_data` | El `vendor_data` de la sesión. |
| `metadata.<key>` | El valor de `<key>` en el `metadata` de la sesión, como cadena. |
| `api.<key>` | El valor de `<key>` en `sign.field_values`, enviado cuando [creas la sesión](https://docs.didit.me/sessions-api/create-session.md#field-values). |Un campo `data` debe tener un `prefill`. Un campo `full_name` usa siempre `identity.full_name` y un campo `email` usa `contact.email`, y un campo `text` también puede tenerlo. Los valores de los campos `data`, `full_name` y `email` verificado quedan fijados cuando el firmante empieza a firmar: los cambios posteriores en la sesión no los modifican. Un campo `text` o `email` rellenado previamente es de solo lectura salvo que establezcas `editable_when_prefilled`.Cuando el origen de un campo obligatorio no tiene valor en ese momento, por ejemplo una sesión sin dirección, el campo no se muestra vacío. El paso genera [`SIGNATURE_FIELD_DATA_MISSING`](https://docs.didit.me/core-technology/electronic-signature/warnings-electronic-signature) y aplica `signature_field_data_missing_action` (por defecto `REVIEW`). Con `NO_ACTION`, el firmante aún puede firmar y el campo queda vacío.## Configúralo en la consola1) Ve a **Flujos de trabajo**, abre un flujo y añade el paso **Firma electrónica** después de los pasos que verifican al firmante.
2) En **Documentos**, selecciona **Subir** para añadir archivos PDF o Word, y arrástralos al orden en el que los ve el firmante. Los archivos de Word se convierten a PDF: revisa las páginas convertidas antes de colocar campos. **Reemplazar** cambia el archivo de un documento y conserva sus campos, excepto los de las páginas que el nuevo archivo ya no tiene.
3) En **Coloca campos en los documentos**, selecciona **Abrir el editor**. Arrastra un campo de la paleta a la página, o selecciónalo y haz clic donde va, y después muévelo y cambia su tamaño. Para cada campo, define **Quién lo rellena**, su etiqueta, si es **Obligatorio**, qué acepta, de dónde procede su valor y su **Clave en la API** (el `key` del campo). **Vista previa como firmante** muestra el documento tal como lo ve el firmante en un teléfono o en un escritorio. El editor guarda sobre la marcha (**Guardado en el borrador**) y enumera lo que debes corregir antes de seleccionar **Listo**.
4) Sin salir de **Documentos**, elige de dónde proceden los documentos: **Este flujo de trabajo**, **Cada sesión** o **Ambas**. Para documentos sin campos, elige si el firmante debe **Leer hasta el final antes de firmar** y define **Un consentimiento por documento**.
5) En **Firma**, elige el **Firmante**, el **Nivel** (**Avanzada (AES)**), el **Formato** y adónde se envía el código (**Código de un solo uso por**).
6) En **Rules**, define qué efecto tiene cada [advertencia](https://docs.didit.me/core-technology/electronic-signature/warnings-electronic-signature.md) sobre el veredicto.
7) En **Advanced**, elige si quieres **Enviar la copia firmada por correo electrónico** y **Añadir una página de evidencias**, y cuántos días sigue siendo válido el enlace de firma. También puedes añadir reglas de estado personalizadas.
8) Guarda el flujo.Para configurar el mismo paso mediante la API, consulta las [configuraciones de funciones del flujo](https://docs.didit.me/management-api/workflows/feature-configs.md#electronic-signature). Los documentos del flujo y sus campos se gestionan en la consola; mediante la API, envía los documentos y los campos por sesión.## La experiencia de firmaEl paso de firma se ejecuta en la página de verificación alojada, el [SDK web](https://docs.didit.me/es/integration/web-sdks/overview.md) y los [SDK nativos](https://docs.didit.me/es/integration/native-sdks/overview.md), tanto en escritorio como en teléfonos. No necesitas crear ninguna interfaz de firma.1) **Introducción.** El firmante ve los documentos que va a firmar.
2) **Cada documento, en orden.** En un documento con campos, se guía al firmante por sus campos en el orden de `position`. El primer campo de firma o de iniciales abre una hoja donde [adopta una firma](#adopción-de-una-firma). Los campos opcionales están marcados como **Opcional**. Los valores que Didit rellenó aparecen en la página con un candado y no son pasos. Al tocar un campo de la página, se salta a él. En un teléfono, se muestra un campo cada vez en un panel que permanece sobre el teclado. En una pantalla de al menos 1200 px de ancho, la página se sitúa junto a la lista de campos. Al terminar un documento con un campo obligatorio aún vacío, se muestra cuántos quedan y se salta al primero. Un documento sin campos se lee y se acepta, según lo configurado.
3) **Revisión.** El firmante ve de nuevo los documentos y, cuando alguno tiene campos, acepta firmarlos electrónicamente.
4) **Código.** El firmante solicita su código. Es válido durante 5 minutos, se puede enviar uno nuevo pasados 60 segundos, y un firmante dispone de hasta 5 códigos y 3 intentos erróneos. Agotarlos registra `SIGNATURE_OTP_FAILED`.
5) **Firmado.** Tras firmar, el firmante puede descargar sus documentos firmados. Si lo activaste, Didit también le envía una copia por correo electrónico.
6) **Rechazo.** El firmante puede rechazar en lugar de firmar. Esto registra `SIGNATURE_DECLINED`. Un rechazo se puede reabrir mientras el enlace de firma sea válido, de modo que el firmante aún puede firmar si cambia de opinión.El flujo informa al firmante cuando su código ha caducado, un documento ha cambiado, la firma ha fallado o el enlace de firma ha caducado.El enlace de firma sigue siendo válido durante `signature_link_validity_days` (de 1 a 30, por defecto 7), contados desde que se creó la sesión. La sesión permanece abierta al menos ese tiempo.> [!NOTE]
>
> Los SDK nativos muestran el paso de firma a partir de la versión que lo añade, que se indicará en la [visión general de los SDK nativos](https://docs.didit.me/es/integration/native-sdks/overview.md) cuando se publique. Los documentos con campos necesitan una versión que admita campos: una versión anterior no puede mostrarlos y el paso muestra un error. Los documentos sin campos funcionan en todas las versiones con el paso de firma. Hasta que tu app ejecute una versión compatible con lo que usa tu flujo, dirige a las personas a la página alojada o al SDK web.### Adopción de una firmaEl firmante adopta su firma y sus iniciales una sola vez, en una misma hoja, la primera vez que un documento pide cualquiera de las dos:- **Escrita**: su nombre verificado en un estilo de caligrafía que elige, marcado como **From your ID**. No puede escribir un nombre distinto. Las iniciales escritas son las primeras letras de ese nombre.
- **Dibujada**: dibujada con un dedo o con un ratón, tanto la firma como las iniciales.Cada campo de firma o de iniciales posterior se aplica con un toque, y al tocar uno ya aplicado se quita de nuevo.## ResultadosEl resultado de cada firmante es un elemento de `signatures[]` en la [decisión de la sesión](https://docs.didit.me/sessions-api/retrieve-session.md) y en el `decision` de los [webhooks de la sesión](https://docs.didit.me/integration/webhooks.md). No hay un webhook de firma independiente: el evento `status.updated` de la sesión te indica cuándo obtener la decisión.Recibes el PDF firmado de cada documento, un PDF de evidencias por cada firmante y el SHA-256 de cada archivo original y firmado, para poder demostrar más adelante que nada cambió. En los documentos con campos, también recibes el valor de cada campo, su origen y cuándo se rellenó, además de la firma adoptada y el momento en que el firmante aceptó firmar electrónicamente. Consulta el [informe de firma electrónica](https://docs.didit.me/core-technology/electronic-signature/report-electronic-signature.md) para ver cada campo, las descargas y cómo validar de nuevo una firma.En la consola, la pestaña **Firma** de la sesión muestra los documentos y después un bloque **Campos** con una vista previa de cada página, la firma y las iniciales adoptadas, y el valor, la hora y el origen de cada campo. El [informe en PDF](https://docs.didit.me/sessions-api/generate-pdf.md) incluye una sección de firma y una página **Electronic signature · fields** cuando los documentos tienen campos.## PreciosLa firma electrónica se cobra una vez por sesión firmada, sea cual sea el número de documentos, firmantes o pasos de firma que tenga. Una firma que se rechaza, falla o caduca no se cobra.## Eliminación de los datos de firmaCuando [eliminas una sesión](https://docs.didit.me/sessions-api/delete-session.md), sus datos de firma se eliminan con ella: los documentos enviados con la sesión y sus archivos originales de Word, las copias preparadas para cada firmante, los PDF firmados, los PDF de evidencias, las imágenes de la firma y las iniciales adoptadas, y el valor de cada campo. Sus enlaces de descarga dejan de funcionar. Lo mismo ocurre cuando una sesión se elimina al final de tu periodo de retención de datos. La eliminación no se puede deshacer, así que descarga antes todo lo que necesites conservar.- Los documentos firmados de una verificación de empresas pertenecen a la sesión de la empresa. Al eliminar esa sesión, se eliminan.
- Quitar un documento de un flujo lo elimina, con sus campos y su archivo original de Word. Un firmante que ya empezó a firmar conserva la copia que se le mostró, como parte de su sesión, hasta que elimines esa sesión. Quita documentos solo de flujos sin sesiones pendientes de firma.
- Una copia que Didit ya envió por correo electrónico al firmante está en su buzón y no se ve afectada.## Relacionado- [Informe de firma electrónica](https://docs.didit.me/core-technology/electronic-signature/report-electronic-signature.md): `signatures[]`, el PDF firmado, el PDF de evidencias y las descargas.
- [Advertencias de firma electrónica](https://docs.didit.me/core-technology/electronic-signature/warnings-electronic-signature.md): cada advertencia y la regla que la controla.
- [Crear sesión](https://docs.didit.me/sessions-api/create-session.md#electronic-signature-documents): envía documentos, campos y valores de campo por sesión.
- [Configuraciones de funciones del flujo](https://docs.didit.me/management-api/workflows/feature-configs.md#electronic-signature): cada ajuste del paso.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.