Skip to content

QoreID

QoreID is the default provider. Configure its server-side client ID and secret in the application environment; the package exchanges credentials for an API bearer token internally.

IDENTITY_MADE_EASY_PROVIDER=qoreid
QOREID_CLIENT_ID=your_qoreid_client_id
QOREID_SECRET=your_qoreid_secret
QOREID_BASE_URL=https://api.qoreid.com
QOREID_HTTP_TIMEOUT=30

The API bearer token used for server-to-server collection operations is not the same as the short-lived Web/Mobile SDK session token. Never expose the client secret, API token, or session token as a frontend build-time value.

Use capability interfaces

The driver implements optional interfaces. Check support before invoking a capability:

use Alphabalex\IdentityMadeEasy\Contracts\DigitalIdentityDriverInterface;
use Alphabalex\IdentityMadeEasy\Facades\Identity;

$qoreid = Identity::driver('qoreid');

if ($qoreid instanceof DigitalIdentityDriverInterface) {
    $result = $qoreid->verifyNin('12345678901');
}

All named QoreID operations use fixed HTTP methods and routes, exchange/cache the backend API token, and return the decoded provider response. There is no public arbitrary-path request method.

SDK sessions

Mint a session on your backend, then return only the short-lived session token and any required metadata to your client:

use Alphabalex\IdentityMadeEasy\Contracts\IdentitySessionDriverInterface;
use Alphabalex\IdentityMadeEasy\Facades\Identity;

$qoreid = Identity::driver('qoreid');
if ($qoreid instanceof IdentitySessionDriverInterface) {
    $session = $qoreid->createSession([
        'type' => 'workflow',
        'workflowId' => 123,
        'reference' => 'onboarding-456',
    ]);
}

Workflow sessions use HTTP Basic authentication with the client ID and secret. Collection sessions use a product code enabled for your account:

$session = $qoreid->createSession([
    'productCode' => 'nin',
    'reference' => 'onboarding-789',
    'subjectRef' => 'internal-user-42', // optional pseudonymous ID; do not put PII here
    'ttlSeconds' => 120,
    'maxAttempts' => 3,
]);

Provide exactly one of productCode or a positive integer workflowId, and a non-empty reference. See QoreID's product-code list, authentication reference, and session-token reference. A session token is short-lived and single-use; do not send it as a Bearer token for server API operations.

Supported operation families

The operation names below are methods on the corresponding optional interface. Detailed signatures are listed in the capability reference.

Capability interface Operation family
DigitalIdentityDriverInterface BVN, NIN, virtual NIN, LASRRA, voter, Nigerian passport, Ghana Card, Kenya ID/passport/alien card, driver's license
BiometricVerificationDriverInterface Face checks for NIN, BVN, driver's license, virtual NIN, Nigerian passport, and Kenya passport
BusinessVerificationDriverInterface CAC Basic, CAC Premium variants, TIN
BankAccountVerificationDriverInterface BVN/NUBAN verification, NUBAN verification, BVN consent accounts, BVN-data bank list
AddressVerificationDriverInterface Pro address verification
BackgroundVerificationDriverInterface Guarantor verification and lookup
AssetVerificationDriverInterface Property, vehicle, and license-plate verification
EmploymentVerificationDriverInterface Employment verification submission
WorkflowDriverInterface Workflow lookup and workflow/collection reports
CollectionWebhookDriverInterface Resend collection webhooks
IdentityLookupDriverInterface Country list
IdentitySessionDriverInterface SDK session creation

The package implements the verified named operations in these interfaces; it does not claim to cover every QoreID endpoint. In particular, some operation topics are excluded where the available public route documentation is ambiguous or incomplete. Consult coverage notes before assuming an undocumented route exists.

Response handling and privacy

QoreID methods return decoded provider responses unchanged. HTTP failures and transport errors propagate to the caller; catch them at an application boundary and apply an appropriate retry/reporting policy. Invalid SDK session input fails before network access.

Verification results contain sensitive identity information. Obtain consent or another lawful basis, avoid logging full request/response payloads, minimize retention, and follow applicable privacy requirements. See webhooks and privacy.