🌉 Afinx Bridge

Your customer's money story,
shared in one tap

Bridge is a button you drop into your app — or your own internal tools. Whoever's connecting (a customer, or your finance team) links a bank or mobile money account, an email inbox, or uploads a statement — and you get back clean, organised transactions you can trust. No screenshots. No printed statements. No PINs in your code.

Works with banks, MoMo, email & filesRead-only — money never movesBuilt for Ghana & West Africa

Getting someone's financial history is still painful

In Ghana, a person's money lives in many places — some in the bank, most in MoMo, the rest buried in email. So the moment you need to understand it — to give a loan, check income, or do the books — it's screenshots, six months of printed statements, and a queue at the branch for a stamped letter. Slow for them. Unverifiable for you. Impossible at scale.

Bridge replaces all of that with one secure connection.

Meet people where their money already is

Three ways to connect

Your customer picks whatever's easiest for them. However they connect, you get the same thing back: clean, deduplicated transactions.

Bank or MoMo account

For live balances & transactions

The user approves a MoMo link on their phone or signs in to their bank inside the widget. You get real-time accounts and history — even for the unbanked, MoMo counts.

Email inbox

For history, no bank integration needed

They connect Gmail or Outlook. Afinx finds the statement attachments banks already email them and turns them into transactions. We only read statements — never personal mail.

Upload a statement

Works for anyone, any bank

No inbox link? They drop a PDF or CSV — even a password-protected bank statement — and Afinx parses it on the spot. The universal fallback that always works.

What you get back

Not raw files — structured data your product can use immediately.

Clean transactions

Dates, amounts, descriptions, balances — normalised across every bank and wallet, with duplicates removed.

Verified, not typed

Data comes straight from the source — a live link, the bank's own email, or the original statement. Nothing the user can fake.

Delivered as it lands

Connect returns instantly; statements parse in the background and arrive via webhooks, so your app updates the moment data is ready.

Read-only, always

Bridge can read accounts and transactions — it can never move money. The user can disconnect anytime.

What people build with it

Anywhere you need to understand someone's money, fast and for real.

Lending & credit

See real income and cashflow in seconds instead of waiting days for paper — and approve people the formal system misses, because their MoMo activity finally counts.

Buy-now-pay-later & affordability

Check that a customer can actually afford the repayments from their real spending, before you approve a plan.

SME tools & bookkeeping

Pull a shop owner's MoMo and bank activity into one place automatically — no more shoebox of receipts — and show them their true cashflow.

Income & KYC verification

Confirm income or identity from data that came straight from the bank — far stronger than a screenshot or a letter that can be edited.

Internal finance & spend tracking

It's not only for serving customers. Connect your own organisation's MoMo wallets and bank accounts into one place, and build internal dashboards that track spending and cashflow across all of them — automatically, instead of reconciling by hand.

For developers

Wire it up in an evening

Three calls. The widget handles the rest — the method picker, credentials, OTP/USSD, OAuth consent, or the file upload — and never exposes a secret to your frontend.

1

Mint a link token

Server-side, with your sandbox or live key. Scoped to you, expires in 30 minutes. Your secret key never reaches the browser.

curl https://api.afinx.co/bridge/link-token \
  -H "Authorization: Bearer afinx_test_sk_…" \
  -d '{ "userId": "user_123" }'
2

Open the widget

Pop it open (or redirect to it). The customer chooses bank/MoMo, email inbox, or upload — you don't have to build any of those flows.

window.open(
  `https://bridge.afinx.co/${linkToken}`,
  'afinx-bridge',
  'width=480,height=720',
);
3

Exchange the token, then read the data

On success you get a single-use public token via postMessage (or your redirectUri). Exchange it server-side for access — then read accounts, or receive statement.parsed webhooks as transactions land.

curl https://api.afinx.co/bridge/exchange-token \
  -H "Authorization: Bearer afinx_test_sk_…" \
  -d '{ "publicToken": "public_…" }'

Credentials stay with the user

A PIN or password is entered inside Afinx — never on your site, never in your logs.

Single-use, short-lived tokens

Public tokens self-destruct on first use and expire in 10 minutes. Replay isn't possible.

The user stays in control

Read-only access they can revoke anytime — and they always choose what to share.