Skip to main content
Expedited EIN available to every partner
The expedited EIN no longer requires enablement on your account. Send requestedServices: [{ "service": "EinCreation", "variant": "Expedite" }] on create company endpoint to request it. Expedited processing remains an additional fee, billed per company formed with it.Everything else is unchanged: expedited EIN is still available only for a non-US founder (400 E_EXPEDITED_EIN_NOT_ELIGIBLE otherwise, before anything is created), and the founder still signs a Form 8821 alongside the SS-4.
Formation filing number on company responses
Create company and Retrieve company now return formationFilingNumber — the filing number the state assigned when the formation was filed. It is null until the formation is filed and is populated alongside formationFilingDate; see Reading progress.In the sandbox playground, formation/complete sets a fixed test value (PLAYGROUND-FILING).
New webhook: document_operatingagreement_uploaded
A new webhook event, document_operatingagreement_uploaded, fires when an LLC company’s Operating Agreement is ready to download. doola now generates the Operating Agreement for partner companies shortly after the Articles of Organization are processed, so the event typically arrives soon after document_aoo_uploaded.The payload is the standard document_* shape (documentId, documentType: "OperatingAgreement", documentCreatedAt); use documentId with the document endpoints to download. All partner tenants are subscribed automatically; see Webhooks.Previously doola did not generate an Operating Agreement for partner companies. The sandbox playground’s formation/complete now also lists the event in triggeredEvents for an LLC test company.
New webhook: document_corporatebylaws_uploaded
A new webhook event, document_corporatebylaws_uploaded, fires when a CCorp company’s Corporate Bylaws are ready to download. doola generates the Bylaws shortly after the Articles of Organization are processed, so the event typically arrives soon after document_aoo_uploaded.The payload is the standard document_* shape (documentId, documentType: "CorporateBylaws", documentCreatedAt); use documentId with the document endpoints to download. All partner tenants are subscribed automatically; see Webhooks.Previously the Bylaws appeared in the documents list without any event. The sandbox playground’s formation/complete now also lists the event in triggeredEvents for a CCorp test company.
Sandbox playground: complete formation and EIN on demand
Sandbox now includes a playground that drives a test company through the two milestones you cannot control in the real world: the state confirming the formation, and the IRS issuing the EIN.
  • POST /v1/partner/playground/companies/{companyId}/formation/complete sets the filing date, uploads the Articles of Organization, fires company_formation_completed and document_aoo_uploaded, and advances the Formation service to Completed.
  • POST /v1/partner/playground/companies/{companyId}/eincreation/complete sets a test EIN, uploads the EIN letter, fires company_ein_issued and document_einletter_uploaded, and advances the EinCreation service to Completed.
Each endpoint runs the same operations production uses, so webhooks are signed, subscription-filtered, retried, and logged exactly like real deliveries. The endpoints exist only in sandbox. See the new Sandbox playground guide.
Form 8821 e-signature for expedited-EIN non-US founders
A non-US founder who requests an expedited EIN now signs a Form 8821 (Tax Information Authorization) in addition to the SS-4, letting doola retrieve the EIN letter directly from the IRS. It uses the same signing flow as the SS-4.
  • signatureRequirements on Create company and Retrieve company now includes a pending FORM8821 entry alongside SS4 for a non-US + expedited-EIN company. Standard-EIN and US companies are unchanged.
  • POST /v1/partner/companies/{companyId}/signatures accepts documentType: "FORM8821".
  • Three new webhook events mirror the SS-4 set: signature_form8821_completed, document_form8821_uploaded, and signature_form8821_reminder_due (day 1, 3, 7).
See Non-US founders. Existing SS-4 behavior is unchanged.
Expedited EIN at company formation
Partners with the expedited EIN feature can now request prioritized EIN processing for non-US founders. Add requestedServices: [{ "service": "EinCreation", "variant": "Expedite" }] to the create-company request; the company’s EinCreation service then carries variant: "Expedite" on the create and retrieve responses.Both gates run before anything is created: Expedited EIN must be part of your partner agreement (403 E_FEATURE_NOT_ENABLED otherwise) and the founder must be non-US (400 E_EXPEDITED_EIN_NOT_ELIGIBLE otherwise). A rejected request creates no company and releases your Idempotency-Key.Omitting requestedServices keeps standard processing, so existing integrations are unaffected. See the new Expedited EIN guide.
New webhook: company_ein_issued
A new webhook event, company_ein_issued, fires the first time a company’s EIN is recorded. Fetch the company to read the ein field. A later correction to the EIN value does not re-fire it.It complements document_einletter_uploaded, which fires separately once the IRS confirmation letter is downloadable. All partner tenants are subscribed automatically; see Webhooks.
Precise industry selection — naicsCode deprecated
Create-company now accepts an industry field for precise NAICS classification. The response now echoes both naicsCode and industry.naicsCode is deprecated. It keeps working through 2026-09-21 (90 days) so existing integrations are unaffected. When both fields are sent, industry takes precedence.Upgrade: switch the create payload from naicsCode to industry, sourcing the value from the NAICS reference list. See Choosing a NAICS industry for precedence and validation details.
Non-US founder formation with SS-4 e-signature
You can now form US companies for non-US founders through the Partner API. When no member, executive member, or responsible party has a US tax ID, the founder signs an SS-4 before the IRS issues the EIN.
  • Create company and Retrieve company now return signatureRequirements: a pending SS4 entry for a non-US founder, or an empty list for a US founder.
  • POST /v1/partner/companies/{companyId}/signatures returns a fresh, whitelabeled signing link (expires in two hours) to embed or send to the founder.
  • Three new webhook events: signature_ss4_completed, document_ss4_uploaded, and signature_ss4_reminder_due (day 1, 3, 7). You own the reminder cadence.
See the new Non-US founders guide. US-founder integrations are unaffected.
formationSubmissionStatus does not report formation completion
Don’t use formationSubmissionStatus to check whether a formation is finished. This field only tracks whether doola has received the formation request. Its values are PENDING, SUBMITTED, and FAILED, and it never reaches a “completed” state, so polling it for completion will wait forever.To know when a formation is actually done (filed with the state, EIN issued, documents available), read the per-service statuses on Company services, subscribe to the company_formation_completed webhook, or check the ein and document fields on the company. The Company formation guide now spells this out in its Status lifecycle section.
Clearer conflict when an email is already in use
Creating a customer with an email that already belongs to a non-customer principal (for example a partner-dashboard user) now returns 409 E_EMAIL_IN_USE instead of 500. One email cannot be both a dashboard user and a customer, so this is a client-side conflict you can handle — use a different email.
Idempotent retries after a failed create
A failed create no longer locks its Idempotency-Key. If a create returns a 4xx (validation or pre-check) or a transient 5xx, the key is released — fix the request and retry with the same key instead of generating a new one.Successful creates are still replayed for the same key, and reusing a key from an already-successful create with a different body still returns 409 E_IDEMPOTENCY_KEY_REUSED.
C-Corp formation
The create-company endpoint now supports C-Corp formation. Set entityType to CCorp and provide executiveMembers (President, Secretary, Treasurer, and Director) and ccorpValuation (authorized shares and par value per share) in place of members.entityType defaults to LLC, so existing LLC integrations are unaffected.
Initial release
First release of the doola Partner API developer docs and reference.
  • Customers — create, retrieve, and list customers.
  • Companies — submit a formation, retrieve a company, and list companies.
  • Documents — list a company’s documents and fetch a download URL.
  • Reference data — countries, US states, NAICS codes, and state filing fees.
  • Guides for authentication, the formation lifecycle, webhooks, and errors.
  • Interactive API reference generated directly from the live API.