Async
Payment lifecycle
All statuses and the transitions between them. Customer return on return_url and metadata handling are on a separate page.
All payment statuses:
| Status | Meaning |
|---|---|
pending | payment created, waiting for the customer to open the link and select/confirm a method |
processing | customer started paying, the bank session is open |
succeeded | bank confirmed the charge. Final status |
failed | bank or customer declined. Final status |
expired | link TTL or bank session TTL elapsed. Final status |
cancelled | merchant or customer explicitly cancelled. Final status |
refunded | a succeeded payment was fully refunded. Final status |
Transitions
pending → processing customer picked a method, bank session opened pending → expired link TTL elapsed, no one paid pending → cancelled merchant or customer cancelled processing → succeeded bank confirmed the charge processing → failed bank declined processing → expired bank session TTL elapsed, bank never returned a status succeeded → refunded refund total covered the original amount
Link TTL and bank-session TTL are separate clocks.
expires_at applies to our payment page (merchant-controlled by default). processing_until applies to the bank session and depends on the method: SBP — 20 minutes (NSPK requirement), cards — 15 minutes, T-Pay and SberPay — 30.A payment is created in pending, walks through intermediate states and reaches a final one — succeeded, failed, cancelled, expired or refunded. A payment in a final state no longer changes (except transitions to refunded on successful refunds).
After the final status the customer is redirected to return_url with query parameters — details in the Customer return section of the API Reference. Arbitrary tags on a payment — in metadata field.