> ## 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.

# Questionnaires KYC : créateur de formulaires dynamiques

> Créez des questionnaires KYC personnalisés avec Didit : logique conditionnelle, multilingue et examen manuel. Facturation par appel $0.10.

Les Questionnaires de Didit vous permettent de concevoir des formulaires dynamiques et structurés afin de recueillir des informations complémentaires auprès des utilisateurs lors de la vérification. Utilisez notre créateur visuel pour glisser-déposer des éléments, organiser le contenu en sections, localiser les textes pour plusieurs langues et acheminer les résultats vers un examen manuel si nécessaire.

Prompt d'intégration des questionnaires
        Copier le prompt dans le presse-papiers



      
      

\<pre>

\````# Goal
Integrate Didit Questionnaires (custom KYC/KYB forms with conditional logic and manual-review routing) into your app.

\# Delivery mode
Questionnaires are **session-only**. The form is designed in the Business Console (drag-and-drop builder) and bound to a workflow via the QUESTIONNAIRE feature. There is no standalone questionnaire submission API — answers are collected through the hosted Didit flow.

\# Steps
1\. Build the questionnaire in the Business Console (Questionnaires tab). Define sections, fields, conditional visibility, multi-language labels, and **custom status rules** (e.g. "if source_of_funds = 'crypto' set status to In Review").
2\. Add the QUESTIONNAIRE feature to a workflow and select the questionnaire id (POST /v3/workflows/ or the Console).
3\. Create a session — POST /v3/session/ with { workflow_id, vendor_data, callback }. See /sessions-api/create-session.
4\. Open session.url for the user (or mount the Web/Mobile SDK) — the form renders inside the flow.
5\. Fetch the decision — GET /v3/session/{sessionId}/decision/ or subscribe to session.status.updated.

curl (create session):
\```bash
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",
"callback": "https://yourapp.com/post-kyc"
}'
\```

\# Decision surface
The result lands under `questionnaire_responses[]` on the decision payload (one entry per questionnaire node). Each entry includes:
\- `status` — final status for this questionnaire instance (driven by your custom status rules).
\- `answers` — array of { question_id, question_label, value } pairs (or nested sections).
\- `warnings` — any rule-triggered warnings.

\# Status enum (per questionnaire_responses[].status)
"Not Started" | "In Progress" | "Approved" | "In Review" | "Declined" | "Abandoned" | "Kyc Expired"

\# Warnings (LogWarningChoices.QUESTIONNAIRE)
The dominant risk code is CUSTOM_STATUS_RULE_TRIGGERED — emitted whenever an answer matches a Console-configured rule that escalates the status. The warning's `additional_data` carries the rule id and matched answer so reviewers can see why the session was routed.

Full catalogue: questionnaire warnings are documented inside the report page — see /core-technology/questionnaires/report-questionnaire.

\# Failure modes to handle
\- questionnaire_responses[] empty — user abandoned the form. The session status will reflect "Abandoned"; treat per your retention policy.
\- status="In Review" with CUSTOM_STATUS_RULE_TRIGGERED — answers crossed your manual-review rule; surface the relevant answers in your reviewer UI.
\- status="Declined" — answers crossed a decline rule (e.g. user declared they are a sanctioned-country resident); do not approve.

\# See also
\- Canonical schema: /reference/data-models#questionnaire-response
\- Per-feature report: /core-technology/questionnaires/report-questionnaire
\- Full integration playbook: /integration/integration-prompt````

\</pre>



      
      

Coller dans

Dans la leçon de l'Academy consacrée à la lecture d'un résultat de vérification, le chapitre à 11:54 aborde Document AI et les questionnaires.[Document AI et questionnaires — Didit Academy](https://www.youtube.com/embed/7htTWCWsl60?start=714\&rel=0\&playsinline=1)***## Deux façons de créer des questionnairesDidit propose **deux approches distinctes** pour créer des questionnaires, ce qui vous permet de choisir le niveau de complexité adapté à vos besoins :![Modes simple et avancé du créateur de questionnaires KYC Didit côte à côte](https://mintcdn.com/didit-0f962782/z6T2GHM4Zh-iSj-K/images/questionnaires-simple-and-complex.jpg?fit=max\&auto=format\&n=z6T2GHM4Zh-iSj-K\&q=85\&s=71d18d67b4684cca46c7809ba43cfcb6)### 1. Mode simple : générateur de formulaires rapideLe **Mode simple** est idéal pour créer rapidement des formulaires simples. Utilisez notre interface intuitive en glisser-déposer pour ajouter des éléments, définir les champs obligatoires et publier en quelques minutes.![Interface du créateur de formulaires en glisser-déposer du mode simple de questionnaire Didit](https://mintcdn.com/didit-0f962782/z6T2GHM4Zh-iSj-K/images/questionnaires-simple.jpg?fit=max\&auto=format\&n=z6T2GHM4Zh-iSj-K\&q=85\&s=8e777d8fc72ca16e8e2deb65a0a66e92)**Idéal pour :**- Les formulaires de collecte rapide de données
- Les sondages et attestations simples
- Les équipes découvrant la création de formulaires
- Les questionnaires unilingues**Comment cela fonctionne :**1) Ouvrez le créateur de questionnaires
2) Glissez-déposez des éléments depuis la palette sur votre formulaire
3) Configurez chaque élément (libellé, obligatoire, texte d'indication)
4) Prévisualisez et publiez***### 2. Mode avancé : créateur visuel par grapheLe **Mode avancé** débloque des fonctionnalités puissantes pour les scénarios complexes de collecte de données grâce à un **éditeur visuel basé sur des nœuds**. Créez des questionnaires sophistiqués avec une logique conditionnelle, des chemins d'embranchement et un contrôle total sur le flux.![Éditeur de graphe visuel basé sur des nœuds pour questionnaires avancés Didit avec logique de branchement](https://mintcdn.com/didit-0f962782/z6T2GHM4Zh-iSj-K/images/questionnaires-node-based.jpg?fit=max\&auto=format\&n=z6T2GHM4Zh-iSj-K\&q=85\&s=7ff0c1d79f500ed3f78dca4ff89b0698)**Idéal pour :**- Les questionnaires multilingues
- Les formulaires complexes avec branchement conditionnel
- La collecte de données axée sur la conformité avec différents parcours
- Les formulaires nécessitant des workflows d'examen manuel**Fonctionnalités clés :**- **Éditeur visuel de nœuds** : glissez, déposez et reliez des nœuds sur un canevas infini
- **Connexions intelligentes** : faites glisser depuis la poignée d'un nœud vers un espace vide pour créer et relier instantanément un nouveau nœud
- **Branchement conditionnel** : orientez les utilisateurs vers différentes questions en fonction de leurs réponses précédentes, puis [rejoignez les chemins au niveau d'une étape partagée](#rejoindre-les-chemins-d’embranchement-vers-une-étape-partagée)
- **Prise en charge multilingue** : traduisez tout le contenu visible par l'utilisateur
- **Raccourcis clavier** : Annuler (Ctrl/Cmd+Z), Rétablir (Ctrl/Cmd+Shift+Z), Supprimer (Suppr/Retour arrière)
- **Zoom et panoramique** : parcourez les formulaires complexes avec le zoom par défilement et le déplacement par glisser#### Types de nœuds du créateur de graphes| Type de nœud | Couleur | Description | Quand l'utiliser |
| - | - | - | - |
| **Nœuds de question** | Bleu | Éléments de saisie qui collectent les données utilisateur | Saisies de texte, menus déroulants, téléversements de fichiers, dates, etc. |
| **Nœuds de texte** | Vert | Contenu en lecture seule affiché aux utilisateurs | Instructions, explications, textes juridiques |
| **Nœuds d'embranchement** | Orange | Routage conditionnel basé sur les réponses | « Si le pays est US, afficher le formulaire fiscal » |
| **Nœuds de section** | Gris | Regroupement visuel d'éléments liés | Organiser les questions en sections logiques |> **Règles de connexion :** les nœuds de section et de texte peuvent se connecter à des questions et à d'autres nœuds de texte, mais pas directement à des nœuds d'embranchement. Les nœuds d'embranchement peuvent se connecter à n'importe quel type de nœud.#### Opérateurs de conditionUne condition d'embranchement compare une réponse précédente à une valeur.
Combinez plusieurs conditions avec `and` ou `or`.| Opérateur | Correspond lorsque la réponse |
| - | - |
| `equals` | Correspond à la valeur |
| `not_equals` | Est différente de la valeur |
| `contains` | Contient la valeur |
| `greater_than` | Est supérieure à la valeur |
| `greater_than_or_equals` | Est supérieure ou égale à la valeur |
| `less_than` | Est inférieure à la valeur |
| `less_than_or_equals` | Est inférieure ou égale à la valeur |
| `in` | Fait partie d'une liste de valeurs |
| `not_in` | Ne correspond à aucune des valeurs de la liste |
| `is_empty` | Est restée vide |
| `is_not_empty` | A été renseignée |#### Rejoindre les chemins d'embranchement vers une étape partagéeL'embranchement ne doit pas nécessairement rester à sens unique. La fin de plusieurs chemins peut se connecter au même nœud en aval, et le questionnaire continue à partir de là une seule fois. Les questions partagées sont créées et gérées à un seul endroit au lieu d'être répétées à la fin de chaque chemin.**Exemple pratique : questions supplémentaires en cas de Oui, puis suite partagée**1) Ajoutez un **nœud de question** avec une question à **Choix unique** proposant Oui et Non, puis un **nœud d'embranchement** après celui-ci avec un chemin `Yes` et un chemin `No`.
2) Sur le chemin `Yes`, ajoutez les questions supplémentaires qui ne s'appliquent que si la réponse est Oui.
3) À la fin de ce chemin, ajoutez la première question à laquelle chaque répondant doit répondre après l'embranchement : le début de la suite partagée.
4) Pointez le chemin `No` vers cette question : ouvrez le menu **+** à la fin du chemin `No` et choisissez **Relier une étape existante**, ou faites glisser depuis le connecteur du chemin `No` et relâchez sur le bord supérieur de la question partagée. Le canevas ne se connecte qu'à la petite cible située en haut de la carte ; relâcher au milieu de la carte n'a donc aucun effet.
5) Continuez d'ajouter les questions partagées restantes après la première, puis publiez. Le canevas affiche la suite partagée une seule fois, en dessous des chemins qui y mènent.Un chemin peut ainsi rejoindre un nœud qui existe déjà, et plusieurs chemins peuvent pointer vers le même nœud. La liaison définit l'endroit où ce chemin se poursuit ; le menu **+** propose donc **Relier une étape existante** tant que le chemin se termine à cet endroit. Une connexion qui fermerait une boucle vers un nœud antérieur est refusée.Les répondants répondent aux questions partagées une seule fois, quel que soit le chemin emprunté ; les questions situées sur le chemin qu'ils n'ont pas emprunté sont ignorées. Le payload de décision suit la même règle : `questionnaire_responses[].sections[].items` ne répertorie que les éléments situés sur le chemin suivi par le répondant. Consultez [Visibilité conditionnelle](https://docs.didit.me/fr/core-technology/questionnaires/report-questionnaire.md#visibilité-conditionnelle).***## Modèles de questionnaireLes modèles vous permettent de démarrer rapidement avec des formulaires préconfigurés pour les cas d'usage courants. Vous pouvez les utiliser tels quels ou les personnaliser selon vos besoins.![Modèles préconçus de questionnaires Didit pour l'origine des fonds et la conformité KYC](https://mintcdn.com/didit-0f962782/z6T2GHM4Zh-iSj-K/images/questionnaires-template.jpg?fit=max\&auto=format\&n=z6T2GHM4Zh-iSj-K\&q=85\&s=97a45bd55692379ffc057e11f4530a54)### Modèles préconçus| Modèle | Description | Éléments typiques |
| - | - | - |
| **Origine des fonds** | Recueillir les sources de revenus et les justificatifs | Liste déroulante, Texte long, Téléversement de fichier |
| **Détails de l'emploi** | Collecter l'intitulé du poste, l'employeur, la tranche de revenus | Texte court, Liste déroulante, Nombre |
| **Objectif du compte** | Comprendre l'utilisation prévue du compte | Choix unique, Choix multiple, Texte long |
| **Actionnariat** | Identifier les UBO et la structure d'actionnariat | Texte court, Nombre, Téléversement de fichier |
| **Résidence fiscale** | Recueillir les déclarations fiscales | Pays, Consentement, Téléversement de fichier |
| **Évaluation des risques** | Recueillir des informations pertinentes sur le risque | Choix multiple, Liste déroulante, Texte long |***## Comment ça fonctionneNotre workflow de questionnaire est conçu pour offrir de la flexibilité et de l'auditabilité :### 1. Créez dans la console (sans code)- Glissez-déposez des éléments pour créer votre questionnaire
- Organisez le contenu en plusieurs sections pour plus de clarté
- Définissez les éléments comme obligatoires ou facultatifs
- Configurez les textes indicatifs et les descriptions d'aide
- Ajoutez des choix (avec suivi en texte libre facultatif) pour les listes déroulantes et les choix uniques
- Configurez les limites de téléversement de fichiers/images par élément### 2. Localisez le contenu- Rédigez votre contenu une seule fois dans la `default_language` du questionnaire
- Définissez les `languages` prises en charge — lors de la publication, chaque titre, description, texte indicatif, libellé de choix et message de validation est **traduit automatiquement** dans chacune d'entre elles
- Ajustez manuellement n'importe quelle traduction dans le concepteur ; les modifications manuelles sont conservées jusqu'à ce que le texte source change
- L'utilisateur final voit automatiquement le contenu dans la meilleure langue disponible### 3. Publiez et collectez- Activez le questionnaire et intégrez-le dans votre flux de vérification
- Les utilisateurs finaux complètent les sections et soumettent leurs réponses
- Les fichiers téléversés (documents, images) sont stockés et associés à la réponse### 4. Examinez et décidez* Les réponses sont enregistrées avec un `status` : `Approved`, `In Review` ou `Not Finished`
* Vous pouvez forcer toutes les réponses au questionnaire à passer `In Review`, afin qu'une personne les approuve manuellement
* Examinez les réponses et les fichiers dans la console, puis marquez-les comme `Approved`> Remarque : Les questionnaires ne génèrent pas d'avertissements de risque. La gouvernance est assurée par les champs obligatoires, la validation et les workflows d'examen.***## Fonctionnalités clés| Fonctionnalité | Mode Simple | Mode Avancé |
| - | - | - |
| Concepteur glisser-déposer | ✅ | ✅ |
| Champs obligatoires/facultatifs | ✅ | ✅ |
| Textes indicatifs et descriptions | ✅ | ✅ |
| Sections multiples | ✅ | ✅ |
| Limites de téléversement de fichiers | ✅ | ✅ |
| Éditeur visuel de graphes | ❌ | ✅ |
| Branchement conditionnel | ❌ | ✅ |
| Traductions multilingues | ❌ | ✅ |
| Logique de choix (texte requis) | ❌ | ✅ |
| Forcer l'examen manuel | ❌ | ✅ |
| Prise en charge Annuler/Rétablir | ❌ | ✅ |
| Raccourcis clavier | ❌ | ✅ |**Liste complète des fonctionnalités :**- **Concepteur visuel** : créez et gérez des questionnaires grâce à un éditeur intuitif en glisser-déposer
- **Sections** : regroupez les questions connexes ; ajoutez des en-têtes et des séparateurs pour guider les utilisateurs
- **Traductions automatiques** : rédigez le contenu dans une langue — l'ensemble du texte destiné aux utilisateurs est traduit dans toutes les autres langues sélectionnées lors de la publication, avec possibilité d'ajustement manuel
- **Validation** : définissez des champs obligatoires ; imposez un nombre maximal de fichiers par élément de téléversement
- **Logique de choix** : pour les listes déroulantes et les choix uniques, exigez facultativement du texte supplémentaire par option sélectionnée
- **Téléversements** : recueillez des documents et des images avec des limites sur le nombre de fichiers (par exemple, jusqu'à 3 fichiers)
- **Examen manuel** : forcez facultativement toutes les réponses à passer `In Review` en attente d'une approbation humaine
- **Bascule d'activation** : activez ou désactivez le questionnaire par application
- **Intégration de workflow** : ajoutez des questionnaires au KYC ou exécutez-les de manière autonome sous forme de workflow de vérification par questionnaire
- **API et webhooks** : lisez les résultats structurés via l'API et recevez des mises à jour***## Types d'élémentsVous pouvez ajouter les types d'éléments suivants dans le générateur (sélectionnables depuis la console) :### Éléments de saisie| Élément | Description | Options de configuration |
| - | - | - |
| **SHORT\_TEXT** | Texte libre sur une seule ligne | Texte indicatif (placeholder), obligatoire |
| **LONG\_TEXT** | Texte libre multiligne | Texte indicatif (placeholder), obligatoire |
| **NUMBER** | Saisie numérique | Texte indicatif (placeholder), obligatoire |
| **EMAIL** | Saisie d'e-mail avec validation | Texte indicatif (placeholder), obligatoire |
| **PHONE** | Saisie de numéro de téléphone | Texte indicatif (placeholder), obligatoire |
| **ADDRESS** | Saisie d'adresse | Texte indicatif (placeholder), obligatoire |
| **DATE\_PICKER** | Sélection de date | Texte indicatif (placeholder), obligatoire |
| **TIME** | Saisie de l'heure | Texte indicatif (placeholder), obligatoire |### Éléments de choix| Élément | Description | Options de configuration |
| - | - | - |
| **DROPDOWN** | Sélection unique dans une liste | Choix, `requires_text_input` par choix |
| **SINGLE\_CHOICE** | Sélection unique de type bouton radio | Choix, `requires_text_input` par choix |
| **MULTIPLE\_CHOICE** | Liste de cases à cocher à choix multiples | Choix |
| **COUNTRY** | Sélecteur de pays | Obligatoire |
| **CONSENT** | Case à cocher ou acceptation | Obligatoire, libellé personnalisé |### Éléments de téléversement| Élément | Description | Options de configuration |
| - | - | - |
| **IMAGE** | Téléversement d'image | `max_files` (1-5), obligatoire |
| **FILE\_UPLOAD** | Téléversement de document | `max_files` (1-5), obligatoire |### Éléments de mise en page| Élément | Description | Remarques |
| - | - | - |
| **PARAGRAPH** | Texte explicatif en lecture seule | Sans possibilité de réponse |
| **SECTION\_HEADER** | En-tête visuel de section | Sans possibilité de réponse, non obligatoire |
| **SEPARATOR** | Séparateur visuel | Sans possibilité de réponse, non obligatoire |**Remarques sur le comportement :**- `SECTION_HEADER` et `SEPARATOR` sont uniquement destinés à la présentation. Ils ignorent les paramètres d’obligation, de texte indicatif, de choix et de limites de fichiers.
- Pour les éléments de choix, définissez les choix sous la forme `{ label, value, requires_text_input? }`.
- Pour les éléments de téléversement, définissez `max_files` (1–5) pour contrôler le nombre de fichiers pouvant être joints.***## Forcer l'examen manuelCertains workflows de conformité exigent un examen humain de chaque réponse. Depuis la console, vous pouvez configurer les questionnaires pour qu'ils aboutissent systématiquement à `In Review`. Un réviseur approuve ensuite la réponse ou demande des modifications, après quoi la réponse passe à l'état `Approved`.**Quand utiliser l'examen manuel :**- Onboarding de clients à haut risque
- Collecte de données sensibles (origine des fonds, déclarations UBO)
- Exigences réglementaires imposant une supervision humaine
- Assurance qualité lors du déploiement initial***## Exemples de cas d'usage### Origine des fondsRecueillez les sources de revenus, les montants et téléversez des justificatifs (par exemple, fiches de paie, relevés de compte). Associez des listes déroulantes, du texte long et des téléversements de fichiers.**Structure type :**- Section 1 : Situation professionnelle (Dropdown)
- Section 2 : Sources de revenus (Multiple Choice + Long Text)
- Section 3 : Pièces justificatives (File Upload)
- Section 4 : Déclaration (Consent)***### Association ou adhésionEnregistrez les affiliations, les rôles et les preuves d'adhésion ; incluez des éléments de consentement pour les déclarations.**Structure type :**- Nom de l'organisation (Short Text)
- Rôle / Fonction (Dropdown)
- Durée de l'adhésion (Date Picker)
- Preuve d'adhésion (File Upload)
- Déclaration (Consent)***### Objet de la relation et activité attendue sur le compteRecueillez l'intention, les volumes de transactions attendus, les pays d'activité et les contreparties prévues. Utilisez des choix uniques ou multiples, des saisies numériques et des paragraphes pour le contexte.**Structure type :**- Section 1 : Objet du compte (Multiple Choice)
- Section 2 : Volume mensuel attendu (Number + Dropdown pour la devise)
- Section 3 : Pays d'activité (Country - multiple)
- Section 4 : Types de transactions (Multiple Choice)
- Section 5 : Informations complémentaires (Long Text)***## Mode Simple vs mode Avancé : quand utiliser chacun| Scénario | Mode recommandé |
| - | - |
| Formulaire basique en une seule langue | Simple |
| Prise en charge multilingue requise | Avancé |
| Sondage interne rapide | Simple |
| Questionnaire de conformité | Avancé |
| Collecte de données ponctuelle | Simple |
| Parcours de branchement conditionnels | Avancé |
| Forcer l'examen manuel | Avancé |
| Formulaires complexes multisections | Avancé |***## Premiers pas1. **Vous découvrez les questionnaires ?** Commencez par le **Mode Simple** pour vous familiariser avec le générateur
2. **Besoin de traductions ou de logique conditionnelle ?** Passez au **Mode Avancé** pour utiliser l'éditeur visuel de graphe> Découvrez comment les résultats sont structurés sur la page [Rapport des questionnaires](https://docs.didit.me/fr/core-technology/questionnaires/report-questionnaire.md).


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