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
Rust ISO 8583, lock-free async
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
CardSovereign 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
QREMVCo-conformant BanglaQR generation and validation. One QR is interoperable across every participating bank app, wallet, and the IntraPay merchant SDK.
MFS aggregator
MFSUnified 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
SettleSettlement 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.
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.
p99_switch = 0.8ms
fraud_score = 30ms
issuer_rt = network bound
- 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.
- 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.
- 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.
- 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
:50051ISO 8583 routing, sub-ms
Transaction Engine
:50052Central orchestrator
Token Vault
:50053Card tokenization, virtual cards
Auth Service
:50054PQC + HSM
QR Engine
:50055BanglaQR generate, validate
MFS Aggregator
:50056bKash, Nagad, Rocket
Clearing Engine
:50057Daily bilateral netting
Settlement
:50058RTGS, BACH to BB
Fraud Service
:8081PyTorch real-time scoring
Onboarding
:50061KYC, API key issuance
Partner
:50062Issuer BINs, acquirer terminals
KYC
:50063NID 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.
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.
+880 9638 100300
KaritKarma Limited, Dhaka