Skip to main content

Wallets

Accept one-time and tokenized payments from Pakistan's major mobile wallets through Simpaisa's wallet APIs. Simpaisa supports Easypaisa, JazzCash, HBL Konnect, and Alfa. Tokenization (recurring charges) is available on Easypaisa and JazzCash only.

Not covered here: Bangladesh, Nepal, Egypt, and Iraq use the Unified Pay-In APIs (/payins/payments/...).


Supported Wallets

WalletOperator IDTransaction types
Easypaisa100007One-time, Tokenization
JazzCash100008One-time, Tokenization
HBL Konnect100014One-time
Alfa100012One-time

Payment Flows

FlowDescriptionAPIs
One-time (OTP)Initiate sends OTP; Verify completes payment with OTP (+ MPIN on Easypaisa/JazzCash)Initiate → Verify
Async (OTP)Verify returns Transaction-Pending; final status via postbackInitiate → Verify → Postback
Non-OTPSingle Verify call (no OTP); customer approves in wallet appVerify — Non-OTP → Postback / Inquire
TokenizationSave wallet credentials as sourceId; charge later via Direct ChargeTokenization

One-time Payment Journey

Easypaisa Sample User Journey

JazzCash Sample User Journey


APIs At A Glance

APIMethodPath
Initiate PaymentPOST/v2/wallets/transaction/initiate
Verify PaymentPOST/v2/wallets/transaction/verify
Finalize (JazzCash tokenization)POST/v2/wallets/transaction/finalize
Direct ChargePOST/v2/wallets/transaction/direct-payment
Delink AccountPOST/v2/wallets/transaction/delink
Transaction InquiryPOST/v2/inquire/wallet/transaction/inquiry
RefundPOST/v3/transaction/refund

Environments

EnvironmentBase URL
Sandboxhttps://sandbox.simpaisa.com
Productionhttps://payin.simpaisa.com

Refunds use a separate host — see Refund.


Headers

HeaderValueRequired
Accepttext/plain, application/json, application/*+jsonYes
Content-Typeapplication/jsonYes
modepayinYes
regionPKYes
operatorIdOperator code from table above (e.g. 100007)Yes
version3.0Yes
Request-IdUnique request identifier for idempotencyNo (recommended)
info

Set operatorId in the header and in the request body. They must match the wallet the customer is paying with.


Common Request Parameters

Parameters shared across wallet APIs. Wallet-specific fields are documented on Initiate and Verify.

ParameterLengthTypeDescription
merchantId07StringUnique ID assigned by Simpaisa to your merchant account
userKey / orderIdN/AStringYour order reference to track the transaction
msisdn10StringCustomer mobile number linked to the wallet account
currency03StringCurrency code (PKR for Pakistan wallets)
operatorId06StringPayment channel ID
amountN/AStringTotal amount to charge
transactionIdN/AStringSimpaisa-generated transaction ID (returned after Initiate)
redirectUrlN/AStringPage where the customer sees the transaction result
transactionType01String0 = one-time · 8 = tokenization
productReferenceN/AStringShort description of the product or service
otp10StringOne-time password sent via SMS (Verify only)
accountNumber / accNo25StringWallet account number (Alfa)
cnic13StringCustomer CNIC (HBL Konnect)
mpinN/AStringMobile wallet PIN — handled by the wallet app on Easypaisa/JazzCash
sourceId / sptokenN/AStringSimpaisa token for saved wallet credentials (tokenization)

Parameter Matrix By Wallet (one-time OTP)

ParameterEasypaisaJazzCashHBL KonnectAlfa
merchantId
operatorId
amount
userKey
transactionType
msisdn
cnic
accountNumber
productReference
otp (Verify)

OTP Length And Type

WalletTypeLength
EasypaisaInt04
JazzCashInt04
HBL KonnectInt05
AlfaString (alphanumeric, case-sensitive)08

Account Number Length And Type

WalletTypeLength
EasypaisaInt10
JazzCashInt10
HBL KonnectInt10
AlfaInt14
warning

Easypaisa and JazzCash enforce an MPIN approval flow handled entirely by the wallet. HBL Konnect and Alfa do not support MPIN — OTP alone completes the transaction.


Transaction Callbacks (IPN / Postback)

When a transaction status changes, Simpaisa sends an HTTP POST to your configured callback URL.

Callbacks are sent when:

  • An initial transaction succeeds or fails
  • A recurring or tokenized charge succeeds
  • A customer unsubscribes or delinks through Simpaisa
  • Payment is made against a voucher or bill number
  • An async flow completes (after Verify returns Transaction-Pending)

Sample Wallet Callback

{
"status": "0000",
"message": "Success",
"msisdn": "3097524704",
"operatorId": "100007",
"merchantId": "20000XX",
"transactionId": "49068982",
"amount": "1",
"createdTimestamp": "2023-06-08 16:09:56.0",
"updatedTimestamp": "2023-06-08 11:10:38.779",
"userKey": "36937443",
"transactionType": "0"
}

Sample Refund Callback

{
"message": "Success",
"status": "0000",
"createdDateTime": "2023-11-17 12:47:48.561",
"userKey": "test",
"transactionId": 290325803,
"merchantID": 20000xx,
"refundAmount": 1.0,
"operatorId": 100007,
"mobileNo": "3336775364",
"updateDateTime": "2023-11-17 12:47:50.244"
}
info

In async flows, the Verify response is always Transaction-Pending (0037). Use the postback (or Inquire) for the final success or failure decision.


Async Flow Overview

  1. Initiate — customer enters mobile number (and wallet-specific fields) to receive OTP.
  2. Verify — customer submits OTP; response is Transaction-Pending.
  3. Postback — Simpaisa notifies your callback URL with success or failure.

If the customer abandons before entering OTP, no postback is sent. If Verify does not return Transaction-Pending, no postback will follow.

All four wallets support async flow. See Verify — Async.


TopicGuide
Initiate paymentInitiate
Verify paymentVerify
Transaction inquiryInquire
TokenizationTokenization overview
RefundsRefund