Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.vouchmark.com/llms.txt

Use this file to discover all available pages before exploring further.

A verified bank account is the strongest signal that a company is more than a registered shell. Vouchmark connects to the company’s bank via Mono and reads twelve months of transaction history with the owner’s consent. We never store statement data — only the aggregated signals used to score it.

What we score

SignalPointsNotes
Balance disclosed10Consent token granted read access.
Account name matches CAC10Fuzzy match after stripping suffixes.
BVN attached to the account20Confirms the account is owned by a natural person tied to the company.
Recent monthly transactions ≥ threshold10Default threshold: 100 txns/month.
Total transactions ≥ threshold20Default threshold: 500 txns over 12 months.
Account age ≥ 6 months10Filters newly-opened shell accounts.
Account flagged as primary20The owner declares this is the operating account.
A perfect bank verification contributes 100 points to the Vouchmark Score.

How to connect an account

1

Owner consents in the dashboard

The owner of the claimed company opens Bank → Connect, picks their bank, and authorises Mono. The consent token is exchanged server-side for an account handle.
2

We pull statements

Up to 12 months of transactions are read into our system. We compute the signals above and immediately discard the raw transactions.
3

Score updates

The Vouchmark Score recomputes within seconds of the bank check landing. The new bank component appears in GET /v1/dashboard/bank.

Endpoints

curl -X POST https://api.vouchmark.com/v1/connect-account/cmp_aBcD... \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"bankCode":"044"}'
Response — verified
{
  "success": true,
  "data": {
    "companyId": "cmp_aBcD...",
    "bank": {
      "name": "Guaranty Trust Bank",
      "accountNumberLast4": "1234",
      "accountName": "TEKCIFY TECHNOLOGIES LTD",
      "primary": true
    },
    "score": {
      "balance": 10,
      "nameMatch": 10,
      "bvn": 20,
      "recentTxns": 10,
      "totalTxns": 20,
      "accountAge": 10,
      "primary": 20,
      "total": 100
    },
    "verifiedAt": "2026-05-12T09:14:00Z"
  }
}

Privacy and retention

  • We hold the Mono account handle for as long as the bank is connected, so we can refresh the snapshot for Smart Sentinel re-checks.
  • We do not store the underlying transactions or balances beyond the active session that computes them.
  • The owner can revoke consent from the dashboard. Revocation invalidates the bank component of the score immediately.

Failure modes

FailureWhat it means
MONO_CONSENT_DECLINEDThe owner cancelled the bank consent.
STATEMENT_INSUFFICIENTLess than 30 days of activity. Reconnect once the account has more history.
ACCOUNT_NAME_NO_MATCHThe bank account’s account name doesn’t match CAC. Often a sign of a personal account passed off as corporate.