Skip to content

Risk & compliance

Consent you can prove

Capture category-scoped, revocable consent through NIBSS Consent Hub, a hosted page, an email link or USSD, timestamped in the audit log.

What it does

Consent, in detail.

Category-scoped requests

A four-part Y/N mask covers identification, contact, demographic and geographic data; NNNN is rejected.

Three channels

A hosted page with OTP, an email link for absent subjects, or a USSD code for feature phones.

Gated until granted

A gated check reaches the provider only when consent is granted, unexpired and matches the identifier.

Revocable, with a trail

Revoke from the API or dashboard; requests, grants, denials and revocations are timestamped in the audit log.

How it works

From request to decision.

  1. 1

    POST /v1/consents

    Choose the identifier, categories, channel and purpose.

  2. 2

    The subject approves

    On the hosted page with an OTP, by email or by USSD.

  3. 3

    Verify with consent_id

    On the consent.updated webhook, run the gated check.

Routing and providers

Live BVN consent requests are registered with NIBSS Consent Hub; USSD consent uses NIBSS iGree.

Use it

One request. One normalized response.

Call POST /v1/consents through @speedmap/node, speedmap for Python, or the request_consent tool in Speedmap Connect.

Request
curl -X POST http://localhost:4000/v1/consents \
  -H "Authorization: Bearer sk_test_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "identifier_type": "bvn",
  "identifier": "22222222221",
  "categories": "YYNN",
  "channel": "ussd",
  "reason": "financialProducts"
}'
Response · 201 Created
{
  "id": "cns_b5ef3585cb6565a42fe0dc423cd83de9",
  "object": "consent",
  "identifier_type": "bvn",
  "subject": "*******2221",
  "categories": "YYNN",
  "category_labels": [
    "Personal identification",
    "Contact information"
  ],
  "channel": "ussd",
  "status": "pending",
  "reason": "financialProducts",
  "authorization_url": "https://speedmap.ng/consent/cns_b5ef3585cb6565a42fe0dc423cd83de9",
  "ussd_code": "*565*1*7*45425859#",
  "granted_at": null,
  "expires_at": "2026-10-21T12:50:54.042Z",
  "mode": "sandbox"
}

Use cases

Where Nigerian teams use it.

Full BVN records

Satisfy the consent requirement for BVN core lookups.

Remote lending onboarding

Email consent links to absent applicants, then verify in batch once they approve.

Feature-phone customers

Reach customers without smartphones through USSD.

Agent-assisted onboarding

The agent starts the request; the customer approves on their own phone.

What you get back

The fields you will read.

  • id / status

    Meaning
    pending, granted, denied, revoked or expired
  • categories / category_labels

    Meaning
    What was asked for
  • authorization_url / ussd_code

    Meaning
    Where the subject approves
  • expires_at

    Meaning
    Pending requests expire after 24 hours

Assertion tier

Consent objects never contain the subject’s record.

Full tier

No additional fields.

Pricing

No extra fee; you pay for the verification consent unlocks.

FAQ

Consent questions.

Need more detail? Read the documentation or talk to our team.

How long does a consent last?
Pending requests expire after 24 hours. A granted consent is valid for 24 hours of use unless revoked earlier.

Start verifying in minutes. Go live when you’re ready.

Create your account in under a minute and explore the full dashboard. We switch your workspace live after a short compliance review.