Pakistan Payment API
SoPay Pakistan Payment API documentation helps merchants collect and disburse PKR through platform-level Merchant Collection API and Merchant Payout API endpoints. This page is written for overseas engineering teams evaluating Pakistan expansion, local wallet usage, and bank transfer payouts without direct integration to every payment channel in the market.
For request fields, environment URLs, and error handling, use the Pakistan Payment API documentation as the source of truth.
Platform API vs local rails
Pakistan Payment API in merchant terms is the HTTPS contract between your backend and SoPay:
- Create and query payin orders
- Create and query payout orders
- Receive signed webhooks on terminal status
- Sign outbound requests per Merchant Signature Verification
Wallet brands such as JazzCash and Easypaisa, and bank transfer rails, are selected via bankCode (uppercase platform codes) and payer_* / payee_* beneficiary fields—see payin and payout API docs. Availability depends on onboarding—not on generic marketing claims here.
Documented Pakistan capabilities
| Area | Notes | Documentation |
|---|---|---|
| Overview | Environment, API list, PKR rules | Pakistan Payment API documentation |
| Payin | Collection flows | Pakistan Payin API |
| Payout | Disbursement flows | Pakistan Payout API |
| Webhooks | POST JSON, return OK | Merchant Callback API |
| Signing | RSA2 headers | Signature guide |
Merchant Collection API (Payin)
Payin orders move from creation through platform processing to completed or failure states. Wallet or bank confirmation timing varies by channel; your integration should rely on webhook and query status—not on assumed instant completion.
Implementation details: Pakistan Payin API.
Merchant Payout API (Payout)
Pakistan Payout API sends PKR to beneficiaries. Use bankCode plus payee_realname, payee_account, and (recommended) payee_mobile / payee_email / payee_id_no. Wallets (JAZZCASH, EASYPAISA) prioritize payee_mobile; banks use payee_account.
Always validate required fields against Pakistan Payout API before production traffic.
JazzCash, Easypaisa, and bank transfer
- JazzCash and Easypaisa — wallet
bankCodevaluesJAZZCASH,EASYPAISA - Bank transfer — other
bankCodevalues in the appendix enum - PKR — Pakistani Rupee; amounts typically limited to two decimal places
Use the published bankCode tables in the appendix; do not rely on legacy receiver* or metadata fields.
Integration path
- Complete merchant onboarding and key exchange (Quick Start)
- Study Pakistan Payment API documentation
- Implement signing and webhooks (Signature, Callback)
- Integrate Payin and Payout
- Run reconciliation tests with query endpoints
Cross Border Payment API
International merchants use SoPay as a Cross Border Payment API hub: Pakistan is one country module alongside India and Thailand. Shared webhook and signature patterns reduce engineering cost; country-specific fields still apply.
Frequently Asked Questions
Does SoPay guarantee JazzCash or Easypaisa for every merchant?
No. Channel access is contract-driven. Use sandbox responses and Pakistan overview to see what your profile supports.
What currency and precision apply?
PKR with documented decimal rules on the overview page.
How are webhooks secured?
Verify platform signatures using the public key PEM provided at onboarding. Process only verified payloads. See Merchant Callback API.
Can I use one integration for India and Pakistan?
You reuse patterns (sign, callback, idempotency) but must use country-scoped merchant accounts; country/currency are bound per merchant—do not send countryCode/currency on Pakistan create requests.
Where do engineers start?
Pakistan Payment API documentation → Signature → Payin / Payout → Callback.
