Complete all testing against the sandbox using the test credentials before starting this checklist. This page assumes your integration already works end-to-end in test.
1. Test Coverage
Confirm you have actually exercised each path — not just the happy one.- Successful payment with K-Net completes and returns
CAPTURED - Successful payment with Visa and MasterCard completes and returns
CAPTURED - Apple Pay tested, if you intend to offer it
- Customer cancelling on the payment page is handled gracefully
- Declined or failed payment shows a clear message and allows a retry
- Customer closing the browser mid-payment does not leave a permanently stuck order
- Status check correctly identifies every
paymentStatusvalue, not justCAPTURED - Full refund tested end-to-end and confirmed via the status endpoint
- Partial refund tested end-to-end and confirmed via the status endpoint
- Refund against an ineligible transaction fails cleanly without crashing your handler
2. Configuration
- Base URL is read from a configuration variable, not hardcoded
- Production private key obtained and stored separately from the test key
-
success_urlanderror_urlpoint to live, publicly reachable production URLs -
currencyis set correctly (414for KWD) -
languageis set appropriately for your customer base - Every endpoint switched to production — initialization, status check, and refund
3. Security
- Private key is never present in front-end JavaScript, mobile binaries, or public repositories
- All Payzah API calls are made server-side only
- Private key is stored in environment variables or a secrets manager, not in source control
- API keys and error responses are excluded from any logs shared with third parties
- HTTPS enforced on your
success_urlanderror_urlendpoints
4. Order Integrity
-
trackidis unique for every transaction and never reused - Order fulfilment is triggered only on
paymentStatus: CAPTURED - The redirect alone never marks an order as paid — status is always verified server-side
- Duplicate refund submissions are prevented on your side (retries, double-clicks, background jobs)
- Amounts are validated against your own order record before initialization and before refunding
5. Logging and Reconciliation
- Every request and response is logged with
trackid,PaymentID,code, andmessage - Refunds logged separately with
refrence_code,amount, andrefund_type - Logs are retained long enough to cover your chargeback and dispute window
- A reconciliation process exists to compare your records against Payzah settlements
6. First 48 Hours After Launch
- Process one small real transaction yourself and confirm it settles
- Process one small real refund and confirm it completes
- Monitor error rates and response codes closely for the first day
- Have a rollback plan — know how to disable checkout quickly if something is wrong
- Confirm your support team knows how to look up a transaction by
trackid
Related
Test Credentials
Sandbox cards for K-Net, Visa, MasterCard, and Apple Pay.
Best Practices
Security, logging, and transaction management guidance.

