
E-Sign Documents on the Go
With KAiZEN – Digital Signature Tool, stay productive no matter where you are. With cross-platforms compatibility feature, you can e-sign documents seamlessly on any device. Whether you’re using Windows, macOS, Android, or iOS, KAiZEN ensures a seamless experience.
Perfect for remote teams, field agents, and on-the-move professionals who need secure, legally binding signatures in seconds.
Why Choose KAiZEN - Digital Signature Tool
Enable eSignatures in Tally
Instantly via KAiZEN
About KAiZEN
KAiZEN is a secure and efficient online digital signature tool that streamlines document signing processes. It eliminates the hassle of printing, scanning, and mailing, saving you valuable time and money. With KAiZEN, you can accelerate approvals and improve overall efficiency.
KAiZEN offers completely secure and legally compliant digital signatures, protecting your sensitive documents. Our advanced security measures ensure the integrity and authenticity of every signature, giving you peace of mind. With KAiZEN, you can confidently digitize your document signing processes, knowing your information is safe.

KAiZEN process flow

Review & Initiate eSignatures
Review the document information and eSignature request from requestor. Once all the information is verified, click on “Click here to Sign” button to initiate the process for adding eSignatures.

Single Click, Seamless eSignature
Once the button is clicked, it will open KAiZEN Editor to eSign the document .

Sign Your Way
Requestor can pre-define the eSignature location for signer, which is marked with a “sign here” prompt
Else, Signer has the option to select the spot by clicking the “+ Signature” button on the top right corner.

Digital Stamp Placed
Now, Draw the signature and click the “Insert” button within the popup. This will place the signature at the predefined location. The signer can still reposition the signature to a different spot by using the drag-and-drop feature with the action buttons.

Finalize and Forward
After signing all the required locations, click the “Submit” button. Upon clicking, a thank you message will be displayed.
Integrate eSignatures with your Favorite Platform
Best Digital Signature Tool for Business Workflows
KAiZEN is more than just an eSignature platform—it’s a complete digital signature solution for businesses of all sizes. From startups to enterprises, streamline approvals, reduce paperwork, and boost productivity.
Invoices & Expense Reports
Get invoices signed easily and keep track of those already approved.
Sales Agreements & PO
Close deals and sign sales contracts securely and easily using KAiZEN.
Non-Disclosure Agreements
Sign NDAs with one or multiple clients instantly.
HR Onboarding Policies
Make onboarding quicker and easier. Get new employees’ signatures on various documents using KAiZEN.
Compliance Forms
Sign compliance forms from anywhere using KAiZEN.
Rent & Lease Agreement
Finalize rental terms and sign lease agreements effortlessly with KAiZEN.
Government Forms
Complete and Submit Government Forms accurately and securely with KAiZEN.
Loan & Mortgage Applications
Expedite your loan and mortgage applications with KAiZEN's streamlined process.
Affordable pricing. Easy .
We offer a variety of plans to fit your needs and budget. Ready to take your digital signing process to the next level? Choose your plan and start e-signing today!
Free
- 10 documents per month, Audit trail
Pro (Startups)
- Unlimited documents, Support via email
Enterprise (Large Organizations)
- Unlimited documents, Support on Priority, API Access
We don't charge for per user. Just pay for your needs.
Seamless API Integration
Seamlessly integrate Digital Signatures into your apps, ensuring efficiency and secure document workflows.
Sample HTTP Request:
HttpRequest request = new HttpRequest();
request.setEndpoint( << Initiate Sign Endpoint URL >> );
request.setMethod(‘POST’);
request.setHeader(‘Content-Type’, ‘application/json’);
request.setBody( << JSON Body as shown below >> );
request.setTimeout(120000);
Sample JSON Body:
{
“docContent”: “<< Base64 Content for the PDF File. Refer Step 1>>”,
“docName”: “TestBase64File”,
“appToken”: “01HQMDX-YCP019-Z2P3SX-QPSB53-8B4A3F-BC40B8-B10908-FB2FF4-A”,
“requesterEmail”: “test@123.com”,
“requesterName”: “Mohit Bansal”,
“description”: “Sales Contract Document”,
“signers”:[
{
“signerEmail”: “testmail@gmail.com”,
“signerName”: “Mr Harjeet”,
“order”:”1″
{
“signerEmail”: “sales@ayansoftwares.com”,
“signerName”: “Mr Gurleen”,
“order”:”2″
},
],
“CallBackURL”: “<< callback url >>
“docDescription”: “Sales Contract Document”
}
Sample HTTP Response:
{
“FailRules”: [],
“Data”: {
“SignRequestId”: “01HV6MEARQD3X8ZXXX5FR3YDB8”,
“RequestNo”: “KAiZEN-118”
}
}
const axios = require('axios');
let data = JSON.stringify({
"docContent": "<< base 64 content of the document",
"docName": "KaizenTest.pdf",
"appToken": "xxxxxxxx-xxxxx (Add App Token shared by KAiZEN Team)",
"requesterEmail": "xyz@gmail.com",
"requesterName": "XYZ",
"requesterPhone": "xxxxx-xxx-xxxx",
"description": "",
"newRequestEmailSubject": "You have a document to sign",
"requesterMessage": "Kindly eSign your document",
"signers": [
{
"signerEmail": "signer1@gmail.com",
"signerName": "Signer1",
"signerPhone": "xx-xxx-xxxx-xxx",
"order": "1",
"signerRole": "signer"
},
{
"signerEmail": "signer2@gmail.com",
"signerName": "Signer2",
"signerPhone": "xxx-xxx-xxxx-xxxx",
"order": "2",
"signerRole": "reviewer"
}
],
"docDescription": "Base 64 string based test doc",
"callbackurl": ""
});
let config = {
method: 'post',
maxBodyLength: Infinity,
url: 'https://fa-kaizen-staging.azurewebsites.net/api/Sign/RequestStr?code=mLgEBTpi9dfooQ6TB9gc7sa4qiIuuxmqQYoTx8nQQ1StAzFu93g06A==',
headers: {
'Content-Type': 'application/json'
},
data : data
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
curl --location 'https://fa-kaizen-staging.azurewebsites.net/api/Sign/RequestStr?code=mLgEBTpi9dfooQ6TB9gc7sa4qiIuuxmqQYoTx8nQQ1StAzFu93g06A%3D%3D' \
--header 'Content-Type: application/json' \
--data-raw '{
"docContent":"base 64 content of the document",
"docName": "KaizenTest.pdf",
"appToken": "xxxxxxxx-xxxxx (Add App Token shared by KAiZEN Team)",
"requesterEmail": "xyz@gmail.com",
"requesterName": "XYZ",
"requesterPhone": "xxxxx-xxx-xxxx",
"description" :"",
"newRequestEmailSubject":"You have a document to sign",
"requesterMessage": "Kindly eSign your KAiZEN Test PDF",
"signers": [
{
"signerEmail": "signer1@gmail.com",
"signerName": "Signer1",
"signerPhone": "xx-xxx-xxxx-xxx",
"order": "1",
"signerRole": "signer"
},
{
"signerEmail": "signer2@gmail.com",
"signerName": "Signer2",
"signerPhone": "xxx-xxx-xxxx-xxxx",
"order": "2",
"signerRole": "reviewer"
}
],
"docDescription": "Base 64 string based test doc",
"callbackurl": ""
}'
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://fa-kaizen-staging.azurewebsites.net/api/Sign/RequestStr?code=mLgEBTpi9dfooQ6TB9gc7sa4qiIuuxmqQYoTx8nQQ1StAzFu93g06A==");
var content = new StringContent("{\n \"docContent\":\"< >\",\n \"requesterEmail\": \"xyz@gmail.com\",\n \"requesterName\": \"XYZ\",\n \"requesterPhone\": \"xxxxx-xxx-xxxx\",\n \"description\" :\"\",\n \"newRequestEmailSubject\":\"You have a document to sign\",\n \"requesterMessage\": \"Kindly eSign your KAiZEN Test PDF\",\n \"signers\": [\n {\n \"signerEmail\": \"signer1@gmail.com\",\n \"signerName\": \"Signer1\",\n \"signerPhone\": \"xx-xxx-xxxx-xxx\",\n \"order\": \"1\",\n \"signerRole\": \"signer\"\n \n },{\n \"signerEmail\": \"signer2@gmail.com\",\n \"signerName\": \"Signer2\",\n \"signerPhone\": \"xxx-xxx-xxxx-xxxx\",\n \"order\": \"2\",\n \"signerRole\": \"reviewer\"\n \n }\n ],\n \n \"docDescription\": \"Base 64 string based test doc\",\n \"callbackurl\": \"\"\n}", null, "application/json");
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://fa-kaizen-staging.azurewebsites.net/api/Sign/RequestStr?code=mLgEBTpi9dfooQ6TB9gc7sa4qiIuuxmqQYoTx8nQQ1StAzFu93g06A==');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/json'
));
$request->setBody('{\n "docContent":"< >",\n "requesterEmail": "xyz@gmail.com",\n "requesterName": "XYZ",\n "requesterPhone": "xxxxx-xxx-xxxx",\n "description" :"",\n "newRequestEmailSubject":"You have a document to sign",\n "requesterMessage": "Kindly eSign your KAiZEN Test PDF",\n "signers": [\n {\n "signerEmail": "signer1@gmail.com",\n "signerName": "Signer1",\n "signerPhone": "xx-xxx-xxxx-xxx",\n "order": "1",\n "signerRole": "signer"\n \n },{\n "signerEmail": "signer2@gmail.com",\n "signerName": "Signer2",\n "signerPhone": "xxx-xxx-xxxx-xxxx",\n "order": "2",\n "signerRole": "reviewer"\n \n }\n ],\n \n "docDescription": "Base 64 string based test doc",\n "callbackurl": ""\n}');
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
import http.client
import json
conn = http.client.HTTPSConnection("fa-kaizen-staging.azurewebsites.net")
payload = json.dumps({
"docContent": "< >",
"requesterEmail": "xyz@gmail.com",
"requesterName": "XYZ",
"requesterPhone": "xxxxx-xxx-xxxx",
"description": "",
"newRequestEmailSubject": "You have a document to sign",
"requesterMessage": "Kindly eSign your KAiZEN Test PDF",
"signers": [
{
"signerEmail": "signer1@gmail.com",
"signerName": "Signer1",
"signerPhone": "xx-xxx-xxxx-xxx",
"order": "1",
"signerRole": "signer"
},
{
"signerEmail": "signer2@gmail.com",
"signerName": "Signer2",
"signerPhone": "xxx-xxx-xxxx-xxxx",
"order": "2",
"signerRole": "reviewer"
}
],
"docDescription": "Base 64 string based test doc",
"callbackurl": ""
})
headers = {
'Content-Type': 'application/json'
}
conn.request("POST", "/api/Sign/RequestStr?code=mLgEBTpi9dfooQ6TB9gc7sa4qiIuuxmqQYoTx8nQQ1StAzFu93g06A==", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n \"docContent\":\"<>\",\n \"requesterEmail\": \"xyz@gmail.com\",\n \"requesterName\": \"XYZ\",\n \"requesterPhone\": \"xxxxx-xxx-xxxx\",\n \"description\" :\"\",\n \"newRequestEmailSubject\":\"You have a document to sign\",\n \"requesterMessage\": \"Kindly eSign your KAiZEN Test PDF\",\n \"signers\": [\n {\n \"signerEmail\": \"signer1@gmail.com\",\n \"signerName\": \"Signer1\",\n \"signerPhone\": \"xx-xxx-xxxx-xxx\",\n \"order\": \"1\",\n \"signerRole\": \"signer\"\n },{\n \"signerEmail\": \"signer2@gmail.com\",\n \"signerName\": \"Signer2\",\n \"signerPhone\": \"xxx-xxx-xxxx-xxxx\",\n \"order\": \"2\",\n \"signerRole\": \"reviewer\"\n }\n ],\n \"docDescription\": \"Base 64 string based test doc\",\n \"callbackurl\": \"\"\n}");
Request request = new Request.Builder()
.url("https://fa-kaizen-staging.azurewebsites.net/api/Sign/RequestStr?code=mLgEBTpi9dfooQ6TB9gc7sa4qiIuuxmqQYoTx8nQQ1StAzFu93g06A==")
.method("POST", body)
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();