DPay

Take the payment.Skip the screenshot.

Customers pay from their own bank app. Your bank's alert confirms the order in seconds.

92%
of payments use no card
40–50%
fewer returns when prepaid

Customers pay from the app they already have: 46 banks, wallets and microfinance banks. You receive into NayaPay or Meezan.

EasypaisaEasypaisaJazzCashJazzCashNayaPayNayaPaySadaPaySadaPayHBL KonnectHBL KonnectUBL OmniUBL OmniUPaisaUPaisaZindagiZindagiMeezan BankMeezan BankHBL — Habib Bank LimitedHBLUBL — United Bank LimitedUBLMCB BankMCB BankAllied Bank (ABL)Allied Bank (ABL)Bank AlfalahBank AlfalahNational Bank of PakistanNational Bank of PakistanAskari BankAskari BankFaysal BankFaysal BankBank Al HabibBank Al HabibJS BankJS BankSoneri BankSoneri BankBank of PunjabBank of PunjabBank of KhyberBank of KhyberDubai Islamic Bank PakistanDubai Islamic Bank PakistanBankIslami PakistanBankIslami PakistanAl Baraka BankAl Baraka BankHabib Metropolitan BankHabib Metropolitan BankStandard Chartered PakistanStandard Chartered PakistanSindh BankSindh BankFirst Women BankFirst Women BankZarai Taraqiati Bank (ZTBL)Zarai Taraqiati Bank (ZTBL)Citibank PakistanCitibank PakistanICBC PakistanICBC PakistanDeutsche Bank PakistanDeutsche Bank PakistanHabib Bank AG ZurichHabib Bank AG ZurichTelenor Microfinance BankTelenor Microfinance BankMobilink Microfinance BankMobilink Microfinance BankKhushhali Microfinance BankKhushhali Microfinance BankU Microfinance BankU Microfinance BankNRSP Microfinance BankNRSP Microfinance BankApna Microfinance BankApna Microfinance BankEasypaisaEasypaisaJazzCashJazzCashNayaPayNayaPaySadaPaySadaPayHBL KonnectHBL KonnectUBL OmniUBL OmniUPaisaUPaisaZindagiZindagiMeezan BankMeezan BankHBL — Habib Bank LimitedHBLUBL — United Bank LimitedUBLMCB BankMCB BankAllied Bank (ABL)Allied Bank (ABL)Bank AlfalahBank AlfalahNational Bank of PakistanNational Bank of PakistanAskari BankAskari BankFaysal BankFaysal BankBank Al HabibBank Al HabibJS BankJS BankSoneri BankSoneri BankBank of PunjabBank of PunjabBank of KhyberBank of KhyberDubai Islamic Bank PakistanDubai Islamic Bank PakistanBankIslami PakistanBankIslami PakistanAl Baraka BankAl Baraka BankHabib Metropolitan BankHabib Metropolitan BankStandard Chartered PakistanStandard Chartered PakistanSindh BankSindh BankFirst Women BankFirst Women BankZarai Taraqiati Bank (ZTBL)Zarai Taraqiati Bank (ZTBL)Citibank PakistanCitibank PakistanICBC PakistanICBC PakistanDeutsche Bank PakistanDeutsche Bank PakistanHabib Bank AG ZurichHabib Bank AG ZurichTelenor Microfinance BankTelenor Microfinance BankMobilink Microfinance BankMobilink Microfinance BankKhushhali Microfinance BankKhushhali Microfinance BankU Microfinance BankU Microfinance BankNRSP Microfinance BankNRSP Microfinance BankApna Microfinance BankApna Microfinance Bank
Why sellers switch

Three things break selling online in Pakistan. DPay was built for all three.

1The screenshot dance

The sale dies between “advance bhejo” and “screenshot verify ho gaya”.

Someone finds you on Instagram, moves to WhatsApp, and wants the thing. Then it starts: send PKR 250 advance, send the screenshot, wait while somebody opens the bank app and looks for it. By the time you answer, they have cooled off, and a screenshot is the cheapest thing on the internet to fake, so sometimes you ship for free.

With DPay

You send one link instead. They pay from their own bank app, and your bank's own alert, never their screenshot, confirms the order in seconds. Nobody waits, and nothing can be edited in Photoshop.

A customer asks for the price on WhatsApp, sends a payment screenshot, and the merchant sits verifying it by hand while the order stays unconfirmed.
2No card needed

Your customer never has to reach for a debit card. Neither do you.

Most people here never use a card online. Only 8% of Pakistani e-commerce payments actually go through one; the other 92% move by wallet or bank account, from the app already open on their phone. Put a card form in front of them and most are gone before they start. And to show that form at all you would need a merchant account, paperwork, and a cut of every sale.

With DPay

Your customer opens the bank or wallet app they already use and transfers. No card, no card details typed, no new account to create. DPay is a checkout for how Pakistan actually pays: 46 banks and wallets, no merchant account and no percentage of your sales, with the money landing in your own NayaPay or Meezan account.

Source: State Bank of Pakistan, e-commerce payments by channel.

A doughnut chart of Pakistani e-commerce payments: 8% by card, 92% by wallets and bank accounts.
3Fake orders and RTO

A COD order that travels both ways is not an order. It is a bill.

Cash on delivery is around two thirds of Pakistani e-commerce, and a quarter of those parcels come back: wrong address, nobody home, or an order that was never real. You pay the courier out, you pay the courier back, and the stock returns opened or not at all.

With DPay

Ask for PKR 100–200 as a confirming advance. Someone who transfers is a real buyer, and prepaid orders come back 40–50% less often. DPay makes that advance a single link, verified before the parcel moves. The advance is not the sale, it is the filter.

Source: Reported Pakistani COD return rates and prepaid comparisons, 2025.

A hundred orders shipped: cash on delivery gets 75 delivered and 25 returned, a DPay advance gets 88 delivered and 12 returned, which is 40 to 50% fewer returns.
How it works

One request in. One webhook out. The bank does the rest.

1
Create a payment

Your server posts an amount and a description. DPay returns a hosted checkout URL and a reference like DPAY-8F4K29.

2
The customer pays from their own app

They choose which bank or wallet they are paying from, see your receiving account and the exact amount, and transfer as they normally would.

3
DPay verifies from the bank's alert

It searches your connected inbox for that bank's notification inside the payment window, parses it, and runs the six required checks.

4
Your system is told

A signed payment.succeeded webhook reaches your server. Fulfil the order. If anything is unclear, the payment waits for your review instead of guessing.

Create a paymentPOST /api/v1/payment_sessions
curl https://dpay.com.pk/api/v1/payment_sessions \
  -H "Authorization: Bearer dpay_live_sk_…" \
  -H "Idempotency-Key: ORD-1042" \
  -d '{ "amount_decimal": "18500",
        "description": "Chelsea boots, tan, 42",
        "order_id": "ORD-1042",
        "customer": { "email": "ayesha@example.pk" },
        "success_url": "https://yourstore.pk/thanks" }'

→ { "id": "dpay_ps_x7k2…", "status": "awaiting_payment",
    "reference": "DPAY-8F4K29",
    "checkout_url": "https://dpay.com.pk/pay/dpay_ps_x7k2…" }
What your server receiveswebhook · payment.succeeded
DPay-Signature: t=1788950400,v1=6f1c…e2a9
DPay-Event-Id:  evt_k3m9x1qv7a2p

{ "type": "payment.succeeded",
  "data": { "object": {
    "id": "dpay_ps_x7k2…", "status": "succeeded",
    "amount": 1850000, "order_id": "ORD-1042",
    "provider": "nayapay",
    "verification": { "status": "matched", "confidence": 0.94,
      "matched_signals": ["merchant_account", "amount",
        "time_window", "provider", "customer_bank"] }
  } } }
Verification

Six things must be true. Amount alone never approves a payment.

The one mistake a payment gateway cannot make is shipping something nobody paid for. So every required check has to pass on a single bank credit, and that credit is then locked to the order, so it can never be claimed twice.

NayaPay
NayaPay
NayaPay emails its alert the instant money lands, so payments usually confirm within seconds. Alert format confirmed against a real notification from service@nayapay.com.
a few seconds
Meezan Bank
Meezan Bank
Verification is automatic, but Meezan's alert email usually arrives 3–5 minutes after the transfer. Customers are told to keep the page open.
3–5 minutes

The customer's declared bank and last 4 digits are bonus signals: they raise confidence and break ties, but never approve a payment on their own.

The six checks DPay runs on every payment: right account, money in, right bank, exact amount, in time, and never reused.
Everything to run a store

Not just a checkout. The whole back office, built around bank transfer.

A phone showing DPay onboarding beside a five-minute stopwatch.
Live in five minutes

Name your business, add the NayaPay or Meezan account you already have, and connect the inbox its alerts arrive in. No merchant account, no paperwork, no waiting for approval.

A merchant setting a logo and brand colour on a DPay checkout page.
A checkout that looks like your shop

Put your logo, your colour and a line of trust on the page your customers pay on, so what they land on looks like what they came from.

A DPay invoice list on a laptop with an invoice email flying out of an envelope.
Invoices that send and settle themselves

An invoice goes out with its PDF attached the moment you create it. When the transfer lands, it marks itself paid and the receipt reaches your customer.

  • Hosted checkout

    A page you send or redirect to. The customer picks their own bank, sees your details and a reference, and pays from their own app.

  • Your brand on the checkoutGrowth and Scale

    Your logo, your accent colour and a line of trust: an official number, or the year you opened. A page that looks like the shop they came from is a page people finish paying on.

  • Payment links

    Reusable links for a product or a price. Every open is a fresh checkout with its own reference.

  • Invoices

    Line items, sequential numbers, a due date and a hosted page with one Pay button. Paid invoices mark themselves.

  • Subscriptions

    Recurring billing without a card: an invoice goes out every month and the customer pays it by transfer.

  • Customers

    Built automatically from every verified payment that carried an email: totals, history, the bank they pay from.

  • Analytics

    Volume by day, success rate, checkout funnel, verify time per provider, where customers pay from.

  • Webhooks

    Signed with HMAC-SHA256, retried for six hours, deduplicated by event id. Your order confirms itself.

  • An API your AI can read

    One reference that is also llms.txt and a copy-paste prompt for Claude or Cursor, so you can integrate in an afternoon.

Pricing

The whole product on every plan. Pay for payments, not a percentage.

No percentage of your sales, no card on file. Plans run 30 days and you pay for them the way your customers pay you: by transfer. Higher plans raise the limits, unlock live API keys, and from Growth put your own brand on the checkout.

Free
PKR 0
forever

Try DPay with real payments

  • 25 payments a month
  • 1 receiving account
  • Test API keys
  • DPay-branded checkout
  • Checkout, links, invoices, subscriptions, analytics
Start free
Starter
PKR 1,500
per 30 days

For a shop taking orders every day

  • 500 payments a month
  • 2 receiving accounts
  • Live API keys and webhooks
  • DPay-branded checkout
  • Checkout, links, invoices, subscriptions, analytics
Start with Starter
Recommended
Growth
PKR 4,500
per 30 days

For a store that has found its market

  • 2,500 payments a month
  • 5 receiving accounts
  • Live API keys and webhooks
  • Your logo and colour on the checkout
  • Checkout, links, invoices, subscriptions, analytics
Start with Growth
Scale
PKR 12,000
per 30 days

For platforms and high-volume sellers

  • 10,000 payments a month
  • Unlimited receiving accounts
  • Live API keys and webhooks
  • Your logo and colour on the checkout
  • Checkout, links, invoices, subscriptions, analytics
Start with Scale

Full details, limits and how billing works on the pricing page.

For developers

REST over JSON, bearer keys, signed webhooks. Integrate in an afternoon.

Idempotent creates, cursor pagination, and webhooks signed with HMAC-SHA256 and retried for six hours. Test keys and a sandbox let you run a full payment end to end without moving money. The whole reference is published as llms.txt, and the Developers page generates a ready-to-paste integration prompt for Claude or Cursor with your test key already in it.

// Node: verify a webhook
const { t, v1 } = parse(req.headers["dpay-signature"]);
const expected = hmacSHA256(secret, `${t}.${rawBody}`);
if (!timingSafeEqual(expected, v1)) return 400;
if (event.type === "payment.succeeded") fulfil(event.data.object.order_id);
Trust

Designed so there is nothing to steal, delay or lose.

Never holds funds

Money moves bank to bank. DPay has no wallet, no balance, no payout schedule, and no ability to move your money.

Read-only inbox

Gmail access is read-only and searched only for alerts from known bank senders inside each payment's window. Nothing else is read.

Encrypted at rest

Inbox tokens are AES-256-GCM encrypted. API keys are stored as SHA-256 hashes and shown once. Full account numbers never leave checkout.

Signed webhooks

Every event is HMAC-SHA256 signed with a timestamp, retried with backoff, and carries an idempotency id.

Questions

Straight answers.

Does DPay hold my money?+

No. Customers transfer directly from their bank or wallet into your own NayaPay or Meezan account. DPay only reads the bank's alert to confirm it arrived. There is nothing to settle and nothing to withdraw.

Which banks can my customers pay from?+

Any of the 46 Pakistani banks, wallets and microfinance banks in the checkout: Easypaisa, JazzCash, SadaPay, HBL, UBL, Meezan and the rest. They pay from the app they already use; the money lands in your account.

How fast is verification?+

It depends on how fast your bank emails you. NayaPay alerts arrive within seconds, so payments confirm within seconds. Meezan's alerts take three to five minutes. DPay checks every few seconds while the customer waits.

What if two customers pay the same amount at the same time?+

DPay will not guess. It marks the payment as needing review and shows you both transfers; you pick the right one with a click. A single bank credit can only ever be matched to one order.

Do I need a card machine, a merchant account or paperwork?+

No. You need a NayaPay or Meezan account that receives money and the Gmail inbox its alerts arrive in. Setup takes a few minutes.

What does it cost?+

Free covers 25 payments a month with test API keys. Paid plans start at PKR 1,500 for 30 days and raise the monthly limit; every plan includes every feature. You pay for DPay the same way your customers pay you: by transfer.

How do refunds work?+

Because DPay never holds funds, a refund is a transfer from you back to your customer, from your own bank. DPay gives you the verified record to work from. Our own plan fees have a 7-day refund window; see the refund policy.

Take your first verified payment today.

A NayaPay or Meezan account, the Gmail its alerts arrive in, and five minutes. The Free plan is enough to see it work.