Hashlogics
Industry

Banking

Banking software built around the core you keep

Most of the value sits in the ledger, the payment states and the evidence trail. That is the work we take, and it is where a 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. 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 a 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

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

Idempotency keys derived from the business operation and persisted before the call. Handlers 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 is event-driven engineering under time pressure, and it transfers directly to 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 is not retried automatically, so the flow has to be designed 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 onboarding packets and diligence files, with a person deciding.

Evidence that survives an exam

Verification modelled as a process with states and evidence, not a boolean flag. 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 is provisional. Stripe documents a dispute window of 60 calendar days for personal accounts and two business days for business accounts. It describes both as final, with no appeal process.

So a product that treats a bank debit as settled at day three is carrying two months of unhedged exposure per transaction. The fix is not clever. Make provisioning rail-aware, so what you release on a card is not what you release on ACH. Stripe also warns that with separate charges and transfers it does not 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 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

CriterionThe usual approachHow we build
The coreTreated as something to work around, or replace.Treated as the system of record. We design co-existence against how batch cores actually behave.
The sub-ledgerBalances derived from whatever the processor last said.Double-entry, append-only, reconciled daily and portable enough to hand to a bank tomorrow.
Payment stateSuccess or failure, with a timeout counted as failure.An unknown state is modelled explicitly, with idempotency keys sent before the first attempt.
OnboardingCollect the identity fields and move on.Capture the evidence and the decision path, because the file is what gets examined later.
Audit evidenceAssembled by hand when the date is set.Emitted as the system runs, so the evidence exists before anyone asks for it.
Vendor riskAssumed to sit with the sponsor bank.Reconciliation you can see, and a sub-ledger that stays yours if a programme ends.
The stack

What this work runs on

Trading CoPilot

ReactFastAPISupabasePostgreSQLAWS

Payments we have shipped

StripeStripe Connect

Standards we build to

31 CFR 1020.220PCI DSS v4.0.1SOC 2 controlsISO 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. The 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 are the wrong call, and we will say so on it. Vendors who answer this question with a case study they cannot 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 is 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 is not vulnerable to script attacks. One analytics tag on the checkout page can change that position.

03What does customer identification actually require in the build?

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 onboarding is a process with states rather than one gate. Keep identifying information for five years after the account closes. Descriptions of how you verified run for five years after the record is made. That clock is why a deletion request must never sweep up identity records.

04How do you stop a customer being double charged?

Derive an 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 no protection at all. Do not lean on the processor alone for this. Stripe documents that keys can be pruned after about 24 hours, and that 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, events processed out of order and timezone-shifted cutoffs all produce breaks. Reconcile daily and automatically. Give every unmatched item an owner and an age. Never repair a break by editing a historical entry, because a correcting entry preserves what happened. Finding a break thirty days late means debugging thirty days of transactions.

06How would you start with us?

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. You get one number at the end of it, not a spread. Three things drive that number. Which rails you touch and how final they are. Whether a sponsor bank or core vendor gates the timeline, since that is procurement rather than engineering. And whether your ledger already exists or has to be built underneath what you have.

Verified
Start

Anyone can ship the agent. We answer the pager.

We build AI agents and automation, 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