Skip to content

Pre-launch · design partners

The statement was
edited. Find out
before you lend.

A statement reaches you as a file the applicant downloaded, saved and sent. Every step in between is a step where balances can be edited, debits deleted and transactions invented. Assay runs four classes of forensic check on every file and returns what failed, where, and the evidence behind it.

No newsletter. Only email about early access.

Checks
Four classes
Output
Per-check findings
Evidence
Retained
First market
Nigeria
Specimen · statement.pdfTamper indicated
Pages
4
Rows
126
Period
APR 2026
Checks
4 / 4
Illustrative statement extract with anomalies marked
RowDateDescriptionAmountBalance
0903.04TRF/SALARY/APR+840,000.001,204,880.12
1307.04POS/RETAIL−18,400.001,186,480.12
1711.04TRF/CONSULTING+615,000.001,801,480.12
2114.04POS/FUEL−22,000.001,779,480.12
2519.04TRF/CONSULTING+615,000.002,394,480.12
2926.04UTIL/PWR−31,250.002,363,230.12

Findings

  • 01StructuralEdited after export
  • 02ArithmeticBalance chain intact
  • 03TypographicGlyph mismatch, col. 3
  • 04Duplication2 cloned rows

Illustrative specimen, not a live analysis. Figures are invented.

01Exposure

You are underwriting a file the borrower could edit

The statement is the single most important document in the decision, and it is the one document you have no way to check. Everything downstream inherits that.

  1. 01 / 03

    The applicant supplies the evidence

    A statement arrives as a PDF the borrower downloaded, saved and sent. Every step between the bank and your credit file is a step where it could have been edited.

  2. 02 / 03

    Review is a person and a hunch

    An analyst opens the file and forms an impression. There is no test being run, no threshold being applied, and no record of what was checked.

  3. 03 / 03

    You only find out at default

    A doctored statement does not fail loudly. It fails months later as a loan that was written against income that never existed.

02Checks

Four classes, run on every file

Each runs independently and reports independently. A file can fail one and pass three, and that pattern is itself informative.

01Structural

The file, before the numbers

Producer and creator metadata, incremental save history, embedded font sets, object-level edits. A statement exported by a bank looks nothing like one that has been through an editor, and the file says so before anyone reads a figure.

02Arithmetic

Balances that do not survive addition

Every running balance is recomputed from the transaction column. Deleted debits and edited amounts break the chain, and the break localises to the exact row where the document stops being true.

03Typographic

Glyphs that came from somewhere else

Character spacing, baseline alignment, kerning and rendering differences across a single column. Retyped figures rarely match the surrounding glyph metrics, even when they look identical to a reviewer.

04Duplication

Rows that were copied, not earned

Repeated descriptions, cloned reference numbers and transaction patterns that recur too regularly to be organic — the signature of a statement padded to reach an income threshold.

03Formats

What is covered, and what is not

A forensics product that overstates its own coverage has already failed at the thing it sells. This table is the real state of the system.

Bank statement format coverage and status
SourceRegionFormatsStatus
Tier-1 Nigerian banksNigeriaPDF statement exportsIn development
Mid-tier & digital banksNigeriaPDF statement exportsPlanned
Scanned & photographed statementsAllOCR pipelinePlanned
Kenya & Ghana banksEast / West AfricaPDF statement exportsPlanned

Nothing is marked in service yet. When tier-1 Nigerian coverage ships, that row changes and nothing else on this page does.

04Interface

Findings, not a score

A single number would be easier to sell and worse to rely on. The response returns each check independently, what it found, and which rows to look at — so a reviewer can disagree with it.

Request
curl https://api.assaycredit.com/v1/analyses \
  -H "Authorization: Bearer $ASSAY_KEY" \
  -F "country=NG" \
  -F "purpose=credit_application" \
  -F "file=@statement.pdf"
Response
{
  "id": "anl_01hzx9km4",
  "verdict": "tamper_indicated",
  "checks": [
    {
      "id": "structural",
      "result": "fail",
      "detail": "Incremental save after export;
                 producer differs from issuer.",
      "evidence": "meta.producer, meta.revisions"
    },
    { "id": "arithmetic",   "result": "pass" },
    {
      "id": "typographic",
      "result": "fail",
      "detail": "Glyph metrics differ on 2 rows
                 in the amount column.",
      "evidence": "rows[11], rows[19]"
    },
    {
      "id": "duplication",
      "result": "fail",
      "detail": "2 cloned transaction rows.",
      "evidence": "rows[11], rows[19]"
    }
  ],
  "cash_flow": {
    "verified_inflow_ngn": 840000,
    "excluded_as_suspect_ngn": 1230000
  }
}

This is the planned interface, not a live endpoint. We publish it now so design partners can tell us where it is wrong before it hardens.

A score you cannot argue with is a score you cannot audit.

Why the response returns findings, not a number

05Cash flow

Once the file is trustworthy, read it properly

Forgery detection is the wedge, not the whole product. A statement that passes is then worth analysing — and the signals that matter are not the ones a spreadsheet average shows.

Verified inflow
Real credits, separated from transfers between the applicant's own accounts and from round-trip padding.
Existing obligations
Repayments already leaving the account — the debt you are about to sit behind.
Volatility
How stable the inflow actually is, month over month, rather than the average that hides the swings.
Balance behaviour
Time spent near zero, overdraft patterns, and the days of the month when the account is genuinely liquid.
05.1Application

Who it is for

Digital lenders
Screen every statement at application instead of sampling, and keep the reason a file was rejected.
SME credit
Underwrite business accounts where the statement is the only financial record that exists.
BNPL & embedded credit
Add a document check to a flow that is otherwise entirely automated and entirely trusting.
Microfinance banks
Give branch officers a test to run, rather than asking them to spot forgery by eye.
05.2Data handling

We hold no compliance certifications and will not claim any. What we do instead:

Documents are evidence, not training data
Statements you send are used to answer your request and to retain the evidence behind that answer. They do not enter a shared training corpus.
Encrypted at rest and in transit
Standard managed-cloud encryption, stated plainly rather than dressed up as a certification we do not hold.
Retention you control
Evidence is kept so a credit decision can be reconstructed later. Retention windows are set per design partner, not by us unilaterally.
Regional handling
Nigerian data handled in line with NDPR obligations. Each additional market's requirements get met before we launch there, not after.
06Questions

Straight answers

01What is actually working today?

We are building the structural and arithmetic checks against tier-1 Nigerian bank formats with design partners. Everything else on the format table is marked planned and will stay marked that way until it genuinely works. A forensics product that overstates its own coverage has already failed at the thing it sells.

02Do you publish a detection rate?

Not yet, because we have not measured one honestly. Any number we quoted today would be from a sample we assembled ourselves, which tells you nothing. When we have results against a real portfolio with known outcomes, we will publish the methodology alongside the figure.

03How is this different from open banking?

Open banking connects to the account directly, which removes the document from the loop entirely — where it is available and the applicant consents, it is the better answer. Most lending across these markets still runs on statements, and every applicant who will not connect an account still hands you a PDF. Assay is for that file.

04Will it flag legitimate statements as forged?

Some, inevitably. That is why the response returns per-check findings and the evidence behind them rather than a single verdict — so a reviewer can see what triggered and decide. A black-box score would be easier to sell and worse to rely on.

05What happens to the statements we send?

They are processed and stored as evidence attached to the check, encrypted at rest. We do not use customer documents to train shared models. The data handling section sets out the specifics, and we will put it in writing for any design partner.

06When can we integrate?

Join the list and tell us your volume and which banks you see most. We are taking design partners in sequence rather than opening self-serve access we cannot yet support properly.

07 · Access

We need statements before we need customers

The checks are only as good as the files they were built against. Early partners give us a corpus — including the applications you already rejected — and get direct influence over what ships.

  • 01Direct line to the people building it
  • 02Your bank mix decides what we support first
  • 03Rejected applications are the most useful thing you can send
  • 04We tell you what the checks miss, every time

Access request

Optional — but it is the part we actually read.

No newsletter. Only email about early access.