E-sign documents online — legally binding. 14-day free trial.

QuickSigner › eSignature API › SaaS customer onboarding

eSignature API for SaaS Customer Onboarding

Let customers sign order forms, MSAs and DPAs inside your app, checkout or quote flow, then provision the account the moment the signed PDF is sealed. No redirect to a third-party signing site, and no sales rep chasing a PDF by email.

Order forms and contracts,
signed inside your product

Send order forms, MSAs and DPAs to customers from your own app. The customer signs in an embedded view or from an email, and your team countersigns.

A webhook tells your app when the contract is complete, so you can provision the account right away.

Two colleagues working together on a laptop
Built forSaaS products, CPQ, billing and partner portals
Typical documentsOrder forms, MSAs, DPAs, SOWs, renewals
SigningEmbedded iframe or emailed link
Provisioning triggerREQUEST_COMPLETED webhook
SignaturePAdES with an AATL certificate and timestamp
Price$0.30 per sign request, however many people sign
Customer signer and your countersigner on one request: $0.30.

Where signing fits in a SaaS customer journey

Most SaaS contracts are signed at one of five moments. Each has a different signer and a different next step in your product:

MomentDocumentWho signsWhat happens on completion
Self-serve upgrade to an annual or invoiced planOrder formThe customer admin, inside your appSwitch billing to invoice, raise seat limits
Sales-led dealOrder form and MSACustomer signatory, then your countersignerCreate the subscription in billing, open onboarding
Security or procurement reviewDPA, security addendum, NDACustomer legal or procurementMark the account as cleared for production data
Renewal or expansionRenewal order formThe existing customer adminExtend the term, add seats or modules
Partner or reseller onboardingPartner agreementPartner, then your partnerships leadOpen the partner portal and pricing tier

Click-through terms or a signed order form?

Click-through terms work for self-serve sign-ups: courts generally enforce them when the terms are clearly presented and the user takes a clear action to accept. Larger deals are different. When the buyer is a company, the question is not only whether someone clicked, but whether that person could bind the company. In at least one US federal case, a click by an employee did not bind the company because the vendor had been told only named executives could sign contracts.

SituationClick-through termsSigned order form
Self-serve plan, card paymentUsually enoughNot needed
Invoiced or annual planPossibleRecommended, with a named signatory
Negotiated price or termsNot suitableNeeded, plus your countersignature
Customer procurement requires a signatureNot acceptedNeeded
Data processing agreement (GDPR)Possible in electronic formCommon for enterprise customers

The API supports the signed side of this: a named signer, a recorded signing certificate and your countersignature after theirs.

Three integration patterns

1. Quote to signed order form

Your CPQ or billing system renders the order form PDF with the customer's plan, seats and price. Write signature tags into the template text, styled white so they stay invisible, set extractTags to true, and the API creates the fields. With signInOrder true, the customer signs first and your countersigner signs second.

curl --request POST \
  --url https://app.quicksigner.com/api/v1/requests \
  --header 'Authorization: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "fileName": "9be2...-order-form-acme.pdf",
    "extractTags": true,
    "signInOrder": true,
    "senderName": "YourApp",
    "emailSubject": "Your YourApp order form is ready to sign",
    "recipients": [
      { "type": "EMAIL", "email": "cfo@acme.example",   "name": "Customer Signatory" },
      { "type": "EMAIL", "email": "deals@yourapp.example", "name": "YourApp Countersigner" }
    ]
  }'

Tag syntax and the full request schema are in the API reference.

2. Signing inside your app

For a self-serve upgrade, load the customer's signUrl in an iframe on your billing page. Set hideInfoPanel on the request so the signing view fits your layout, disable_notifs in the admin's recipient options so they do not also get an email, and signedRedirectUrl to return them to a "thanks, your plan is active" page.

<iframe
  src="https://app.quicksigner.com/sign/..."
  width="100%" height="900" style="border:0"
  allow="camera; clipboard-write">
</iframe>

signedRedirectUrl can fire before the signature is written into the PDF. Change the plan in your system on the REQUEST_COMPLETED webhook, not on the redirect.

3. Provision on the webhook

Event or statusWhat your app does
RECIPIENT_SIGNEDShow "signed by customer, awaiting countersignature" on the deal; notify your countersigner.
REQUEST_COMPLETEDDownload the signed PDF and certificate, attach them to the account and CRM record, activate the subscription, start onboarding emails.
Status REJECTEDReopen the deal and alert the account owner.
Status CANCELEDThe quote expired or was replaced by a new version.

Statuses such as REJECTED and CANCELED come from GET /requests/{requestId}, which also returns each recipient's sigStatus and signing order.

Download links are short-lived (about 2 hours for the signed PDF, 15 minutes for the certificate), so fetch both as soon as the webhook arrives and store them with the account.

What a SaaS integration costs

Production runs on the Professional plan at $15 per user a month, plus $0.30 per sign request. The first 50 sign requests are free, once. Above 500 requests a month, ask for volume pricing.

ScenarioSign requests a monthMonthly cost with one Professional user
Sales-led B2B SaaS: 30 new deals and 20 renewals50$30
Product-led SaaS: 150 self-serve upgrades to invoiced plans, plus 50 DPAs200$75
Platform with 500 order forms a month500$165
More than 500 a month500+Volume quote

The scenarios leave out the 50 free sign requests. A request with a customer signer and your countersigner is one request.

Checklist for choosing an eSignature API for SaaS

What to checkWhy it matters for SaaSQuickSigner
Embedded signingA redirect to another site loses self-serve buyers.iframe with hideInfoPanel and signedRedirectUrl
WebhooksProvisioning should not wait for someone to check an inbox.RECIPIENT_SIGNED, REQUEST_COMPLETED
Generated documentsOrder forms change with every quote.Text tags with extractTags on generated PDFs
CountersignatureYour side signs after the customer.signInOrder
Your brand in emailsCustomers should see your company, not a vendor's.senderName, emailSubject, emailMessage
Verifiable PDFProcurement and auditors check signatures in Acrobat.PAdES, AATL certificate, trusted timestamp
SecurityEnterprise buyers ask about your vendors.ISO/IEC 27001:2022, GDPR
Simple authFewer moving parts in your backend.One API key, no OAuth flow

SaaS eSignature API FAQs

Can customers sign an order form without leaving my app?

Yes. Load the signer's signUrl in an iframe and set hideInfoPanel on the request. The signed PDF is the same as with email signing.

How do I activate the subscription after signing?

Listen for the REQUEST_COMPLETED webhook, which fires when the document is sealed. Activate the plan there, not on the signer's redirect, because signatures are applied asynchronously.

Can our side countersign automatically after the customer?

Set signInOrder to true and add your countersigner as the last recipient. They are asked to sign only after the customer has signed. If the countersigner is your API account itself, with a default signature and signature fields assigned, your backend can sign with POST /requests/{requestId}/sign after the customer's RECIPIENT_SIGNED webhook.

Can I send order forms generated by our billing system?

Yes. Upload the generated PDF and set extractTags to true to create fields from tags in the document text. You can also use a saved template by templateId.

Do customers need a QuickSigner account?

No. Signers need only a link and a browser.

Can the signing email show our company name?

Yes. senderName is shown to the signer under "Sent by" and in the notification email, and emailSubject and emailMessage set the subject and the message.

Does a DPA need a signature?

GDPR Article 28(9) requires the processing contract to be in writing, which includes electronic form. The prevailing view, shared by the Bavarian data protection authority, is that a qualified electronic signature is not required. Many enterprise customers still ask for a signed DPA so the record shows who signed it for them.

Can I test before paying?

Yes. A free developer account allows unlimited test sign requests. Completed test documents are watermarked.

Start building

Add order form signing to your product

  1. Create a free developer account and enable the API.
  2. Send a test order form with a customer signer and a countersigner.
  3. Activate a test subscription from the REQUEST_COMPLETED webhook.

Unlimited test requests. Move to production on the Professional plan when you are ready.

Prices and features as of October 12, 2026. This page is general information, not legal advice.