Support chat and requests
The assistant explains Kevmi’s terms, finds the right page and helps with settings. Open chat using the round button at the bottom right. Use a private request for an account-specific question.
On this page
Help on the current page#
On phones, chat opens in a compact panel. You can minimize and reopen it; a badge appears if an answer arrives while it is closed.
Support opens on the current page. The former /help address redirects to the homepage with chat open.
- 1
Select the round support button at the bottom right or Ask your question.
- 2
Open an existing conversation or start a new one. Choose a suggestion or type a question: Enter sends; Shift + Enter adds a line.
- 3
Read the answer and follow its documentation sources.
- 4
Minimize chat to continue working. Messages and the draft stay in this browser.
Conversations, drafts and history#
Keep each topic in a separate conversation. Search history by title or text, rename a conversation and pin important ones. A new conversation preserves earlier chats, and each keeps its own draft.
Restore a conversation from Deleted, or permanently delete it after confirmation. History is stored in this device’s browser, survives page reloads and does not sync between devices, your account or Telegram. Clearing site data in the browser removes local history.
If browser storage is unavailable, chat continues in the open page’s memory. Local conversations are separate from private support requests, which are stored on the server after sign-in.
What answers are based on#
The website and bot use one versioned knowledge base. The server provides published guides, structured pricing, allocation and country facts, the page catalog and actual feature readiness to the generative assistant. The base includes applications, API keys, widgets and webhooks.
Answer sources only refer to articles in that base. When confirmed information is insufficient, the assistant says so and suggests a more specific question or support request. It does not invent countries, payout times, limits or tax obligations.
Follow-up questions and context#
The next question includes the selected conversation’s last three question-and-answer pairs, helping with follow-ups such as “What if the merchant pays VAT?”. Other local history is not automatically attached to the request.
A short section label, such as Pricing or Checkout, is also sent. The URL, query parameters and invoice token are excluded. Prior messages are untrusted context and are checked against the knowledge base.
AI and documentation search#
AI mode uses a configured provider, server storage and an available quota. /api/config reports configuration readiness; model connectivity is checked on a request. Unavailable generation, exhausted quota or an invalid answer falls back to labeled documentation search.
Search also works without an external model. Private records require explicit owner permission and are read-only. Without permission only public information is available. It cannot charge funds, create payouts or change settings.
| Mode | Behavior |
|---|---|
| ai | Writes an answer from the complete published knowledge and links relevant guides |
| search | Returns matching published documentation |
Asking a useful question#
For example: “A $5 card order, with VAT paid by the merchant. What does the merchant receive?” Check exact figures in the published calculator.
The chat field accepts up to 1,800 characters. If the connection fails, the question remains in the field for another attempt.
- Name the method: card, SBP, Alipay or cryptocurrency.
- For a calculation, give the base amount and both customer cost shares: fee and VAT.
- For an error, name the page, action and message shown.
- Do not send passwords, sign-in codes, tokens, CVV or seed phrases.
Asking through the API#
POST /api/support/ask accepts question with 2–2,000 characters after trim. Optional history contains up to six messages with role=user or role=assistant. User messages accept 1–1,800 characters and assistant messages 1–3,000.
Optional pageContext is a section label of 1–80 characters, without URLs, tokens, query parameters or line breaks. Optional locale is ru, en, es, de or fr and selects the response language. English is the default; complete technical sources are available in Russian and English. The API does not accept system messages, tools or arbitrary provider instructions.
The JSON body limit is 65,536 bytes. The response contains mode, answer, sources, knowledgeVersion and needsHuman, with aiUnavailable:true when generation is unavailable. No user session is needed; a supplied Origin must match the application.
Private support requests#
After sign-in, create a request with a subject of 1–120 characters and a message of 5–4,000 characters. It is stored in your account and is not visible to another user.
The list shows the latest 30 requests. You can close your own request. Keep its reference when asking about status; resolution time depends on the issue.
Assistant, support and project administration#
A first Telegram sign-in creates an account and a draft store with not_submitted status, not an approved merchant. The account opens the application form or current review; accepting payments requires specialist approval. Every new store has its own review. GET /api/stores returns reviewStatus and applicationId. Connected stores retain aggregate access, and support and documentation remain available during review.
Enable Allow access to my data in chat when you need help with private operations. A web request with includeAccount=true requires a valid session, Origin and X-CSRF-Token; X-Kevmi-Store selects an owned store or all owned stores. Without permission, the assistant uses public documentation. In Telegram, a separate button enables access after the sender has been identified.
The read_account tool reads owned stores, invoices with verified receipt status, events, applications and support requests with specialist replies. It returns 30 records and nextPage; older records are available through pagination. Reads per answer are bounded, so an incomplete sample must be disclosed. API keys, webhook secrets, card details and sessions are not provided to the tool. It cannot charge, pay out, refund or change settings.
Creating a support request in the workspace or Telegram places a separate administrator alert in a durable queue. It links to /admin/tickets?ticket=<id>; temporary Telegram failures are retried. Recovery also picks up older open requests without an alert. Administrators reply on the request page; the reply is saved in the user workspace and sent through Telegram when support notifications are enabled.
The bot uses inline buttons for the main menu, stores, notifications, support, security and language. Navigation edits the current message; an unavailable old menu is replaced. Payment and security notifications are not treated as disposable navigation. Signing out through the menu requires confirmation. The explicit /logout command still ends every account session.
The /admin/project panel is restricted to Telegram IDs in the server-side MODERATOR_TELEGRAM_IDS allowlist. It includes users, stores, operations, key revocation, webhook disabling, invoice pausing, acceptance controls and an audit log. Mutations require CSRF and a reason. The panel cannot restrict an administrator or manually declare a payment successful. Restricting an owner ends sessions and blocks API-key access; restricting a store stops new operations. History is retained.
The public offer is available at /public-offer and the privacy policy at /privacy-policy in every enabled language. Search coins by name or ticker. A network selector appears only when multiple live networks are available. A single network is selected automatically and remains named in confirmation. Live gateway availability determines selectable pairs; the reference catalog does not enable a service.
Use update.sh for routine web-app releases: build the candidate, check migration history, back up SQLite online, start a second container, verify it, and switch Caddy gracefully. Gateway, PostgreSQL and mail are not restarted. Previous static assets remain available to open tabs. A new migration needs explicit reviewed authorization; an incompatible schema change is not a seamless deployment.