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.
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 asignatureRequirements array. It is always present.
A non-US founder 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).
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.
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.