Send Primary, Authorized person and Owners data

Send Primary, Authorized Person and Owners Data

This endpoint is used during business customer onboarding to submit identity and contact details for the primary authorized person and up to four beneficial owners associated with a business account. It records critical KYC (Know Your Customer) information required by Netevia to verify and activate the business account. Successful submission returns a boarding response confirming the profile ID and any processing changes.

Endpoint

POST /netevia/businessAccountHolder

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 should be called after initial business registration to provide the authorizing person's personal details, business identification data, and ownership information for all beneficial owners holding 25% or more of the business. This step is required before a financial account can be opened for the business.

Request Body

Primary / Authorizing Person Fields

FieldTypeRequiredDescription
emailstring (email)YesEmail address of the authorizing person
givenNamestringYesFirst name of the authorizing person
familyNamestringYesLast name of the authorizing person
middleNamestringNoMiddle name of the authorizing person
phonestringYes10-digit personal phone number (digits only)
ssnstringYesSocial Security Number of the authorizing person (format: XXX-XX-XXXX)
dateOfBirthstring (date-time)YesDate of birth in ISO 8601 format
streetAddressstringYesStreet address of the authorizing person's residence
extendedAddressstringNoApartment, suite, or unit number for the residence
citystringYesCity of the authorizing person's residence
postalCodestringYesZIP code of the authorizing person's residence
stateinteger (enum)YesUS state as integer enum (1–53)
authorizingPersonTitleinteger (enum)YesTitle of the authorizing person (0=None, 1=Mr, 2=Mrs, 3=Ms, 4=Dr, 5=Prof, 6=Other)
primaryAuthorizedStreetAddressstringYesPrimary authorized person's street address
primaryAuthorizedExtendedAddressstringNoPrimary authorized person's extended address (apt/suite)
primaryAuthorizedPostalCodestringYes5-digit ZIP code for the primary authorized address
primaryAuthorizedLocalitystringYesCity for the primary authorized address
primaryAuthorizedStateinteger (enum)YesUS state enum for the primary authorized address

Business Fields

FieldTypeRequiredDescription
legalBusinessNamestringYesFull legal name of the business
doingBusinessAsNamestringYesDBA (doing business as) name
employerIdentificationNumberstringYesFederal EIN (9-digit format)
businessPhonestringYes10-digit business phone number (digits only)
percentageOwnershipinteger (0–100)YesOwnership percentage of the authorizing person
businessTypeinteger (enum)NoType of business (0=Unknown, 1=SoleProprietorship, 2=Partnership, 3=Corporation, 4=LLC)
websitestringNoBusiness website URL
businessStartDatestring (date-time)NoDate the business was established
annualBusinessRevenueinteger (int64)NoAnnual revenue of the business in USD
payrollCustomerbooleanNoIndicates if this business is a payroll customer
profileTypeinteger (enum)NoProfile type (0=Default, 1=Type1, 2=Type2, 3=Type3)

Beneficial Owner Fields (owner, owner2, owner3, owner4)

Each owner object supports up to four beneficial owners. All owner objects use the same schema. Each individual owner field set is optional at the top level, but if provided, all required sub-fields must be included.

FieldTypeRequired (if owner provided)Description
firstNamestring (max 255)YesOwner's first name
lastNamestring (max 255)YesOwner's last name
middleNamestring (max 255)NoOwner's middle name
emailstring (email)YesOwner's email address
homePhonestringYes10-digit home phone number (digits only)
ssnstringYesOwner's Social Security Number (format: XXX-XX-XXXX)
dobstring (date-time)YesOwner's date of birth in ISO 8601 format
homeAddressstringYesOwner's street address
extendedAddressstringNoApt, suite, or unit for the owner's address
citystringYesOwner's city
stateinteger (enum)YesUS state enum for owner's address
zipCodestringYes5-digit ZIP code for owner's address
percentageOwnershipinteger (25–100)YesOwner's ownership percentage (minimum 25%)
{
  "email": "[email protected]",
  "givenName": "Jane",
  "familyName": "Doe",
  "middleName": "A",
  "phone": "3055550101",
  "ssn": "XXX-XX-XXXX",
  "dateOfBirth": "1980-04-15T00:00:00Z",
  "streetAddress": "100 Main St",
  "extendedAddress": "Suite 200",
  "city": "Miami",
  "postalCode": "33101",
  "state": 10,
  "authorizingPersonTitle": 2,
  "primaryAuthorizedStreetAddress": "100 Main St",
  "primaryAuthorizedExtendedAddress": "Suite 200",
  "primaryAuthorizedPostalCode": "33101",
  "primaryAuthorizedLocality": "Miami",
  "primaryAuthorizedState": 10,
  "legalBusinessName": "Acme Corporation LLC",
  "doingBusinessAsName": "Acme Corp",
  "employerIdentificationNumber": "123456789",
  "businessPhone": "3055550100",
  "percentageOwnership": 60,
  "businessType": 4,
  "website": "https://www.acmecorp.com",
  "businessStartDate": "2010-06-01T00:00:00Z",
  "annualBusinessRevenue": 500000,
  "payrollCustomer": false,
  "owner": {
    "firstName": "John",
    "lastName": "Smith",
    "email": "[email protected]",
    "homePhone": "3055550202",
    "ssn": "XXX-XX-XXXX",
    "dob": "1975-08-20T00:00:00Z",
    "homeAddress": "200 Oak Ave",
    "city": "Miami",
    "state": 10,
    "zipCode": "33102",
    "percentageOwnership": 40
  }
}

Response

200 OK

The response is one of two schemas depending on whether a financial account was also opened during the boarding process.

boardingresponse

FieldTypeDescription
profileIdinteger (int32)The Netevia profile ID assigned to the business account holder
successbooleanIndicates whether the submission was successful
errorsstringError message if success is false; null otherwise
changeLogarrayList of changes processed during boarding; each entry contains requestType (integer enum) and changes (string)

openfinancialaccountresponse (extends boardingresponse)

FieldTypeDescription
profileIdinteger (int32)The Netevia profile ID assigned to the business account holder
successbooleanIndicates whether the submission was successful
errorsstringError message if success is false; null otherwise
changeLogarrayList of boarding changes processed
financialAccountIdstringID of the financial account opened during boarding, if applicable
{
  "profileId": 100234,
  "success": true,
  "errors": null,
  "changeLog": [
    {
      "requestType": 1,
      "changes": "Business account holder profile created."
    }
  ]
}

Error Codes

CodeWhen it happens
400Missing required fields, invalid field format (e.g., invalid SSN pattern, phone not 10 digits, ZIP not 5 digits), or ownership percentage out of range
401Token missing, expired, or invalid
403Insufficient permissions to submit business account holder data
404Referenced profile or resource not found
500Internal server error

Common Mistakes

  • Sending ssn or dob in an incorrect format — SSN must match the exact regex pattern (no dashes in the raw value sent; use the unformatted 9-digit number), and dateOfBirth/dob must be ISO 8601 date-time strings.
  • Providing an owner's percentageOwnership below 25 — the schema enforces a minimum of 25% per beneficial owner.
  • Sending phone or businessPhone or homePhone with formatting characters (dashes, spaces, parentheses) — these fields must be exactly 10 consecutive digits.
  • Omitting primaryAuthorizedStreetAddress, primaryAuthorizedPostalCode, primaryAuthorizedLocality, or primaryAuthorizedState — these are required even when they duplicate the authorizing person's residence address.
  • Using a string state abbreviation (e.g., "FL") instead of the integer enum value (e.g., 10) for any state field.
  • Submitting an employerIdentificationNumber with dashes — the EIN must be submitted as a 9-digit numeric string with no formatting characters.

Related Endpoints

  • POST /netevia/businessCustomer — Create the initial business customer record before submitting account holder data
  • POST /netevia/authorizedUser — Add an authorized subprofile user to an existing business account
  • GET /netevia/businessAccountHolder/{profileId} — Retrieve submitted business account holder details for a given profile
  • PUT /netevia/businessAccountHolder — Update existing business account holder information

Example

curl -X POST https://api.banking.netevia.dev/netevia/businessAccountHolder \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "[email protected]",
    "givenName": "Jane",
    "familyName": "Doe",
    "phone": "3055550101",
    "ssn": "XXXXXXXXX",
    "dateOfBirth": "1980-04-15T00:00:00Z",
    "streetAddress": "100 Main St",
    "city": "Miami",
    "postalCode": "33101",
    "state": 10,
    "authorizingPersonTitle": 2,
    "primaryAuthorizedStreetAddress": "100 Main St",
    "primaryAuthorizedPostalCode": "33101",
    "primaryAuthorizedLocality": "Miami",
    "primaryAuthorizedState": 10,
    "legalBusinessName": "Acme Corporation LLC",
    "doingBusinessAsName": "Acme Corp",
    "employerIdentificationNumber": "123456789",
    "businessPhone": "3055550100",
    "percentageOwnership": 100,
    "businessType": 4
  }'
Body Params
string
required
length ≥ 1
string
required
length ≥ 1
string
required
length ≥ 1
string | null
string
required
length ≥ 1
^(\d|\*){10}$
string
required
length ≥ 1
^(?!(666|9\d{2}))(?:0[1-9]\d|00[1-9]|[1-8]\d{2})(?:0[1-9]|[1-9]\d)(?!0000)\d{4}$
date-time
required
string
required
length ≥ 1
string | null
^[a-zA-Z\d',. \-#]+(([',. \-#][a-zA-Z ])?[a-zA-Z.]*)*$
string
required
length ≥ 1
string
required
length ≥ 1
int32
enum
required
string
required
length ≥ 1
string
required
length ≥ 1
int32
required
0 to 100
int32
enum
required
Allowed:
string | null
int32
enum
Allowed:
string
required
length ≥ 1
^(\d|\*){10}$
string
required
length ≥ 1
^(?!00\d{7}$)(?!\d{2}0000000$)(\d{2})?(\d{7})$
owner
object
owner2
object
owner3
object
owner4
object
string
required
length ≥ 1
string | null
^[a-zA-Z\d',. \-#]+(([',. \-#][a-zA-Z ])?[a-zA-Z.]*)*$
string
required
length ≥ 1
^\d{5}$
string
required
length ≥ 1
int32
enum
required
int32
int32
enum
Allowed:
date-time | null
int64 | null
≥ 0
boolean
Headers
string
enum
Defaults to application/json

Generated from available response content types

Allowed:
string
enum
Defaults to application/json

Generated from available request content types

Allowed:
Response

Language
Credentials
Bearer
JWT
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
text/plain
application/json
text/json