> ## 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 Tanda Tangan Elektronik untuk Dokumen Setelah KYC

> Didit mendukung tanda tangan dokumen PDF & Word pada alur verifikasi bagi individu atau perwakilan bisnis, tingkat Sederhana atau Lanjutan (AES).

Tanda Tangan Elektronik memungkinkan seseorang menandatangani dokumen Anda dalam alur yang sama. Mereka memeriksa setiap dokumen, menambahkan tanda tangan, inisial, dan data apa pun yang Anda minta, serta, pada tingkat Lanjut (AES), mengonfirmasi dengan kode sekali pakai yang dikirimkan ke email atau telepon yang telah mereka verifikasi sebelumnya. Didit mengembalikan setiap dokumen yang telah ditandatangani, ditambah PDF bukti yang mencatat siapa yang menandatangani dan bagaimana caranya.Tanda Tangan Elektronik memiliki tiga tingkat. **Sederhana** adalah bawaan dan tidak memerlukan Verifikasi Identitas, email, atau telepon. **Tingkat lanjut (AES)** memerlukan Verifikasi Identitas yang disetujui serta email atau telepon yang terverifikasi, dan mengikat tanda tangan tersebut dengan identitas yang terverifikasi. **Berkualifikasi (QES)** adalah tambahan yang belum tersedia. Lihat [Tingkat tanda tangan](#tingkat-tanda-tangan).Fitur ini berfungsi untuk Verifikasi Pengguna (KYC), tempat orang yang terverifikasi menandatangani, dan untuk Verifikasi Bisnis (KYB), tempat perwakilan hukum atau pihak kunci perusahaan menandatangani atas namanya.

Prompt Integrasi Tanda Tangan Elektronik
        Salin prompt ke papan klip



      
      

\<pre>

\`Goal:
Add Didit E-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:
E-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 (Advanced (AES) level only; the default Simple level needs no earlier step and no code):
\- 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). For these KYB signers always set signature_level to "aes": "simple" is refused with signature_simple_requires_verified_person, so the workflow cannot be saved.

Steps:
1\. Add the E-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 ("simple" or "aes"), format ("pdf" for simple, "pades" for aes), profile ("PAdES-B-LT" once an aes step is signed, otherwise null).
\- 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). Each maps to a signature_*_action setting.

Rules:
\- Level: "simple" (default) or "aes". "qes" is an add-on that is not available yet and saving it returns 400 qes_not_available. While signature_availability.aes is false on the workflow, saving a new "aes" step returns 400 aes_not_available.
\- 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.
\- Never show success until status is "signed". That is the check at every level. For an aes signature a null certificate, timestamp or signed_file also means "not signed"; a signed simple signature has a signed_file but a null certificate and timestamp.

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

\</pre>



      
      

Tempel ke

## Tingkat tanda tangan| Tingkat | Persyaratan | Penjelasan |
| - | - | - |
| **Sederhana** | Bawaan. Tanpa Verifikasi Identitas, email, atau telepon | Orang tersebut menandatangani pada tautan sesi tanpa Verifikasi Identitas, email, telepon, atau kode. Jika sesi sudah memiliki nama yang terverifikasi, nama tersebut akan digunakan; jika tidak, mereka mengetik nama mereka, dan tanda tangan serta laporan menyatakan bahwa nama tersebut diketik dan tidak diverifikasi. Siapa pun yang memegang tautan sesi dapat menandatangani, jadi pilihlah Sederhana untuk perjanjian berisiko rendah; kontrak yang teregulasi atau bernilai tinggi harus menggunakan Tingkat lanjut (AES). File yang ditandatangani adalah PDF dengan halaman bukti dan tidak memuat tanda tangan digital, segel, atau stempel waktu. Didit menyimpan SHA-256 dari catatan dan setiap file yang ditandatangani, sehingga perubahan di kemudian hari dapat terdeteksi. |
| **Tingkat lanjut (AES)**, tanda tangan elektronik tingkat lanjut | Verifikasi Identitas yang disetujui dan email atau telepon yang terverifikasi dalam sesi yang sama | Setiap dokumen ditandatangani dalam PAdES, format tanda tangan PDF, dengan profil validasi jangka panjang (`PAdES-B-LT`): tanda tangan tersebut memuat stempel waktu RFC 3161 yang diterbitkan oleh Didit dan data pencabutan yang diperlukan untuk memvalidasinya nanti. Tanda tangan ini ditautkan secara unik ke penandatangan melalui identitas terverifikasi mereka dan kode sekali pakai yang mereka konfirmasi, dan setiap perubahan pada dokumen setelah penandatanganan akan membatalkannya. |
| **Berkualifikasi (QES)**, tanda tangan elektronik berkualifikasi | Tambahan, belum tersedia | Akan ditandatangani dengan sertifikat berkualifikasi yang diterbitkan untuk penandatangan. Konsol menampilkan opsi ini sebagai **Segera hadir**, dan menyimpan `signature_level: "qes"` melalui API akan mengembalikan `400` dengan `qes_not_available`. Opsi ini tidak pernah digantikan secara diam-diam oleh AES. |Pada tingkat lanjut (AES), tanda tangan hanya menggunakan PAdES. Nilai `signature_format` `xades` dan `cades` ditolak untuk AES dengan `signature_format_not_supported`. Periksa `signature_availability` pada alur kerja sebelum Anda menyimpan langkah AES: selama `aes` bernilai `false`, menyimpan langkah baru akan mengembalikan `400` dengan `aes_not_available`.## Cara kerjanya**1. Untuk Tingkat lanjut (AES), alur kerja memverifikasi penandatangan terlebih dahulu**Pada tingkat Lanjut (AES), langkah tanda tangan berjalan setelah langkah-langkah yang menetapkan siapa yang menandatangani: Verifikasi Identitas, serta Verifikasi Email atau Telepon untuk kontak yang dituju oleh kode tersebut. Lihat [Sebelum memulai](#sebelum-anda-mulai). Tingkat Sederhana tidak memerlukan langkah sebelumnya.**2. Didit menyiapkan dokumen**Saat penandatangan mencapai langkah ini, Didit menyalin dokumen dan kolomnya ke dalam sesi serta mencatat SHA-256 dari setiap dokumen. Perubahan pada alur kerja di kemudian hari tidak dapat mengubah apa yang dilihat oleh penandatangan ini.**3. Penandatangan memeriksa setiap dokumen**Untuk dokumen yang memiliki kolom, penandatangan dipandu dari satu kolom ke kolom lainnya. Mereka membuat tanda tangan satu kali dan tanda tangan tersebut diterapkan ke setiap kolom tanda tangan dan inisial, serta mereka mengisi kolom teks dan kotak centang. Nilai yang diambil Didit dari identitas terverifikasi, sesi, atau sistem Anda sudah ada di halaman tersebut. Untuk dokumen tanpa kolom, mereka membaca dan menyetujuinya.**4. Untuk Tingkat lanjut (AES), penandatangan mengonfirmasi dengan kode**Jika ada dokumen yang memiliki kolom, penandatangan terlebih dahulu setuju untuk menandatangani dokumen secara elektronik. Pada tingkat Lanjut (AES), Didit kemudian mengirimkan kode enam digit ke email atau telepon yang telah mereka verifikasi sebelumnya dalam sesi, dan tindakan memasukkan kode tersebut mengotorisasi tanda tangan pada setiap dokumen dalam langkah tersebut. Pada tingkat Sederhana, tidak ada kode: memberikan persetujuan adalah hal yang mengotorisasi tanda tangan.**5. Didit menandatangani dan menyegel**Didit mengisi tanggal penandatanganan, mencantumkan setiap nilai kolom dalam setiap PDF, dan menambahkan halaman bukti. Pada tingkat Lanjut (AES), Didit kemudian menerapkan tanda tangan PAdES dan stempel waktu, sehingga tanda tangan mencakup semua hal yang ada di halaman tersebut. Pada tingkat Sederhana, file berupa PDF dengan halaman bukti dan tanpa tanda tangan digital, segel, atau stempel waktu.**6. Anda mendapatkan hasilnya**Keputusan dan webhook sesi memuat `signatures[]` beserta penandatangan, konfirmasi, sertifikat, stempel waktu, hash setiap dokumen, dan nilai setiap kolom. Anda mengunduh PDF yang telah ditandatangani serta PDF bukti, dan Didit dapat mengirimkan salinannya melalui email kepada penandatangan.## Sebelum Anda mulaiPada tingkat Advanced (AES), penandatangan harus diverifikasi sebelum mereka dapat menandatangani. Didit mengambil nama dan kontak mereka dari rekaman terverifikasi milik sesi itu sendiri, tidak pernah dari apa yang Anda atau penandatangan ketikkan. Tingkat Simple tidak memerlukan semua ini: tingkat ini tidak memiliki Verifikasi Identitas, email, telepon, atau kode, dan ditolak untuk penandatangan KYB.**Untuk Verifikasi Pengguna (KYC)**, tempatkan langkah-langkah ini sebelum Tanda Tangan Elektronik di dalam alur kerja:- **Verifikasi Identitas**, disetujui, dengan nama yang dapat dibaca. Tanpanya, langkah ini mencatat `SIGNATURE_IDENTITY_NOT_VERIFIED`.
- **Verifikasi Email** saat kode dikirim melalui email (default), atau **Verifikasi Telepon** saat dikirim melalui SMS. Kode hanya dikirim ke kontak yang diverifikasi dalam sesi yang sama.
- Jika alur kerja juga memiliki **Deteksi Liveness**, langkah tersebut harus disetujui.Untuk mengirimkan salinan dokumen yang telah ditandatangani ke email penandatangan, sesi ini juga memerlukan email terverifikasi, bahkan ketika kode dikirim melalui SMS.**Untuk Verifikasi Bisnis (KYB)**, penandatangan adalah pihak kunci perusahaan, masing-masing dengan KYC mereka sendiri yang telah disetujui:| `signature_signer` | Siapa yang menandatangani |
| - | - |
| `legal_representative` | Setiap pihak kunci dengan peran `representative` atau `authorized_signatory` |
| `key_people` | Setiap pihak kunci perorangan dengan sesi KYC |Langkah KYB memiliki antara 1 hingga 20 penandatangan, dan masing-masing memerlukan KYC yang disetujui pada saat mereka menandatangani. Masing-masing menandatangani salinan dokumen mereka sendiri dan mengonfirmasi dengan kode yang dikirim ke kontak yang diverifikasi dalam sesi KYC mereka sendiri. Nama yang dideklarasikan untuk pihak kunci harus cocok dengan nama terverifikasi mereka, mengabaikan huruf besar/kecil dan spasi, atau langkah tersebut mencatat `SIGNATURE_NAME_MISMATCH`. Langkah ini selesai setelah setiap penandatangan telah menandatangani atau menolak.## Dokumen### Dari mana dokumen berasal`signature_documents_source` menentukan dari mana sebuah langkah mendapatkan dokumennya:| Nilai | Dokumen |
| - | - |
| `workflow` (default) | Dokumen yang Anda unggah ke alur kerja di konsol. Setiap sesi menandatangani dokumen yang sama. |
| `session` | Dokumen yang Anda kirimkan dalam `sign.documents` saat Anda [membuat sesi](https://docs.didit.me/id/sessions-api/create-session.md#dokumen-tanda-tangan-elektronik). Setiap sesi menandatangani dokumennya masing-masing. |
| `both` | Dokumen alur kerja terlebih dahulu, kemudian dokumen sesi. |Dokumen per sesi adalah cara agar seseorang dapat menandatangani kontrak dengan nama, jumlah, atau ketentuan mereka sendiri yang telah diisi sebelumnya oleh sistem Anda.### File yang didukung| | Batas |
| - | - |
| PDF | Hingga 20 MB dan masing-masing 100 halaman. Tanpa kata sandi, skrip, atau file terlampir. |
| Word (`.docx`) | Hingga 20 MB. Dikonversi ke PDF saat Anda mengunggahnya atau membuat sesi, dan PDF hasil konversi memiliki batasan yang sama dengan PDF. File `.doc`, `.docm`, `.odt`, dan `.rtf` ditolak dengan `unsupported_type`. |
| Per penandatangan | Hingga 20 dokumen dan total 50 MB. |Saat Anda mengunggah dokumen Word, Didit mengonversinya ke PDF selama proses pengunggahan, dalam waktu paling lama 60 detik. Halaman hasil konversi adalah halaman yang dilihat dan ditandatangani oleh penandatangan, jadi periksalah sebelum Anda menempatkan kolom: pemisah baris dapat sedikit berbeda dari Word. File Word dan PDF-nya merupakan bagian dari dokumen yang sama dan dihapus bersamanya. PDF bukti mencatat konversi dan SHA-256 dari kedua file tersebut.Didit menolak file Word dengan `signature_document_not_supported` dan `reason` ketika hal yang akan ditandatangani bersifat ambigu: memiliki makro (`macros`), perubahan terlacak yang belum disetujui (`tracked_changes`), tautan ke konten eksternal (`external_links`), atau objek tersemat (`embedded_objects`). Terima atau tolak perubahan terlacak sebelum Anda mengunggah, sehingga PDF menampilkan teks yang Anda setujui.File yang tidak dapat dikonversi ditolak dengan `signature_document_conversion_failed` dan salah satu alasan berikut:| `reason` | Penyebab masalah |
| - | - |
| `docx_password_protected` | File memiliki kata sandi. Hapus kata sandi dan unggah kembali. |
| `docx_unreadable` | File bukan dokumen Word yang dapat dibaca. |
| `docx_too_many_pages` | PDF hasil konversi memiliki lebih dari 100 halaman. |
| `docx_too_large` | File terlalu besar untuk dikonversi. |
| `conversion_timeout` | Konversi memakan waktu terlalu lama. Coba lagi, atau unggah dokumen sebagai PDF. |### Kolom pada dokumenKolom mengubah dokumen menjadi templat yang diisi oleh penandatangan, sama seperti saat Anda menyiapkan amplop di alat penandatanganan desktop. Dokumen tanpa kolom mempertahankan alur yang lebih sederhana: penandatangan membacanya dan menyetujuinya.| Tipe | Tindakan penandatangan | Nilai |
| - | - | - |
| `signature` | Mengetuknya untuk menerapkan tanda tangan yang telah dibuat. Kolom tanda tangan atau paraf pertama membuka langkah tempat mereka mengadopsinya. | `true` setelah diterapkan |
| `initials` | Mengetuknya untuk menerapkan paraf yang telah dibuat. | `true` setelah diterapkan |
| `text` | Mengetik nilai, diperiksa terhadap [validasi](#validasi) kolom. Nilai dapat diisi sebelumnya. | String |
| `checkbox` | Mencentang atau menghapus centang. Kotak centang wajib harus dicentang. | Boolean |
| `email` | Tidak ada tindakan jika sesi memiliki email terverifikasi, yang akan mengisinya hanya-baca. Jika tidak, penandatangan mengetiknya. | String |
| `full_name` | Tidak ada tindakan: Didit mengisi nama terverifikasi, hanya-baca. | String |
| `date_signed` | Tidak ada tindakan: Didit mengisi tanggal dokumen ditandatangani. | String |
| `data` | Tidak ada tindakan: Didit mengisi nilai dari identitas terverifikasi, sesi, atau sistem Anda, hanya-baca. Atur sumber asalnya di `prefill`. | String |Belum ada pemilih tanggal dalam versi ini. Gunakan kolom `text` untuk tanggal yang dimasukkan oleh penandatangan.Kolom memiliki properti berikut:| Properti | Aturan |
| - | - |
| `id` | Ditentukan oleh Didit. |
| `key` | Menamai kolom dalam hasil dan dalam `sign.field_values`. Huruf kecil, angka, dan garis bawah, diawali dengan huruf, hingga 64 karakter (`^[a-z][a-z0-9_]{0,63}$`), serta unik di dalam dokumen. |
| `type` | Salah satu tipe di atas. |
| `role` | Pihak yang mengisinya, dengan nilai dari `signature_signer`: `verified_person`, `legal_representative`, atau `key_people`. Pada dokumen sesi, nilai default-nya adalah penandatangan langkah tersebut. |
| `page` | Dari 1 hingga jumlah halaman dokumen. Untuk dokumen Word, halaman dari PDF hasil konversi. |
| `x`, `y`, `width`, `height` | Fraksi halaman seperti yang ditampilkan (dari `0` hingga `1`), diukur dari sudut kiri atas dan dibulatkan hingga 4 desimal. Kolom harus pas di dalam halaman. Lebar minimal `0.02` dan tinggi minimal `0.012`, serta tanda tangan dengan lebar minimal `0.12` dan tinggi minimal `0.035`. |
| `required` | `signature` dan `initials` wajib diisi kecuali Anda mengatur `false`. `full_name`, `date_signed`, dan `data` selalu wajib diisi. |
| `label` | 1 hingga 80 karakter, ditampilkan kepada penandatangan dan dalam hasil. |
| `placeholder` | Hanya `text` dan `email`. Hingga 80 karakter. |
| `position` | Urutan yang digunakan untuk memandu penandatangan, dimulai dari `0`. Didit mengaturnya berdasarkan letak kolom: berdasarkan halaman, lalu dari atas ke bawah, kemudian dari kiri ke kanan. |
| `validation` | Hanya `text`. Lihat [Validasi](#validasi). |
| `prefill` | Sumber asal nilai. Lihat [Nilai yang diisi sebelumnya](#nilai-yang-diisi-sebelumnya). |
| `editable_when_prefilled` | Hanya `text` dan `email`: penandatangan dapat mengubah nilai yang diisi sebelumnya. Default `false`. |
| `checked_by_default` | Hanya `checkbox`: kotak dimulai dalam keadaan dicentang. |
| `date_format` | Hanya `date_signed`: `DD/MM/YYYY` (default), `MM/DD/YYYY`, `YYYY-MM-DD`, atau `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
}
```Sebuah dokumen dapat memuat hingga 200 kolom, dan satu penandatangan hingga 500 kolom di seluruh dokumen mereka.Suatu langkah hanya mengisi dan membubuhkan stempel pada kolom milik penandatangannya sendiri. Dokumen dapat memuat kolom untuk beberapa peran hanya jika beberapa langkah Tanda Tangan dari alur kerja menggunakannya: setiap langkah mengisi kolom dari perannya masing-masing dan membiarkan kolom lainnya kosong pada salinannya. Kolom untuk peran yang tidak digunakan oleh langkah Tanda Tangan mana pun dalam alur kerja akan ditolak dengan `role_not_used`. Setiap peran yang memiliki kolom pada sebuah dokumen memerlukan setidaknya satu kolom `signature` atau `initials` di dokumen tersebut, atau versi alur kerja tidak dapat dipublikasikan (`signature_field_missing`).#### Validasi`validation` berlaku untuk kolom `text`:```json theme={null}
{ "kind": "any", "min_length": 0, "max_length": 80, "pattern": null, "message": null }
```- `kind`: `any`; `letters` (huruf dalam aksara apa pun, spasi, tanda hubung, dan apostrof); `number` (digit dengan pemisah desimal opsional); `email`; atau `pattern`.
- `min_length`: dari `0` hingga `max_length`.
- `max_length`: dari `1` hingga `500`. Bawaan `120`.
- `pattern`: wajib jika menggunakan `kind: "pattern"`. Ekspresi reguler hingga 200 karakter yang harus cocok dengan keseluruhan nilai. Lookaround dan referensi balik tidak didukung.
- `message`: hingga 120 karakter, ditampilkan sebagai pengganti kesalahan bawaan.Pratinjau konsol, alur penandatanganan, dan API menerapkan aturan yang sama.#### Nilai yang diisi sebelumnya`prefill` menentukan sumber nilai untuk suatu kolom:| `prefill` | Nilai |
| - | - |
| `identity.full_name`, `identity.first_name`, `identity.last_name` | Nama yang tertera pada ID terverifikasi milik penanda tangan. |
| `identity.date_of_birth` | Dari ID terverifikasi, dalam format `DD/MM/YYYY`. |
| `identity.nationality`, `identity.document_number`, `identity.document_type`, `identity.issuing_country` | Dari ID terverifikasi. |
| `identity.address` | Alamat terformat dari ID terverifikasi, atau dari bukti alamat dalam sesi yang sama. |
| `contact.email`, `contact.phone` | Email atau telepon terverifikasi milik penanda tangan. |
| `company.name`, `company.registration_number`, `company.address`, `company.country` | Perusahaan yang diverifikasi, untuk KYB. |
| `session.vendor_data` | Nilai `vendor_data` milik sesi. |
| `metadata.<key>` | Nilai `<key>` dalam `metadata` sesi, sebagai string. |
| `api.<key>` | Nilai `<key>` dalam `sign.field_values`, dikirim saat Anda [membuat sesi](https://docs.didit.me/id/sessions-api/create-session.md#nilai-kolom). |Kolom `data` harus memiliki `prefill`. Kolom `full_name` selalu menggunakan `identity.full_name` dan kolom `email` menggunakan `contact.email`, serta kolom `text` juga dapat memilikinya. Nilai kolom `data`, `full_name`, dan `email` terverifikasi ditetapkan secara permanen saat penanda tangan mulai menandatangani: perubahan sesi setelahnya tidak memengaruhinya. Kolom `text` atau `email` yang diisi sebelumnya bersifat hanya-baca kecuali Anda menetapkan `editable_when_prefilled`.Jika sumber untuk kolom wajib tidak memiliki nilai pada saat itu, misalnya sesi tanpa alamat, kolom tersebut tetap kosong dan penanda tangan tetap dapat menandatangani. Tidak ada peringatan yang dimunculkan, dan `value_unavailable_reason` dalam [laporan](https://docs.didit.me/id/core-technology/electronic-signature/report-electronic-signature.md) menjelaskan penyebabnya.## Konfigurasikan di konsol1) Buka **Alur kerja**, lalu buka alur kerja dan tambahkan langkah **Tanda Tangan Elektronik** setelah langkah-langkah yang memverifikasi penanda tangan.
2) Di **Dokumen**, pilih **Unggah** untuk menambahkan file PDF atau Word, lalu seret untuk menyusun urutan tampilan bagi penanda tangan. File Word dikonversi menjadi PDF: periksa halaman hasil konversi sebelum Anda meletakkan bidang. **Ganti** menukar file dokumen dan mempertahankan bidangnya, kecuali bidang pada halaman yang tidak ada lagi di file baru.
3) Di bagian **Letakkan bidang di dokumen**, pilih **Buka editor**. Seret bidang dari palet ke halaman, atau pilih bidang tersebut dan klik posisi penempatannya, lalu pindahkan dan sesuaikan ukurannya. Untuk setiap bidang, atur **Siapa yang mengisi**, labelnya, apakah bersifat **Wajib**, apa yang dapat diterimanya, dari mana nilainya berasal, dan **kunci API**-nya (`key` dari bidang tersebut). **Pratinjau sebagai penanda tangan** menampilkan dokumen seperti yang dilihat penanda tangan di ponsel atau desktop. Editor menyimpan perubahan secara otomatis (**Tersimpan ke draf**) dan mencantumkan hal-hal yang perlu diperbaiki sebelum Anda memilih **Selesai**.
4) Masih di **Dokumen**, pilih asal dokumen: **Alur kerja ini**, **Setiap sesi**, atau **Keduanya**. Untuk dokumen tanpa bidang, pilih apakah penanda tangan harus **Baca sampai akhir sebelum menandatangani** dan memberikan **Satu persetujuan per dokumen**.
5) Di **Tanda tangan**, pilih **Penanda tangan**, **Tingkat** (**Sederhana**, bawaan, atau **Tingkat lanjut (AES)**; **Berkualifikasi (QES)** berstatus **Segera hadir**), **Format**, dan tujuan pengiriman kode (**Kode sekali pakai melalui**).
6) Di **Aturan**, tetapkan pengaruh masing-masing [peringatan](https://docs.didit.me/id/core-technology/electronic-signature/warnings-electronic-signature.md) terhadap keputusan akhir.
7) Di **Lanjutan**, pilih apakah ingin **Kirim salinan bertanda tangan melalui email** dan **Tambahkan halaman bukti**, serta berapa hari tautan penandatanganan tetap valid. Anda juga dapat menambahkan aturan status kustom.
8) Simpan alur kerja.Untuk mengonfigurasi langkah yang sama melalui API, lihat [Konfigurasi fitur alur kerja](https://docs.didit.me/id/management-api/workflows/feature-configs.md#tanda-tangan-elektronik). Dokumen alur kerja dan bidangnya dikelola di konsol; melalui API, kirimkan dokumen dan bidang per sesi.## Pengalaman penandatangananLangkah penandatanganan berjalan di halaman verifikasi yang di-hosting, [Web SDK](https://docs.didit.me/id/integration/web-sdks/overview.md), dan [SDK native](https://docs.didit.me/id/integration/native-sdks/overview.md), di desktop maupun di ponsel. Anda tidak perlu membangun UI penandatanganan apa pun.1) **Pengantar.** Penandatangan melihat dokumen yang akan mereka tanda tangani.
2) **Setiap dokumen, secara berurutan.** Untuk dokumen yang memiliki kolom, penandatangan dipandu melalui kolom-kolomnya sesuai urutan `position`. Kolom tanda tangan atau paraf pertama membuka lembar tempat mereka [mengadopsi tanda tangan](#mengadopsi-tanda-tangan). Kolom opsional ditandai **Opsional**. Nilai yang diisi oleh Didit ditampilkan pada halaman dengan ikon gembok dan bukan merupakan langkah. Mengetuk kolom pada halaman akan langsung melompat ke kolom tersebut. Di ponsel, satu kolom ditampilkan pada satu waktu di panel yang tetap berada di atas keyboard. Pada layar dengan lebar minimal 1200 px, halaman diletakkan di samping daftar kolom. Menyelesaikan dokumen dengan kolom wajib yang masih kosong akan menampilkan berapa banyak kolom yang tersisa dan melompat ke kolom pertama. Dokumen tanpa kolom dibaca dan disetujui, sesuai konfigurasi Anda.
3) **Peninjauan.** Penandatangan melihat dokumen kembali dan, jika salah satu dokumen memiliki kolom, menyetujui untuk menandatanganinya secara elektronik.
4) **Kode (hanya Tingkat Lanjut (AES)).** Penandatangan meminta kode mereka. Kode ini berlaku selama 5 menit, kode baru dapat dikirim setelah 60 detik, dan penandatangan mendapatkan hingga 5 kode dan 3 kali percobaan salah. Jika jatah kode atau percobaan tersebut habis, sistem mencatat `SIGNATURE_OTP_FAILED`. Pada tingkat Sederhana tidak ada kode: penandatangan langsung beralih dari peninjauan ke penandatanganan.
5) **Ditandatangani.** Setelah menandatangani, penandatangan dapat mengunduh dokumen yang telah mereka tanda tangani. Jika Anda mengaktifkannya, Didit juga mengirimkan salinannya melalui email kepada mereka.
6) **Tolak.** Penandatangan dapat menolak alih-alih menandatangani. Tindakan ini mencatat `SIGNATURE_DECLINED`. Penolakan dapat dibuka kembali selama tautan penandatanganan masih valid, sehingga penandatangan tetap dapat menandatangani jika mereka berubah pikiran.Alur ini memberi tahu penandatangan ketika kode mereka kedaluwarsa, dokumen berubah, penandatanganan gagal, atau tautan penandatanganan kedaluwarsa.Tautan penandatanganan tetap valid selama `signature_link_validity_days` (1 hingga 30, nilai default 7), dihitung sejak sesi dibuat. Sesi tetap terbuka setidaknya selama jangka waktu tersebut.> [!NOTE]
>
> SDK native menampilkan langkah penandatanganan mulai dari rilis yang menambahkannya, tercantum dalam [ringkasan SDK native](https://docs.didit.me/id/integration/native-sdks/overview.md) saat dirilis. Dokumen dengan kolom memerlukan rilis yang mendukung kolom: rilis yang lebih lama tidak dapat menampilkannya, dan langkah tersebut akan menampilkan kesalahan. Dokumen tanpa kolom berfungsi di setiap rilis yang memiliki langkah penandatanganan. Hingga aplikasi Anda menjalankan rilis yang mendukung fitur yang digunakan alur kerja Anda, arahkan pengguna ke halaman yang di-hosting atau Web SDK.### Mengadopsi tanda tanganPenandatangan mengadopsi tanda tangan dan paraf mereka satu kali, dalam satu lembar, saat pertama kali dokumen meminta salah satunya:- **Diketik**: nama terverifikasi mereka dalam gaya tulisan tangan yang mereka pilih, ditandai **Dari ID Anda**. Mereka tidak dapat mengetikkan nama yang berbeda. Paraf yang diketik adalah huruf-huruf pertama dari nama tersebut.
- **Digambar**: digambar dengan jari atau mouse, baik tanda tangan maupun paraf.Setiap kolom tanda tangan atau paraf berikutnya diterapkan hanya dengan satu ketukan, dan mengetuk tanda tangan atau paraf yang telah diterapkan akan menghapusnya kembali.## HasilHasil setiap penandatangan merupakan item dari `signatures[]` dalam [keputusan sesi](https://docs.didit.me/id/sessions-api/retrieve-session.md) dan di dalam `decision` pada [webhook sesi](https://docs.didit.me/id/integration/webhooks.md). Tidak ada webhook tanda tangan terpisah: event `status.updated` dari sesi memberi tahu Anda kapan harus mengambil hasil keputusan.Anda mendapatkan PDF yang ditandatangani dari setiap dokumen, PDF bukti untuk setiap penandatangan, serta SHA-256 dari setiap file asli dan yang telah ditandatangani, sehingga Anda dapat membuktikan nantinya bahwa tidak ada yang berubah. Untuk dokumen dengan kolom, Anda juga mendapatkan nilai setiap kolom, dari mana asalnya dan kapan diisi, ditambah tanda tangan yang diadopsi serta waktu penandatangan menyetujui penandatanganan secara elektronik. Lihat [Laporan Tanda Tangan Elektronik](https://docs.didit.me/id/core-technology/electronic-signature/report-electronic-signature.md) untuk setiap kolom, unduhan, dan cara memvalidasi ulang tanda tangan.Di konsol, tab **Tanda tangan** pada sesi menampilkan dokumen, kemudian blok **Kolom** dengan pratinjau setiap halaman, tanda tangan dan paraf yang diadopsi, serta nilai, waktu, dan sumber setiap kolom. [Laporan PDF](https://docs.didit.me/id/sessions-api/generate-pdf.md) menyertakan bagian tanda tangan, dan halaman **Tanda Tangan Elektronik · kolom** ketika dokumen memiliki kolom.## HargaTanda Tangan Elektronik dikenai biaya \$0.10 per sesi yang ditandatangani, termasuk dalam kredit gratis Anda, berapa pun jumlah dokumen dalam satu penandatanganan dan baik pada tingkat Sederhana maupun Tingkat Lanjut (AES). Tanda tangan yang ditolak, gagal, atau kedaluwarsa tidak dikenakan biaya. Berkualifikasi (QES) adalah fitur tambahan yang belum tersedia dan belum memiliki harga.## Menghapus data tanda tanganSaat Anda [menghapus sesi](https://docs.didit.me/id/sessions-api/delete-session.md), data tanda tangannya ikut dihapus bersamanya: dokumen yang dikirim bersama sesi dan file Word aslinya, salinan yang disiapkan untuk setiap penandatangan, PDF yang ditandatangani, PDF bukti, gambar tanda tangan dan paraf yang diadopsi, serta setiap nilai kolom. Tautan unduhannya berhenti berfungsi. Hal yang sama terjadi ketika sesi dihapus pada akhir periode retensi data Anda. Penghapusan tidak dapat dibatalkan, jadi unduh apa pun yang perlu Anda simpan terlebih dahulu.- Dokumen yang ditandatangani dari Verifikasi Bisnis (KYB) dimiliki oleh sesi perusahaan tersebut. Menghapus sesi tersebut akan menghapus dokumen-dokumennya.
- Menghapus dokumen dari alur kerja akan menghapusnya, beserta kolom-kolomnya dan file Word aslinya. Penandatangan yang telah mulai menandatangani tetap menyimpan salinan yang diperlihatkan kepada mereka, sebagai bagian dari sesi mereka, sampai Anda menghapus sesi tersebut. Hapus dokumen hanya dari alur kerja yang tidak memiliki sesi yang sedang menunggu untuk ditandatangani.
- Salinan yang telah dikirimkan Didit melalui email kepada penandatangan berada di kotak masuk mereka dan tidak terpengaruh.## Terkait- [Laporan Tanda Tangan Elektronik](https://docs.didit.me/id/core-technology/electronic-signature/report-electronic-signature.md): `signatures[]`, PDF yang ditandatangani, PDF bukti, dan unduhan.
- [Peringatan Tanda Tangan Elektronik](https://docs.didit.me/id/core-technology/electronic-signature/warnings-electronic-signature.md): setiap peringatan dan aturan yang mengontrolnya.
- [Buat sesi](https://docs.didit.me/id/sessions-api/create-session.md#dokumen-tanda-tangan-elektronik): kirim dokumen, kolom, dan nilai kolom per sesi.
- [Konfigurasi fitur alur kerja](https://docs.didit.me/id/management-api/workflows/feature-configs.md#tanda-tangan-elektronik): setiap pengaturan langkah.


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