ssn field but does not waive signing. doola generates the SS-4, you send the founder a fully whitelabeled signing link, and doola files it once signed.
A company requiring SS-4 that also requests an expedited EIN needs one additional signature, Form 8821 (Tax Information Authorization), which lets doola retrieve the EIN letter directly from the IRS — the authorization the expedited path relies on. Form 8821 uses the exact same signing flow as the SS-4; only the documentType differs.
Everything else about the formation flow stays the same. Use the returned signatureRequirements to determine which documents need signing.
Here, a valid SSN means one in a valid format; doola does not verify issuance. This check selects doola’s signing workflow, not citizenship, tax residency, or every IRS application channel. An ITIN does not waive signing.
When signing applies
A company needs an SS-4 signature when no person on it supplies a valid SSN. doola checks every person on the company:- every LLC
member, - every C-Corp
executiveMember, - and the
responsibleParty.
NNN-NN-NNNN format.
doola’s automated online EIN application covers LLCs only, so the online timeline doesn’t apply to a C-Corp. For an LLC, it needs three things: a valid SSN on the responsible party, a phone number with at least 10 digits on the responsible party’s
address, and a business address in the US. If any is missing, doola cannot apply online, even when no signature is required (for example when the only valid SSN on the company belongs to a member or executive member): the EIN takes longer, and doola may ask the founder for a Form 8821 through a required action. Put the SSN on the responsibleParty, and send its address, whenever you have them.EinCreation service carries the Expedite variant). Standard processing needs only the SS-4. doola can later ask any founder for a Form 8821 through a required action when it could not obtain the EIN online.
You never compute this yourself. doola returns the answer on the company as
signatureRequirements.
Detecting the requirement
Both Create company and Retrieve company return asignatureRequirements array. It is always present.
A company without a valid SSN on a standard EIN returns one pending SS-4 requirement:
The signing flow
The flow below shows the SS-4. Form 8821 is identical — request a session withdocumentType: "FORM8821", and the reminder and completion webhooks are the signature_form8821_* / document_form8821_uploaded equivalents. When both are required, run them independently (in parallel or in any order).
Request a signing session
Create a signing session whenever you are about to present a document to the founder, passing thedocumentType you are collecting (SS4 or FORM8821). The signing link is short lived, so always mint a fresh one right before you show it rather than storing it.
See Create a signature session in the API reference for the request body, response fields, and status codes.
About the signing link
- It is fully whitelabeled. The founder sees no doola branding and no third-party signing-provider branding. It is your flow, end to end.
- Always request a fresh session before presenting it. Each new session voids any earlier unsigned session for the same document, so an old link stops working once you mint a new one. Generating a session on every “sign now” action keeps the link valid and avoids handing out a link that has already expired.
Reminders are yours to send
doola does not email or chase the founder. You own the reminder cadence. To help, doola emits a reminder webhook on day 1, day 3, and day 7 after each document is generated, while it remains unsigned:signature_ss4_reminder_due for the SS-4 and signature_form8821_reminder_due for the Form 8821.
When you receive one:
- Request a fresh signing session for that
documentType(the link from the original request has likely expired). - Re-present it to the founder, however you nudge users (email, in-app, push).
Use the reminder events if you want doola to drive your reminder timing. If you run your own cadence, ignore them: watch for the completion events, and read
signatureRequirements in your reconciliation sweep rather than polling it.Completion
For each document, two events fire when the founder finishes, at two distinct moments:
At the same time, that document’s
signatureRequirements[].status flips from PENDING to COMPLETED on the company.
After signing, doola files the signed documents with the IRS, and the EIN follows. Watch company_ein_issued, document_einletter_uploaded, and the Formation service status, as described in Company formation.
Errors
These are specific to the signing endpoints. Branch onerror.code, never on the message.
See Errors for the response envelope and the global codes that any endpoint can return.