Checkout/Handle Return
Handle Return
After the consumer completes (or cancels) payment on Kuickpay's hosted page, they are redirected back to your returnurl with the transaction result in the query string.
Always verify the return signature before marking an order as paid. Query strings can be tampered with — the signature is the only trust anchor.
Return URL Parameters
Kuickpay appends these as query parameters to your returnurl.
| Parameter | Type | Description |
|---|---|---|
orderid | string | Your original order reference. |
transactionid | string | Kuickpay's internal transaction ID. |
amount | string | Amount paid. |
status | string | SUCCESS, FAILED, or CANCELLED. |
responsecode | string | 00 = success. Other values indicate failure. |
signature | string | HMAC-SHA256 signature from Kuickpay. Always verify this. |
Example return URL
https://yoursite.com/payment/return?orderid=ORDER-001&transactionid=KP20250506001&amount=1250.00&status=SUCCESS&responsecode=00&signature=abc123...Handle Response & Redirect
A successful request returns a 200 OK with a JSON body:
{
"success": true,
"responseData": {
"sessionID": "ABC-123-XYZ",
"redirectURL": "https://gateway.kuickpay.com/pay?session=ABC-123-XYZ",
"companyID": "10010"
}
} Action: Redirect your user to the redirectURL immediately.
Also store the returned sessionID alongside the values from Step 1 — it is required by the Status API.
Handling All Outcomes
SUCCESS
Payment successful. Verify signature, then fulfill the order.
FAILED
Payment failed. Show an error and allow retry — do not mark as paid.
CANCELLED
Consumer cancelled. Return them to cart — order is unchanged.
Best Practices
✓Verify the signature before reading any other parameter.
✓Use the transactionid from Kuickpay as your primary reconciliation key — not your orderid.
✓Make your return handler idempotent: the consumer may land on it multiple times.
✓Log the full return payload for every transaction — even failures.