TurboSign embedded signing

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. 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. 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. 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. 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. 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.

CheckRuleError
Embedded signing onEmbedded signing is enabled for the organization, re-checked at issuanceEmbeddedSigningNotEnabled
External IdV allowedAllow external identity verification is on, re-checked at issuanceExternalIdvNotAllowed
Assertion presentAn external_idv signer cannot get a URL without oneIdentityAssertionRequired
Provider matchThe asserted provider equals the one set on the recipientIdentityProviderMismatch
Email matchsubjectEmail equals the signer email, unless you set overrideEmailMatching, which is recordedIdentityEmailMismatch
FreshnessverifiedAt is within the signer max age and no more than 2 minutes in the futureIdentityAssertionStale, IdentityAssertionInvalid
ReplayThe verificationId is not already used by another signer on the documentIdentityAssertionReused
Evidence formatmethod is one of the 6 allowed values; evidenceUrl is httpsIdentityAssertionInvalid

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

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.