eekaam.docs

Payment providers

Stripe


Connecting Stripe

Stripe handles international card payments and wallets like Apple Pay and Google Pay. It is the right choice for selling outside Pakistan; for domestic wallet payments, pair it with JazzCash or AssanPay.

Money settles into your Stripe account on your own payout schedule.

What you need

From the Stripe dashboard:

Field in EekaamWhere to find itNotes
Publishable KeyDevelopers → API keysStarts pk_ — safe to expose
Secret KeyDevelopers → API keysStarts sk_ — never share it
Webhook Signing SecretDevelopers → WebhooksStarts whsec_. Optional, but see below

Stripe's test keys contain _test_ and its live keys contain _live_. Save them in the matching mode in Eekaam — Stripe rejects a live key used against test data and vice versa.

Connect it in Eekaam

  1. Go to Settings → Payments.
  2. Under Add a payment provider, choose Stripe and press Install.
  3. Paste the publishable and secret keys.
  4. Press Save, then Test connection.
  5. Switch At checkout on and press Save in the header.

The webhook

Stripe confirms payments by calling your store back. Eekaam registers this for you when you save your keys, and fills in the signing secret automatically.

If you would rather set it up by hand: in the Stripe dashboard go to Developers → Webhooks → Add endpoint, paste the notification URL from Stripe's card in Eekaam, and subscribe to checkout.session.completed and payment_intent.succeeded. Then copy the signing secret Stripe shows you back into the Webhook Signing Secret field.

Without a valid signing secret, Eekaam cannot prove a payment notification really came from Stripe, and will reject it.

How a payment runs

  1. The shopper picks card payment at checkout.
  2. Eekaam creates a Stripe Checkout session and redirects them to Stripe's hosted page.
  3. They pay.
  4. Stripe sends a signed event to your notification URL, and the order moves to paid.

Troubleshooting

"Invalid credentials". The commonest cause is a test key saved in live mode. Check the key contains _live_ if you saved it as live.

Orders stay pending after a successful payment. The webhook is missing or its signing secret is wrong. Stripe's dashboard shows every delivery attempt and the response it got — check there first.

Currency errors. Stripe must have your store's currency enabled on the account. Check Settings → Payments in the Stripe dashboard.

Updated 15 September 2026