Skip to main content
POST
Validate BVN
Part of Identity. List prices first with List products. Live keys debit your NGN wallet when the provider answers (found or not found). Provider-down errors are refunded.
1

Confirm price

GET /api/v1/merchant/identity/products → copy price for bvn_basic. Skip products where available is false.
2

Verify

POST /api/v1/merchant/identity/bvn/basic with bvn (11 digits), an Idempotency-Key, and at least one of firstName, lastName, dateOfBirth.
lookupType is validate. record is always null. passed is the overall result — use this, not HTTP 201 / success: true (those only mean the lookup finished and was charged). true when the BVN is recognised and every field you sent matched. match.bvn.value is masked. dateOfBirth.confidenceValue may be null when the provider only returns status.
Sandbox (test keys): any 11-digit number returns a sample payload and does not debit your wallet. All zeros (00000000000) returns IDENTITY_NOT_FOUND.

Authorizations

X-Api-Key
string
header
required

API key id (sp_test_… / sp_live_…)

Headers

X-Timestamp
string
required

Unix time in seconds

X-Signature
string
required

HMAC-SHA256 signature

Idempotency-Key
string<uuid>
required

UUID. Required on money-moving writes.

Body

application/json
bvn
string
required

11-digit BVN. Digits only.

firstName
string

Sent to Validate BVN as first_name. At least one of firstName, lastName, or dateOfBirth is required.

lastName
string

Sent to Validate BVN as last_name.

dateOfBirth
string

Sent to Validate BVN as dob. YYYY-MM-DD or DD-MM-YYYY.

Response

OK

The response is of type object.