Initiate Contract API
Welcome to the Initiate Contract API, your gateway to effortlessly streamline and orchestrate the process of creating and managing contracts within your application. This comprehensive guide will walk you through the seamless integration of this API, empowering you to initiate contracts, define signers, customize contract parameters, and efficiently manage callback URLs. With the power of this API at your fingertips, you can seamlessly orchestrate complex contract workflows while ensuring a smooth and user-friendly experience for all parties involved.
By leveraging the Initiate Contract API, you can easily upload your contract files, specify signer details, define callback URLs, and even customize various aspects of the contract to align with your specific requirements. The API harnesses the capability to dynamically generate signing URLs for each signer, providing a direct and secure path for individuals to engage with and sign the contract digitally.
Whether you're a developer looking to enhance your application's contract management capabilities or a business seeking a sophisticated and streamlined way to engage signers, the Initiate Contract API offers a powerful solution that seamlessly integrates into your existing infrastructure.
Join us as we delve into the details of how to leverage the Initiate Contract API to empower your application with the ability to effortlessly initiate, manage, and facilitate the signing of contracts, ensuring a frictionless and secure contract execution process for all stakeholders involved. Let's embark on this journey to revolutionize the way contracts are managed and executed within your ecosystem.
API authentication is a crucial security process that ensures authorized access to an application programming interface (API). It involves validating the identity of users or systems seeking to interact with the API. Please use the access token shared with you by your assigned Signzy's CSM. Please set the value of the key Authorization in the headers to the access token, while making an API call. In this way, Signzy's system will be able to authenticate you and you will be able to make a successful API call.
The details of the API can be found here.
Key | Type | M/O | Description |
---|---|---|---|
x-uniqueReferenceId | String | Optional | Unique reference id for each API request. It needs to be generated at client's end and passed in API. It can further be used in Initiate Contract Query API to know the status of the API call. 36 characters long, UUID number which has to be unique For example, 82541a35-d494-4fbb-97f3-e2323208986e |
Key | Type | M/O | Description |
---|---|---|---|
String | Conditionally Mandatory | The input PDF file which needs to be signed. It can be in PDF or Base64 formats. Note: Not required incase templateDetails is passed. | |
templateDetails | Object | Conditionally Mandatory | In order to generate pdf by filling data into the saved template and directly send for signing, this object will be used. Note: Not required incase pdf is passed. |
templateId | String | Mandatory | Identifier for the template - The template ID that you would have received after uploading the template with the help of Save Template API |
jsonData | Object | Mandatory | JSON data containing various fields, which were predefined for the template in Generate Contract API |
persistAuthKey | String | Optional | If the key is applied during contract creation, both the signed contract and the links to the final signed contract will be password protected using that key. It accepts alpha numeric values. |
smtpCredentials | object | Optional | You can use this object to customise SMTP server. This helps you send mails from your domain instead of Signzy |
customSendingLogic | object | Optional | You can use this object to receive notification data of specific events onyour webhook URL. This can be utilised to send notifications to the contract invitees from your end. |
url | String | Mandatory | Mandatory within customSendingLogic object Webhook URL for posting the data of specified notifications |
event | Array of string | Mandatory | Mandatory within customSendingLogic object List of notification events for which data needs to be posted on given webhook URL. This can have any values from below list of notification events: "OTP_VERIFICATION" "CONTRACT_INITIATION", "SIGNER_CONFIRMATION", "FINAL_CONFIRMATION", "REMINDER", "REVIEWER_MAIL" |
header | String | Mandatory | If the webhook URL uses authentication, pass the authroization header value in this key |
contractName | String | Mandatory | Name of the contract |
contractExecuterName | String | Mandatory | Name of the entity who has initiated/created/started the contract signing process |
successRedirectUrl | String | Optional | The redirect URL - Post the completion of the Journey, in cases of successful completion, it will be redirected to this page |
failureRedirectUrl | String | Optional | The redirect URL - Post the completion of the Journey, in cases of failures, it will be redirected to this page |
contractTtl | String | Optional | The time in seconds after which the contract will expire (By default, it's 14 days) |
callbackUrl | String | Optional | Callback url for posting data of the contract |
callbackUrlAuthorizationHeader | String | Optional | If the callback URL uses authentication, pass the authroization header value in this key |
signerCallbackUrl | String | Optional | Signer Callback url for posting data once Aadhaar ESign Process for the particular transaction is completed by the signer. |
signerCallbackUrAuthorizationHeader | String | Optional | If the Signer Callback URL uses authentication, pass the authroization header value in this key |
esignProvider | String | Optional | The provider of the Aadhaar eSign. By default, it will be eMudhra. It can be set to either - nsdl eMudhra cdsl vsign |
nameMatchThreshold | String | Optional | In case of Aadhaar esigning, the name extracted after signer signs with aadhaar esign must match with signerName mentioned for a particular signer. If the percentage of name match is less than the threshold, it will be retry scenario. The details would be posted on callback URL for the integrator to make a decision. Possible Values : "0.01", "0.02", "0.03", ...... , "1.00" |
allowSignerGenderMatch | String | Optional | In case of Aadhaar esign, if this parameter is set to true, the signer gender extracted from aadhaar must match with signerGender mentioned for a particular signer. If it doesn't match, it wiil be a retry scenario. Note : And once this parameter is passed, signerGender becomes a mandatory parameter with values ["Male","Female","Transgender"]. |
allowSignerYOBMatch | String | Optional | In case of Aadhaar esign, if this parameter is set to true, the signer YOB extracted from aadhaar must match with YOB mentioned in signerYearOfBirth for a particular signer. If it doesn't match, it will be a retry scenario. Note : And once this parameter is passed, signerYearOfBirth becomes a mandatory parameter. |
allowUidLastFourDigitsMatch | String | Optional | in case of Aadhaar esign, if this parameter is set to true, the signer last 4 digits of Aadhaar extracted from aadhaar must match with last 4 digits of Aadhaar mentioned in uidLastFourDigits for a particular signer. If it doesn't match, it will be a retry scenario. Note : And once this parameter is passed, uidLastFourDigits becomes a mandatory parameter. |
allowPincodeMatch | String | Optional | In case of Aadhaar esign, if this parameter is set to true, the signer pincode extracted from aadhaar must match with pincode mentioned in pincode for a particular signer. If it doesn't match, it will be a retry scenario. Note : And once this parameter is passed, pincode becomes a mandatory parameter. |
emudhraCustomization | Object | Optional | In case of eMudhra as eSign Provider, you can customize using this option |
signerdetail | Array of Objects | Mandatory | Details about all the signers. |
signerName | String | Mandatory | Name of the signer. |
signerMobile | String | Optional | If this value is passed, an SMS and Whatsapp will be used for communicating with the end customers |
signerEmail | String | Optional | If this value is passed, email will be used to communicate with the end customers |
signerGender | String | Optional | Gender of the signer (Male/Female/Transgender). |
uidLastFourDigits | String | Optional | Last 4 digits of the Aadhaar Number of the signer. |
signerYearOfBirth | String | Optional | Year of birth of the signer. |
pincode | String | Optional | pincode of the signer |
signerUniqueId | String | Optional | Unique id for the signer to identify each of the signers |
signatureType | String | Mandatory | The type of signatures. The possible values are - aadhaaresign-otp, aadhaaresign-fingerprint, aadhaaresign-faceauth, smartesign |
additionalSignatureTypes | Array of Strings | Optional | The type of signatures. The possible values are - aadhaaresign-otp, aadhaaresign-fingerprint, aadhaaresign-faceauth, smartesign CLICKWRAP |
preVerification | Array of Strings | Optional | To enable additional verification for a particular signer before the signing step, this field will be used. Following are allowed objects: otp : enables otp verification. otp will be sent to all the provided communication channel for the signer livenessVerification: enables liveness verification during the signing journey. imagecapture: enables capturing of live image during the signing journey |
organizationName | String | Optional | To enable stamping alongiwith signing on behalf of an organization, you can pass the organization name and the name of organization will appear. |
postVerification | Array of Strings | Optional | To enable additional verification for a particular signer after the signing step, this field will be used. Following are allowed objects: otp : enables otp verification. otp will be sent to all the provided communication channel for the signer livenessVerification: enables liveness verification during the signing journey. |
matchImage | Array of strings | Optional | To enable face match verification, this field will be used. Face detected within the Image passed in this field will be matched against the live person face during the signing. This can be only used if you have passed livenessVerification for the particualr signer as a part of preVerification/postVerificaiton. |
allowIflivenessFails | Boolean | Optional | To allow signer to continue with the signing journey even if liveness check fails, pass true. By default, value will be false |
allowIfFaceMatchFails | Boolean | Optional | To allow signer to continue with the signing journey even if face match check fails, pass true. By default, value will be false |
signatures | Array of Objects | Mandatory | To allow signature to be placed at multiple places on the same page. Following is the signature object: pageNo : array of page numbers where signautres need to be pasted. Pass ALL, if signature is required on all pages. signaturePosition : Position where signature is required
In case of CUSTOMIZE, pas the x,y coordinate and height, width. height : height of signautre width : width of signature xCoordinate : array of coordinates, yCoordinate : array of coordinates, NOTE : No. of xCoordinate and yCoordinate must be equal |
docSigner | Array of Objects | Optional | To use automated signing to do signatures of authorised signatory of organisation |
workflow | Boolean | Optional | Pass value as true, if you want the workflow |
isParallel | Boolean | Optional | Pass value as true, if you want the parallel signing By default, it will be a sequential signing |
redirectTime | Number | Optional | The time after which it redirects. The time is in seconds. Deafult value - 5 seconds |
locationCaptureMethod | String | Optional | It can take two value - ip, browser |
initiationEmailSubject | String | Optional | It subject line of the email that will be sent to customers |
customerMailList | Array of Strings | Optional | List of email IDs which will receive the details |
customerMailListVisibility | String | Optional | You can decide whether you want to keep the customer mail list in cc or bcc while sending the email By default it will be cc |
adminMailList | Array of Strings | Optional | List of email IDs which would recieve every update of the contract, it can be used for RM assisted journeys |
eStamp | Object | Optional | This is a option to get a stamped document to sign |
emailPdfCustomNameFormat | String | Optional | Custom Name format of the PDF sent in email |
logoUrl | String | Optional | Logo of the customer which will be used to whitelablel |
remindersPerDay | Number | Optional | Reminders Per Day The maxium reminders that can be sent is 4 per day |
signOnStamp | Boolean | Optional | Pass true if you want signature to appear on affixed stamp paper as well By default, it is false |
showAadhaarNameOnSignature | Boolean | Optional | If passed true, aadhaar name extracted from aadhaar database after aadhaar eSign, will be used in the signature appereance instead of the name provided in the api request paylaod. Only applicable when eSign Provider is either VSIGN or CDSL. By default, this is false |
InitiationMailSubject | String | Optional | Custom Subject line for the signing mail which is sent to the signer |
clickwrapConsentText | String | Optional | Only applicable for Cickwrap signature method Custom text to be used in clickwrap signing step |
locationCaptureMethod | String | Optional | If passed, geolocation capturing is enabled. you can pass either two things - ip : In this case, geolocation is captured automatically without user's involvement. browser : In this case, user is asked to allow permission for capturing geolocation. (broswer popup) |
Key | Description | Type | Mandatory/Optional |
---|---|---|---|
logoURL | URL for the custom logo | String | Optional |
headerColour | Color code for the header | String | Optional |
buttonColour | Color code for buttons | String | Optional |
maskedAadhaarField | Customization for Aadhaar field | String | Optional |
secondaryButtonColour | Color code for secondary buttons | String | Optional |
pageBackgroundColour | Color code for page background | String | Optional |
pageTextColour | Color code for page text | String | Optional |
footerBackgroundColour | Color code for footer background | String | Optional |
footerTextColour | Color code for footer text | String | Optional |
successTextColour | Color code for success text | String | Optional |
errorTextColour | Color code for error text | String | Optional |
errorBackgroundColour | Color code for error background | String | Optional |
linkTextColour | Color code for link text | String | Optional |
infoIconColour | Color code for info icon | String | Optional |
textFieldBorderColour | Color code for text field border | String | Optional |
Note: All the properties under "emudhraCustomization" are marked as optional, as they may not be necessary for the customization, and their absence would not cause any issues.
Parameter Name | Type | Mandatory/Optional | Description |
---|---|---|---|
signatureOptions | String | Mandatory | Pass either of the below 2 supported signature options -
|
certificateId | String | Conditionally Mandatory | Pass the certificate ID of docSignerClass2 or docSignerClass3or VIRTUALESIGN or SEAL whichever you want to use to sign the document. CertificateID can be generated by using UploadDocSignConfig API. |
signingStep | String | Optional | It can be START or END |
signatures | Array of Objects | Mandatory | An array of signature objects where the signatures will be placed |
signatures.pageNo | Array | Mandatory | Array of page numbers to specify where the signature(s) should be placed. Note - In case where signature needs to be placed on all pages, pass the value ALL In case where signature needs to be placed on all pages, pass the value LAST |
signatures.signaturePosition | String | Mandatory | Position for the signature on the specified page. It will accept the following values -
In case of passing the value "CUSTOMIZE", the xCoordinate, yCoordinate, height and width must be passed |
signatures.xCoordinate | Array of Numbers | Conditionally Mandatory | X-coordinate for the specified signature placement. |
signatures.yCoordinate | Array of Numbers | Conditionally Mandatory | Y-coordinate for the specified signature placement. |
signatures.height | Number | Conditionally Mandatory | Height of the signature box for the specified page. The minimum value is 70(pixels). If no value is provided or a value less than 70 is passed, it will be set to the default height of 70. |
signatures.width | Number | Conditionally Mandatory | Width of the signature box for the specified page. The minimum value is 130(pixels). If no value is provided or a value less than 130 is passed, it will be set to the default width of 130. |
reason | String | Optional | Only applicale in cases of Doc Signer Class 3. You can pass a reason for the signing You can remove this from the request body if you are using Doc Signer Class 2. |
location | String | Optional | Only applicale in cases of Doc Signer Class 3. You can pass a location for the signing. For example, Bangalore. You can remove this from the request body if you are using Doc Signer Class 2. |
Keys | Description | Type | M/O |
---|---|---|---|
type | you want to use estamp or eChallan. Values are - ECHALLAN ESTAMP | string | Mandatory |
stateCode | state code of the states where estamps are valid. Possible values : ["KA", "MH", "GJ", "AP", "AN", "AS", "BR", "CT", "CH", "DN", "DD", "DL", "HP", "JK", "JH", "LA", "OR", "PY", "RJ", "TN", "TR", "UP", "UT", "PB", "WB", "GA", "HR", "KL", "MN", "ML", "MZ", "NL", "LD", "SK", "AR", "TG", "MP"] | string | Mandatory |
firstPartyName | name of first party involved in the transaction | string | Mandatory |
secondPartyName | name of second party involved in the transactiton | string | Mandatory |
stampDutyValue | amount of the stamp duty | string | Mandatory in cases when type eStamp |
purposeOfStampDuty | purpose of stamp duty | string | Mandatory |
considerationPrice | amount of fund involved in the transaction | string | Mandatory in cases when type eStamp |
articleCode | article Code for E-stamping | string | Mandatory |
stampDutyPaidBy | name of the party who paid the stamp duty(first party or second party) | string | Mandatory |
location | location of defacement. available option : topLeft, topCenter, middleLeft, middleCenter, bottomLeft, bottomCenter Right not included as there can be space issue. | String | Optional (By default bottomLeft) |
amount | amount of the eChallan duty | Number | Mandatory in cases when type is eChallan, not needed when type is estamp |
count | No of stamp papers to be used of given stamp details | Mandatory | |
pageNo | Page no on which defacement is needed. | Array | Optional(By default first page) |
custmonDefacement | Message text for custom defacement, It can contain variables. the variable should be enclosed in {{}} and can be one from below: Echallan: {{challanNo}},{{challanDate}},{{stateCode}},{{firstPartyName}},{{articleCode}},{{amount}},{{secondPartyName}},{{purposeOfStampDuty}},{{stampDutyPaidBy}} Estamp: {{certificateNo}}{{certificateDate}} {{uniqueDocRef'}} {{firstPartyName'}} {{stateCode'}},{{articleCode'}} {{denomination}} {{secondPartyName}} {{stampDutyPaidBy}} {{'purposeOfStampDuty'}} | String | Optional |
lossCap | In case of dnyamic stamping, losscap represents the maxium amount of loss, for example, if the amount passed in stamp is INR 1203 and loss cap is 97, so we can get a stamp paper with a maximum value of 1300 (1203+97) | Number | Optional |
mergeLimit | In case of dynamic stamping, mergeLimit reprsents the maximum number of stamp paper which should be clubbed to get to the amount of stamp value | Number | Optional |
keys | Description | Type | M/O |
---|---|---|---|
pageNo | Page no on which defacement is needed | Number | Mandatory |
location | location of defacement. available option : topLeft, topCenter, middleLeft, middleCenter, bottomLeft, bottomCenter, Right not included as there can be space issue In case of passing the value "CUSTOMIZE" the xCoordinate, yCoordinate must be passed | String | Mandatory |
xCoordinate | X-coordinate for the revenue stamping | String | Conditionally Mandatory |
yCoordinate | Y-coordinate for the revenue stamping | String | Conditionally Mandatory |
customDefacement | If passed, custom defacement will be enabled. text for custom defacement can contain variables. the variable should be enclosed in {{}} and can be one from the given: {{uniqueReferenceNumber}} {{documentName}} {{lotNo}} | String | Optional |
documentName | Document Name for which stamping is done | String | Optional |
Keys | Description | Type | M/O |
---|---|---|---|
name | Name of the reviewer | string | Mandatory |
Email ID of the reviewer | string | Mandatory |
You can add reviewers who can review the document. It can have 3 reviewers and all of them would be in sequential manner.
Field Name | Description | Mandatory/Optional | Type |
---|---|---|---|
emudhraCustomization | Customization options for Emudhra ESP including button color, header color, and logo URL. | Optional | Object |
customerId | Unique identifier for the customer. | Mandatory | String |
username | Username of the customer. | Mandatory | String |
contractId | Unique identifier for the contract. | Mandatory | String |
URL to the PDF document. | Mandatory | String | |
initialContractHash | Initial hash of the contract. | Mandatory | String |
contractName | Name of the contract. | Mandatory | String |
contractExecuterName | Name of the contract executor. | Mandatory | String |
successRedirectUrl | URL to redirect after successful contract execution. | Mandatory | String |
failureRedirectUrl | URL to redirect in case of contract execution failure. | Mandatory | String |
eSignProvider | Name of the e-sign provider (e.g., EMUDHRA). | Mandatory | String |
contractTtl | Time to live (in milliseconds) for the contract. | Mandatory | Number |
signerdetail | Details of signers for the contract. | Mandatory | Array of Objects |
callbackUrl | URL for callback upon contract completion. | Mandatory | String |
callbackUrlAuthorizationHeader | Authorization header for the callback URL. | Optional | String |
signerCallbackUrl | URL for individual signer callbacks. | Optional | String |
callbackExtraParameter | Extra parameters for the callback. | Optional | Array of Strings |
fileTtl | Time to live for the uploaded files (e.g., "2 days"). | Mandatory | String |
estamp | Electronic stamp details for the contract. | Optional | Object |
x-uniqueReferenceId | Unique reference id for each API request. It needs to be generated at client's end and passed in API. It can further be used in Initiate Contract Query API to know the status of the API call. 36 characters long, UUID number which has to be unique For example, 82541a35-d494-4fbb-97f3-e2323208986e | Optional | String |
Field Name | Description | Mandatory/Optional | Type |
---|---|---|---|
signerId | Unique identifier for the signer. | Mandatory | String |
signerName | Name of the signer. | Mandatory | String |
signatureType | Type of signature for the signer. | Mandatory | String |
uidLastFourDigits | Last four digits of signer's UID. | Mandatory | String |
signerYearOfBirth | Year of birth of the signer. | Mandatory | String |
signerGender | Gender of the signer. | Mandatory | String |
signatures | Signature details for the signer. | Mandatory | Array of Objects |
esignUrl | URL for the e-sign process of the signer. | Mandatory | String |
Field Name | Description | Mandatory/Optional | Type |
---|---|---|---|
pageNo | Page number(s) for the signature. | Mandatory | Array |
signaturePosition | Position(s) of the signature on the page. | Mandatory | Array of Strings |
xCoordinate | X-coordinate(s) of the signature. | Optional | Array of Numbers |
yCoordinate | Y-coordinate(s) of the signature. | Optional | Array of Numbers |
Field Name | Description | Mandatory/Optional | Type |
---|---|---|---|
type | Type of electronic stamp (e.g., eChallan). | Mandatory | String |
secondPartyName | Name of the second party in the stamp. | Mandatory | String |
firstPartyName | Name of the first party in the stamp. | Mandatory | String |
stateCode | State code for the stamp. | Mandatory | String |
articleCode | Article code for the stamp. | Mandatory | String |
purposeOfStampDuty | Purpose of the stamp duty. | Mandatory | String |
amount | Amount of stamp duty. | Mandatory | Number |
location | Location of the stamp on the document. | Mandatory | String |
custmonDefacement | Customization option for defacement. | Mandatory | String |
message | Message for the stamp. | Mandatory | String |
Parameter | Type | Description |
---|---|---|
name | String | In case of errors, it will have the value "error". It represents an error. |
message | String | Message for the error |
reason | String | Reasons for the error |
type | String | Type of error |
statusCode | String | Status code of the error |
Error Code | Error Message | Explanation |
---|---|---|
400 | Bad Request | Input parameter has a missing required parameter or invalid inputs |
401 | Authorization Failed | Authorization token is invalid |
500 | Internal Server Error | Internal error at Signzy, Please reach out to [email protected] |
The purpose of user-defined fields is to offer you the capability to transmit any of the customer's data for mapping within our system.
You can define an object with the following structure:
The keys of the object userDefinedField has to be defined by the client and it will be part of settings. For example, in above case, "homeloanKey" has been defined and the type of key is set to be boolean.
The type of key can be either boolean, string or number.
Once it is defined, it can be part of Initiate Contract API payload. All of these fields will be optional.
At maximum, you can define 20 keys.