Kashier
Kashier is TakeTheme's primary card gateway for Egypt. Shoppers pay on Kashier's hosted checkout page and are returned to your store when they're done.
The integration is card-only and auto-capture — funds are taken as soon as the shopper completes payment, with no separate capture step.
Connecting
Settings → Payments → Kashier.
| Credential | Required | Where to find it |
|---|---|---|
| API Key | Yes | Kashier merchant dashboard → API keys |
| Merchant ID (MID) | Yes | Kashier merchant dashboard |
Both are stored against your store only. The API key is also what TakeTheme uses to verify incoming webhooks, so it must stay in sync with Kashier — rotating it there without updating it here will cause every payment confirmation to be rejected.
Settings
| Setting | Default | What it does |
|---|---|---|
| Send payment confirmation email | on | Emails the customer when payment succeeds |
| Notify on payment failures (emails) | empty | Emails these addresses when a checkout fails at the gateway |
| Auto mark orders as paid | on | Not currently enforced — a confirmed payment always marks the order paid |
What the shopper sees
- They pick Kashier at checkout and submit.
- TakeTheme builds a signed Kashier checkout session for the exact amount and currency, and redirects them to Kashier's hosted page.
- They pay by card.
- Kashier calls TakeTheme's webhook; the order is created at that moment, already Paid.
- They land back on your store's order-success page.
The hosted page defaults to Arabic and is themed with your brand colour.
If the shopper abandons on Kashier's page, nothing is created — the attempt appears under Abandoned checkouts instead. See How payments work.
Webhooks
Kashier posts payment results to:
POST https://<your-api-host>/api/v1/payment/webhook/kashier
This URL is registered automatically on every checkout session — there is nothing to configure in the Kashier dashboard.
Every webhook is signature-verified against your stored API key. An unsigned or mismatched call is rejected with 400 and nothing is recorded.
Kashier retries until it receives a 200. Repeat deliveries for a payment that is already recorded as successful are acknowledged and ignored, so a retry can never create a second order or double-count revenue.
Refunds
Refunds are recorded in TakeTheme only — no refund call is made to Kashier. Issue the refund from the Kashier dashboard, then record it on the order so your reporting matches. See Refunds.
Troubleshooting
Every payment fails to confirm after I rotated my API key.
The stored key is used for webhook verification. Update it in Settings → Payments → Kashier and retype it in full — masked values (••••1234) are ignored on save.
The shopper paid but no order appeared. The webhook either didn't arrive or failed verification. Support can check the incoming webhook log with the Kashier transaction reference.
The amount on Kashier doesn't match my cart. The session is signed over the exact total including shipping, tax, and any handling fee. A mismatch means the cart changed after the session was created — the shopper should return to checkout and start again.