The onboarding component shows users marketing information about the embedded account and kicks off the KYC/KYB onboarding flow. It pulls in your logo, bank account name, and marketing text from Tesouro’s database — content that is defined collaboratively by you, Tesouro, and the bank, and must be bank-approved.
After the user views the marketing information, the component transitions into the onboarding flow where business users submit their information for KYC/KYB validation. The flow collects information on three entities:
- Business entity — Legal information about the business itself
- Business controller — An individual with the power to direct or significantly influence the financial activities of the business (e.g. CEO, CFO, VP)
- Beneficial owners — Any person who owns 25% or more of the company’s ownership interests
A business may have between zero and four beneficial owners.
Onboarding outcomes
| Outcome | Description |
|---|
| Instant approval | The user can immediately access the banking dashboard and start using the account |
| Manual review | The bank requires additional review time; the user is notified via email when complete |
| Denied | The application is denied if it appears fraudulent or too risky for the bank |
React
import { EmbeddedProvider, OnboardingWidget } from '@tesouro/embedded-components-react';
export default function OnboardingPage() {
return (
<EmbeddedProvider
userId={currentUser.id}
userEmail={currentUser.email}
widgetTokenRefreshUrl="/api/widget-token"
>
<OnboardingWidget bankingDashboardHref="/banking/dashboard" />
</EmbeddedProvider>
);
}
| Prop | Required | Description |
|---|
bankingDashboardHref | No | URL to redirect users to after successful onboarding |
shouldRedirect | No | Whether to automatically redirect after approval (default: false) |
businessDetailsForm | No | Pre-filled business entity data (see pre-fill table below) |
personalDetailsForm | No | Pre-filled business controller data |
additionalBusinessOwners | No | Array of pre-filled beneficial owner data |
Web components
<embedded-onboarding-widget
data-merchant-id="YOUR_MERCHANT_ID"
data-user-id="YOUR_USER_ID"
data-widget-token-refresh-url="/api/widget-token"
data-banking-dashboard-href="/banking/dashboard"
></embedded-onboarding-widget>
Pre-filling onboarding data
If you already store any of the following fields, pass them in to pre-fill the form and reduce friction for your users. Users can always edit pre-filled values. The workEmail field is required and must be passed via the personalDetailsForm prop:
<OnboardingWidget
personalDetailsForm={{
workEmail: 'owner@example.com', // required for onboarding flow
}}
/>
| Field | Parameter | Example |
|---|
| Company legal name | companyLegalName | Nail It Technology, Inc. |
| Company DBA name | companyDbaName | Nail It |
| Company address | businessAddress | 123 Main St. |
| Company city | city | Phoenix |
| Company state | state | Arizona |
| Company ZIP code | zipCode | 85001 |
| Company phone | companyPhoneNumber | 555-345-3434 |
| Business structure | companyStructure | llc |
| Company website | website | https://www.example.com |
| EIN / Tax ID | taxId | 123456789 |
| NAICS industry code | industryCode | 111331 |
| Controller first name | firstName | Jack |
| Controller last name | lastName | Smith |
| Controller date of birth | dateOfBirth | 03-01-1997 |
| Controller SSN | ssn | 123-45-6789 |
| Controller home address | homeAddress | 234 Main St. |
| Controller work email (required) | workEmail | jack@example.com |
| Controller phone | mobilePhoneNumber | 555-345-2343 |
| Controller owns 25%+ | ownsOver25Percent | yes |
| Controller ownership % | ownershipPercentage | 50 |
| Beneficial owner first name | firstName | Jane |
| Beneficial owner last name | lastName | Doe |
| Beneficial owner DOB | dateOfBirth | 02-15-1990 |
| Beneficial owner SSN | ssn | 123456789 |
| Beneficial owner address | homeAddress | 123 Main St. |
| Beneficial owner phone | phoneNumber | 5552344456 |
| Beneficial owner % | ownershipPercentage | 25 |