API reference · Identity & onboarding

Account Holders

Tiered onboarding, limits that rise automatically, graded identity records. About identity & kyc Live

GET Fetch the current account holder

GET /accountholder

Returns the account holder linked to the user reference carried in the current session context, i.e. the account holder for the caller's own logged-in session.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Example

Response: AccountHolderResponse

curl -X GET "https://api.bridgemoni.com/accountholder" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Account holder fetched successfully
404No account holder exists for the session's user reference

POST Create an account holder

POST /accountholder

Creates a new account holder. This first registers a user on oauth using the supplied mobile number, email address, username, and password, then creates the account holder and cascades creation of any nested profile data supplied in the request (person, identifiers, identifications, addresses, contacts, employment, expected activity, sanction, risk, verification, consents, business).

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/json

Example

Request body: AccountHolderRequest · Response: AccountHolderResponse

curl -X POST "https://api.bridgemoni.com/accountholder" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV" \
  -H "Content-Type: application/json" \
  -d '{
    "mobileNumber": "+2348012345678",
    "emailAddress": "ada@example.com",
    "username": "ada.obi",
    "password": "a-strong-password",
    "roleName": "Ada Obi",
    "person": {
      "name": {
        "firstName": "first name",
        "lastName": "last name",
        "middleName": "middle name",
        "fullName": "Ada Obi",
        "maidenName": "Ada Obi"
      },
      "birthDate": "2027-03-14",
      "birthCity": "Lagos",
      "birthCountryCode": "NG",
      "genderCode": "MALE",
      "maritalStatus": "SINGLE",
      "nationalityCountryCode": "NG",
      "residentCountryCode": "NG",
      "taxResidences": [
        {
          "...": "nested"
        }
      ]
    },
    "identifiers": [
      {
        "schemeName": "Ada Obi",
        "identificationNumber": "identification number",
        "issuingCountryCode": "NG",
        "verifier": "Ada Obi",
        "profileMatch": true,
        "verificationStatus": "PENDING",
        "verificationMethod": "verification method",
        "verificationDateTime": "2027-03-14T14:30:01"
      }
    ],
    "identifications": [
      {
        "identificationType": "PASSPORT",
        "identificationNumber": "identification number",
        "issuingCountryCode": "NG",
        "issuingAuthority": "Ada Obi",
        "issueDate": "2027-03-14",
        "expiryDate": "2027-03-14",
        "identifier": "identification number",
        "frontImageUrl": "unified resource identifier",
        "backImageUrl": "unified resource identifier"
      }
    ],
    "addresses": [
      {
        "addressType": "POSTAL",
        "streetName": "street name",
        "buildingNumber": "house number",
        "postCode": "101241",
        "town": "Lagos",
        "district": "district code",
        "province": "province",
        "countryCode": "NG",
        "landmark": "landmark"
      }
    ],
    "contacts": [
      {
        "emailAddress": "ada@example.com",
        "msisdn": "+2348012345678",
        "preferredChannel": "SMS",
        "preferredLanguageCode": "language code"
      }
    ],
    "employment": {
      "occupation": "Ada Obi",
      "employmentStatus": "EMPLOYED",
      "occupationCode": "category code",
      "employerName": "Ada Obi"
    },
    "sourceOfFunds": [
      "category"
    ],
    "expectedActivity": {
      "monthlyVolume": 250000.0,
      "currencyCode": "NGN",
      "purpose": "March payroll"
    },
    "sanction": {
      "politicallyExposureStatus": true,
      "sanctionMatchStatus": true,
      "sanctionSources": [
        "Ada Obi"
      ],
      "adverseMediaFound": true,
      "lastScreenDateTime": "2027-03-14T14:30:01",
      "nextScreenDateTime": "2027-03-14T14:30:01"
    },
    "risk": {
      "level": "category",
      "score": 1,
      "cddLevel": "category",
      "riskFactors": [
        {
          "...": "nested"
        }
      ],
      "accessedDateTime": "2027-03-14T14:30:01",
      "reviewDate": "2027-03-14"
    },
    "verification": {
      "assuranceLevel": 1,
      "verificationDateTime": "2027-03-14T14:30:01"
    },
    "consents": [
      {
        "purpose": "Ada Obi",
        "granted": true,
        "grantDateTime": "2027-03-14T14:30:01",
        "legalBasis": "Ada Obi"
      }
    ],
    "tier": 1,
    "business": {
      "legalName": "Ada Obi",
      "tradingName": "Ada Obi",
      "registrationNumber": "identification number",
      "registrationCountryCode": "NG",
      "registrationAuthority": "Ada Obi",
      "businessType": "category",
      "registrationType": "category",
      "industry": "category",
      "registrationDate": "2027-03-14",
      "website": "unified resource identifier",
      "taxResidences": [
        {
          "...": "nested"
        }
      ],
      "addresses": [
        {
          "...": "nested"
        }
      ],
      "contacts": [
        {
          "...": "nested"
        }
      ],
      "beneficiaryOwners": [
        {
          "...": "nested"
        }
      ],
      "expectedActivity": {
        "monthlyVolume": 250000.0,
        "currencyCode": "NGN",
        "purpose": "March payroll"
      },
      "sanction": {
        "politicallyExposureStatus": true,
        "sanctionMatchStatus": true,
        "sanctionSources": [
          "Ada Obi"
        ],
        "adverseMediaFound": true,
        "lastScreenDateTime": "2027-03-14T14:30:01",
        "nextScreenDateTime": "2027-03-14T14:30:01"
      },
      "risk": {
        "level": "category",
        "score": 1,
        "cddLevel": "category",
        "riskFactors": [
          {
            "...": "nested"
          }
        ],
        "accessedDateTime": "2027-03-14T14:30:01",
        "reviewDate": "2027-03-14"
      },
      "verification": {
        "assuranceLevel": 1,
        "verificationDateTime": "2027-03-14T14:30:01"
      }
    },
    "parentAccountHolder": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
    "childAccountHolders": [
      "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e"
    ],
    "createWallet": true
  }'

Responses

StatusWhen
200Account holder created successfully
409The mobile number, email address, or username is already registered

GET Fetch an account holder

GET /accountholder/{type}/{value}

Resolves the given identifier to a user reference on oauth, then returns the account holder linked to that user. The identifier type segment must be one of msisdn, email, username, or id (id matches against mobile number, username, and email address, for when the caller does not know which field the identifier corresponds to).

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
type
value

Example

Response: AccountHolderResponse

curl -X GET "https://api.bridgemoni.com/accountholder/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Account holder fetched successfully
404No account holder exists for the given identifier

PUT Update an account holder

PUT /accountholder/{type}/{value}

Resolves the given identifier to a user reference on oauth, then partially updates the account holder linked to that user. Only non-null fields in the request body are applied. The identifier type segment must be one of msisdn, email, username, or id.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/json

Path parameters

Name
type
value

Example

Request body: UpdateAccountHolderRequest · Response: AccountHolderResponse

curl -X PUT "https://api.bridgemoni.com/accountholder/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV" \
  -H "Content-Type: application/json" \
  -d '{
    "sourceOfFunds": [
      "category"
    ],
    "tier": 1,
    "parentAccountHolder": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
    "childAccountHolders": [
      "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e"
    ]
  }'

Responses

StatusWhen
200Account holder updated successfully
404No account holder exists for the given identifier

PUT Set or update an account holder's username

PUT /accountholder/{type}/{value}/username

Resolves the given identifier to a user reference on oauth, then sets that user's username. An account holder holds no username of its own: the username belongs to the linked oauth user, and this endpoint changes it in place. The identifier type segment must be one of msisdn, email, username, or id, so an account holder can be renamed by their current username.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/json

Path parameters

Name
type
value

Example

Request body: UpdateAccountHolderUsernameRequest · Response: GenericResponseAccountHolderResponse

curl -X PUT "https://api.bridgemoni.com/accountholder/value/value/username" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV" \
  -H "Content-Type: application/json" \
  -d '{
  "username": "jane.doe"
}'

Responses

StatusWhen
200Username updated successfully
404No account holder exists for the given identifier
409The username is already registered to another user

Generated from the OpenAPI document. Branch on the HTTP status: there is no machine-readable error code on the wire. Errors