🏦

Financing Partner flow

BRD steps 2, 7, 8, 10, 11. Capital provider — typically a microfinance bank — that originates discount-financed advances against verified receivables. Terracore acts as the routing & orchestration layer: we generate obligor remittance instructions and reconcile inbound credits in the Financing Partner's read-only Terracore ledger. Funds never enter Terracore custody. Communication is via WhatsApp (high-signal alerts) and the dashboard (full ledger, controls, reporting).

One-time onboarding — Financing Partner registration

After tapping "I have capital — earn on it" on the persona picker (see Supplier flow O1), the prospective Financing Partner completes a short WhatsApp Flow capturing institution registration, authorised representative, designated settlement account, and concentration limits. CAC and NIBSS verifications run in real time. The settlement account captured here becomes the destination for all obligor remittances on receivables this Financing Partner discounts — and is rendered in the obligor payment-instruction email at BRD §9.

FO1
Welcome — Financing Partner onboarding CTA
BRD §2 → FP_ONBOARDING_OFFERED
8:58

Persona-specific entry

This screen is the financier branch of the cross-persona picker (Supplier flow O1). Self-service Flow registration replaces the previous white-glove handoff because Financing Partners — typically MFB ops or treasury staff — expect to capture compliance data themselves.

What we name up front

The required documents (CAC, designated account, contact details) are listed in the bubble before the Flow opens. Pilots showed in-Flow abandonment dropped sharply when the document list is named pre-Flow.

Speed budget ≤ 600ms

Pre-rendered persona-variant template. Tap → next screen renders inside ~200ms.

FO2
Financing Partner onboarding Flow
BRD §2 → FP_REGISTERED

Why each field is captured

  • Registered business name + CAC RC: validates the legal entity. CAC API call returns business status, MFB licence, registered name; mismatches block the Flow.
  • Authorised representative: the named individual who acts on the institution's behalf — receives all WhatsApp alerts, ledger access tokens, and is the audit-trail signatory.
  • Designated settlement account: the bank account where all obligor remittances on this Financing Partner's discounted receivables will be credited. This account is disclosed in the BRD §9 obligor payment instruction email — it must be the institution's own account at their preferred bank, not a personal account. NIBSS NameEnquiry confirms the account name matches the CAC-registered name.
  • Concentration limits: total exposure cap, maximum outstanding, maximum per receivable. Enforced server-side; F2 receivable-discount notifications won't render for receivables exceeding these limits.

Live verifications

CAC RC blur → CAC public API; NIBSS NameEnquiry on account number blur with fuzzy match against CAC-registered name. Both must succeed before the "Register institution" CTA enables.

What this submission produces

One signed JSON payload — institution metadata, authorised representative, settlement account (verified), limits, T&C version, timestamp, device fingerprint. This is the Master Receivables Financing Agreement consent record.

Speed budget ≤ 1.5s per real-time verification

Per-receivable flow

Once registered, the Financing Partner's representative receives WhatsApp alerts for every event in the discount cycle: a receivable available for discount (manual approval), disbursement instruction, disbursement acknowledgement, receivable settled at maturity, and concentration-limit notifications.

1
Registration confirmation
BRD §2 → FINANCIER_READY
9:02

Terracore does NOT custody Financing Partner funds

The Financing Partner provisions a designated settlement account at their own bank and registers it on Terracore. All obligor remittances against receivables they discount land directly in that account. Our system records each posting in the Financing Partner's read-only Terracore ledger — a reconciliation and reporting view, not a custodial wallet. Matches BRD Notes §5: "Repayment does not return to platform first; platform acts as routing + orchestration layer."

The designated settlement account is rendered to obligors

This is the same account the obligor (e.g. Bokku) sees on the BRD §9 payment instruction email — disclosed transparently to the buyer's finance team, with Terracore as the From-address and the Financing Partner Cc'd. The Financing Partner's account becomes the obligor-facing remittance destination.

Why bot, not dashboard, for first-touch

Financing Partner ops staff are mobile during the day. They are notified on WhatsApp; deep ledger work happens on dashboard. The bot is the alert plane.

Concentration limits are echoed back

Showing the limits the Financing Partner set in the Flow right back to them on WhatsApp closes the trust loop — they confirm we have the correct numbers.

2
Receivable available for discount
BRD §7 → FINANCIER_ASSIGNED
11:48

Disbursement is discretionary — no auto-execute

This screen has no countdown, no automatic disbursement. The Financing Partner explicitly approves each receivable. The notification arrives only after the obligor's procurement team has confirmed delivery (BRD §5) — the Financing Partner saw that confirmation directly because they were Cc'd on the procurement email.

Vocabulary

Standard receivables-financing terminology throughout: Originator (party selling the receivable — the supplier), Obligor (party owing payment — the buyer), Face value (gross invoice amount), Discount rate & Discount income (Financing Partner's earning), Net advance (cash to disburse), Tenor, Maturity date.

What the Financing Partner sees here, and what they do not

They see the receivable's economic terms, the obligor's credit profile, the risk score, and the delivery-confirmation timestamp. They do not see the originator's bank details — that is private to Terracore. The next screen (F3) shows them the Terracore-managed account to remit the advance to.

Three buttons, deliberately

Approve & disburse → opens F3 with the account to remit. Review in ledger → deep-dive: invoice PDF, waybill, originator history, ageing on similar receivables. Decline → freezes the receivable and notifies the originator's account manager (no funds move, no penalty).

Speed budget ≤ 5s for this screen to render

From DELIVERY_CONFIRMED to F2 landing in the Financing Partner's WhatsApp. The Financing Partner's own decision time is unbounded — that's their underwriting judgement.

3
Disbursement instruction
BRD §8 → FUNDING_AUTHORIZED
11:50

What the financier sees on this screen — and only this

A bank, an account number, an account name, a narration reference, and an amount. Nothing else. From the financier's view this is a single transaction with Terracore — they pay us, and we pay them back at maturity. They never need to know what happens behind that account.

What we deliberately do NOT show the financier

  • That the account is "virtual" or backed by a wallet. Internal architecture. To them it's just a regular bank account.
  • The supplier's bank account. Hidden by design — the financier should not have the data needed to bypass Terracore.
  • Terracore's platform fee. The fee is between Terracore and the supplier — none of the financier's business.
  • The supplier's net receipt amount. Same reason. The financier funds ₦4,410,000; what the supplier ultimately gets in their bank is internal settlement.
  • Wallet IDs / internal identifiers. Terracore bookkeeping.

Backend reality (engineering reference, not shown to user)

The account number rendered is a virtual NUBAN issued by our partner bank (Wema / Providus), reserved per supplier + invoice and resolving to a SUPPLIER_TRANSIT wallet on our books. Inbound credit triggers: (1) Terracore deducts the platform fee (~1% of invoice, configurable per supplier's commercial terms); (2) the net is remitted to the supplier's actual settlement bank via NIBSS instant. None of this is visible on the financier's WhatsApp.

Financier pays from their own bank — Terracore does not custody capital

The financier (a microfinance bank) holds capital in their own treasury / bank infrastructure. They tap "Copy account number", paste it into their own bank or treasury system, and make a normal NIBSS-instant transfer with the reference in narration. Terracore's virtual account receives the inbound credit, deducts the platform fee on the backend, and remits the net to the supplier's settlement bank. None of those steps are visible to the financier.

Money-control assertion

The account rendered here is asserted in code: it must resolve to a SUPPLIER_TRANSIT wallet, scoped to this invoice, owned by Terracore, beneficiary = the supplier. The renderer refuses to send if it isn't.

Speed budget ≤ 600ms after F2 approval tap

4
Disbursement acknowledged
BRD §8 → FUNDED
11:52

Single-purpose receipt — no buttons

The financier already made the decision in F2 and paid in F3. This is acknowledgement and forward-looking detail (when they'll be repaid, what they'll earn). No decision point.

What the financier sees and what they don't

They see: confirmation we received their funds, the repayment schedule, and their exposure. They do not see — at any point — Terracore's platform fee, the onward leg, the supplier's actual bank, or the net amount the supplier receives. Settlement on the supplier side is entirely on Terracore's backend; from the financier's view, this was a single transaction with us.

Backend reality (engineering reference, not shown to user)

On inbound credit to the supplier's virtual account, Terracore deducts the configured platform fee and remits the net to the supplier's settlement bank via NIBSS instant. The supplier's WhatsApp S6 fires with their post-fee net amount. None of this state is reflected in the financier's chat.

Exposure and earnings surfaced inline

Running exposure plus expected return for this deal are rendered with every funding receipt so the financier never has to ask "How much am I out?" or "What's my P&L?".

5
Receivable settled — exposure released
BRD §10 → REPAID
14:17

Funds went directly to the financier's bank — Terracore did not custody anything

Bokku transferred ₦4,500,000 directly into the financier's dedicated Wema Bank account. Terracore is notified of the inbound credit (via the financier's bank webhook or reconciliation file) and records the transaction in the financier's read-only Terracore ledger. Terracore never touched the funds.

Reference-match line is mandatory

The "Reference matched ✓" line is the financier's structural assurance that funds were applied to the right invoice. If a buyer pays without reference, this message is replaced with "Unmatched payment — review" and routes to ops.

Performance YTD

Running performance numbers turn every repayment into a small status report — the financier never has to log into the dashboard to feel confident.

6
Concentration limit threshold reached
BRD §11 → LIMIT_THRESHOLD_85
15:32

Suspension is automatic — no acknowledgement required

At 85% utilisation, Terracore stops sending new-receivable notifications until exposure drops or the cap is raised. This happens the moment the threshold trips. The Financing Partner does not need to confirm or "accept" the suspension — doing nothing keeps it in force. Two actions exist if they want to change something: raise the cap, or review outstanding receivables in the ledger.

Why we never silently exceed a cap

Concentration limits are an underwriting control, not a soft target. Crossing them without explicit Financing Partner action would be a regulatory and audit problem for an MFB. Suspension is automatic and stays in force until the Financing Partner explicitly raises the cap in the dashboard or scheduled settlements free up headroom.

What "Review outstanding ledger" does

Routes to the dashboard's Receivables register, pre-filtered to Outstanding. The Financing Partner can see exactly which receivables are consuming their exposure, what's maturing this week (settlements that will free up headroom), and decide whether to wait for natural amortisation or raise the cap.

Dashboard — Read-only Terracore ledger

Reached from any WhatsApp alert via the Open ledger / dashboard button. Web surface for the Financing Partner's authorised representative — full receivables register, transaction history, reconciliation against the designated settlement account, and reporting. The dashboard is strictly read-only: Terracore posts every event from the rail to the ledger; the Financing Partner reviews, exports, and reconciles, but does not modify postings. Funds are not custodied here — this is an accounting / reporting view of activity that has already settled (or is settling) on the Financing Partner's own bank account.

🔒 dashboard.terracore.ng / wema-capital / receivables

Receivables register

As of 22 May 2026, 11:55 WAT · Posted by Terracore
🔒 Read-only ledger 📥 Export CSV 🧾 Statement (PDF)
Outstanding exposure
₦12,400,000
8.3% of ₦150M cap
Available headroom
₦137,600,000
Concentration limit ₦150,000,000
Active receivables
8
3 maturing this week
Discount income MTD
₦310,000
▲ 18% vs prior month

Outstanding & recently settled receivables

All Outstanding Settled Past due Disputed
Reference Originator Obligor Face value Net advance Discount rate Tenor Maturity Days to maturity Status
INV-23 Prime Goods Ltd Bokku ₦4,500,000 ₦4,410,000 2.0% 30 days 03 Jun 2026 +12 Outstanding
INV-22 Prime Goods Ltd Bokku ₦2,100,000 ₦2,058,000 2.0% 30 days 28 May 2026 +6 Outstanding
INV-21 Lagos Trade Co Konga ₦3,800,000 ₦3,724,000 2.0% 30 days 26 May 2026 +4 Outstanding
INV-20 Westside Supplier ShopNG ₦2,000,000 ₦1,970,000 1.5% 30 days 21 May 2026 −1 Past due
INV-19 Prime Goods Ltd Bokku ₦1,900,000 ₦1,862,000 2.0% 30 days 18 May 2026 −4 Settled
INV-18 Lagos Trade Co Konga ₦1,500,000 ₦1,477,500 1.5% 30 days 14 May 2026 −8 Settled
INV-17 Prime Goods Ltd Bokku ₦2,200,000 ₦2,156,000 2.0% 30 days 10 May 2026 −12 Settled

Recent postings · Designated settlement account (Wema Bank ••••4567)

Obligor remittance · INV-19 settled
Bokku · narration TC-INV-19-7B2 · matched · posted 18 May 14:02
+₦1,900,000
Obligor remittance · INV-18 settled
Konga · narration TC-INV-18-3C9 · matched · posted 14 May 11:18
+₦1,500,000
Net advance disbursed · INV-23
Originator: Prime Goods Ltd · narration TC-FUND-INV-23-A4F · 22 May 11:52
−₦4,410,000
Net advance disbursed · INV-22
Originator: Prime Goods Ltd · narration TC-FUND-INV-22-A4F · 21 May 09:14
−₦2,058,000
Obligor remittance · INV-17 settled
Bokku · narration TC-INV-17-9A1 · matched · posted 10 May 16:42
+₦2,200,000

Reconciliation snapshot

Postings reconciled (MTD)42 / 42
Unmatched inbound credits0
Manual adjustments (MTD)0
Days past due (avg)0
Defaults YTD0
Discount income realised YTD₦1,840,000
Designated settlement account7891234567
Last bank webhook22 May 11:52

Why this is read-only

Terracore is the system of record for receivables on the rail. Postings flow into the ledger from rail events: receivable accepted (F2), disbursement instructed (F3), disbursement acknowledged (F4), inbound credit reconciled against the designated settlement account (F5). The Financing Partner reviews, filters, exports — but does not edit postings. Any reconciliation correction goes through Terracore ops with a full audit trail.

What's on this surface that is forbidden on WhatsApp

Outstanding exposure, available concentration headroom, MTD discount income, days past due, defaults YTD, ageing on individual receivables, full counterparty register. These belong on the dashboard — owned by the Financing Partner — and never on the originator's or obligor's chats or emails.

Reconciliation is automatic when narration matches

Inbound credits to the designated settlement account come in via the Financing Partner's bank webhook (or end-of-day reconciliation file). The narration TC-INV-{id}-{checksum} maps each credit to its originating receivable in the ledger. Unmatched credits surface on the Reconciliation page, not silently.

Vocabulary

Standard receivables-financing terms throughout: Originator, Obligor, Face value, Net advance, Discount rate, Tenor, Maturity, Outstanding / Settled / Past due / Disputed status pills, Designated settlement account, Concentration limit, Discount income, Posted to ledger.

Status pills mapped to state machine

  • Outstanding — disbursed; awaiting obligor remittance at maturity (states FUNDED through pre-REPAID).
  • Settled — obligor remittance reconciled, receivable closed (state REPAID).
  • Past due — maturity date passed; outstanding (days-to-maturity negative, status not yet Settled).
  • Pending disbursement — F2 approved, F3 awaited (transient; not shown in this snapshot).
  • Disputed — procurement said no, or unmatched payment under review (E1 / E2).

Terracore Financing Bot · UI Flow Architecture · 2026-05-01
WhatsApp visual tokens reflect Meta UI as of Feb 2026. · Back to overview