Skip to content

Capability and operation reference

The package uses capability interfaces rather than one large cross-provider API. Resolve a driver, then check that it implements the capability before calling the methods. All operation paths below are relative to the provider base URL.

Shared contracts

  • IdentityDriverInterface is a marker for provider-specific drivers.
  • IdentitySessionDriverInterface::createSession(array $data): array is currently supported by QoreID.
  • IdentityLookupDriverInterface::getCountries(): array is currently supported by QoreID.

QoreID capabilities

QoreID JSON methods return decoded provider responses. The API implementation uses fixed named routes and backend token exchange. For SDK sessions, see the QoreID guide.

Digital identity — DigitalIdentityDriverInterface

Method HTTP route
verifyBvnBasic($bvnNumber, $payload = [], $query = []) POST /v1/ng/identities/bvn-basic/{bvnNumber}
verifyBvnPremium($bvnNumber, $payload = [], $query = []) POST /v1/ng/identities/bvn-premium/{bvnNumber}
matchBvn($idNumber, $payload = []) POST /v1/ng/identities/bvn-match/{idNumber}
verifyNin($idNumber, $payload = []) POST /v1/ng/identities/nin/{idNumber}
verifyNinByPhone($phoneNumber, $payload = []) POST /v1/ng/identities/nin-phone/{phoneNumber}
verifyNinPremium($idNumber, $payload = []) POST /v1/ng/identities/nin-premium/{idNumber}
verifyNinPremiumByPhone($phoneNumber, $payload = []) POST /v1/ng/identities/nin-phone-premium/{phoneNumber}
verifyVirtualNin($vNIN, $payload = []) POST /v1/ng/identities/virtual-nin/{vNIN}
verifyLasrraId($idNumber, $payload = []) POST /v2/ng/identities/lasrra/{idNumber}
verifyVotersCard($vin, $payload = []) POST /v1/ng/identities/vin/{vin}
verifyNigerianPassport($passportNumber, $payload = []) POST /v1/ng/identities/passport/{passportNumber}
verifyGhanaCard($idNumber, $payload = []) POST /v1/gh/identities/ghana-id/{idNumber}
verifyKenyaId($idNumber, $payload = []) POST /v1/ke/identities/kenya-id/{idNumber}
verifyKenyaPassport($passportNumber, $payload = []) POST /v1/ke/identities/passport/{passportNumber}
verifyKenyaAlienCard($idNumber, $payload = []) POST /v1/ke/identities/alien-card/{idNumber}
verifyDriversLicense($idNumber, $payload = []) POST /v1/ng/identities/driver-license/{idNumber}

For BVN Basic and Premium, QoreID documents optional isBvnIgree query data. Path identifiers are encoded as individual URL path segments.

Biometrics — BiometricVerificationDriverInterface

Method HTTP route
verifyNinFace($payload) POST /v1/ng/identities/face-verification/nin
verifyBvnFace($payload) POST /v1/ng/identities/face-verification/bvn
verifyDriversLicenseFace($payload) POST /v1/ng/identities/face-verification/drivers-license
verifyVirtualNinFace($payload) POST /v1/ng/identities/face-verification/vnin
verifyNigerianPassportFace($payload) POST /v1/ng/identities/face-verification/passport
verifyKenyaPassportFace($payload) POST /v1/ke/identities/face-verification/passport

Some provider pages describe a binary photo while indicating JSON content. The package forwards JSON and does not implement multipart photo transport; verify the expected transport with QoreID before using binary uploads.

Business and bank accounts

BusinessVerificationDriverInterface:

Method HTTP route
verifyCacBasic($payload) POST /v1/ng/identities/cac-basic
verifyCacPremiumV2($payload) POST /v3/ng/identities/cac-premium-1
verifyCacPremiumV3($payload) POST /v3/ng/identities/cac-premium
verifyTin($tin) GET /v2/ng/identities/tin/{tin}

The CAC method names mirror provider documentation labels; both premium methods use documented /v3 routes.

BankAccountVerificationDriverInterface:

Method HTTP route
verifyBvnNuban($payload) POST /v1/ng/identities/bvn-nuban
verifyNuban($payload) POST /v1/ng/identities/nuban
verifyNubanWithBvnConsent($bvn, $payload) POST /v1/ng/identities/bvn-accounts-with-consent/{bvn}
getNubanBanksForBvnData() GET /v1/banks/bvn-nuban

Other QoreID methods

Capability Method HTTP route
AddressVerificationDriverInterface verifyAddressPro($payload) POST /v1/addresses/pro
BackgroundVerificationDriverInterface verifyGuarantor($payload) POST /v1/guarantors
BackgroundVerificationDriverInterface getGuarantorVerification($guarantorId) GET /v1/guarantors/{guarantorId}
BackgroundVerificationDriverInterface verifyGuarantorPlus($payload) POST /v1/guarantors/plus
AssetVerificationDriverInterface createPropertyVerification($payload) POST /v1/properties
AssetVerificationDriverInterface getPropertyVerification($propertyId) GET /v1/properties/{propertyId}
AssetVerificationDriverInterface verifyVehicle($payload) POST /v1/vehilces (provider reference spelling)
AssetVerificationDriverInterface verifyVehicleSelf($payload) POST /v1/vehicles/self
AssetVerificationDriverInterface verifyLicensePlateBasic($plateNumber, $payload) POST /v1/ng/identities/license-plate-basic/{plateNumber}
AssetVerificationDriverInterface verifyLicensePlatePremium($plateNumber, $payload) POST /v1/ng/identities/license-plate-premium/{plateNumber}
EmploymentVerificationDriverInterface verifyEmployment($payload) POST /v1/employments
WorkflowDriverInterface getWorkflowByCustomerReference($customerReference) GET /v1/workflows/customerReference/{customerReference}
WorkflowDriverInterface getWorkflowById($id) GET /v1/workflows/{id}
WorkflowDriverInterface getWorkflowReport($workflowId, $query = []) GET /v1/api/workflow/{workflowId}
WorkflowDriverInterface getCollectionReport($collectionId, $productCode, $query = []) GET /v1/api/collections/{collectionId}/products/{productCode}
CollectionWebhookDriverInterface resendCollectionWebhook($verificationType, $query = []) POST /v1/webhooks/collection/{verificationType}
IdentityLookupDriverInterface getCountries() GET /v1/countries
IdentitySessionDriverInterface createSession($data) POST /v1/sessions (HTTP Basic authentication)

Mono capabilities

Mono JSON operations return decoded arrays. PDF operations return Illuminate\Http\Client\Response. The full guide covers configuration and webhook integration.

MonoIdentityLookupDriverInterface

Method HTTP route
getBanks() GET /v3/lookup/banks
lookupAccountNumber($payload) POST /v3/lookup/account-number
lookupCreditHistory($provider, $payload) POST /v3/lookup/credit-history/{provider} (crc, xds, or all)
verifyDriversLicense($payload) POST /v3/lookup/driver_license
verifyHouseAddress($payload) POST /v3/lookup/address
verifyInternationalPassport($payload) POST /v3/lookup/passport
lookupMashup($payload) POST /v3/lookup/mashup
lookupNin($payload, $query = []) POST /v3/lookup/nin
getNinPdfJob($jobId) GET /v3/lookup/nin/{jobId}/job
lookupTin($payload) POST /v3/lookup/tin
initiatePhoneNin($payload) POST /v3/lookup/phone/initiate
verifyPhoneNin($payload) POST /v3/lookup/phone/verify

Other Mono interfaces

Interface Method HTTP route
MonoBvnIgreeDriverInterface initiateBvnIgree($payload) POST /v2/lookup/bvn/initiate
MonoBvnIgreeDriverInterface verifyBvnIgree($payload, $sessionId) POST /v2/lookup/bvn/verify (x-session-id)
MonoBvnIgreeDriverInterface fetchBvnIgreeDetails($payload, $sessionId) POST /v2/lookup/bvn/details (x-session-id)
MonoCacLookupDriverInterface searchCac($query) GET /v3/lookup/cac
MonoCacLookupDriverInterface getCacShareholders($companyId) GET /v3/lookup/cac/company/{id}
MonoCacLookupDriverInterface getCacPreviousAddress($companyId) GET /v3/lookup/cac/company/{id}/previous-address (deprecated)
MonoCacLookupDriverInterface getCacChangeOfName($companyId) GET /v3/lookup/cac/company/{id}/change-of-name (deprecated)
MonoCacLookupDriverInterface getCacPsc($companyId) GET /v3/lookup/cac/company/{id}/psc
MonoCacLookupDriverInterface getCacSecretary($companyId) GET /v3/lookup/cac/company/{id}/secretary
MonoCacLookupDriverInterface getCacDirectors($companyId) GET /v3/lookup/cac/company/{id}/directors
MonoCacLookupDriverInterface getCacProfile($rcNumber) GET /v3/lookup/cac/profile/{rcnumber}
MonoCacLookupDriverInterface getCacStatusReport($companyId) GET /v3/lookup/cac/company/{id}/status-report (PDF)
MonoWatchlistScreeningDriverInterface submitWatchlistScreening($payload) POST /v3/lookup/watchlist
MonoWatchlistScreeningDriverInterface submitWatchlistBatch($payload) POST /v3/lookup/watchlist/batch
MonoWatchlistScreeningDriverInterface getWatchlistScreening($screeningId) GET /v3/lookup/watchlist/{id}
MonoWatchlistScreeningDriverInterface getWatchlistAuditLog($screeningId) GET /v3/lookup/watchlist/{id}/audit-log
MonoWatchlistScreeningDriverInterface getWatchlistReport($screeningId) GET /v3/lookup/watchlist/{id}/report (PDF)
MonoWatchlistScreeningDriverInterface startWatchlistMonitoring($payload) POST /v3/lookup/watchlist/monitor
MonoWatchlistScreeningDriverInterface stopWatchlistMonitoring($monitoringId) DELETE /v3/lookup/watchlist/monitor/{id}
MonoProveDriverInterface initiateProve($payload) POST /v1/prove/initiate
MonoProveDriverInterface getProveCustomer($reference) GET /v1/prove/customers/{reference}
MonoProveDriverInterface getProveCustomers($query = []) GET /v1/prove/customers
MonoProveDriverInterface blacklistProveCustomer($payload) POST /v1/prove/customers/blacklist
MonoProveDriverInterface whitelistProveCustomer($payload) POST /v1/prove/customers/whitelist
MonoProveDriverInterface revokeProveCustomer($reference) DELETE /v1/prove/customers/{reference}

Mono's changelog marks Previous Address and Change of Name deprecated; the Previous Address and Change of Name references still describe these routes. They are included for compatibility with existing integrations; confirm availability with Mono before relying on them.

IdenVault capabilities

IdenVault operations return Laravel HTTP responses. Verification POST methods require a non-empty idempotency key; generate it once per logical operation and reuse it on retries. See the full IdenVault guide.

Interface Method HTTP route
IdenVaultIdentityVerificationDriverInterface verifyNinBasic($payload, $idempotencyKey) POST /nin/basic
IdenVaultIdentityVerificationDriverInterface verifyNinMatch($payload, $idempotencyKey) POST /nin/match
IdenVaultIdentityVerificationDriverInterface verifyPhone($payload, $idempotencyKey) POST /nin/phone
IdenVaultIdentityVerificationDriverInterface verifyBvn($payload, $idempotencyKey) POST /verify/bvn
IdenVaultIdentityVerificationDriverInterface verifyBvnBasic($payload, $idempotencyKey) POST /verify/bvn/basic
IdenVaultIdentityVerificationDriverInterface verifyShareCode($payload, $idempotencyKey) POST /verify/sharecode
IdenVaultIdentityVerificationDriverInterface verifyDemography($payload, $idempotencyKey) POST /verify/demography
IdenVaultBankVerificationDriverInterface verifyBankAccount($payload, $idempotencyKey) POST /verify/bank-account
IdenVaultBankVerificationDriverInterface getBanks() GET /banks
IdenVaultAccountDriverInterface getAccountBalance() GET /account/balance
IdenVaultAccountDriverInterface getMeta() GET /meta

QoreID coverage notes

The package documents named operations whose routes were individually verified. It does not claim to cover every QoreID endpoint. The following topics are excluded where route contracts could not be established: regular NUBAN bank list, States/LGAs, webhook resend by flow ID/reference, Kenya CR12/business search, OCR, standalone liveness, business-address verification, employment fetch by ID, and additional document/face variants.

AML/PEP is excluded because public API references disagree about its versioned route. Some provider schemas contain spelling inconsistencies, including QoreID's /v1/vehilces route; the implementation preserves the documented path. Address Verification Status is a set of status values, not a supported operation. Do not infer routes for excluded topics. See QoreID's API reference, reference index, and employment guide.