IntraPay
Engineering complete, regulator-pending

Bangladesh sovereign payment network

A domestic switch
that keeps the interchange
inside Bangladesh.

IntraPay is a Rust ISO 8583 card switch, a BanglaQR engine, and an MFS aggregator on one ledger. Built to drop card MDR from 2 to 3 percent down to 0.5 percent and to route cards, QR, and bKash, Nagad, or Rocket from a single merchant integration.

  • Rust ISO 8583 switch, p99 under 1 ms
  • BanglaQR engine, EMVCo conformant
  • MFS aggregator: bKash, Nagad, Rocket
  • Settlement to BB RTGS + BACH
  • PCI DSS Level 1 + Thales Luna HSM
  • Post-quantum: Kyber + Dilithium

Switch p99

0.8ms

Rust ISO 8583, lock-free async

12
Go services
2 + 1
DC + DR
PCI L1
Audit
switch.acquirer.authorize
iso-8583 / 0100
0100Authorization requestMTI, card auth
DE 29242 87.. .... 1409PAN, 9xxx BIN, masked
DE 3000000Processing code, goods + services
DE 4000000125000Amount, BDT 1,250.00
DE 70517143008Transmission ts (MMDDHHMMSS)
DE 11043217Systems trace audit number
DE 22051POS entry mode, EMV chip + PIN
DE 38..Auth ID (filled by issuer)
DE 41BCHL0042Terminal ID
DE 49050Currency code, BDT
IntraPayA KaritKarma product / built in Dhaka, AS 64005
See the full KaritKarma stack

What is IntraPay

A switch for the country.
Not a wrapper around one.

IntraPay is a domestic payment switch for Bangladesh. It does three things that today require three vendors: it authorizes ISO 8583 card transactions on a sovereign 9xxx BIN range, it generates and clears BanglaQR scan-to-pay flows, and it aggregates the bKash, Nagad, and Rocket mobile-financial rails behind one merchant API.

The Rust switch processes ISO 8583 on the hot path in under one millisecond. Twelve Go microservices handle clearing, settlement, tokenization, fraud, KYC, and partner portals. The Settlement Engine instructs Bangladesh Bank RTGS for high-value and BACH for batch. PCI DSS Level 1 controls, a Thales Luna HSM with post-quantum CRYSTALS-Kyber and Dilithium, and Wenme plus Darwan for participant auth round out the operator stack.

9xxx BIN card rail

Card

Sovereign BIN range, EMV chip and contactless, instant virtual issuance through the Token Vault. Domestic transactions never cross a foreign network and never pay foreign interchange.

BanglaQR engine

QR

EMVCo-conformant BanglaQR generation and validation. One QR is interoperable across every participating bank app, wallet, and the IntraPay merchant SDK.

MFS aggregator

MFS

Unified API to bKash, Nagad, and Rocket. One merchant integration covers every mobile financial service in Bangladesh with one settlement file and one reconciliation surface.

RTGS and BACH bridge

Settle

Settlement Engine instructs Bangladesh Bank RTGS for high-value, BACH for batch, with daily bilateral net positions produced by the Clearing Engine inside a 24-hour cut-off window.

The economic case

The interchange Bangladesh
pays today, in one table.

MDR ranges below reflect typical merchant agreements with international networks and the published bKash, Nagad, and Rocket merchant rates as of 2026. IntraPay rates are the published scheme rates, split between IntraPay, issuer, and acquirer or MFS provider.

Payment typeCurrent MDRIntraPay MDRSplit
Card present, POS
IntraPay / issuer / acquirer
2.0 to 2.5%
0.50%
0.10 / 0.25 / 0.15
Card not present, online
Same fee for online, no CNP surcharge
2.5 to 3.0%
0.50%
0.10 / 0.25 / 0.15
BanglaQR scan to pay
Interoperable across participating banks
0.5 to 1.0%
0.30%
0.08 / 0.12 / 0.10
MFS aggregated (bKash, Nagad, Rocket)
Operator share / MFS share
1.5 to 1.85%
0.40%
0.15 / 0.25
Rates pending Bangladesh Bank PSP licensing and 9xxx BIN allocation. Sources: published scheme documentation, published MFS merchant agreements.

One card transaction, end to end

What happens between
swipe and approval.

ISO 8583 in, ISO 8583 out, with a Kafka event projection per stage so clearing, settlement, dispute, and audit consumers rebuild state from the same canonical log.

target_e2e = 300ms
p99_switch = 0.8ms
fraud_score = 30ms
issuer_rt = network bound
  1. 01

    Acquirer terminal posts ISO 8583

    POS or e-commerce gateway sends a 0100 authorization request over a mutually authenticated TLS channel to the acquirer-bound switch endpoint. The Rust switch parses the message inside a fixed-budget micro-task without allocation on the hot path.

  2. 02

    Fraud ML scores in stream

    The Python PyTorch fraud service consumes the request from a Kafka topic and returns a risk score under 30 ms. Score and rule trace are attached to the transaction context for the auth decision.

  3. 03

    PQC auth via HSM

    Auth service evaluates issuer rules, signs the request with a CRYSTALS-Dilithium key held in a Thales Luna HSM, and forwards to the issuer bank over a Kyber-wrapped session. PIN block is verified inside the HSM, never in process memory.

  4. 04

    Issuer decision returns

    Issuer bank returns 0110 with action code, IntraPay completes the response chain back to the acquirer, and the Kafka event stream forks into clearing, settlement, dispute, and audit projections.

Twelve services on the bus

The whole switch fits
on one page.

Each service has a single responsibility, a gRPC contract under proto/, a Patroni-replicated schema migration in scripts/migrations/, and a Grafana dashboard in deploy/grafana.

Card Switch

:50051
Rust

ISO 8583 routing, sub-ms

Transaction Engine

:50052
Go

Central orchestrator

Token Vault

:50053
Go

Card tokenization, virtual cards

Auth Service

:50054
Go

PQC + HSM

QR Engine

:50055
Go

BanglaQR generate, validate

MFS Aggregator

:50056
Go

bKash, Nagad, Rocket

Clearing Engine

:50057
Go

Daily bilateral netting

Settlement

:50058
Go

RTGS, BACH to BB

Fraud Service

:8081
Python

PyTorch real-time scoring

Onboarding

:50061
Go

KYC, API key issuance

Partner

:50062
Go

Issuer BINs, acquirer terminals

KYC

:50063
Go

NID verify, AML watchlist

Operator posture

Built like the
infrastructure it replaces.

The card networks IntraPay competes with run on the same primitives: synchronous replication, HSM-backed keys, audited change control, observed every hop. IntraPay matches them on substance, not on slogans.

Active-active across Dhaka and Chittagong

PostgreSQL on Patroni with synchronous streaming replication, RPO of zero, RTO under 30 seconds in failover drills. Kafka KRaft with MirrorMaker 2, Redis Sentinel for hot-path session and rate-limit state.

PCI DSS Level 1 program

Network segmentation, key custody under Thales Luna HSM, AppSec gates in GitLab CI plus ArgoCD GitOps for change provenance. Scripts in scripts/compliance/ generate the regulator evidence pack from live config.

Post-quantum on the wire

CRYSTALS-Kyber for KEM, CRYSTALS-Dilithium for signatures, both via liboqs and FIPS 140-3 boundary on HSM. Interbank sessions are PQC-wrapped today, no migration day required when classical assumptions break.

Wenme + Darwan for participant auth

OAuth 2.1 with DPoP from Wenme issues participant access tokens, Darwan returns the allow or deny decision against the permission map. No long-lived API keys, every action carries a signed audit trace.

IntraPay vs alternatives

What it does that
the stack today does not.

Compared against Visa or Mastercard for domestic Bangladesh card flow, and against direct bKash, Nagad, and Rocket integrations for MFS. Each claim below is mapped to a shipped service or an honestly labelled roadmap item.

CapabilityIntraPayVisa / MCDirect MFS
Domestic interchange stays inside Bangladesh
vs international card networks
Single integration for cards + QR + MFS
vs separate bKash / Nagad / Rocket APIs
Sub-millisecond switch latency on hot path
Rust core vs JVM acquirer stacks
ISO 20022 interbank messaging
vs ad-hoc REST + CSV
Post-quantum on session keys today
Kyber + Dilithium via HSM, not roadmap
Sovereign BIN, no foreign network dependency
9xxx range, pending BB allocation
Operates under a single Bangladesh PSP licence
Application in preparation

What is shipped, what is pending

Engineering complete.
Regulator pending.

We do not claim shipped what is not. The regulator-side milestones (BB PSP licensing, 9xxx BIN allocation, and bank pilots) are the gating path to live volume.

  • Phase 1Core infra: K8s, Postgres + Patroni, Kafka, Redis, Istio, HSM shipped
  • Phase 2Card switch (Rust), Transaction Engine, Token Vault, Auth shipped
  • Phase 3BanglaQR engine, MFS aggregator (bKash, Nagad, Rocket) shipped
  • Phase 4Clearing, Settlement, Fraud ML, Dispute management shipped
  • Phase 5Merchant API, SDK, Portal, OpenAPI 3.1 specification shipped
  • Phase 6Issuer + Acquirer portals, partner sandbox shipped
  • Phase 6Pilot integration with 2 to 3 banks, 1 to 2 MFS providers pending
  • Phase 7Chittagong active-active, Sylhet cold DR, RTO under 30s shipped
  • Phase 8PCI DSS Level 1 audit, k6 load tests, runbooks shipped
  • Phase 8Bangladesh Bank PSP licence, 9xxx BIN allocation, pen test pending
  • Phase 9Wenme OAuth 2.1 + DPoP, Darwan RBAC across 35 permission keys shipped

FAQ

Questions banks
actually ask.

Six answers covering scope, comparison, BanglaQR, latency, NPSB and BEFTN interop, regulator state, and participant economics. Mirrored 1:1 in FAQPage JSON-LD.

What is IntraPay?

IntraPay is a sovereign domestic payment switch for Bangladesh. A Rust ISO 8583 core handles card authorization in under one millisecond, 12 Go microservices run clearing, settlement, tokenization, KYC, and partner portals, a Python PyTorch fraud service scores transactions in real time, and a BanglaQR engine plus an MFS aggregator (bKash, Nagad, Rocket) put cards, QR, and mobile money on a single merchant integration. It is built to drop card MDR from 2 to 3 percent down to 0.5 percent and keep that fee inside the Bangladesh economy.

How is IntraPay different from going direct to bKash, Nagad, or routing via Visa and Mastercard?

Direct MFS integrations require three separate API contracts, three separate reconciliation surfaces, and three settlement timelines. Visa and Mastercard route domestic Bangladesh transactions through international networks and charge interchange in foreign currency. IntraPay collapses all of that into one integration, one settlement file, one regulator surface, and keeps fees in BDT under a single Bangladesh PSP licence. The trade-off is participation cost (annual licence fees per bank or MFS) and the network effect needs scheduled banks at the table.

Does IntraPay support BanglaQR?

Yes. The QR Engine generates and validates EMVCo-conformant BanglaQR codes that are interoperable across every participating bank app and the IntraPay merchant SDK. Bangladesh Bank requires Bangla QR acceptance for every scheduled bank, MFSP, and PSP by 30 June 2026, and IntraPay ships the merchant-side and switch-side surfaces needed to meet that requirement.

What is the switch latency and how does it interop with NPSB and BEFTN?

The Rust card switch processes ISO 8583 authorization on the hot path in under one millisecond p99 under k6 load tests in scripts/load. End-to-end card response targets under 300 ms including fraud scoring and the issuer round trip. The Settlement Engine instructs Bangladesh Bank RTGS for high-value interbank transfers and the BACH automated clearing house for batch and recurring flows. NPSB and BEFTN message formats are produced and consumed by the Clearing Engine on the bilateral netting cycle.

What is the production and regulator status?

Engineering Phases 1 through 9 are complete: core infrastructure, card switch, QR, MFS, clearing, settlement, fraud, merchant layer, partner portals, dual data centre, PCI DSS Level 1 audit, and Wenme plus Darwan auth. Regulator-side milestones still open: Bangladesh Bank PSP licensing, 9xxx BIN range allocation, pilot integrations with 2 to 3 banks and 1 to 2 MFS providers, and an external penetration test. IntraPay is production-ready as a network operator and is on a regulator-pending posture.

What does it cost a bank or MFS to participate?

Annual licence fees, per the published business model: top-10 banks 5 crore taka, mid-tier banks 2 crore taka, small banks and NBFIs 50 lakh taka, MFS providers 3 crore taka, payment facilitators 1 crore taka. Per-transaction MDR is fixed at 0.50 percent for cards, 0.30 percent for QR, 0.40 percent for MFS-aggregated payments, split between IntraPay, issuer, and acquirer or MFS provider on a published schedule.

Become a participant

One switch.
Cards, QR, MFS.
Settled inside Bangladesh.

IntraPay is recruiting pilot banks and MFS providers for the production launch window. The participant briefing covers scheme rules, fee splits, the licence application path with Bangladesh Bank, and the sandbox certification plan.

sales@karitkarma.com
+880 9638 100300
KaritKarma Limited, Dhaka