Methodology

How verification works

A field check is only useful if you can trust it and, later, prove it. These are the controls that make a FieldBas result something a compliance or lending team can act on.

The server decides where the partner stood

The mobile app only reports raw coordinates, GPS accuracy and a capture timestamp. Whether that is inside the job's geofence is computed server-side against the target point and radius. A client can never assert "I was there". Fixes with poor accuracy or timestamps outside a ±10-minute window are flagged.

Evidence is tamper-evident from the moment of capture

The app declares a SHA-256 for every file before upload; the server stores the file only if the hash matches, and rejects a hash it has seen before. Once stored, evidence is immutable — GPS, accuracy and capture time are recorded alongside it and cannot be edited.

Only KYC-verified people can accept work

Every field partner passes a BVN or NIN check through a licensed identity provider, matched against the name on their profile, before their first job. The government ID number is encrypted at rest and never returned by the API — only the last four digits are ever shown.

Nothing is paid until it is reviewed

A submitted job goes to your review queue. Your reviewer approves, rejects, or requests rework. A payout instruction is created only on approval. High-value or high-risk actions can require a second approver (maker-checker).

Every approved job produces a signed record

The verification report is a self-contained document: the target and actual location, the distance between them, every evidence hash, the reviewer, and the full status history — with an Ed25519 signature over the whole payload. Anyone can recompute the canonical form and check it against our published key.

Money movement is double-entry and append-only

Wallet holds, releases, payouts and refunds are posted to a double-entry ledger. Ledger rows are never updated or deleted. A payout is marked settled only when the payment provider's webhook confirms the transfer left our balance.

Reuse is explicit and bounded

When a job is auto-confirmed from a prior check, the report says so and links the source. You set the match radius, the maximum age of a reusable result, and whether reuse is limited to your own history or the wider network.

Every state change is audited

Job, assignment, payment and partner status transitions are written to an audit log with the actor, the before/after values, IP and user agent. The audit trail is included in the verification report.

Verifying a report yourself

Fetch the report from GET /api/v1/jobs/{id}/report/, remove the signature block, re-encode the rest as canonical JSON (sorted keys, no whitespace), and check the Ed25519 signature against the key at /api/v1/.well-known/fieldbas-signing-key. The same procedure verifies a partner Trust Passport.