Skip to main content
doola forms US companies (LLC or C-Corp) regardless of where the founder lives. When no one on the company has a US tax ID, the IRS requires a signed SS-4 before it will issue the EIN. The Partner API handles this end to end: doola generates the SS-4, you send the founder a fully whitelabeled signing link, and doola files it once signed. A non-US founder who also requests an expedited EIN signs one additional document, 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. Signing is the only addition, and it only appears for non-US founders.
“US company, non-US founder” is the case this covers. You still form a Wyoming or Delaware entity. What changes is that the founder signs an SS-4 (and, for an expedited EIN, a Form 8821) because they have no SSN or ITIN to put on the EIN application.

When signing applies

A company needs an SS-4 signature when no person on it supplies a US tax ID (SSN or ITIN). doola checks every person on the company:
  • every LLC member,
  • every C-Corp executiveMember,
  • and the responsibleParty.
If any one of them has an SSN or ITIN, the company is treated as US and no signature is required. If none of them do, it is a non-US founder and an SS-4 signature is required. A Form 8821 signature is required on top of the SS-4 when the same non-US company also requested an expedited EIN (the EinCreation service carries the Expedite variant). A non-US company on a standard EIN needs only the SS-4; a US company needs neither. 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 non-US founder on a standard EIN returns one pending SS-4 requirement:
A non-US founder who requested an expedited EIN returns both, each pending until signed:
A US founder 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. If a founder opens a stale or voided link, the redirect returns 410 E_SIGNATURE_URL_EXPIRED. 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.
Subscribe to the reminder events only if you want doola to drive your reminder timing. If you run your own cadence, you can ignore them and poll signatureRequirements or watch for the completion events instead.

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 that, formation continues exactly as it does for US founders: 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? If Expedited EIN is part of your partner agreement, non-US founders 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.