Contract360 Workflow

Initiate Contract API

24min

Introduction

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.

Authentication

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.

API Details

The details of the API can be found here.

Sample cURL

Pre Production
Production


Input Parameters

Header Parameters

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

Body Parameters

Key

Type

M/O

Description

pdf

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

  1. TOP-LEFT
  2. TOP-CENTER
  3. TOP-RIGHT
  4. MIDDLE-LEFT
  5. MIDDLE-CENTER
  6. MIDDLE-RIGHT
  7. BOTTOM-LEFT
  8. BOTTOM-CENTER
  9. BOTTOM-RIGHT
  10. CUSTOMIZE

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)

eMudhra Customizations

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.

DocSigner

Parameter Name

Type

Mandatory/Optional

Description

signatureOptions

String

Mandatory

Pass either of the below 2 supported signature options -

  • docSignerClass2
  • docSignerClass3
  • VIRTUALESIGN
  • SEAL

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 -

  • TOPLEFT
  • TOPCENTER
  • TOPRIGHT
  • MIDDLELEFT
  • MIDDLECENTER
  • MIDDLERIGHT
  • BOTTOMLEFT
  • BOTTOMCENTER
  • BOTTOMRIGHT
  • CUSTOMIZE

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.

eStamping Details

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

Revenue Stamping Details

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



Reviewer Details

Keys

Description

Type

M/O

name

Name of the reviewer

string

Mandatory

email

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.

Sample Response

200


Output Parameters

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

pdf

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

SignerDetail:

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

Signature (within SignerDetail):

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

eStamp:

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

Sample Errors

400
400
400
400
401
500


Error Parameters

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 Codes

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]

Callback & Signer Callback Response

Callback Response

Success


Signer Callback Response

Success
UID Last 4 Digits Mismatch
YOB Mismatch
Name Mismatch
Maximum OTP Limits


User Defined Fields

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.

Steps To Use User Defined Fields

You can define an object with the following structure:

JSON


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.