To add an extra layer of security to your online transactions, Sign offers robust and flexible recipient-authentication options. Specifically, you can select various ways of validating the identity of the recipient of an invitation to a transaction before they are permitted to access the transaction's documents.

General Authentication refers to tools built into Conga Sign that enable you to verify the identity of the recipient through SMS, Email, or a custom Question and Answer format.

Knowledge-Based Authentication (KBA) relies on a third-party KBA provider to perform the authentication. That provider is either Equifax US or Equifax Canada.

KBA questions are generated dynamically, based on information in a signer's personal credit report.

KBA authentication can be used in conjunction with any one of the General authentication methods above.

Using General Authentication

The code below illustrates how to edit the auth object for each authentication method. If you need a comparison with basic document-object creation, or if this is your first time creating a package with the Java SDK, see this Creating a Transaction.

HTTP Request

POST /api/cs-packages
JS

HTTP Headers

Accept: application/json
Content-Type: application/json
Authorization: Bearer access_token
JS

Request Payload

{   "roles": [   {   "type": "SIGNER",   "index": 0,   "signers": [   {   "auth": {   "scheme": "CHALLENGE",   "challenges": [   {   "answer": "golf",   "question": "What's your favorite sport?",   "maskInput": false   }   ]   },   "email": "john.smith@example.com",   "firstName": "John",   "lastName": "Smith"   }   ],   "name": "Signer1"   },   {   "type": "SIGNER",   "index": 0,   "signers": [   {   "auth": {   "scheme": "SMS",   "challenges": [   {   "answer": null,   "question": "+15515584587",   "maskInput": false   }   ]   },   "email": "mary.doe@example.com",   "firstName": "Mary",   "lastName": "Doe"   }   ],   "name": "Signer2"   }   ],   "status": "DRAFT",   "type": "PACKAGE",   "name": "Signer Authentication Example"   }
JS

For a complete description of each field, see the Request Payload Table section below.

Response Payload

{   "id": "9sKhW-h-qS9m6Ho3zRv3n2a-rkI="   } 
JS

Manually sending an SMS code

A new SMS code is generated and sent each time a signer clicks the email link. If for any reason you need to manually send a new SMS code, the following code will do this:

HTTP Request

POST /api/cs-packages/{packageId}/roles/{roleId}/sms_notification
JS

HTTP Headers

Accept: application/json
Content-Type: application/json
Authorization: Bearer access_token
JS

Using KBA

You can also authenticate a signer with KBA. The sample JSON string below shows you how to edit the signer's object with KBA. The withTimeAtAddress field can be left empty. The following code will do this:

{   "signers":[   {   "delivery":{   "email":false   },   "email":"signer1@example.com",   "firstName":"John",   "lastName":"Doe",   "auth":{   "scheme":"NONE",   "challenges":[   ]   },   "knowledgeBasedAuthentication":{   "signerInformationForEquifaxUSA":{   "firstName":"John",   "lastName":"Doe",   "streetAddress":"2020 Broadway Street",   "city":"New York",   "zip":"12345",   "state":"NY",   "timeAtAddress":5,   "driversLicenseNumber":"1234567890",   "dateOfBirth":"1969-12-09T00:00:00Z",   "socialSecurityNumber":"123456789",   "homePhoneNumber":"1234567890"   }   }   }   ],   "reassign":false,   "emailMessage":{   "content":""   },   "attachmentRequirements":[   ]   }
JS

Request Payload Table

PropertyTypeEditableRequiredDefaultSample Values
statusstringYesNoDRAFT

DRAFT/SENT/COMPLETEDARCHIVED/ 

DECLINED/OPTED_OUT/EXPIRED 

typestringYesNoPACKAGEPACKAGE/TEMPLATE/LAYOUT 
namestringYesNon/aSigner Authentication Example 
roles
typestringYesNoSIGNERSIGNER/SENDER 
indexindexYesNo00/1/2 ...
namestringYesNon/aSigner1 
signers
emailstringYesNon/asigner1@example.com 
firstNamestringYesNon/aPatty 
lastNamestringYesNon/aGalant 
auth
schemestringYesNon/aCHALLENGE/SMS 
challenges
answerstringYesNon/agolf 
questionstringYesNon/aWhat's your favorite sport? 
maskInputbooleanYesNofalse/ +15515584587