Multi-party signing, your rules
Sequential or parallel envelopes with signer, approver, and CC roles. Your platform controls who acts next. Every transition is recorded on a hash-chained audit trail.
Send an envelope, let them sign with a one-time code, and keep the signed PDF plus the audit trail. Teams that embed signing in their own product use the same platform.
Signature — signer 1 of 2
Sofia Ramírez
sofia@northwind.legal
Operators who need signed agreements fast come first. Platform teams still get the same API, embed, and white-label stack one section down.
Teams shipping signing into: Legal, HR, Real Estate, FinTech, Healthcare, SaaS.
109
named permissions
Every action checks one specific permission string before it runs, not just a role name.
15 min
access tokens
Short-lived JWTs, a 7-day refresh, and a Redis blacklist for anything revoked early.
5 / 15 min
MFA lockout
Five wrong codes locks the account for fifteen minutes — every time, not just in the docs.
60s → 6h
webhook retry ladder
Six delivery attempts on exponential backoff before anything is marked dead-lettered.
Sequential or parallel envelopes with signer, approver, and CC roles. Your platform controls who acts next. Every transition is recorded on a hash-chained audit trail.
EndorsedSign signs the document in your product with full signer traceability, certificate-backed completion records, and qualified-signature support for regulated agreements.
Signers reach documents through a one-time passcode. Guided portal, kiosk for in-person, and public signing links — nothing for your customers to remember.
Compose in the admin portal, place fields together, and share a guest link so collaborators edit the overlay without a tenant login. Presence and review-and-lock are built in.
Send one template to a list, publish a reusable public URL that mints an envelope per visitor, or launch in-person signing from the admin desk.
Tenant isolation, RBAC, MFA, OIDC and SAML SSO, HIPAA profile with BAA, GDPR export and retention, EU data residency, and SOC 2 controls in one operating model.
Screens from a running tenant — dashboard, compose, envelopes, and the signer inbox — not a drawn mock.






Admins upload a PDF or write the document in Compose. Files stay on your tenant. Folders keep the library organized for staff and customers.
Use a template or the field editor. The envelope wizard sets roles, order, expiry, and notification rules — email, SMS, or WhatsApp.
The recipient proves identity with a one-time passcode, or walks up to a kiosk. They sign in your branded portal, in your embed, or via a bulk link.
The signed PDF and audit trail are captured instantly, with completion records ready for operations, legal, and compliance review.
Everything below ships in the product today — nothing here is a mockup.
One integration in front of the signing layer. Client SDKs, an embeddable React component, and outbound webhooks sit next to the channels you already use to notify signers.
Drop signing into your product, or drive it headlessly and own the UI.
React Elements
Embedded signing components
Headless SDK
Your UI, our state machine
TypeScript SDK
First-party API client
Python SDK
First-party API client
.NET SDK
First-party API client
The full surface over HTTP, plus no-code triggers when you do not want a client.
REST API
Envelopes, documents, templates
Webhooks
Queued, retried, replayable
Developer console
Inspect and replay API calls
Zapier
Compatible no-code triggers
Stripe
Subscriptions and metering
Signing links and OTPs go out on the channels your signers already use. Staff sign in with your identity provider.
Signing links and OTPs
SMS
OTP and reminders
Signing links and reminders
Sender domains
Verified custom From
OIDC SSO
Per-tenant staff sign-in
import crypto from 'node:crypto';
// Header: X-Endorsed-Signature: t={unix_seconds},v1={hex_hmac_sha256}
function verify(rawBody, header, secret) {
const [t, v1] = header.split(',').map((p) => p.split('=')[1]);
const expected = crypto
.createHmac('sha256', secret)
.update(`${t}.${rawBody}`)
.digest('hex');
const fresh = Math.abs(Date.now() / 1000 - Number(t)) <= 300;
const a = Buffer.from(v1, 'hex');
const b = Buffer.from(expected, 'hex');
return fresh && a.length === b.length && crypto.timingSafeEqual(a, b);
}HMAC-SHA256 over "{timestamp}.{body}", a five-minute replay window, and six delivery attempts — 60s, 5m, 15m, 1h, 6h — before we dead-letter instead of dropping it silently.
We do not have a public price to put in a table, so here is a plainer comparison: the category you are actually choosing between.
Good for sending a contract from your inbox. It was not built to be embedded — you will fight its UI, its domain, and its login to make it look like your product.
Built to be embedded, like this one. Check whether it gives you roles, sequencing, bulk send, and a kiosk mode, or just a signature field over an API.
You control everything, including every hour spent on a field-placement UI, an audit trail, and the day someone asks for your compliance posture.
Partners embed EndorsedSign so completely that their customers never learn our name. You keep the brand, the relationship and the margin.
Your customers never learn our name. Brand, domain, and allowed origins are yours.
Serve thousands of downstream tenants under one integration with full isolation.
Point document storage and delivery at infrastructure you already audit.
Awaiting your signature
Sent by Daniel Weiss on behalf of Northwind Legal LLP.
sign.northwind.legal
Awaiting your signature
Sent by Daniel Weiss on behalf of Northwind Legal LLP.
sign.endorsedsign.com
Create your workspace, confirm email, and send your first document. No card is required to start, and the trial clock starts at first sign-in.
Start a free trial, send one envelope, and keep the signed PDF plus audit trail. Need enterprise onboarding first? Talk to the team directly.
Need procurement support? partnerships@endorsedsign.com