Skip to main content
Common questions about the doola Partner API and Partner Portal. For endpoint-level request and response detail, see the API reference tab and the guides.
Don’t have access yet? Get API access. Already a partner and can’t find your answer here? Email engineering@doola.com.

What you can do today

  • Form US companies (LLC or C-Corp) for your users. Submit a formation request via the API; doola handles state filing, registered agent, and EIN. Your user never has to interact with doola directly.
  • Register and manage your customers. Create customers (idempotent) and attach one or more companies to each.
  • Track formation status in real time. Poll the API or receive webhook events as a company moves through formation.
  • Download company documents. Articles of Organization, EIN letter, and forwarded mail, via temporary signed links.
  • Self-manage your API keys and webhook endpoint in the Partner Portal, including reviewing delivery logs.
  • Browse everything in the Partner Portal, a ready-made web dashboard for your team.

Access and authentication

Request API access and the doola team provisions your account, issues your first API key (dk_live_...) and webhook signing secret, and creates Partner Portal logins for anyone on your team who needs dashboard access.
API keys follow the format dk_live_.... They are long, unique, and scoped to your account only, so your key can never see another partner’s data. Keys don’t expire by default, and if one is ever compromised it can be revoked and replaced without losing any of your customer or company data.
Yes. The Partner Portal uses a standard email and password login. A JWT sign-in flow is also available if you want to build your own UI on top of the API.API key vs. Partner Portal: the API key (dk_live_...) is for machine-to-machine calls such as creating customers, forming companies, and reading status. Anything else, such as managing API keys, setting your webhook URL, or reviewing delivery logs, lives in the Partner Portal.
Yes. Manage your API keys (create, list, revoke, delete) in the Partner Portal. Two intentional guardrails: an existing API key can’t mint new keys (only a signed-in user can), and “revoke all keys at once” stays a doola-assisted action to avoid accidental lockouts.
Yes. Each person gets their own email and password login, and all logins see the same company and customer data scoped to your account.
Completely. Your account is a fully isolated tenant, so your API key only ever has access to companies and customers that belong to you. There is no way to see, or be seen by, another partner through the API or the portal.

Forming companies

LLC and C-Corp. Set the optional entityType field on the create-company request to LLC (the default when omitted) or CCorp. The two differ in who you list: an LLC takes members with ownership percentages, while a CCorp takes executiveMembers (officers and directors) and a ccorpValuation (authorized shares and par value per share).
  • The customer the company belongs to (doolaCustomerId)
  • The entity type, LLC (default) or CCorp
  • The US state to form in
  • Up to 3 preferred company names, in order. doola uses the first one that clears the state’s availability check
  • The industry (NAICS code)
  • A business description
  • The responsible party (the person legally responsible for the EIN application)
  • For an LLC: company members and their ownership percentages (must total exactly 100%)
  • For a C-Corp: executive members (at least one President, Secretary, Treasurer, and Director; President, Secretary, and Treasurer may each appear once, Director may repeat) plus the share structure (number of authorized shares and par value per share)
doola auto-assigns the registered agent based on the chosen state, so you don’t supply that.
All major US states (Delaware, Wyoming, and others). Query /v1/partner/references/states for the live list and /v1/partner/references/state-fees for filing fees, so you never hardcode anything in your onboarding forms.
Your API call returns immediately (usually within a second) with a PENDING status. The actual formation work happens asynchronously in the background. Timelines vary by state and current volume. You are notified by webhook the moment the status changes, and you can check status any time via the API or the portal.
Yes. Develop and test against https://api.test.doola.com before going to production (https://api.doola.com). Sandbox keys never trigger real state filings or charges.

Tracking status and documents

StatusMeaning
PENDINGReceived by doola, formation is being prepared
SUBMITTEDSent to the state for processing
COMPLETEDFormation confirmed. EIN and documents are available
FAILEDSomething went wrong. Check adminNotes on the company and contact doola
The adminNotes field on a company carries any flags from the doola operations team (for example filing delays or IRS correspondence). Check it first if formation is taking longer than expected.
If doola’s system can’t complete the formation (for example a state filing issue), it retries automatically up to 4 times, at 5, 15, 30, and 60 minutes, before marking the company FAILED. When that happens:
  • The company status is set to FAILED
  • You receive a company_formation_failed webhook
  • The doola team is alerted internally
From there, reach your doola account contact to resolve it.
After a document_* webhook fires, call the documents endpoints to list a company’s documents and fetch a temporary signed download URL (valid about 1 hour). Don’t cache the URL; request a fresh one each time you need to download.

Webhooks

Webhooks are HTTP notifications doola sends to your server whenever something meaningful happens, so you don’t have to keep polling “is it done yet?”. doola sends a POST with a JSON payload to your HTTPS endpoint, and your server responds 200 OK.
EventFires when
company_formation_submittedFormation accepted and processing started
company_formation_completedFormation complete, company is active
company_formation_failedFormation failed after all retries
company_filing_date_updatedThe filing date was updated by doola
document_aoo_uploadedArticles of Organization ready to download
document_einletter_uploadedEIN letter ready to download
document_mail_uploadedBusiness mail document uploaded
partner_webhook_disabledYour webhook endpoint was automatically disabled (see below)
If a delivery fails, doola retries up to 5 times, at 1 minute, 15 minutes, 1 hour, 12 hours, and 24 hours.
After all retries are exhausted, doola automatically disables your webhook endpoint and sends a final partner_webhook_disabled event. Once you have fixed your endpoint, re-enable delivery in the Partner Portal.
Yes. Set your webhook URL in the Partner Portal. Generating or rotating the webhook signing secret stays a doola step, since it is a one-time-view value and rotating it is a cutover for your signature verification.
Yes. Every delivery attempt is visible in the Partner Portal (timestamp, event name, HTTP status, attempt number).
Each delivery is signed with an x-doola-signature header, an HMAC-SHA256 hex digest of the raw request body, keyed with your webhook signing secret. Recompute it on your side and compare using a constant-time comparison (for example timingSafeEqual or compare_digest), never plain string equality.
In rare cases you may receive a duplicate document_* event for the same document (for example when ops re-issues a document after an IRS correction). Handle document events idempotently using documentId.

Partner Portal

The Partner Portal (partners-portal.doola.com) is a ready-to-use web dashboard for your team, with no technical setup, just log in. It shows a searchable list of all your companies and customers, full company details (status, EIN, filing date, state, entity type, members, addresses), a Formation / EIN / Registered Agent status stepper, downloadable documents, and any notes left by the doola team. It is also where you self-manage your API keys and webhook URL, and review delivery logs.Company and customer data is read-only in the portal. To create or change those, use the API.
The portal currently shows doola branding. White-labeling is not a standard offering today, but can be discussed for enterprise partners case by case. If you want a fully custom experience, build your own UI on top of the API.
Not directly. doola does not host a customer-facing interface for partner-created companies. You build whatever your end-users see, pulling current status from the API and displaying it in your own product.

Data and privacy

doola stores the registration info you submit (email, first name, last name, country of residence, and optionally phone number) plus the company formation details. SSNs, when submitted as part of responsible-party or member information, are masked in all API responses. Only a redacted version is ever returned (for example ****-**-1234). The raw value is stored securely and used only for formation.

Quick reference: available vs not

CapabilityAvailable?
Form LLCs via API✅ Yes
Form C-Corps via API✅ Yes
Register and list or search customers and companies✅ Yes
Download company documents✅ Yes
Real-time webhooks on key events✅ Yes
Self-service API key management✅ Yes
Self-service webhook configuration✅ Yes
Webhook delivery logs✅ Yes
Sandbox environment✅ Yes
Partner Portal✅ Yes
Multiple team members on the portal✅ Yes
Self-serve initial signup❌ doola provisions your account
Edit companies or customers through the portal❌ Read-only, use the API
Customer-facing portal❌ You build your own
White-label portal❌ Not standard (enterprise case by case)