Bring Your Own Identity Verification to E-Signatures
Keep the identity verification vendor your security team already approved. Your app verifies the signer once, and TurboSign carries that result into a signature with an audit trail that names it.
By Alex Martinez, Developer Relations & Automation Lead
Can I use my own identity verification provider for e-signatures?
6 identity verification methods, from a government ID plus liveness check to single sign-on, can carry over into TurboSign embedded signing, so yes, you can keep your own provider. Your backend verifies the signer with the vendor you already use, then passes that result when it requests a signing URL. TurboSign checks the assertion and opens a single-use link that expires in 5 minutes, without asking the signer to verify a second time, and the vendor name and reference ID land in the document audit trail.
Key takeaways
- 6 verification methods can be recorded with an assertion: ID document, ID document plus liveness, knowledge-based questions, an authoritative database, single sign-on, or a described other method.
- 24 hours is the default maximum age of a verification, adjustable per signer from 5 minutes to 7 days.
- 5 minutes is the lifetime of the single-use signing URL TurboSign issues for an externally verified signer.
- 2 organization settings gate the feature, embedded signing enabled and Allow external identity verification, and TurboSign checks both again every time a URL is issued.
- 0 signing-link emails go out when you send with sendEmail set to false, so signing happens only in your app; TurboSign still emails the completed copy.
Why reuse the identity check you already run?
Regulated onboarding flows already verify people before they sign anything: a lender checks an ID before a loan agreement, an insurer before a policy, a marketplace before a seller contract. If your product already runs that check, for example if you already use Persona, Onfido, Jumio, Veriff, Stripe Identity, or CLEAR, asking the same person for an emailed passcode a minute later adds a step without adding much assurance.
For an IT or security leader the bigger win is scope. Your identity vendor stays the single system of record for identity evidence, under the contract and data-retention terms you already reviewed. TurboSign receives the result of the check, not the ID images, and records which vendor verified the signer and under which reference. The signer keeps their real email as the signer of record.
Vendor names are examples of identity verification services teams commonly run. TurboDocx has no partnership with them and does not call their APIs; any vendor works.
How does bring-your-own identity verification work?
- 1
An admin allows external identity verification
In the E-Signature settings, an organization admin enables embedded signing, turns on Allow external identity verification, and lists the domains allowed to embed the signing page. Embedding is deny by default. Your integration can read these settings with getEmbeddedSigningSettings() before it sends anything.
- 2
You create the signer with your provider name
Give the recipient an identityVerification block with mode external_idv, the provider name you will assert, and an optional maxAgeMinutes. Send with sendEmail: false so TurboSign sends no signing-link emails.
- 3
Your vendor verifies the signer, in your app
Run the check the way you already do. TurboSign is not in this step and never calls your vendor.
- 4
Your backend asserts the result and gets a URL
Call createSigningUrl with an identityAssertion: provider, verificationId, verifiedAt, and subjectEmail, plus optional method, assuranceLevel, verifiedName, and an https evidenceUrl. TurboSign validates it and returns a single-use URL.
- 5
The signer signs inside your product
Open the URL in an iframe, a redirect, or a new tab within 5 minutes. The signer goes straight to the document with no passcode step.
What does the integration look like in code?
Two SDK calls in TypeScript. The same methods exist in the Python, Go, PHP, Java, and Ruby SDKs, and the raw REST endpoint is POST /turbosign/documents/:documentId/signing-url.
import { TurboSign } from '@turbodocx/sdk';
// 1. Create the request: an external_idv signer, no signing-link emails.
const { documentId, recipients } = await TurboSign.sendSignature({
file: contractPdf,
documentName: 'Account Agreement',
sendEmail: false,
recipients: [{
name: 'Jane Doe',
email: 'jane@example.com',
signingOrder: 1,
identityVerification: {
mode: 'external_idv',
provider: 'your-idv-vendor',
maxAgeMinutes: 60,
},
}],
fields: signatureFields,
});
// 2. After your vendor verifies Jane, assert the result.
const { url, expiresAt } = await TurboSign.createSigningUrl(documentId, {
recipientId: recipients![0].id,
identityAssertion: {
provider: 'your-idv-vendor',
verificationId: idvResult.id,
verifiedAt: idvResult.completedAt, // ISO 8601
subjectEmail: 'jane@example.com',
method: 'id_document_liveness',
evidenceUrl: idvResult.recordUrl, // https only
},
returnUrl: 'https://app.example.com/signed',
});
// 3. Open url in your iframe, a redirect, or a new tab before expiresAt.What does TurboSign check before it issues the link?
TurboSign trusts your backend to run the verification, so it is strict about the claim itself. 8 checks run on every signing URL request for an externally verified signer, and each one fails closed with a named error.
| Check | Rule | Error |
|---|---|---|
| Embedded signing on | Embedded signing is enabled for the organization, re-checked at issuance | EmbeddedSigningNotEnabled |
| External IdV allowed | Allow external identity verification is on, re-checked at issuance | ExternalIdvNotAllowed |
| Assertion present | An external_idv signer cannot get a URL without one | IdentityAssertionRequired |
| Provider match | The asserted provider equals the one set on the recipient | IdentityProviderMismatch |
| Email match | subjectEmail equals the signer email, unless you set overrideEmailMatching, which is recorded | IdentityEmailMismatch |
| Freshness | verifiedAt is within the signer max age and no more than 2 minutes in the future | IdentityAssertionStale, IdentityAssertionInvalid |
| Replay | The verificationId is not already used by another signer on the document | IdentityAssertionReused |
| Evidence format | method is one of the 6 allowed values; evidenceUrl is https | IdentityAssertionInvalid |
The URL itself is single use. Once a signer opens it, a second open is refused, and minting a new URL for the same signer revokes the previous one.
Which verification method should you record?
The optional method field tells a reviewer how your vendor verified the signer. Pick the value that matches what actually ran:
id_document
Government ID document check
id_document_liveness
ID document plus a selfie or liveness match
kba
Knowledge-based (out-of-wallet) questions your vendor ran
database
Verified against an authoritative data source
sso
A trusted single sign-on or federated identity
other
Anything else, described in methodDetail (required)
assuranceLevel is a free-text label for what your vendor attests, such as an identity assurance level from NIST SP 800-63 or an eIDAS level (see our European e-signature compliance page). TurboSign records the label you send; it does not certify the level itself.
When is a passcode the better choice?
If you do not run identity verification today, you do not need a vendor to verify signers. TurboSign can send a one-time passcode by email, or by SMS through the SMS provider your organization connects, and the signer enters it on the signing page. The method is set per signer, so one document can mix a vendor-verified borrower with a co-signer who gets a passcode. Compare every option on the e-signature identity verification page.
A third mode, override, skips verification on purpose for development and testing. An admin must allow it, the sender gives a reason, and the audit trail records that verification was skipped.
Frequently asked questions
Can I use my existing identity verification provider with TurboSign?
6 verification methods can be recorded, from a government ID check to single sign-on, and any vendor works because the provider is a free-text name of up to 200 characters. Your backend runs the check with the vendor you already use, then passes the result (provider, verification ID, timestamp, and verified email) when it requests the signing URL. TurboSign validates that assertion and skips its own passcode step for that signer.
Does TurboSign receive the signer's ID document or selfie?
0 ID images or selfies are sent to TurboSign in this flow. The assertion carries the vendor's name, its verification ID, the verification time, the verified email, and optional context such as the method, an assurance label, the verified name, and an https link to the vendor's own record. The document images stay with your identity verification vendor, under the retention terms you already agreed with them.
How old can an identity verification be before the signer signs?
24 hours is the default. You can set each signer's maximum age anywhere from 5 minutes to 7 days (10,080 minutes) when you create the recipient. TurboSign rejects an assertion that is older than that window, or dated more than 2 minutes in the future, so a check from last month cannot be replayed to sign a contract today.
What stops someone from reusing a verification or a signing link?
5 minutes is the life of the signing URL, and it opens once; a second open is refused. TurboSign also refuses a verification ID that another signer on the same document already used, checks that the asserted email matches the signer's email, and checks that the provider matches the one set on the recipient. Each check fails closed with a named error your backend can handle.
What does the audit trail show for an externally verified signer?
1 audit entry reads Identity Verified via your provider name, followed by the vendor's reference ID, next to the signing link issued and opened events. The method, assurance label, verified name, and evidence link you send are stored in that entry's details. The verification ID and evidence link let a reviewer trace the signature back to your vendor's record, and the hash-chained trail makes later edits detectable.
Related resources
Embedded e-signature
Put the TurboSign signing page inside your own application.
Embed signing with createSigningUrl
Step-by-step developer guide to minting and framing a signing URL.
E-signature identity verification
Email OTP, SMS OTP, your own provider, and override, compared.
U.S. e-signature compliance
How ESIGN Act and UETA requirements map to TurboSign.
Map your identity flow to signing
Bring your current verification vendor and your signing use case. We will show you where the assertion fits in your flow and what your audit trail will record.