Werify Contract
Signing with proof of acceptance
E-signatures and terms acceptance. When someone asks "did they agree?" - you'll have the answer.
DocuSign integration · Legally binding · Full audit trail
{
"signature_id": "sig_9t5w1y6z",
"status": "signed",
"document": "Service Agreement",
"signer": "j***@example.com",
"method": "docusign",
"location": "San Francisco, CA",
"timestamp": "2025-01-22T14:32:00Z"
}
More than just signatures
Document signing with complete acceptance history.
E-Signatures
Legally binding signatures. DocuSign-powered.
Terms Acceptance
Terms of service, privacy policy, consent forms. Proof they agreed.
Contracts
NDAs, service agreements, employment contracts.
Multiple Signers
Sequential or parallel signing. Track each signer separately.
Expiry Tracking
Documents with expiration. Know when renewals are due.
Reminders
Automated signing reminders. Know who hasn't signed yet.
Know exactly what was agreed
Signatures prove intent. But when disputes happen, you need more than just a signature - you need proof of what was accepted, when, and how.
- "Did they agree to these terms?" - Full acceptance history.
- "Which version did they sign?" - Document hash recorded.
- "Is the contract still valid?" - Expiry status tracked.
- "Who signed for the company?" - Signer details logged.
Document timeline
Built for
B2B Sales
Proposals, SOWs, MSAs. Acceptance proof for every deal.
HR & Onboarding
Offer letters, NDAs, policy acknowledgments.
Marketplaces
Seller agreements, buyer terms, platform policies.
Healthcare
Consent forms, HIPAA agreements, patient authorizations.
Pricing
Simple per-envelope pricing.
$1
per envelope
- Unlimited signers per envelope
- DocuSign integration
- Terms acceptance (checkbox)
- Full audit trail
- Document hashing
- Expiry tracking
- Reminders
Volume discounts: 500+ envelopes/month at $0.75 each.
Quickstart
Send your first document for signature in minutes.
1 Install the SDK
npm install @werify/contract
2 Create an envelope
import { Contract } from '@werify/contract';
const contract = new Contract('your_api_key');
const envelope = await contract.envelopes.create({
document: {
name: 'Service Agreement',
url: 'https://yoursite.com/docs/agreement.pdf'
},
signers: [
{ email: '[email protected]', name: 'John Doe' }
],
message: 'Please sign the service agreement.'
});
// envelope.signing_url → send to signer
3 Handle the webhook
app.post('/webhooks/contract', (req, res) => {
const event = contract.webhooks.verify(req.body, req.headers);
if (event.type === 'envelope.signed') {
const { signature_id, document, signer } = event.data;
console.log('Document signed:', signature_id);
}
res.sendStatus(200);
});
4 Query signatures anytime
// Check if a document was signed
const signature = await contract.signatures.get('sig_9t5w1y6z');
// List all signatures by a user
const signatures = await contract.signatures.list({
signer: '[email protected]'
});