Multi-Party Signing Workflows
Many agreements require signatures from multiple parties. sajn supports flexible signing workflows, from simple parallel signing to complex sequential approval chains.
Understanding Signing Orders
sajn offers three approaches for multi-party signing:
Type Description Use Case Parallel Everyone signs at the same time NDAs, simple contracts Sequential One after another in order Approval chains, escalations Mixed Some parallel, some sequential Complex workflows
Parallel Signing
In parallel signing, all signers receive the document at the same time and can sign in any order.
Configuration
Set all signers to the same signingOrder:
curl -X POST https://app.sajn.se/api/v1/documents \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Non-Disclosure Agreement",
"type": "SIGNABLE",
"documentMeta": {
"signingOrder": "PARALLEL"
},
"signers": [
{
"name": "Anna Andersson",
"email": "anna@company.se",
"role": "SIGNER",
"signingOrder": 1,
"deliveryMethod": "EMAIL",
"requiredSignature": "BANKID"
},
{
"name": "Erik Eriksson",
"email": "erik@partner.se",
"role": "SIGNER",
"signingOrder": 1,
"deliveryMethod": "EMAIL",
"requiredSignature": "BANKID"
}
]
}'
When to Use Parallel Signing
NDAs where both parties need to agree
Simple contracts with equal parties
Time-sensitive documents where speed matters
Multi-party agreements without dependency requirements
Parallel signing is faster because signers don’t wait for each other. Use it when there’s no requirement for a specific signing sequence.
Sequential Signing
In sequential signing, signers receive the document one at a time in a specified order. The next signer only receives the document after the previous one has signed.
Configuration
Set incrementing signingOrder values:
curl -X POST https://app.sajn.se/api/v1/documents \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Employment Contract",
"type": "SIGNABLE",
"documentMeta": {
"signingOrder": "SEQUENTIAL"
},
"signers": [
{
"name": "Anna Andersson",
"email": "anna@company.se",
"role": "SIGNER",
"signingOrder": 1,
"deliveryMethod": "EMAIL",
"requiredSignature": "DRAWING"
},
{
"name": "Maria Johansson",
"email": "maria@company.se",
"role": "SIGNER",
"signingOrder": 2,
"deliveryMethod": "EMAIL",
"requiredSignature": "BANKID"
},
{
"name": "Erik Eriksson",
"email": "erik@company.se",
"role": "SIGNER",
"signingOrder": 3,
"deliveryMethod": "EMAIL",
"requiredSignature": "BANKID"
}
]
}'
Signing Flow
Step 1 : Anna receives the document and signs
Step 2 : After Anna signs, Maria receives the document
Step 3 : After Maria signs, Erik receives the document
Completed : All three have signed
When to Use Sequential Signing
Approval chains where manager approval is needed first
Hierarchical signatures (employee → manager → executive)
Counter-signatures where one party must sign first
Legal requirements for specific signing order
Mixed Workflows
For complex scenarios, combine parallel and sequential signing:
curl -X POST https://app.sajn.se/api/v1/documents \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Partnership Agreement",
"type": "SIGNABLE",
"documentMeta": {
"signingOrder": "SEQUENTIAL"
},
"signers": [
{
"name": "Anna Andersson",
"email": "anna@company-a.se",
"role": "SIGNER",
"signingOrder": 1,
"deliveryMethod": "EMAIL",
"requiredSignature": "BANKID"
},
{
"name": "Erik Eriksson",
"email": "erik@company-a.se",
"role": "SIGNER",
"signingOrder": 1,
"deliveryMethod": "EMAIL",
"requiredSignature": "BANKID"
},
{
"name": "Maria Johansson",
"email": "maria@company-b.se",
"role": "SIGNER",
"signingOrder": 2,
"deliveryMethod": "EMAIL",
"requiredSignature": "BANKID"
},
{
"name": "Johan Svensson",
"email": "johan@company-b.se",
"role": "SIGNER",
"signingOrder": 2,
"deliveryMethod": "EMAIL",
"requiredSignature": "BANKID"
}
]
}'
Signing Flow
Step 1 (Parallel): Anna and Erik from Company A sign simultaneously
Step 2 (Parallel): After both sign, Maria and Johan from Company B sign simultaneously
Completed : All four have signed
Signers with the same signingOrder value sign in parallel. The next order group only receives the document when all previous signers have completed.
Tracking Progress
Document Status
Track overall document progress:
curl -X GET https://app.sajn.se/api/v1/documents/doc_123 \
-H "Authorization: Bearer YOUR_API_KEY"
Response shows signing status:
{
"document" : {
"id" : "doc_123" ,
"name" : "Employment Contract" ,
"status" : "SENT" ,
"signers" : [
{
"signerId" : "signer_1" ,
"name" : "Anna Andersson" ,
"status" : "SIGNED" ,
"signedAt" : "2024-01-15T10:30:00Z"
},
{
"signerId" : "signer_2" ,
"name" : "Maria Johansson" ,
"status" : "PENDING" ,
"signedAt" : null
}
]
}
}
Signer Statuses
Status Description PENDINGWaiting for earlier signers (sequential) NOTIFIEDDocument sent, awaiting signature OPENEDSigner has viewed the document SIGNEDSigner has completed signing REJECTEDSigner has declined to sign
Webhook Notifications
Receive real-time updates for each signing event:
{
"event" : "DOCUMENT_SIGNED" ,
"data" : {
"documentId" : "doc_123" ,
"signerId" : "signer_1" ,
"signerName" : "Anna Andersson" ,
"signedAt" : "2024-01-15T10:30:00Z" ,
"remainingSigners" : 2
}
}
Common Patterns
Manager Approval Before Employee
Employee signs first, then manager approves:
{
"signers" : [
{
"name" : "Anna Andersson" ,
"email" : "anna@company.se" ,
"role" : "SIGNER" ,
"signingOrder" : 1
},
{
"name" : "Erik Manager" ,
"email" : "erik@company.se" ,
"role" : "SIGNER" ,
"signingOrder" : 2
}
]
}
Multiple Counterparties
Your company signs first, then the client:
{
"signers" : [
{
"name" : "Your CEO" ,
"email" : "ceo@yourcompany.se" ,
"role" : "SIGNER" ,
"signingOrder" : 1
},
{
"name" : "Client Representative" ,
"email" : "contact@client.se" ,
"role" : "SIGNER" ,
"signingOrder" : 2
}
]
}
Witness Signatures
Main parties sign, then witnesses attest:
{
"signers" : [
{
"name" : "Party A" ,
"email" : "party-a@example.com" ,
"role" : "SIGNER" ,
"signingOrder" : 1
},
{
"name" : "Party B" ,
"email" : "party-b@example.com" ,
"role" : "SIGNER" ,
"signingOrder" : 1
},
{
"name" : "Witness 1" ,
"email" : "witness1@example.com" ,
"role" : "SIGNER" ,
"signingOrder" : 2
},
{
"name" : "Witness 2" ,
"email" : "witness2@example.com" ,
"role" : "SIGNER" ,
"signingOrder" : 2
}
]
}
Board Resolution
All board members must sign:
{
"documentMeta" : {
"signingOrder" : "PARALLEL"
},
"signers" : [
{ "name" : "Board Member 1" , "signingOrder" : 1 },
{ "name" : "Board Member 2" , "signingOrder" : 1 },
{ "name" : "Board Member 3" , "signingOrder" : 1 },
{ "name" : "Board Member 4" , "signingOrder" : 1 },
{ "name" : "Board Member 5" , "signingOrder" : 1 }
]
}
Best Practices
Consider signer availability
For sequential signing, consider whether signers will be available. A single unavailable signer blocks the entire chain.
Use parallel when possible
Parallel signing is faster and reduces bottlenecks. Only use sequential when there’s a business requirement.
Set appropriate expiration
For multi-party documents, allow extra time for all parties to sign. Consider longer expiration periods.
Enable automatic reminders to keep the signing process moving, especially for sequential workflows.
Handle rejections gracefully
If any signer rejects, the document is rejected. Have a process for handling rejections and restarting if needed.
Use webhooks to monitor signing progress and take action when documents are signed, rejected, or stalled.
Next Steps
Reminders & Expiration Configure reminders and document expiration
Webhooks Track signing progress in real-time
Creating Documents Learn document creation basics
Signers Concept Understand signer types and roles