Exemples par secteur
Quatre situations réelles, avec l’appel à faire et ce que la personne lit dans l’application. Dans chaque exemple, b64() encode le texte en Base64 et personalNumber est le numéro d’identité de la personne.
Banque : confirmer un virement
Votre client demande un virement dans votre application de banque. Vous lui envoyez une demande de signature qu’il reçoit dans ExcelID. Il ne peut pas être trompé sur le montant ni le bénéficiaire : il signe le texte exact.
await excelid('/v1/sign', {
endUserIp: clientIp,
requirement: { personalNumber: client.personalNumber },
userVisibleData: b64('Virement de 450 000 FCFA vers R. Kaboré, compte se terminant par 4821'),
});
Pour un paiement structuré (montant, devise, bénéficiaire affichés par ExcelID), voir /payment. Conservez la preuve avec l’ordre de virement.
Opérateur mobile money : valider un retrait ou un changement de SIM
Un agent traite une demande sensible au guichet. Avant de l’exécuter, il demande au client de confirmer depuis son propre téléphone.
await excelid('/v1/sign', {
endUserIp: agentWorkstationIp,
requirement: { personalNumber: customer.personalNumber },
userVisibleData: b64('Retrait de 75 000 FCFA à l’agence de Ouagadougou Centre'),
userNonVisibleData: b64(JSON.stringify({ ticket: 'AG-20261113-0042' })),
});
userNonVisibleData vous revient dans completionData : vous y mettez votre numéro de dossier pour retrouver la transaction, sans l’afficher au client.
Administration : accéder à un service en ligne
Un citoyen se connecte à son espace pour suivre un dossier. Une identification suffit, sans texte à signer.
await excelid('/v1/auth', {
endUserIp: clientIp,
userVisibleData: b64('Connexion à votre espace dossiers'),
returnUrl: `https://services.example.bf/connexion/retour#nonce=${nonce}`,
});
Sur ordinateur, affichez le code QR animé. Sur téléphone, lancez ExcelID automatiquement. Voir Même appareil et Autre appareil.
Centre d’appels : identifier un client au téléphone
Un conseiller veut identifier la personne qui l’appelle, ou une personne qu’il appelle. Il envoie la demande sur son téléphone : voir /phone/auth.
await excelid('/v1/phone/auth', {
personalNumber: caller.personalNumber,
callInitiator: 'RP',
userVisibleData: b64('Vous êtes en appel avec le service client de Mon Service'),
});
Entreprise : signer un contrat
Un client accepte un contrat d’abonnement ou de prêt. Le texte engageant doit contenir tout ce qui compte : numéro, montant, durée.
await excelid('/v1/sign', {
endUserIp: clientIp,
userVisibleData: b64(
'Contrat de prêt n° 2026-0412 : 1 200 000 FCFA remboursés sur 12 mois, ' +
'mensualité de 108 000 FCFA. Je reconnais avoir lu les conditions générales.'),
});
Le texte peut aller jusqu’à 40 000 caractères. Pour un contrat long, signez un résumé qui contient l’empreinte du document (par exemple SHA-256) : le résumé est lu par la personne, l’empreinte l’associe au fichier complet que vous conservez.
Règle commune : ce qui n’est pas dans le texte montré n’est pas signé. Écrivez toujours le montant, le bénéficiaire ou l’objet.