Manage Online Merchant Application

Create or update a business customer profile in the Netevia banking platform.

Manage Online Merchant Application

This endpoint enables partners to create or update a business customer profile in the Netevia banking platform. It accepts full business and authorized-person details, including ownership structure, KYC data, and address information. On success, it returns a profile ID that can be used for subsequent operations.

Endpoint

POST /netevia/api/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 when onboarding a new business customer through the Online Merchant Application flow. It is the primary boarding entry point for business profiles and must be called before creating financial accounts or issuing cards to the business. It supports partial updates to an existing profile by re-submitting with the same merchant identifier.

Request Body

Primary Applicant / Authorized Person

FieldTypeRequiredDescription
emailstring (email)YesPrimary applicant email address
givenNamestringYesApplicant first name
familyNamestringYesApplicant last name
middleNamestringNoApplicant middle name
phonestringYesApplicant phone number (10 digits)
authorizedPersonTitleinteger (enum)YesTitle of the authorized person. Values: 0=Unknown, 1=Mr, 2=Mrs, 3=Ms, 4=Miss, 5=Dr, 6=Prof
percentageOwnershipinteger (0–100)YesOwnership percentage held by the authorized person
ssnstringYesSocial Security Number. Format: XXX-XX-XXXX (no dashes in submission; 9-digit string)
dateOfBirthstring (date-time)YesApplicant date of birth in ISO 8601 format
streetAddressstringYesApplicant residential street address
extendedAddressstringNoApplicant address line 2 (apt, suite, etc.)
citystringYesApplicant city
postalCodestringYesApplicant ZIP/postal code
stateinteger (enum)YesApplicant state as an integer (1=AL … 51=WY; see state enum)
nickNamestringNoOptional display nickname
passwordstringNoInitial login password for the profile
partnerIdintegerNoPartner identifier; defaults to the authenticated partner if omitted
cardProductIdstringNoCard product to associate with this profile
agentPayoutProfileIdintegerYesAgent payout profile identifier
salesRepresentativeIdintegerYesSales representative identifier
merchantProfileIdintegerNoExisting merchant profile ID for updates
isRiskbooleanNoFlags the applicant as high risk

Business Information

FieldTypeRequiredDescription
legalBusinessNamestringYesLegal registered name of the business
doingBusinessAsNamestringYesTrade name / DBA name
websitestringNoBusiness website URL
businessTypeinteger (enum)NoBusiness entity type. Values: 0=Unknown, 1=SoleProprietorship, 2=Partnership, 3=Corporation, 4=LLC
businessPhonestringYesBusiness phone number (10 digits, no punctuation)
businessStreetAddressstringYesBusiness street address
businessExtendedAddressstringNoBusiness address line 2
businessCitystringYesBusiness city
businessPostalCodestringYesBusiness ZIP/postal code
businessStateinteger (enum)YesBusiness state as an integer (same enum as state)
employerIdentificationNumberstringYesEIN in 9-digit format (no dashes)
businessStartDatestring (date-time)NoBusiness incorporation or start date
annualBusinessRevenueintegerNoAnnual business revenue in cents (minimum 0)
profileTypeinteger (enum)NoProfile type. Values: 0=Unknown, 1=Business, 2=Personal, 3=SubProfile
applicationCreationTypestring (enum)NoApplication source channel. Values: MobileApplication, OnlineBankingApplication, OnlineMerchantApplication, NeteviaBoardingApplication, BankingAPI, NeteviaAPI
payrollCustomerbooleanNoIndicates the business is a payroll customer
primaryOwnerIsPrimaryAuthorizedPersonbooleanNoSet to true if the authorized person is also the primary owner

Owner Objects (each owner uses the same ownerrequest schema)

FieldTypeRequiredDescription
primaryOwnerobjectNoPrimary owner details (see owner schema below)
secondaryOwnerobjectNoSecondary owner details
owner3objectNoThird owner details
owner4objectNoFourth owner details
thirdOwnerobjectNoAlias for third owner (Banking API extension)
fourstOwnerobjectNoAlias for fourth owner (Banking API extension)

Owner Object Schema (ownerrequest)

FieldTypeRequiredDescription
firstNamestring (max 255)YesOwner first name
lastNamestring (max 255)YesOwner last name
middleNamestring (max 255)NoOwner middle name
emailstring (email)YesOwner email address
homeAddressstringYesOwner residential street address
extendedAddressstringNoOwner address line 2
citystringYesOwner city
stateinteger (enum)YesOwner state as an integer
zipCodestringYesOwner ZIP code (exactly 5 digits)
homePhonestringYesOwner phone number (10 digits)
percentageOwnershipinteger (25–100)YesOwnership percentage (minimum 25)
ssnstringYesOwner Social Security Number
dobstring (date-time)YesOwner date of birth in ISO 8601 format
{
  "email": "[email protected]",
  "givenName": "Jane",
  "familyName": "Smith",
  "middleName": "A",
  "phone": "3055551234",
  "authorizedPersonTitle": 2,
  "percentageOwnership": 51,
  "ssn": "XXX-XX-XXXX",
  "dateOfBirth": "1980-04-15T00:00:00Z",
  "streetAddress": "123 Main St",
  "extendedAddress": "Apt 4B",
  "city": "Miami",
  "postalCode": "33101",
  "state": 10,
  "agentPayoutProfileId": 42,
  "salesRepresentativeId": 7,
  "legalBusinessName": "Acme Corp LLC",
  "doingBusinessAsName": "Acme Corp",
  "website": "https://www.acmecorp.com",
  "businessType": 4,
  "businessPhone": "3055559876",
  "businessStreetAddress": "456 Commerce Blvd",
  "businessCity": "Miami",
  "businessPostalCode": "33102",
  "businessState": 10,
  "employerIdentificationNumber": "123456789",
  "businessStartDate": "2015-06-01T00:00:00Z",
  "annualBusinessRevenue": 500000,
  "profileType": 1,
  "applicationCreationType": "NeteviaAPI",
  "payrollCustomer": false,
  "primaryOwnerIsPrimaryAuthorizedPerson": true
}

Response

200 OK

FieldTypeDescription
profileIdintegerUnique identifier of the created or updated profile
errorstringError message if the operation partially failed; null on full success
{
  "profileId": 10045,
  "error": null
}

Error Codes

CodeWhen it happens
400Missing required fields, validation failure (e.g., invalid SSN format, EIN pattern mismatch, percentageOwnership out of range), or malformed date
401Token missing, expired, or invalid
403Insufficient permissions for the specified partnerId or salesRepresentativeId
404Referenced merchantProfileId or agentPayoutProfileId not found
500Internal server error

Common Mistakes

  • Submitting ssn with dashes (e.g., 123-45-6789) instead of the raw 9-digit string required by the pattern validation.
  • Setting percentageOwnership to a value below 25 for additional owners — the owner schema enforces a minimum of 25.
  • Omitting agentPayoutProfileId or salesRepresentativeId, which are required on the base profile request.
  • Providing businessPhone with punctuation or spaces — the field must be exactly 10 consecutive digits.
  • Using a state string (e.g., "FL") instead of the integer enum value (e.g., 10).
  • Supplying dateOfBirth or businessStartDate as a plain date string (e.g., "1980-04-15") instead of ISO 8601 date-time (e.g., "1980-04-15T00:00:00Z").

Related Endpoints

  • POST /api/auth/v2 — Obtain a Bearer token before calling this endpoint
  • POST /api/auth/refresh — Refresh an expiring Bearer token
  • GET /netevia/api/profile/{profileId} — Retrieve an existing business profile by ID
  • POST /netevia/api/financial-account — Create a financial account for the boarded business profile
  • POST /netevia/api/card — Issue a card to a business profile after boarding

Example

curl -X POST https://api.banking.netevia.dev/netevia/api/profile \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "[email protected]",
    "givenName": "Jane",
    "familyName": "Smith",
    "phone": "3055551234",
    "authorizedPersonTitle": 2,
    "percentageOwnership": 51,
    "ssn": "123456789",
    "dateOfBirth": "1980-04-15T00:00:00Z",
    "streetAddress": "123 Main St",
    "city": "Miami",
    "postalCode": "33101",
    "state": 10,
    "agentPayoutProfileId": 42,
    "salesRepresentativeId": 7,
    "legalBusinessName": "Acme Corp LLC",
    "doingBusinessAsName": "Acme Corp",
    "businessPhone": "3055559876",
    "businessStreetAddress": "456 Commerce Blvd",
    "businessCity": "Miami",
    "businessPostalCode": "33102",
    "businessState": 10,
    "employerIdentificationNumber": "123456789",
    "profileType": 1,
    "applicationCreationType": "NeteviaAPI"
  }'
Body Params
thirdOwner
object
fourstOwner
object
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
^\d+([\s/-]?[A-z\d/\]{1,2}|[A-z\d]+)?(?:\s[A-z\d'_-]+)+$
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
^\d+([\s/-]?[A-z\d/\]{1,2}|[A-z\d]+)?(?:\s[A-z\d'_-]+)+$
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
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