Hashlogics
Industry

Banking

Banking software built around the core you keep

Seven builds ship payment logic. Your ledger and evidence trail are where a banking programme is won or lost.

Before anything else

A core banking platform holds the balances and answers to the regulator. What surrounds it decides whether your product works: ledgers that reconcile to the penny, payment flows that survive a timeout, onboarding that produces evidence an examiner can follow. We build that layer for you. Seven production builds with Stripe, real-time pipelines on Trading CoPilot, and document-heavy AI on PremiumAudit.io and IRS Escape Plan all run on the same discipline your banking programme needs.

The buyer

Three worlds that cannot share one page

A chartered institution, a fintech renting a licence and a payments company face such different compliance burdens that one pitch cannot serve them honestly. The chartered buyer runs a vendor risk review and asks which banks we have worked with. Our answer there is none, and that answer usually ends it.

So the fit is narrower than the keyword suggests. To a bank or credit union we are useful as a product team beside the core. Usually that means a line of business whose internal queue is too long. The better fit is a fintech or platform, where the work is product engineering with money movement, real-time data and AI.

  • 01Regulated institutions buy something that passes internal audit and the next exam.
  • 02Fintechs and platforms buy something that passes the sponsor bank's diligence and reconciles to the penny.
  • 03Both get senior engineers who have argued about idempotency keys in production.

Sector context

Numbers that shape the architecture

5 years

Retention for identity records after an account closes (31 CFR 1020.220)

~24 hours

How long Stripe keeps an idempotency result before pruning it (Stripe docs)

60 days

Window for an unauthorised ACH return on a personal account (Stripe docs)

7

Of our builds ship a Stripe payment integration

Where we are useful

The work we take around a core

Each of these is a capability claim we can source to a named build, or a standard we can cite. Neither is a claim of bank delivery.

Ledgers that answer point-in-time questions

You get append-only entries, balance derived rather than stored, corrections posted as reversals instead of edits, and balancing per currency. A ledger is correct because of its constraints, not because of its code.

Payment flows that survive a bad day

We derive idempotency keys from your business operation and persist them before the call. Handlers get built as state machines that reject impossible transitions, because webhook delivery is out of order by design.

Real-time data pipelines

Trading CoPilot moves market data and alerts for a private UK client on a live pipeline. That's event-driven engineering under time pressure, and it transfers directly to your payments and monitoring work.

Hold and release on a marketplace

WorkMateAI uses Stripe Connect to hold funds and release them on completion. Stripe documents that a transfer fails when it exceeds the available balance and isn't retried automatically, so you have to design the flow for that.

Document AI for onboarding and review

PremiumAudit.io reads payroll registers, tax forms and ledgers, then reconciles figures across documents. The same shape covers your onboarding packets and diligence files, with a person deciding.

Evidence that survives an exam

We model verification as a process with states and evidence, not a boolean flag. You store the method used, what it returned, when, and who ran it. Examiners ask how, not whether.

Why a real-time product needs its own ledgerLive
  1. CorePosts in a nightly batch
  2. CutoffRead-only window, memo balances
  3. Sub-ledgerWho owns which share
  4. ReconcileDaily, breaks owned and aged
  5. EvidencePoint-in-time, reproducible

Legacy cores post overnight, so today's balance is a memo balance until it clears. A real-time product on a batch core ends up building its own ledger plus reconciliation, which means you build the thing the core was supposed to be. Deciding that deliberately is cheaper than arriving at it in month six.

The sharpest problem

Succeeded does not always mean the money is yours

On a card payment, success is close to final. On bank debits it's provisional. Stripe documents a dispute window of 60 calendar days for personal accounts and two business days for business accounts, and describes both as final, with no appeal process.

So if your product treats a bank debit as settled at day three, you're carrying two months of unhedged exposure per transaction. The fix isn't clever: make your provisioning rail-aware, so what you release on a card isn't what you release on ACH. Stripe also warns that with separate charges and transfers it doesn't automatically reverse a transfer when an async payment later fails. Your balance gets debited and you reverse it yourself.

  • A balance you update is not a ledger. If it is a column you overwrite, you cannot say what it was at 2pm on 3 March.
  • Stripe prunes idempotency keys after about 24 hours, so a retry a day later is a new charge.
  • Store money as integer minor units and carry the currency. An integer with no currency is not money.
  • Store the instant and the business date separately. A payment's banking day is not a timezone conversion.
A close view of a locked pneumatic tube box with a glowing blue indicator dial, showing a transaction that has arrived but is not yet settled.
A client, in their own words

I am extremely happy with the results and would highly recommend Hashlogics to anyone.

Daniel Khin · CEO, PremiumAudit.io

How we approach it

The usual approach against ours

The core

The usual approach

Treated as something to work around, or replace.

How we build

Treated as the system of record. We design co-existence against how batch cores actually behave.

The sub-ledger

The usual approach

Balances derived from whatever the processor last said.

How we build

Double-entry, append-only, reconciled daily and portable enough to hand to a bank tomorrow.

Payment state

The usual approach

Success or failure, with a timeout counted as failure.

How we build

An unknown state is modelled explicitly, with idempotency keys sent before the first attempt.

Onboarding

The usual approach

Collect the identity fields and move on.

How we build

Capture the evidence and the decision path, because the file is what gets examined later.

Audit evidence

The usual approach

Assembled by hand when the date is set.

How we build

Emitted as the system runs, so the evidence exists before anyone asks for it.

Vendor risk

The usual approach

Assumed to sit with the sponsor bank.

How we build

Reconciliation you can see, and a sub-ledger that stays yours if a programme ends.

The stack

What this work runs on

Trading CoPilot

  • React
  • FastAPI
  • Supabase
  • PostgreSQL
  • AWS

Payments we have shipped

  • Stripe
  • Stripe Connect

Standards we build to

  • 31 CFR 1020.220
  • PCI DSS v4.0.1
  • SOC 2 controls
  • ISO 20022
Questions, answered

Questions banks and fintechs ask

01You have no bank clients. Why would we hire you?+

For work beside the core rather than inside it, and only where our capability proof actually matches. Our honest pitch is product engineering with money movement, real-time data and document AI, which we can source to named builds. Need someone who has migrated a core or passed a bank's vendor risk review? We're the wrong call, and we'll say so on it. Vendors who answer this question with a case study they can't name are the ones worth worrying about.

02Does using Stripe put us outside PCI scope?+

Only for the right integration type, and the rules got broader in 2025. Your scope gets decided by how you embed the payment form, not by which processor you picked. A hosted redirect or iframe keeps you in the lightest questionnaire, while direct-post and JavaScript SDK integrations push you up a tier. Since the January 2025 version took effect on 31 March 2025, qualifying for the lightest questionnaire also means attesting that your site isn't vulnerable to script attacks. One analytics tag on your checkout page can change that position.

03What does customer identification actually require in the build?+

You need four data elements before you open an account: name, date of birth for an individual, a street address, and an identification number such as a taxpayer ID. Verification itself may happen within a reasonable time after opening, which is why your onboarding is a process with states rather than one gate. Keep identifying information and the record of how you verified it for five years after the account closes. That clock is why a deletion request must never sweep up identity records.

04How do you stop a customer being double charged?+

Derive your idempotency key from the business operation and save it before the call goes out, so a retry reuses it. Generating the key inside the retry loop is the classic bug and gives you no protection at all. Don't lean on the processor alone either. Stripe documents that keys get pruned after about 24 hours, and a key reused after pruning generates a new request. If your system can replay an operation a day later, you need your own table keyed on the operation.

05Our balances disagree with the bank statement. Where does that come from?+

Usually from a mutable balance column and a reconciliation that runs too rarely. Fees netted from payouts, refunds landing in a different period, and timezone-shifted cutoffs all produce breaks. Reconcile daily and automatically, and give every unmatched item an owner and an age. Never repair a break by editing a historical entry. A correcting entry preserves what happened, and if you find a break thirty days late, you're debugging thirty days of transactions.

06How would you start with us?+

We start with a scoping call, which is free, and where we mostly listen for whether this is a fit at all. Where the honest answer needs us inside your codebase, we run a paid two-week diagnostic and give you one number at the end of it, not a spread. Three things drive that number: which rails you touch, whether a sponsor bank or core vendor gates your timeline, and whether your ledger already exists.

By Abdul Basit, CEO, HashlogicsUpdated
Start

Let’s deploy working AI into your business.

We build AI agents and automation, ship them into the tools you already run, then stay on under an agreed service level. A senior engineer reads every brief, and your call gets scheduled within 24 hours.

What happens next

  1. 01

    You send a brief or book a call

    Two minutes, whichever you prefer.

  2. 02

    A senior engineer replies within 24 hours

    Not a sales rep.

  3. 03

    Honest scoping, in writing

    And if we’re not the right fit, we say so.

Abdul Basit, CEO of Hashlogics

“I started Hashlogics because too many teams ship a demo, get paid, and disappear. We build to a standard we’d run ourselves — and we stay to keep it running.”

Abdul Basit · CEO · a direct line

Not ready to talk? Take the checklist.

12 questions to ask any AI agency before you sign. They separate a demo shop from a team that ships to production.

Get the checklist

Free · no newsletter