User Registration for Personal Accounts

User Registration for Personal Accounts

This endpoint registers a new personal account holder within the Netevia Banking platform. Partners submit the individual's identity, contact, and address details to create the account. On success, a profile ID and optional financial account ID are returned for use in subsequent API calls.

Endpoint

POST /api/users/personal

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 individual customer to the platform. This is the first step in the personal account lifecycle — the returned profileId is required for opening financial accounts, issuing cards, and initiating transfers on behalf of the customer. Submit complete and accurate identity data to avoid underwriting failures.

Request Body

FieldTypeRequiredDescription
givenNamestringYesLegal first name. Max 255 characters. Letters, hyphens, and spaces only.
familyNamestringYesLegal last name. Max 255 characters. Letters and spaces only.
middleNamestringNoMiddle name. Max 255 characters. Letters and spaces only.
emailstring (email)YesValid email address for the account holder.
phonestringYes10-digit phone number (digits only, no formatting).
ssnstringYesSocial Security Number (9 digits, no dashes). Must be a valid SSN format.
dateOfBirthstring (date-time)YesDate of birth in ISO 8601 format (e.g., 1990-01-15T00:00:00Z).
streetAddressstringYesStreet address including house number.
extendedAddressstringNoApartment, suite, or unit number.
postalCodestringYes5-digit US ZIP code.
localitystringYesCity name.
stateinteger (enum)YesUS state as an integer enum value (1–53, mapping to US states and territories).
passwordstringNoAccount password. Transmitted securely.
loginstringNoDesired login username. 6–40 characters.
partnerIdintegerNoPartner identifier. Provided by Netevia during onboarding.
agentUserNamestringNoUsername of the referring agent, if applicable.
agentPayoutIdintegerNoPayout identifier for the referring agent, if applicable.
employerIdintegerNoEmployer identifier, used for Earned Wage Access (EWA) integrations.
{
  "givenName": "Jane",
  "familyName": "Smith",
  "middleName": "Marie",
  "email": "[email protected]",
  "phone": "5551234567",
  "ssn": "XXX-XX-XXXX",
  "dateOfBirth": "1990-03-22T00:00:00Z",
  "streetAddress": "123 Main St",
  "extendedAddress": "Apt 4B",
  "postalCode": "30301",
  "locality": "Atlanta",
  "state": 11,
  "password": "S3cur3P@ssword!",
  "login": "janesmith90",
  "partnerId": 1001
}

Response

200 OK

The response may be one of two shapes depending on whether a financial account was simultaneously opened:

boardingresponse (base shape):

FieldTypeDescription
profileIdintegerUnique identifier for the newly created personal profile.
successbooleantrue if the registration succeeded.
errorsstring | nullError message if the operation failed; null on success.
changeLogarray | nullList of change log entries describing actions taken during boarding.

changeLog item fields:

FieldTypeDescription
requestTypeinteger (enum)Type of bank request performed (internal operation code).
changesstring | nullDescription of the change applied.

openfinancialaccountresponse (extended shape, when a financial account is also opened):

FieldTypeDescription
profileIdintegerUnique identifier for the newly created personal profile.
successbooleantrue if the registration succeeded.
errorsstring | nullError message if the operation failed; null on success.
changeLogarray | nullList of change log entries.
financialAccountIdstring | nullIdentifier of the financial account opened during registration, if applicable.
{
  "profileId": 48291,
  "success": true,
  "errors": null,
  "changeLog": [
    {
      "requestType": 1,
      "changes": "Personal account holder created successfully."
    }
  ],
  "financialAccountId": "XXXXXXXXXX"
}

Error Codes

CodeWhen it happens
400Missing required fields, invalid field format (e.g., bad SSN pattern, invalid postal code, invalid email), or an account with the same email already exists
401Token missing, expired, or invalid
403Insufficient permissions for the requesting partner
404Resource not found
500Internal server error

Common Mistakes

  • Submitting the SSN with dashes (e.g., 123-45-6789) instead of digits only (123456789). The field requires a 9-digit string matching the valid SSN pattern.
  • Formatting the phone number with parentheses or dashes (e.g., (555) 123-4567). Use exactly 10 consecutive digits: 5551234567.
  • Using an incorrect dateOfBirth format. The field requires ISO 8601 date-time format — always include the time portion (e.g., 1990-03-22T00:00:00Z).
  • Passing a string representation for state instead of the integer enum value. Refer to the state enum mapping to supply the correct integer.
  • Omitting partnerId when registering on behalf of a specific partner channel — this may cause the account to be assigned to the wrong partner context.

Related Endpoints

  • POST /api/users/business — Register a new business account holder
  • POST /api/auth/v2 — Obtain a Bearer token for authentication
  • POST /api/auth/refresh — Refresh an existing Bearer token
  • GET /api/users/personal/{profileId} — Retrieve personal account holder details
  • PUT /api/users/personal/{profileId} — Update personal account holder information
  • POST /api/financialaccounts — Open a financial account for an existing profile

Example

curl -X POST https://api.banking.netevia.dev/api/users/personal \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "givenName": "Jane",
    "familyName": "Smith",
    "middleName": "Marie",
    "email": "[email protected]",
    "phone": "5551234567",
    "ssn": "123456789",
    "dateOfBirth": "1990-03-22T00:00:00Z",
    "streetAddress": "123 Main St",
    "extendedAddress": "Apt 4B",
    "postalCode": "30301",
    "locality": "Atlanta",
    "state": 11,
    "password": "S3cur3P@ssword!",
    "login": "janesmith90",
    "partnerId": 1001
  }'
Body Params
string | null
int32 | null
int32 | null
string | null
int32 | null
string
required
length ≥ 1
string
required
length between 1 and 255
[A-z-\s]+
string
required
length between 1 and 255
[A-z\s]+
string | null
[A-z\s]+
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
^\d{5}$
string
required
length ≥ 1
int32
enum
required
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