JazzCash - Your Mobile Account app icon

Pakistan mobile money · Raast-enabled wallet

Getting a JazzCash wallet's records into your systems

Sixty million-plus registered wallets, a transaction ledger riding Pakistan's Raast rails, and PKR 16.8 trillion moved in the year to March 2026 — those figures come from JazzCash's own May 2026 results release, and they describe exactly the kind of per-user financial record a third party wants to query. The data sits behind an authenticated mobile session: MSISDN, an MPIN, an OTP, a bound device. Reaching it cleanly is an integration problem, not a guessing game. This page lays out which surfaces hold what, the authorized route we use to read them, and the source code that ends up in your repository.

The bottom line: JazzCash holds a rich, structured wallet ledger, but there is no off-the-shelf consumer consent endpoint to call yet, so the route that works today is reading the app's own authenticated surfaces with the account holder's permission. The rest of this brief is built around that.

The authorized path into a JazzCash account

Three routes genuinely apply here. We would lean on the second, and the reasoning is below each.

1 · User-consented interface integration (protocol analysis)

We instrument the JazzCash app session against an account whose owner has authorized the work, map the login → OTP → token chain, and identify the calls behind the balance, statement and transfer screens. What this reaches: the full authenticated surface — balance, the transaction ledger, transfer status, bill and QR payments. Effort is moderate; durability depends on the app's release cadence, which we plan maintenance around. Onboarding — a consenting account or a test handset — is arranged with you when the project starts.

This is the route we recommend for JazzCash. It is the only one that returns the complete per-user ledger today, it does not wait on a regulatory interface that has not shipped, and the captured flow becomes documentation you keep. We design the polling cadence to live inside the session lifetime so the feed stays quiet and stable.

2 · The State Bank's open-banking consent route (when it lands)

SBP published an open-banking framework in 2022 covering account information and payment services, with standardized APIs and a consent model. Per the public trackers we checked, the account-information and payment API standards are still in development, so this is a forward path rather than something callable now. We build so that, if and when SBP standardizes a consent interface a wallet like JazzCash exposes, the same normalized schema can sit on top of it with little rework.

3 · Native export as a fallback

JazzCash already lets a user pull a mini-statement in-app and through *786#, and email a longer e-statement; the Business app issues account and tax statements. Where a one-off or low-frequency pull is all you need, we parse those exports into structured rows. It is the lightest option and the least live — fine for reconciliation, weak for anything real-time.

What a JazzCash account actually holds

Data domainWhere it surfaces in JazzCashGranularityWhat an integrator does with it
Wallet balance & account statusHome / My AccountCurrent available balance, account tier/limitsReal-time balance checks, funding decisions, reconciliation
Transaction ledgerTransaction history, mini-statement (*786#), email e-statementPer row: timestamp, counterparty, type, amount, debit/credit, statusStatement sync, bookkeeping, affordability and income checks
Money transfersSend Money (to wallet, bank account, Raast)Recipient MSISDN/IBAN, amount, rail, statusPayout tracking, settlement reconciliation
QR / merchant paymentsScan & Pay, Raast P2MMerchant id, amount, timestampMerchant settlement, spend analytics
Bill & government paymentsBills (utilities, FBR, NADRA, token tax, traffic challans, passport)Biller, consumer number, amount, dateExpense categorization, receipt capture
Loans & savingsLoans, Savings accountsOutstanding principal, savings balance, scheduleCredit and affordability scoring
Cards & profileDebit card section, account profileCard status/linkage, name, registered MSISDN (data-minimized)Card lifecycle, identity matching

Rows mirror features named in the app's own listing — transfers, QR, government and education payments, loans, savings, debit cards, insurance. We carry across what your use case needs and leave the rest out.

What lands in your repo

Delivery is concrete artifacts, mapped to the surfaces above:

  • An OpenAPI 3 description of the JazzCash surfaces in scope — login, balance, statement, transfer status — with request and response shapes.
  • A protocol and auth-flow report: the MSISDN/MPIN login, the OTP step, token issue and refresh, device binding, and where each call sits.
  • Runnable client source in Python or Node.js for the key endpoints — authenticate, fetch balance, page the ledger, normalize.
  • A normalized transaction schema so Raast pushes, wallet sends and bill payments land in one consistent shape.
  • Automated tests that run against the live response shape, so a drift in the app shows up as a red test, not a silent gap.
  • Interface documentation plus data-retention and consent-handling guidance for operating it.

A ledger pull, sketched

Illustrative only — exact paths and field names are confirmed against the target during the build, not lifted from a published spec.

# 1. Authenticate (MSISDN + MPIN), then satisfy the OTP step
POST /customer/auth/login
  { "msisdn": "923XXXXXXXXX", "mpin": "····",
    "deviceId": "<bound-device>", "channel": "ANDROID" }
  -> 200 { "txnRef": "…", "otpRequired": true }

POST /customer/auth/otp/verify
  { "txnRef": "…", "otp": "######" }
  -> 200 { "accessToken": "<jwt>", "expiresIn": 900,
           "refreshToken": "<opaque>" }

# 2. Pull the statement window (the app's mini-statement surface)
GET /customer/account/statement?from=2026-05-01&to=2026-06-01
  Authorization: Bearer <jwt>
  -> 200 {
       "balance": { "available": "…", "currency": "PKR" },
       "txns": [
         { "ts": "2026-05-14T11:02:09+05:00", "type": "P2P_SEND",
           "rail": "RAAST", "counterparty": "PK…IBAN",
           "amount": "2500.00", "drcr": "DR", "status": "SUCCESS" }
       ],
       "nextCursor": "…"   # page + stitch until exhausted
     }

# 3. Normalize every row to one shape, regardless of rail
#    -> { id, ts, direction, counterparty, channel, amount, currency, status }

Short window, cursor paging, a 15-minute-ish token. We page until the history is complete and refresh the token before it lapses, so a backfill does not stall mid-run.

The dependable legal basis for this work is the account holder's explicit authorization to read their own JazzCash data. SBP's open-banking framework, published in 2022, points toward a future where that consent is brokered through standardized account-information APIs — but those standards are still being developed, so we do not treat them as a live obligation or a settled interface. Raast, the State Bank's instant payment system launched in January 2021, governs the rails that JazzCash transfers ride; it shapes how a transfer is typed in the ledger, not how you are permitted to read it.

On privacy: Pakistan's Personal Data Protection Bill (the 2023 draft, Cabinet-approved that April per legal commentary) is not yet enacted, and the National Commission for Personal Data Protection it would create is not yet operating; for now the State Bank's own consumer-data and cybersecurity rules apply to wallet data. We work data-minimized — only the fields your use case needs — with consent records kept, access logged, and an NDA where the engagement calls for one.

What we account for on a JazzCash build

Specifics we handle as part of the work, not things we hand back to you:

  • We design the integration around JazzCash's OTP and device binding, running it against a consenting account so the session stays valid and the sync does not trip the app's fraud heuristics.
  • Outgoing money splits between Raast interbank rails and in-network wallet movements; we type both and fold them into one transaction shape, so a Raast payout and an on-us send reconcile identically.
  • The mini-statement surface returns a limited window; we page and stitch it, and pace the sync against the session's expiry so history backfills without re-prompting the account holder needlessly.
  • When JazzCash ships an app update that shifts the traffic shape, we re-validate the captured flow during maintenance and update the tests with it.

Where integrators put this

  • A digital lender reading a consenting applicant's JazzCash statement for affordability and income verification before a credit decision.
  • An accounting or ERP tool auto-importing a merchant's JazzCash settlement ledger instead of keying e-statements by hand.
  • A personal-finance app showing a user's JazzCash balance and transfers next to their bank accounts in one view.
  • A marketplace or biller reconciling Raast QR payouts against its own order records.

Freshness and keeping the feed alive

Balance reads are effectively live; the ledger is pulled on a schedule you set, because the app exposes no push channel to subscribe to. We size the cadence to the token lifetime and to how often the account actually transacts — a busy merchant polls more often than a salaried user. Re-authentication, when a token lapses, is handled in code rather than left to fail. The maintenance pass exists precisely so the feed survives the app's next release.

Screens we mapped

Store screenshots used while tracing the surfaces above. Click to enlarge.

JazzCash screen 1 JazzCash screen 2 JazzCash screen 3 JazzCash screen 4 JazzCash screen 5 JazzCash screen 6
JazzCash screen 1 enlarged
JazzCash screen 2 enlarged
JazzCash screen 3 enlarged
JazzCash screen 4 enlarged
JazzCash screen 5 enlarged
JazzCash screen 6 enlarged

Same-category apps an aggregator usually wants under one normalized schema. Named for context, not ranked.

  • Easypaisa — the other dominant Pakistani wallet, holding comparable balance, transfer and bill-payment records behind its own account.
  • SadaPay — a fee-light wallet with a debit Mastercard; transfers run over Raast, leaving a similar transaction ledger.
  • NayaPay — an EMI-licensed wallet with a Visa card, holding peer transfers, bill payments and QR records.
  • Zindigi — JS Bank's digital wallet, adding stock and mutual-fund investment data on top of payments.
  • Konnect by HBL — HBL's branchless wallet, tied to the bank's account network and ATM withdrawals.
  • UPaisa — Ufone/PTML's mobile wallet, with transfer, top-up and bill-payment history.
  • UBL Omni — UBL's agent-and-wallet service holding branchless banking transaction records.
  • SimSim — Finca's wallet for contactless and QR payments, with its own per-user ledger.

Questions integrators ask about JazzCash

Can you pull a full JazzCash transaction history, or only the mini-statement window the app shows?

Both the running balance and the per-transaction ledger are in scope. JazzCash surfaces a short mini-statement in-app and via *786#, with a longer e-statement by email; we page and stitch those into one continuous history — timestamp, counterparty, type, amount and debit or credit per row — rather than capturing a single screen.

Does the State Bank of Pakistan's open-banking framework give a ready consent API for JazzCash today?

Not yet in a form you can call. SBP published an open-banking framework in 2022 and the account-information and payment API standards are still being built out, so the dependable basis right now is the account holder's own explicit authorization. We design the integration on that footing and revisit it if SBP standardizes a consent interface.

How do you handle JazzCash's OTP login and device binding without disrupting the user's app?

We map the login, OTP and token-refresh chain against a consenting account and pace the sync so it sits inside the session lifetime and does not trip the app's fraud checks. The captured flow is documented so you can see exactly what is called and when.

Raast pushes versus on-us wallet transfers — can you tell them apart in the data?

Yes. Money leaving a JazzCash wallet splits between Raast interbank rails and in-network movements; we type each one and normalize both into a single transaction shape so a Raast payout and a wallet send reconcile the same way.

Once a consenting JazzCash account is available, how quickly does a working ledger feed exist?

A first runnable feed lands inside a one-to-two-week cycle: an OpenAPI description of the surfaces, runnable client code for login and statement pulls, and tests against the live shape. Access is arranged with you as part of the work, not something you sort out first.

How this brief was built

Mapped in June 2026 from JazzCash's Play Store listing and feature descriptions, the company's own scale figures, the State Bank of Pakistan's digital-financial-services pages, and independent open-banking trackers — cross-checked against public reporting on Raast and Pakistan's draft data-protection law. Primary sources opened:

Compiled by the OpenBanking Studio integration desk · 2026-06-20.

Engagement and the next step

Delivery is a Git repository plus a runnable OpenAPI spec you can point at a consenting JazzCash account — source-code delivery starts at $300, and you pay after it is in your hands and working as described. Prefer not to host anything? The same JazzCash endpoints run on our infrastructure and you are billed per call, with nothing upfront. Either way, you tell us the wallet and what you need out of it; access and compliance are arranged with you as part of the engagement, inside a one-to-two-week cycle. Start at /contact.html and we will scope it.

App profile — JazzCash, in brief

JazzCash (package com.techlogix.mobilinkcustomer, per its Play listing) is a Pakistani mobile wallet operated by Pakistan Mobile Communications Ltd, part of VEON. Its feature set, as described on the store, spans money transfer to wallets and bank accounts, QR payments at merchants, loans and savings, debit cards, online and government payments (FBR, NADRA, Punjab Revenue Authority, vehicle token tax, traffic challans, passport fees), education payments, insurance, and cashback offers, with a companion Wear OS app. The company reports roughly 60 million registered customers and around 850,000 Raast-enabled QR merchants as of its May 2026 results. Figures here are taken from the app's own listing and public reporting, not independently audited.

Mapping reviewed 2026-06-20.