Online Merchant Application

Online Merchant Application — Create Business Profile

This endpoint creates or updates a business customer profile in the Netevia banking platform. It accepts the authorized person's personal details alongside the business entity's information, including ownership structure and KYB/KYC data. Upon successful submission, the platform returns a confirmation with the assigned profile identifier.

Endpoint

POST /netevia/oma/profile

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 during the partner onboarding flow when registering a new business customer or updating an existing business profile. It is the entry point for the Online Merchant Application (OMA) and Banking API boarding paths. Submit this request after collecting all required KYB (Know Your Business) and KYC (Know Your Customer) information from the business owner.

Request Body

The request body accepts one of two schemas:

  • createbusinessprofileomarequest — Standard OMA flow (up to two beneficial owners via primaryOwner and secondaryOwner).
  • createbusinessprofilebankingapirequest — Extended Banking API flow, which inherits all OMA fields and adds thirdOwner and fourstOwner for up to four beneficial owners.

Base Profile Fields (inherited by both schemas)

FieldTypeRequiredDescription
emailstring (email)YesAuthorized person's email address
givenNamestringYesAuthorized person's first name
familyNamestringYesAuthorized person's last name
middleNamestringNoAuthorized person's middle name
cardProductIdstringNoCard product identifier to assign
agentPayoutProfileIdinteger (int32)YesAgent payout profile identifier
salesRepresentativeIdinteger (int32)YesSales representative identifier
merchantProfileIdinteger (int32)NoExisting merchant profile identifier (for updates)
isRiskbooleanNoFlags the profile as high-risk
nickNamestringNoDisplay nickname for the profile
passwordstringNoInitial account password
partnerIdinteger (int32)NoPartner identifier

OMA Profile Fields (createbusinessprofileomarequest)

FieldTypeRequiredDescription
phonestringYesAuthorized person's phone number (10 digits)
authorizedPersonTitleinteger (enum)YesTitle of the authorized person. Values: 0–6 (e.g., 0=Mr, 1=Mrs, 2=Ms, etc.)
percentageOwnershipinteger (0–100)YesAuthorized person's ownership percentage
ssnstringYesAuthorized person's Social Security Number (format: XXX-XX-XXXX)
dateOfBirthstring (date-time)YesAuthorized person's date of birth (ISO 8601)
streetAddressstringYesAuthorized person's residential street address
extendedAddressstringNoAuthorized person's address line 2 (apt, suite, etc.)
citystringYesAuthorized person's city
postalCodestringYesAuthorized person's ZIP/postal code
stateinteger (enum)YesAuthorized person's state (integer 1–53 representing US states/territories)
legalBusinessNamestringYesLegal registered business name
doingBusinessAsNamestringYesDBA (Doing Business As) name
websitestringNoBusiness website URL
businessTypeinteger (enum)NoBusiness entity type. Values: 0–4 (e.g., 0=SoleProprietorship, 1=LLC, 2=Corporation, 3=Partnership, 4=NonProfit)
businessPhonestringYesBusiness phone number (10 digits, pattern: `^(\d
businessStreetAddressstringYesBusiness street address
businessExtendedAddressstringNoBusiness address line 2
businessCitystringYesBusiness city
businessPostalCodestringYesBusiness ZIP/postal code
businessStateinteger (enum)YesBusiness state (integer 1–53)
employerIdentificationNumberstringYesFederal Employer Identification Number (EIN, format: XX-XXXXXXX)
primaryOwnerIsPrimaryAuthorizedPersonbooleanNoSet true if the authorized person is also the primary owner
primaryOwnerobject (ownerrequest)NoPrimary beneficial owner details (see Owner Object below)
secondaryOwnerobject (ownerrequest)NoSecondary beneficial owner details
owner3object (ownerrequest)NoThird beneficial owner details
owner4object (ownerrequest)NoFourth beneficial owner details
businessStartDatestring (date-time)NoDate the business was established (ISO 8601)
annualBusinessRevenueinteger (int64)NoAnnual business revenue in cents (minimum: 0)
profileTypeinteger (enum)NoProfile type. Values: 0–3
applicationCreationTypestring (enum)NoSource of the application. Values: MobileApplication, OnlineBankingApplication, OnlineMerchantApplication, NeteviaBoardingApplication, BankingAPI, NeteviaAPI
payrollCustomerbooleanNoIndicates if this is a payroll customer

Extended Banking API Fields (createbusinessprofilebankingapirequest)

Inherits all fields from createbusinessprofileomarequest, plus:

FieldTypeRequiredDescription
thirdOwnerobject (ownerrequest)NoThird beneficial owner (use instead of owner3 in API flow)
fourstOwnerobject (ownerrequest)NoFourth beneficial owner (use instead of owner4 in API flow)

Owner Object (ownerrequest)

Used for primaryOwner, secondaryOwner, owner3, owner4, thirdOwner, fourstOwner.

FieldTypeRequiredDescription
firstNamestring (max 255)YesOwner's first name
lastNamestring (max 255)YesOwner's last name
middleNamestring (max 255)NoOwner's middle name
homeAddressstringYesOwner's residential street address
extendedAddressstringNoOwner's address line 2
citystringYesOwner's city
stateinteger (enum)YesOwner's state (integer 1–53)
zipCodestringYesOwner's ZIP code (5 digits, pattern: ^\d{5}$)
homePhonestringYesOwner's phone number (10 digits)
percentageOwnershipinteger (25–100)YesOwner's ownership percentage (minimum 25)
ssnstringYesOwner's Social Security Number (format: XXX-XX-XXXX)
dobstring (date-time)YesOwner's date of birth (ISO 8601)
emailstring (email)YesOwner's email address
{
  "email": "[email protected]",
  "givenName": "Jane",
  "familyName": "Doe",
  "middleName": "M",
  "agentPayoutProfileId": 101,
  "salesRepresentativeId": 55,
  "partnerId": 12,
  "phone": "5551234567",
  "authorizedPersonTitle": 1,
  "percentageOwnership": 75,
  "ssn": "XXX-XX-XXXX",
  "dateOfBirth": "1980-04-15T00:00:00Z",
  "streetAddress": "123 Main St",
  "extendedAddress": "Apt 4B",
  "city": "Austin",
  "postalCode": "78701",
  "state": 44,
  "legalBusinessName": "Acme Corp LLC",
  "doingBusinessAsName": "Acme Corp",
  "website": "https://www.acmecorp.com",
  "businessType": 1,
  "businessPhone": "5559876543",
  "businessStreetAddress": "456 Commerce Blvd",
  "businessExtendedAddress": "Suite 200",
  "businessCity": "Austin",
  "businessPostalCode": "78702",
  "businessState": 44,
  "employerIdentificationNumber": "12-3456789",
  "primaryOwnerIsPrimaryAuthorizedPerson": true,
  "businessStartDate": "2015-06-01T00:00:00Z",
  "annualBusinessRevenue": 500000,
  "profileType": 1,
  "applicationCreationType": "NeteviaAPI",
  "payrollCustomer": false,
  "secondaryOwner": {
    "firstName": "John",
    "lastName": "Smith",
    "homeAddress": "789 Oak Ave",
    "city": "Austin",
    "state": 44,
    "zipCode": "78703",
    "homePhone": "5554445555",
    "percentageOwnership": 25,
    "ssn": "XXX-XX-XXXX",
    "dob": "1975-09-20T00:00:00Z",
    "email": "[email protected]"
  }
}

Response

200 OK

FieldTypeDescription
profileIdinteger (int32)The unique identifier of the created or updated business profile
errorstring | nullError message if the operation encountered a non-fatal issue; null on full success
{
  "profileId": 98432,
  "error": null
}

Error Codes

CodeWhen it happens
400Missing required fields, validation error (e.g., invalid SSN format, EIN format, phone pattern, or ownership percentage out of range)
401Token missing, expired, or invalid
403Insufficient permissions for the requested operation
404Referenced resource (e.g., agentPayoutProfileId, salesRepresentativeId) not found
500Internal server error

Common Mistakes

  • Submitting ssn as a plain number string instead of the validated pattern — the API enforces a strict regex; SSNs beginning with 666 or 9XX are rejected.
  • Providing percentageOwnership for an ownerrequest object below 25 — the minimum for beneficial owners is 25%.
  • Using a two-digit or hyphenated EIN format that does not match the expected pattern (^(\d{2})?(\d{7})$ without hyphens).
  • Setting primaryOwnerIsPrimaryAuthorizedPerson: true while also submitting a populated primaryOwner object — these are mutually exclusive when the authorized person is the primary owner.
  • Sending businessPhone or homePhone with fewer or more than 10 digits, or including hyphens/spaces — only digits are accepted.
  • Omitting applicationCreationType when integrating via the Banking API path; use "NeteviaAPI" or "BankingAPI" to ensure correct routing.
  • Passing a state value outside the valid range 1–53 for either the personal or business address.

Related Endpoints

  • POST /api/auth/v2 — Obtain a Bearer token required for this request
  • POST /api/auth/refresh — Refresh an expiring Bearer token
  • GET /netevia/oma/profile/{profileId} — Retrieve an existing business profile by ID
  • PUT /netevia/oma/profile/{profileId} — Update an existing business profile

Example

curl -X POST https://api.banking.netevia.dev/netevia/oma/profile \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "[email protected]",
    "givenName": "Jane",
    "familyName": "Doe",
    "agentPayoutProfileId": 101,
    "salesRepresentativeId": 55,
    "partnerId": 12,
    "phone": "5551234567",
    "authorizedPersonTitle": 1,
    "percentageOwnership": 75,
    "ssn": "XXX-XX-XXXX",
    "dateOfBirth": "1980-04-15T00:00:00Z",
    "streetAddress": "123 Main St",
    "city": "Austin",
    "postalCode": "78701",
    "state": 44,
    "legalBusinessName": "Acme Corp LLC",
    "doingBusinessAsName": "Acme Corp",
    "businessPhone": "5559876543",
    "businessStreetAddress": "456 Commerce Blvd",
    "businessCity": "Austin",
    "businessPostalCode": "78702",
    "businessState": 44,
    "employerIdentificationNumber": "12-3456789",
    "applicationCreationType": "NeteviaAPI"
  }'
Body Params
string
required
length ≥ 1
int32
enum
required
Allowed:
int32
required
0 to 100
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
string | null
int32
enum
Allowed:
string
required
length ≥ 1
^(\d|\*){10}$
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
^(?!00\d{7}$)(?!\d{2}0000000$)(\d{2})?(\d{7})$
boolean
primaryOwner
object
secondaryOwner
object
owner3
object
owner4
object
date-time | null
int64 | null
≥ 0
int32
enum
Allowed:
string
enum
Allowed:
boolean
string
required
length ≥ 1
string
required
length ≥ 1
string
required
length ≥ 1
string | null
string | null
int32
required
int32
required
int32 | null
string | null
boolean | null
string | null
string | null
int32 | null
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