Skip to main content
doola forms US companies (LLC or C-Corp) regardless of where the founder lives. Under doola’s partner workflow, when no one on the company supplies a valid SSN, an SS-4 signature is required. An ITIN is accepted in the existing 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.
If any one of them supplies a valid SSN, no formation signature is required. ITINs, missing values, and malformed legacy values do not grant this exemption. Input accepts nine ASCII digits or the complete 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.
A Form 8821 signature is required on top of the SS-4 when the company also requested an expedited EIN (the 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 a signatureRequirements array. It is always present. A company without a valid SSN on a standard EIN returns one pending SS-4 requirement:
A company without a valid SSN that requested an expedited EIN returns both, each pending until signed:
A company with a valid SSN and no separate Form 8821 request returns an empty array, meaning nothing to sign:
Branch your onboarding on signatureRequirements. A non-empty array means you need to collect one or more signatures before formation can finish; an empty array means you are done after Create company. Each entry is independent — request a session, remind, and track completion per documentType.

The signing flow

The flow below shows the SS-4. Form 8821 is identical — request a session with documentType: "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 the documentType 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.
  • 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.
Do not cache or email a signing url for later. Links expire two hours after issuance, and a newer session voids an older one. An expired link returns 410 E_SIGNATURE_URL_EXPIRED, and a link voided by a newer session no longer opens the document, so only ever present the latest one. Mint a new session at the moment of signing instead.

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:
  1. Request a fresh signing session for that documentType (the link from the original request has likely expired).
  2. Re-present it to the founder, however you nudge users (email, in-app, push).
Reminders stop automatically once that document is signed. There is no separate expiry event after day 7; the cadence simply ends.
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.
Need the EIN faster? Companies without a valid SSN qualify for the expedited EIN, requested at company creation with requestedServices. The SS-4 signing flow on this page still applies; only the EIN processing is prioritized.

Errors

These are specific to the signing endpoints. Branch on error.code, never on the message. See Errors for the response envelope and the global codes that any endpoint can return.
Last modified on October 13, 2026