Scenarios Overview
The payouts system supports two main interaction methods depending on user needs:
- Interface payouts - working through the personal dashboard web interface
- API payouts - integration with external systems through REST API
Each method supports both bank card payouts and SBP (Fast Payment System) payouts.
Interface Payouts
Working with the system through the personal dashboard web interface. Supports both mass payouts via files and single payouts via forms.
1.1. File-based payouts (Cards/SBP)
Process for mass payouts via file upload. Supported directions: bank cards and SBP.
Process Description
- User uploads file with recipient data or fills single payout form
- System validates recipient data (card number, amount, full name)
- User confirms payout creation
- System creates payout records in database
- Background processes handle payouts through banking API
- User tracks status through interface
- Receives notifications about results
Sequence Diagram
1.2. Manual single payout
Creating a single payout via form in the interface: bank card or SBP.
Process Description
- User opens the single payout form
- Enters recipient data (card or SBP: phone, bank, full name) and amount
- System validates data in real time
- User confirms creation
- System creates payout record and starts processing
- Status updates asynchronously; notifications are available
Sequence Diagram
API Payouts
Integration with external systems through REST API. Supports two work modes: creating application with redirect to system page or full execution through API.
2.1. Creating Application via createPayout
External system creates payout application, user redirects to system page for confirmation.
Process Description
- External system obtains Bearer token for authorization
- Creates payout application via createPayout API
- System validates data and creates application
- Returns URL for user redirect
- User follows link and confirms payout
- System executes payout through banking API
- External system can request status via getPayoutStatus
Sequence Diagram
(Bearer token, payout data) activate API API->>SYS: Data validation activate SYS SYS-->>API: Application created deactivate SYS API-->>ES: 200 OK (URL для подтверждения) deactivate API ES->>U: Redirect to URL deactivate ES activate U U->>UI: Opens confirmation page activate UI UI->>SYS: Get application data activate SYS SYS-->>UI: Application data deactivate SYS UI-->>U: Shows confirmation data deactivate UI U->>UI: Confirms payout activate UI UI->>SYS: Execute payout activate SYS par Обработка и отображение результата SYS-->>UI: Notification about acceptance and redirect to result page deactivate SYS UI-->>U: Redirect to result page deactivate UI U->>UI: Opens result page activate UI SYS->>BANK: Send to bank activate SYS activate BANK BANK-->>SYS: Operation result deactivate BANK end loop Payout processing UI->>SYS: Request status SYS-->>UI: Execution status deactivate SYS UI-->>U: Operation result deactivate UI deactivate U end activate ES ES->>API: GET /api/v1/getPayoutStatus
(application ID) activate API API->>SYS: Request status activate SYS SYS-->>API: Current status deactivate SYS API-->>ES: 200 OK (status and details) deactivate API deactivate ES
2.2. Full Execution via performPayout
External system creates payout application via API, system executes payout asynchronously in background.
Process Description
- External system obtains Bearer token for authorization
- Creates payout application via performPayout API
- System validates data, creates application and immediately returns response
- Background processes asynchronously execute payout through banking API
- External system can request status via getPayoutStatus
Sequence Diagram
(Bearer token, payout data) activate API API->>SYS: Data validation activate SYS SYS->>SYS: Create application SYS-->>API: Application accepted deactivate SYS API-->>ES: 200 OK (application created) deactivate API deactivate ES Note over SYS,BANK: Asynchronous processing in background loop Payout processing SYS->>SYS: Get tasks activate SYS SYS->>BANK: Execute payout BANK-->>SYS: Operation result SYS->>SYS: Update status deactivate SYS end activate ES ES->>API: GET /api/v1/getPayoutStatus
(application ID) activate API API->>SYS: Request status activate SYS SYS->>SYS: Get data SYS-->>API: Application status deactivate SYS API-->>ES: 200 OK (status and details) deactivate API deactivate ES
2.3. Card Payouts via API
Specifics of working with bank cards through API.
Features
- Requires card number encryption with public key
- Idempotency support through orderNumber
- Automatic access token and public key retrieval
- Integration with VTB banking API
2.4. SBP Payouts via API
Specifics of working with SBP through API.
Features
- Requires recipient phone in 79XXXXXXXXX format
- Mandatory recipient bank and full name specification
- Two-stage process: CHECK → CONFIRM
- Automatic SBP status processing
Error Handling and Exception Scenarios
Standard error handling scenarios for all payout types.
Error Types
- Validation errors - incorrect recipient data
- Authorization errors - invalid token or insufficient permissions
- Banking API errors - payment processing issues
- System errors - service unavailability
- Limit errors - exceeding established restrictions
Error Handling Scenario
Monitoring and Notifications
System monitoring and user notification system.
Notification Channels
- Web Interface - notifications in personal dashboard
- Telegram - push notifications in bot
- Email - messages to registered address
- API - webhook notifications for external systems
Notification System Diagram
Recommendations and Best Practices
For Developers
- Always use idempotency keys to prevent duplication
- Implement retry logic with exponential backoff
- Validate data on client side before sending
- Use webhook notifications for status tracking
- Log all operations for debugging and auditing
For Users
- Check recipient data before creating payouts
- Use test payouts to verify settings
- Configure Telegram notifications for operational control
- Regularly check reports and statistics
- Monitor system limits and quotas