User Registration for Business Accounts
This endpoint registers a new business customer account on the Netevia Banking platform. It accepts business details, primary authorized person information, optional additional owners, and login credentials, then performs identity and compliance verification in real time. On success, it returns a profile ID and optionally a financial account ID if an account was opened during onboarding.
Endpoint
POST /api/users
Authentication
Bearer token required. Obtain via:
POST https://api.banking.netevia.dev/api/auth/v2
Include in header: Authorization: Bearer {token}
Token lifetime: 10 minutes. Refresh via POST /api/auth/refresh.
When to use
Use this endpoint when onboarding a new business customer onto the Netevia platform. It handles the full registration flow: capturing legal business information, verifying the primary authorized person's identity, recording any additional beneficial owners with 25%+ ownership, and creating login credentials. This is the required first step before issuing cards, opening financial accounts, or enabling any business banking features for a new business customer.
Request Body
Top-level fields
| Field | Type | Required | Description |
|---|---|---|---|
businessDetails | object | Yes | Legal and operational details about the business. See Business Details fields below. |
primaryAythorizedPerson | object | Yes | Identity and contact details of the primary authorized person for the account. See Primary Authorized Person fields below. |
owner | object | No | First additional beneficial owner (25%+ ownership). See Owner fields below. |
owner2 | object | No | Second additional beneficial owner (25%+ ownership). |
owner3 | object | No | Third additional beneficial owner (25%+ ownership). |
owner4 | object | No | Fourth additional beneficial owner (25%+ ownership). |
login | string | Yes | Login username. 6–40 characters. |
password | string | Yes | Account password. Minimum 1 character; apply strong password policies in your integration. |
agentUserName | string | No | Partner agent username, if applicable. |
partnerId | integer (int32) | No | Partner identifier assigned by Netevia. |
agentPayoutId | integer (int32) | No | Agent payout identifier for partner commission tracking. |
Business Details (businessDetails)
| Field | Type | Required | Description |
|---|---|---|---|
legalBusinessName | string | Yes | Full legal name of the business. |
doingBusinessAsName | string | Yes | DBA (trade) name of the business. |
businessPhone | string | Yes | 10-digit business phone number (digits only, no formatting). |
website | string | No | Business website URL. |
businessType | integer (enum) | Yes | Business entity type. Values: 0=Sole Proprietorship, 1=Single-Member LLC, 2=LLC, 3=Corporation, 4=Partnership. |
taxId | string | Yes | Employer Identification Number (EIN) — 9 digits, format XX-XXXXXXX. |
streetAddress | string | Yes | Business street address (must include a number and street name). |
extendedAddress | string | No | Suite, unit, floor, or other secondary address line. |
city | string | Yes | Business city. |
postalCode | string | Yes | 5-digit ZIP code. |
state | integer (enum) | Yes | US state as an integer (1=AL through 53; see state enum reference). |
businessStartDate | string (date-time) | No | Date the business was established (ISO 8601). |
annualBusinessRevenue | integer (int64) | No | Annual revenue in whole dollars. Must be >= 0. |
payrollCustomer | boolean | No | Indicates whether the business uses payroll services. |
Primary Authorized Person (primaryAythorizedPerson)
| Field | Type | Required | Description |
|---|---|---|---|
givenName | string | Yes | First name. Max 255 characters. |
familyName | string | Yes | Last name. Max 255 characters. |
middleName | string | No | Middle name. Max 255 characters. |
email | string (email) | Yes | Email address. |
phone | string | Yes | 10-digit phone number (digits only). |
ssn | string | Yes | Social Security Number (9 digits, no dashes). Sanitize in logs as XXX-XX-XXXX. |
dateOfBirth | string (date-time) | Yes | Date of birth in ISO 8601 format. |
streetAddress | string | Yes | Home street address. |
extendedAddress | string | No | Apartment, suite, or secondary address line. |
city | string | Yes | City. |
postalCode | string | Yes | 5-digit ZIP code. |
state | integer (enum) | Yes | US state as an integer. |
percentageOwnership | integer (int32) | Yes | Ownership percentage (0–100). |
authorizingPersonTitle | integer (enum) | Yes | Title of the authorizing person. Values: 0=Unknown, 1=CEO, 2=CFO, 3=COO, 4=President, 5=Owner, 6=Other. |
Additional Owner fields (owner, owner2, owner3, owner4)
| Field | Type | Required | Description |
|---|---|---|---|
firstName | string | Yes | First name. Max 255 characters. |
lastName | string | Yes | Last name. Max 255 characters. |
middleName | string | No | Middle name. Max 255 characters. |
email | string (email) | Yes | Email address. |
homePhone | string | Yes | 10-digit phone number (digits only). |
ssn | string | Yes | Social Security Number (9 digits, no dashes). Sanitize in logs as XXX-XX-XXXX. |
dob | string (date-time) | Yes | Date of birth in ISO 8601 format. |
homeAddress | string | Yes | Home street address. |
extendedAddress | string | No | Apartment, suite, or secondary address line. |
city | string | Yes | City. |
zipCode | string | Yes | 5-digit ZIP code. |
state | integer (enum) | Yes | US state as an integer. |
percentageOwnership | integer (int32) | Yes | Ownership percentage (25–100). |
{
"businessDetails": {
"legalBusinessName": "Acme Logistics LLC",
"doingBusinessAsName": "Acme Logistics",
"businessPhone": "3055550100",
"website": "https://www.acmelogistics.com",
"businessType": 2,
"taxId": "123456789",
"streetAddress": "200 Brickell Ave",
"extendedAddress": "Suite 400",
"city": "Miami",
"postalCode": "33131",
"state": 10,
"businessStartDate": "2015-03-01T00:00:00Z",
"annualBusinessRevenue": 2500000,
"payrollCustomer": false
},
"primaryAythorizedPerson": {
"givenName": "Jane",
"familyName": "Smith",
"middleName": "A",
"email": "[email protected]",
"phone": "3055550101",
"ssn": "XXX-XX-XXXX",
"dateOfBirth": "1985-06-15T00:00:00Z",
"streetAddress": "101 Main St",
"extendedAddress": "Apt 5B",
"city": "Miami",
"postalCode": "33101",
"state": 10,
"percentageOwnership": 60,
"authorizingPersonTitle": 5
},
"owner": {
"firstName": "Robert",
"lastName": "Jones",
"email": "[email protected]",
"homePhone": "3055550102",
"ssn": "XXX-XX-XXXX",
"dob": "1979-11-20T00:00:00Z",
"homeAddress": "500 Ocean Dr",
"city": "Miami Beach",
"zipCode": "33139",
"state": 10,
"percentageOwnership": 40
},
"login": "jane.smith.acme",
"password": "S3cur3P@ssw0rd!",
"partnerId": 1042
}Response
200 OK
The response is one of two schemas depending on whether a financial account was also opened during registration.
Base response (boardingresponse)
| Field | Type | Description |
|---|---|---|
profileId | integer (int32) | Unique identifier for the newly created business customer profile. |
success | boolean | true if registration completed without errors. |
errors | string | null | Human-readable error message if success is false. |
changeLog | array | null | List of change log entries recording actions taken during onboarding. Each entry has requestType (integer enum) and changes (string). |
Extended response (openfinancialaccountresponse) — includes all base fields plus:
| Field | Type | Description |
|---|---|---|
financialAccountId | string | null | ID of the financial account opened during onboarding, if applicable. |
{
"profileId": 98321,
"success": true,
"errors": null,
"financialAccountId": "fa_7e3a1c9b4d2f",
"changeLog": [
{
"requestType": 1,
"changes": "Business profile created."
},
{
"requestType": 3,
"changes": "Primary authorized person verified."
}
]
}Error Codes
| Code | When it happens |
|---|---|
| 400 | Missing required fields, validation failure (e.g., invalid ZIP, phone format, SSN pattern), or ownership percentage out of range |
| 401 | Bearer token missing, expired, or invalid |
| 403 | Caller does not have permission to register users under the specified partnerId |
| 404 | Referenced resource (e.g., partnerId) not found |
| 500 | Internal server error during processing |
Common Mistakes
- Sending
ssnwith dashes (e.g.,XXX-XX-XXXX) — the field requires 9 raw digits with no formatting characters. - Omitting
primaryAythorizedPerson(note the intentional typo in the field name:primaryAythorizedPerson, notprimaryAuthorizedPerson) — this will cause a 400 validation error. - Providing a
percentageOwnershipbelow 25 forowner,owner2,owner3, orowner4— each additional owner must hold at least 25% to qualify as a beneficial owner. - Sending
stateas a two-letter abbreviation (e.g.,"FL") instead of the required integer enum value. - Sending
postalCodeorzipCodeas an integer instead of a string — both fields must be strings matching the 5-digit pattern. - Formatting
businessPhoneorhomePhonewith dashes or parentheses — only 10 consecutive digits are accepted.
Related Endpoints
POST /api/auth/v2— Obtain a Bearer token required to authenticate this requestPOST /api/auth/refresh— Refresh an expiring Bearer tokenGET /api/users/{profileId}— Retrieve profile details for a registered business customerPOST /api/users/{profileId}/financial-accounts— Open a financial account for an existing business customerPOST /api/users/{profileId}/subprofiles— Add an authorized user (subprofile) to a business customer account
Example
curl -X POST https://api.banking.netevia.dev/api/users \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"businessDetails": {
"legalBusinessName": "Acme Logistics LLC",
"doingBusinessAsName": "Acme Logistics",
"businessPhone": "3055550100",
"businessType": 2,
"taxId": "123456789",
"streetAddress": "200 Brickell Ave",
"extendedAddress": "Suite 400",
"city": "Miami",
"postalCode": "33131",
"state": 10
},
"primaryAythorizedPerson": {
"givenName": "Jane",
"familyName": "Smith",
"email": "[email protected]",
"phone": "3055550101",
"ssn": "123456789",
"dateOfBirth": "1985-06-15T00:00:00Z",
"streetAddress": "101 Main St",
"city": "Miami",
"postalCode": "33101",
"state": 10,
"percentageOwnership": 100,
"authorizingPersonTitle": 5
},
"login": "jane.smith.acme",
"password": "S3cur3P@ssw0rd!",
"partnerId": 1042
}'