Payment page
You can show the payment details to the customer yourself, or send them to our page:
https://cabinet.example.com/payment/{orderId}
{orderId} is the ord_… id from the create response. The page is public: it needs no login
and shows nothing about you or the provider, only what the customer needs to pay.
What the customer sees
While the order is open:
- the amount and currency, with a copy button;
- a countdown to
expiresAt, green above five minutes, amber above two, red below; - the payment details for the rail: card number, phone number, account number, IBAN or UPI id, holder and bank as applicable, each with a copy button; Kaspi shows the card and the phone together;
- for SBP, a QR code that opens the phone number in the customer's banking app; for UPI, a QR code with the UPI id and the amount that any UPI app opens;
- for UPI, a field for the UTR the customer's bank issued. It is stored on the order as
payerReferenceand shown in your cabinet and to the reviewer; it does not change the status; - I have paid, which opens a short explanation that the status updates on its own, and
Cancel, which sends the customer to
failUrl.
The page polls the order every three seconds and switches to a result screen on its own:
| Order state | Screen | Link |
|---|---|---|
Completed | "Payment completed" with the amount | successUrl, or backUrl if not set |
Canceled | "Payment cancelled: the window expired or the payment was cancelled" | failUrl, or backUrl if not set |
Dispute | "Your payment is under review" | none |
Links are shown only when the URL was given on the order and is an absolute http(s) address.
What it does not do
The page never changes an order's status. "I have paid" does not mark anything, and the UTR field only stores what the customer typed: only the provider's confirmation moves an order forward. If the customer paid and nothing changed after a few minutes, the receipt goes to you, and you open an appeal.
Using your own page
The create response carries everything the page shows. If you render the details yourself,
keep the countdown honest: after expiresAt the details are no longer valid, and a transfer
made to them lands in an appeal rather than in a completion.