Onboarding Status
This document explains how partners can track the onboarding status of their client merchants through the Rootline Dashboard and webhooks.
For a visual overview of the onboarding flow, see the Merchant Onboarding Flow presentation.
Viewing Company Status in the Dashboard
Partners can monitor the onboarding progress of their client merchants in the Companies section of the Rootline Dashboard.
Verification Status
Each company has a verification_status that indicates where they are in the onboarding process:
| Status | Definition |
|---|---|
created | Company has been created, merchant has not provided information or accepted Terms of Service. |
open | Merchant has submitted the onboarding form and accepted Terms of Service. Verification is in progress. |
verified | Merchant has passed all verification checks and is approved to transact. |
not_accepted | Final rejection. Merchant will not be onboarded (e.g., prohibited business, failed KYC). |
suspended | Non-response clients (never verified). Or verified customers that fail a Periodic Review or Enhanced Due Diligence Review. |
Next Action
When additional steps are required from the merchant, the next_action field will be populated with:
- Action Type: What needs to be done (e.g.,
provide_information,await_assessment) - Onboarding URL: A link where the merchant can submit the required information
- Comment: Details about what information is needed
Onboarding Flows
Two onboarding flows coexist:
Onboarding URL
Two URL shapes exist, and which one applies depends on the flow:
- Company-specific link —
https://onboarding.rootline.com/example.com/{company_id} - Global onboarding link —
https://onboarding.rootline.com/example.com/merchants
Once a company exists, all further interactions with the merchant go through the company-specific link — any additional information request uses this URL.
A checklist of the information merchants need to prepare before starting the onboarding form is available at Merchant Onboarding Requirements. Partners can share this with their merchants ahead of time.
Flow A: Company-Specific Link (Pre-creation)
The partner pre-creates a company via POST /v1/companies or through the Rootline Dashboard. The response includes a company-specific onboarding URL.
- Partner calls
POST /v1/companiesor creates a company through the Dashboard — company starts ascreatedwithnext_action.type = provide_information - Partner sends the onboarding URL to the merchant
- Merchant opens the link and completes the onboarding form + accepts ToS
- Company transitions to
openwithnext_action.type = await_assessment
Flow B: Global Onboarding Link
The partner shares their global onboarding link (e.g., https://onboarding.rootline.com/example.com/merchants).
- Merchant fills in the onboarding form and accepts ToS
- Company is created directly with
verification_status = openandnext_action.type = await_assessment
Additional Information Requests
After a merchant submits the onboarding form, Rootline may need additional information to complete the verification. When this happens, the company's next_action is updated to provide_information with a link to a partial form containing only the specific fields that need to be completed.
How it works
- Rootline determines that additional information is needed (e.g., an expired passport, missing tax number, or unclear ownership structure)
- The company's
next_actionis updated:typechanges toprovide_informationonboarding_urlpoints to the same company-specific URLcommentdescribes what information is needed
- A
company.next_action.updatedwebhook is sent to notify the partner - The partner forwards the onboarding URL to the merchant. The merchant opens the onboarding URL and a targeted form is displayed with only the fields that need to be completed
- After submission,
next_actionchanges toawait_assessmentwhile Rootline reviews the new information
When it can happen
Additional information requests can occur at different stages:
| Company status | Scenario | Example |
|---|---|---|
open | During initial verification | Missing documents, unclear ownership structure |
verified | Periodic review or event-driven review | Expired passport, annual KYC refresh, new compliance requirements |
Partner integration
When you receive a company.next_action.updated webhook with type = provide_information:
- Read the
commentfield to understand what information is needed - Forward the
onboarding_urlto the merchant, or direct them to complete the form - Monitor for a subsequent
company.next_action.updatedwebhook indicating the status has changed toawait_assessment(submission received) or the verification has completed
State Mapping and Transitions
| Scenario | verification_status | next_action | Notes |
|---|---|---|---|
| Company created via API or Dashboard (Flow A) | created | provide_information | Merchant needs to open onboarding link and submit form |
| Merchant submitted company information and accepted ToS (Flow A) | open | await_assessment | Transition from created to open |
| Merchant submitted company information and accepted ToS (Flow B) | open | await_assessment | Company created directly as open |
| Additional information needed | open | provide_information | Rootline requests specific fields via the same onboarding URL |
| Stale or duplicate onboarding | suspended | null | Company onboarding will not be picked up further |
| Verification complete, approved | verified | null | Merchant can transact |
| Verified, periodic review triggered | verified | review_information | E.g., annual KYC refresh, event-driven review |
| Verified, additional info needed | verified | provide_information | New terms, expiring passport |
| Rejected (prohibited industry, failed KYC) | not_accepted | null | Final, no further action |
Status Flow
┌─────────────────┐
│ created │ <-- Flow A (POST /v1/companies)
└────────┬────────┘
│
▼
┌─────────────────┐
│ open │ <-- Flow B (global onboarding link)
└────────┬────────┘
│
┌─────────────────┼─────────────────┐
│ ▲ │
│ │ │
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ verified │──►│ suspended │ │not_accepted │
└─────────────┘ └─────────────┘ └─────────────┘
Onboarding by environment
- Production
- Staging
Production is the live onboarding flow — do not use it for testing. All companies submitted in production go through the full verification process by Rootline's operations team, and there are no test parameters or test modes. Use the staging environment for any trial runs.
What to expect after a merchant submits the onboarding form in production:
- Rootline reviews the submitted information
- If additional information is needed, a
company.next_action.updatedwebhook is sent withtype = provide_information - Once verification is complete, the company transitions to
verifiedand processing accounts are created
Three test scenarios are available on the staging environment. Scenario 1 covers Flow A (company pre-created via the API) and Scenario 2 covers Flow B (company created directly from the global onboarding link). Scenario 3 tests the additional-information-request step, triggered by adding scenario=provide_information to the onboarding URL — this works with either the company-specific or the global onboarding link. On staging, all three complete verification and account creation automatically once the form is submitted.
Scenario 1: Company-Specific Onboarding (Pre-creation)
Test the company-specific onboarding flow where you pre-create a company via the API.
How to trigger: Create a company via POST /v1/companies with your API key, then open the company-specific next_action.onboarding_url from the response and submit the onboarding form.
{
"company_name": "Test Merchant",
"description": "Staging test",
"address": { "country": "NL" }
}
What happens:
- The company is created with
verification_status: "created"and a company-specificnext_action.onboarding_url(e.g.,https://onboarding.staging.rootline.com/example.com/co_xxx) - You open the onboarding URL and fill in the form
- After submission, the company transitions to
openwithnext_action.type = await_assessment - On staging, the company is immediately verified and transitions to
verified - An account is created
Expected result: Your merchant account is fully set up on staging.
Scenario 2: Global Onboarding Link (Direct)
Test onboarding where the merchant is immediately verified and accounts are created. This is the simplest flow — everything is created automatically.
Use your global onboarding link for staging, e.g. https://onboarding.staging.rootline.com/example.com/merchants
How to trigger: Submit the onboarding form without a scenario parameter (the default behavior).
What happens:
- Onboarding activation runs
- Company is created with status
openand next_actionawait_assessment - Company is immediately verified
- Account is created
Expected result: After activation completes, your merchant account is fully set up on staging with correct configurations.
Scenario 3: Additional Information Request Flow
Test the full verification workflow, including the additional information form that merchants receive when extra details are required.
How to trigger: Add scenario=provide_information to the onboarding URL. This works with either link — the global onboarding link (e.g. https://onboarding.staging.rootline.com/example.com/merchants?scenario=provide_information) or a company-specific link from Flow A (e.g. https://onboarding.staging.rootline.com/example.com/co_xxx?scenario=provide_information).
What happens:
- Onboarding activation runs
- Company is created with status
openand next_actionawait_assessment - An additional information request is generated — the company's
next_actionchanges toprovide_informationwith the same company-specific onboarding URL - You open the onboarding URL on the staging environment (the form asks for IBAN details)
- After form submission, the system automatically:
- Updates the company status to
verified - Creates an account
- Updates the company status to
Scenario Summary
| Scenario 1 | Scenario 2 | Scenario 3 | |
|---|---|---|---|
| Flow | Company-specific (pre-creation) | Global onboarding link (direct) | Either link + additional-info request |
| How to trigger | POST /v1/companies, then open the company-specific URL and submit the form | Submit the onboarding form (no scenario parameter) | Submit the onboarding form with scenario=provide_information |
| Manual steps | Create the company via API, then submit the onboarding form | Submit the onboarding form | Submit the onboarding form, then submit the additional-info (IBAN) form |
| End result | Verified company with account created | Verified company with account created | Verified company with account created |
Webhooks
Partners can subscribe to webhooks to receive real-time notifications when company status or next action changes. For setup instructions (endpoint configuration, HMAC signature verification, delivery guarantees), see the Configure webhooks guide.
The two onboarding-related event payloads are shown below.
company.verification_status.updated
The verification status of a company was updated.
{
"object": "event",
"webhook_endpoint_id": "webh_4WxqjT0YfsxXDeKPbrwRie",
"event_type": "company.verification_status.updated",
"event_time": "2024-12-24T14:18:11.435566Z",
"livemode": false,
"api_version": "2024-04-23",
"company": {
"id": "co_5IGIrh15JJZ5oKSYubFpEr",
"object": "company",
"name": "JoesCanteen",
"company_name": "Joe's Canteen B.V.",
"created_at": "2024-12-24T14:18:11.422Z",
"reference": "myRefForUser1",
"verification_status": "verified"
}
}
company.next_action.updated
The next action required for a company was updated.
{
"object": "event",
"webhook_endpoint_id": "webh_4WxqjT0YfsxXDeKPbrwRie",
"event_type": "company.next_action.updated",
"event_time": "2024-12-24T14:18:11.435566Z",
"livemode": false,
"api_version": "2024-04-23",
"company": {
"id": "co_5IGIrh15JJZ5oKSYubFpEr",
"object": "company",
"name": "JoesCanteen",
"company_name": "Joe's Canteen B.V.",
"created_at": "2024-12-24T14:18:11.422Z",
"reference": "myRefForUser1",
"verification_status": "open",
"next_action": {
"type": "provide_information",
"onboarding_url": "https://onboarding.rootline.com/..."
}
}
}