AWRA OpsHub Search
Accounting · Bank feeds

Statement lines that arrive on their own.

An M-Pesa feed that brings in the paybill and till money AWRA moves every 30 minutes, and a private inbox per bank account that reads the statement your bank already emails you. Every line is fingerprinted on the way in, so an overlapping statement never counts a line twice.

M-Pesa every 30 minutes · CSV, OFX and MT940 by email · Allowed-sender list · Address you can rotate · Premium and Enterprise

30 minbetween M-Pesa checks, plus a Check now button
3 formatsCSV, OFX (and QFX) and SWIFT MT940, read the same by email or upload
24 charsof randomness in each account’s private statement address
10 × 5 MBattachments read per email; logos and PDF copies are passed over
1 gateevery source writes through the same fingerprint check
The month-end problem

Reconciling is quick. Getting the statement in is what takes the week.

Somebody logs in to internet banking, downloads a file, works out which columns the bank used this month, and uploads it. Somebody else does the same for the paybill. By the time both are in, the first is a week old and the second overlaps it by three days — so half the lines are already there and nobody is sure which half.

A bank feed removes the fetching, and the fingerprint removes the doubt. The M-Pesa money AWRA moved for you is already in AWRA, so it is turned into statement lines on a schedule. Bank statements come to an address you give the bank once. Whichever way a line arrives, it is checked against the lines already on that account, and a line that is already there is counted as skipped rather than added again.

The M-Pesa feed

Built from the M-Pesa money your workspace moves through AWRA, so it needs no contract with anyone and no file from Safaricom.

  • Money in: successful customer payments by M-Pesa prompt and by paybill or till, each as a line on the date it was made, carrying the M-Pesa receipt code and the payer’s number.
  • Reversals: a receipt reversed after it succeeded becomes its own line in the other direction, so the original stays on the statement and the reversal sits beside it.
  • Money out: supplier and payroll payouts sent from AWRA over M-Pesa, to a phone number or a paybill or till number.
  • Its own account: connecting creates an M-Pesa bank account on the M-Pesa ledger account that those same payments post to, so the two sides can be matched.
  • A start date you choose, checked every 30 minutes after that, with a Check now button and a pause switch. A failed check is shown on the account rather than silently skipped.

Statements by email

Most banks will send a scheduled statement by email. Give them an address that belongs to one account in your workspace and the attachment is read when it lands.

statements+k7q2…m9xw@your-inbound-domain
  • One address per bank account, 24 random characters long, naming exactly one account.
  • Allowed senders: optionally accept statements only from listed addresses or a whole domain. A refused statement is recorded on the account so you can see it was sent.
  • New address at any time. The old one stops working the moment the new one is made, which is the right answer when an address has been forwarded somewhere it should not be.
  • Up to ten attachments per email, five megabytes each. A statement file is read; a bank logo, a signature image or a PDF copy of the same statement is passed over.
  • A CSV uses the column mapping you saved the first time you uploaded that bank’s CSV by hand. OFX and MT940 need no mapping at all.
Anatomy of an emailed statement

Eight checks between the bank’s email and your statement.

The inbox is a public endpoint that writes to your books, so it is built to refuse first. Each step below either passes the statement on or stops it with a reason you can read.

  1. The bank sends its scheduled statement

    To the account’s private address. Nothing on your side has to be awake for it.

  2. The mail provider’s signature is verified

    A Mailgun delivery must carry a valid signature made within the last fifteen minutes; a Postmark delivery must arrive on a URL carrying a secret. With no secret configured, the endpoint refuses everything rather than accepting anything.

  3. The address picks the account

    The 24-character part of the address names one account in one workspace. An unknown or paused address is ignored.

  4. The sender is checked

    If you listed allowed senders, a statement from anyone else is refused and the refusal is written on the account.

  5. Each attachment is identified

    By its extension and by its contents: OFX and QFX, MT940, or CSV. Anything else is passed over without fuss.

  6. The file is read into lines

    Date, description, reference, signed amount and, where the bank supplies it, the running balance. A CSV with no saved mapping stops here with a note telling you to upload one by hand first.

  7. Every line is fingerprinted

    And compared with the lines already on that account. A line that is already there is counted as skipped.

  8. New lines wait to be matched

    As unmatched lines on the reconciliation screen, with the time of the last statement and how many lines it added shown on the account.

What gets read

Three formats, read the same way however they arrive.

Upload and email use the same format detection, so a file that imports by hand imports by email too. The rows marked as an offer are ones we can add to your workspace.

FormatHow it is recognisedWhat makes a line uniqueSet-up neededBy email
OFX / QFXThe file extension, or an OFX header in the contents. Both the older SGML form and the XML form.The bank’s own transaction ID on each line.NoneYes
SWIFT MT940The extension, or the statement and transaction tags in the contents. The format many Kenyan banks use for a scheduled statement.Account, value date, signed amount and reference, counted in order.None. The closing balance lands on the last line.Yes
CSVThe extension. Comma, semicolon, tab and pipe separators are detected from the header row.Date, amount, description and reference, plus how many identical rows came before it in the file.One upload by hand, to map the columns. AWRA guesses them from the headers.Yes, once mapped
PDF statementPassed over today, including the M-Pesa statement Safaricom emails.——We can add
Excel workbookPassed over today; save it as CSV first.——We can add
Dedupe

Two airtime charges are two lines. The same file twice is still two lines.

A fingerprint that only looked at date and amount would merge two genuine KES 30 charges on the same day. One that included the row number would add a re-sent file all over again. So a CSV line’s fingerprint is its content plus how many identical lines came before it in that file — the second airtime charge is the second one, every time the file is read.

Inside one CSV file

2026-09-29 · −30.00 · AIRTIME · #1line A
2026-09-29 · −30.00 · AIRTIME · #2line B
2026-09-29 · +125,000.00 · RTGS JUA KALI LTD · #1line C

Same date, same amount, same narrative — still two charges, because they are the first and second of their kind in the file.

The bank re-sends Monday with Tuesday

Mon lines 1–38already there
Tue lines 39–71added
71lines in the file
33added
38skipped
A worked week

A hardware distributor on Mombasa Road, 21–25 September.

Illustrative figures. One M-Pesa paybill collecting from customers and paying suppliers, and one current account whose bank emails an MT940 statement each morning.

Mon 21 M-Pesa feed

Paybill and prompt collections arrive through the day as the 30-minute checks run: 96 receipts.

+418,640
Tue 22 Inbox

The bank’s MT940 for Monday lands at 06:10: 38 lines, including an RTGS from a contractor and the ledger fee.

38 added
Wed 23 Inbox

The bank re-sends Monday together with Tuesday after a delay at its end. 33 new lines are added and 38 are skipped.

33 added
Thu 24 M-Pesa feed

Nine supplier payouts sent from AWRA over M-Pesa, and one customer receipt reversed after a wrong-number complaint.

−212,400
Fri 25 Upload

The accountant uploads the same Monday file by hand to be sure. Nothing is added: every line is already there.

0 added

By Friday the statement is complete without anyone opening internet banking, and the matching work on bank reconciliation starts from lines rather than from files.

Switching it on

What each feed needs before it runs.

Both feeds sit on the bank reconciliation screen, behind the reconcile permission, on the Premium and Enterprise plans. The same switches are on the API the AWRA mobile app uses.

M-Pesa

  1. Collect and pay over M-Pesa through AWRA, so there is money for the feed to see.
  2. Choose the date to reconcile from. The screen suggests the first of the month.
  3. Connect. Lines since that date come in at once; new ones every 30 minutes.

Statement inbox

  1. Set up the inbox on the bank account, with allowed senders if you want them.
  2. Copy the address shown and ask the bank to send its scheduled statement there.
  3. For a CSV bank, upload one statement by hand first so the columns are mapped.

Inbound mail on the server

  1. An inbound mail domain with its MX record pointed at the mail provider.
  2. A Mailgun signing key or a Postmark inbound secret.
  3. Until both are set, the screen says the inbox is not set up rather than showing an address that goes nowhere.
Capabilities

Everything a feed does, in one place.

M-Pesa in and out

Customer receipts, reversals and supplier or payroll payouts that AWRA moved, as signed statement lines.

Every 30 minutes

A scheduled check across every active M-Pesa feed, one at a time inside its own workspace, plus Check now.

A private inbox per account

One address per bank account, made of 24 random characters, that you can replace at any time.

Allowed senders

Specific addresses or a whole bank domain. Anything else is refused and the refusal is shown.

Fails closed

The inbound endpoints refuse every delivery until the provider’s signing secret is configured.

One dedupe for all sources

Feed, email and upload write through the same check, so the same statement read twice adds nothing.

Saved CSV mapping

Map a bank’s columns once — signed amount or money in and out, date format, decimal comma — and reuse it.

Pause and resume

Stop a feed without losing its address or its history, and pick it up again later.

Errors you can see

An unreadable attachment, a refused sender or a failed M-Pesa check is written on the account with its reason.

Bank feeds — what arrives on its own today

What AWRA OpsHub does today

  • An M-Pesa feed every 30 minutes of the paybill and till money moved through AWRA: customer receipts, reversals as their own line, and supplier and payroll payouts.
  • A dedicated M-Pesa account to reconcile, created on the same ledger account those M-Pesa payments post to, from a start date you choose.
  • A private statement address per bank account, replaceable at any time, with the old address stopping at once.
  • An allowed-senders list of addresses or whole domains, with refused statements recorded on the account.
  • CSV, OFX, QFX and SWIFT MT940 read from an email attachment or an upload by the same detection, up to ten attachments of five megabytes each per email.
  • One fingerprint check for every source, so an overlapping or re-sent statement adds only the lines that are new.
  • Safaricom’s own statement recognised against the M-Pesa feed by receipt code and amount, so the full paybill history, including money moved outside AWRA, sits on one account without a line counted twice.
  • Signed inbound delivery from Mailgun or Postmark, refusing every delivery until a secret is configured.

More we can add to your workspace

  • A direct connection to your bank, where the bank offers one, so lines arrive without waiting for a scheduled email.
  • PDF statements read into lines, including the M-Pesa statement Safaricom emails as a protected PDF.
  • Excel statement workbooks read directly, without saving them as CSV first.
  • Card settlement from your payment gateway as its own feed, net of fees, so card collections reconcile the way M-Pesa does.
  • An alert when a scheduled statement is late, so a bank that stops sending is noticed the next morning rather than at month end.
  • ISO 20022 statement files, for the banks moving from MT940 to the newer standard.

Where we point you to a specialist

  • We will not ask for your internet banking login. A feed that works by signing in as you holds the one credential that can move your money, and we would decline to store it even on request.
  • We read what the bank sends and do not correct it. A line that looks wrong on the statement is a question for the bank, and the reconciliation screen is where you record what you decided about it.

Each row in the middle column is scoped work on a pipeline that already has the inbox, the parsers and the fingerprint check to build on. Tell us which bank or which file format your finance team is still keying in.

Frequently asked questions

Which M-Pesa transactions does the feed bring in?
The M-Pesa money your workspace moves through AWRA: successful customer payments by M-Pesa prompt and by paybill or till, receipts reversed after they succeeded (as their own line in the other direction), and supplier and payroll payouts sent from AWRA to a phone number, paybill or till. Money moved on the till outside AWRA, such as a send made from the M-Pesa business portal, is outside what the feed can see.
How often does the M-Pesa feed update?
Every 30 minutes, for every active M-Pesa feed. You can also press Check now on the account, and pause or resume the feed at any time. When you first connect, every transaction since the start date you chose comes in at once.
Which statement formats can the inbox read?
CSV, OFX (including QFX, in both the older SGML form and the XML form) and SWIFT MT940, which is what many Kenyan banks send as a scheduled statement. A file is recognised by its extension and by its contents, exactly as an upload is. PDF statements and Excel workbooks are passed over today; reading them is something we can add to your workspace.
Why does a CSV statement need one upload by hand first?
Because every bank lays out its CSV differently, and an email gives nobody the chance to say which column is the date and which is the amount. The first time you upload a bank’s CSV, AWRA guesses the columns from the header row and you confirm them — a signed amount or a money-in and money-out pair, the date format, and whether the bank writes decimals with a comma. That mapping is saved on the account and every emailed CSV after that uses it.
What stops the same line being added twice?
Every line gets a fingerprint before it is written, and a line whose fingerprint is already on that account is skipped. An OFX line uses the bank’s own transaction ID. A CSV or MT940 line uses its date, amount and reference, plus how many identical lines came before it in the same file — so two genuine KES 30 charges on one day stay two lines, and a re-sent file adds only what is new. Feed, email and upload all write through the same check, and an M-Pesa transaction that arrives both from the feed and on Safaricom’s statement is recognised by its receipt code and amount and kept once.
Who can send statements to the inbox address?
Anyone who has the address, unless you list allowed senders — specific addresses, or a whole domain such as the bank’s. A statement from anyone else is refused and the refusal is recorded on the account. The address itself carries 24 random characters, and you can replace it at any time; the old one stops working at once.
What has to be configured before the statement inbox works?
An inbound mail domain with its MX record pointed at the mail provider, and either a Mailgun signing key or a Postmark inbound secret. The inbound endpoints refuse every delivery until that secret is set, and the bank account screen says the inbox is not set up rather than showing an address that would go nowhere.
Which plans include bank feeds?
Bank feeds live on the bank reconciliation screen, so they come with bank reconciliation on the Premium and Enterprise plans, and need the permission to reconcile transactions. Adding a new bank account to reconcile also needs the permission to manage accounts.

Help Center

Need a quick answer while you read?

Run inventory, procurement, assets, sales, and field work with approved AWRA guidance for setup, migration, integrations, security, pricing, and support.

Search all approved AWRA public help articles.

Open Help Center