This algorithm describes direct payments via:
TON GRAM (psId=17)USDT TON (psId=23)These are separate direct crypto payment methods with a +5% bonus.
Do not mix them with Cryptomus, Heleket, Trybit, Plisio, and other aggregators.
Apply if:
TON, TON GRAM or USDT TONTON / USDT TON payment was not creditedTV Team it is visible that the disputed payment relates to TON GRAM or USDT TONTON / USDT TONDo not apply if:
Cryptomus, Heleket, Trybit, Plisio, B2pay or another PSPcrypto, network, wallet, addresstxid/hash, but the context already refers to another PSPThe string format (txid, hash, address) by itself does not select the TON branch.
For a regular user, a TON / USDT TON payment can be considered related to them only if there is one of the proofs:
txid, hash or explorer-link of a specific TON transactionmemo/comment/login their Matrix/login is specified and matches the current userA payment without memo/comment/login does not prove ownership. It is simply an incoming payment to a shared wallet.
For a regular user:
txid/hash/link — check the specific transaction via check_ton_payment_statustxid/hash/link — can only search memo_mode=exact by their loginmemo_mode=exact finds nothing — stop and ask for txid/hash/linkmemo_mode=missing or memo_mode=anymemo_mode=missing and memo_mode=any — only internal moderator handles for candidates. Even for moderators, the result means only “candidate without proven owner”, not a confirmed user payment.
Reply to a regular user if no txid/hash/link and no exact memo found:
“I cannot automatically confirm the payment. A txid/hash/link of the transaction is needed. If there is no txid, manual review by a moderator is required.”
Without a candidates list, without amounts, without the phrase “payment found”.
If a regular user writes like paid TON, payment not received, but did not specify txid/hash/link nor date or approximate payment time:
today, last hour, 100 hours, etc.)Formulation for a regular user without time and without txid/hash/link:
“Please clarify how much time passed since the payment. If less than 30 minutes — please wait. If more than 30 minutes — send the txid/hash/link to the transaction. Without txid/hash/link, I cannot accurately verify the transfer on the blockchain.”
If the user specified an exact period or date, but no txid/hash/link is provided, only memo_mode=exact can be checked by their login. If exact memo is not found — stop and ask for txid/hash/link; do not search missing/any.
In the case I paid via TON/USDT TON, not arrived, balance did not top up:
get_current_datetime.TV Team via api_request getLastPayments.api_request getUserBalance.TON GRAM / USDT TON payment in TV Team — provide the date, amount, method, and status. Do not ask for txid.If no credit is visible in TV Team, a specific transaction identifier is needed for blockchain verification.
To check TON / USDT TON on the blockchain, one of the following is required:
txidhashtonviewer linkIf such identifier is already in the message or context, do not ask for it again.
If no identifier, do not accept as a substitute:
memo / comment / logintxid/hash/explorer linkIf no credit in TV Team and no txid/hash/link, you can call ton_lookup_by_memo to find candidates on our TON wallets by memo/comment/login.
For ton_lookup_by_memo, the period is mandatory: always pass date_from and date_to.
Do not search by memo without a period and do not take an old candidate only because memo matched.
How to select the period:
get_current_datetimetxid/hash/link, do not start a broad memo searchton_lookup_by_memo is not final confirmation of credit. If one or more candidates are found, compare date/time/amount/asset and then call check_ton_payment_status by the tx_hash of a suitable candidate.
If no candidates by memo:
30 minutes passed, say the payment may still be processing30 minutes passed, ask for txid/hash/tonviewer/explorer linkUUID/order_idmemo / comment / login is important for automatic crediting.
When a new direct payment via TON / USDT TON is made, always remind the user to carefully fill in memo / comment / login if it is specified in the payment form.
When checking an already made payment:
resolve_ton_tx sees the memo/comment in the blockchain eventcheck_ton_payment_status tries to extract the login from memo/commentMemo is useful for searching candidates via ton_lookup_by_memo. The final check still must be done through check_ton_payment_status by the found tx_hash.
resolve_ton_txChecks the blockchain by txid/hash/explorer link:
TON or USDT TONTV Team wallet or notmemo/commentok, not_found_on_chain, wrong_wallet, unsupported_asset, no_supported_transfer_in_event)ton_lookup_by_memoHelper handle to search TON/USDT TON candidates for a period.
Requires:
date_from / date_tomemo_modeuser_loginamountasset: TON or USDT TONModes:
memo_mode=exact — find payments where memo/comment equals user_loginmemo_mode=missing — find incoming TON/USDT TON payments without memo/comment for the periodmemo_mode=any — show incoming TON/USDT TON candidates for the period without memo filterDo not call this handle without a period and do not use it for broad old payments search.
It scans events of our TON wallets and returns candidates: tx_hash, date, asset, amount, memo, sender, and recipient.
memo_mode=missing — this is a diagnostic wallet sample over the period, not a user payment confirmation.
If a candidate is found for a specific user case, the next step is check_ton_payment_status by its tx_hash.
For a request like show payments without memo / find all without memo for the period, respond with a list, not JSON:
tx_hashamount_displayTON or USDT TONLine format:
date | amount | type | txid
check_ton_payment_statusMain handle for the final check of user case. Needs:
txid/hash/explorer linkuser_loginDoes:
resolve_ton_txtx_hash in user's latest paymentstx_hash on technical account missed-toncheck_ton_payment_statuscredited_to_userPayment found in user's last payments.
Reply that the payment is credited; provide date, amount and method from TV Team.
found_in_missed_tonTransaction found and payment found on technical account missed-ton, but not for user.
To user:
To moderator show:
txidmemo/commentmissed_ton_amountmissed_ton_systemmemo_login_mismatchA different login is indicated in memo/comment.
Do not confirm payment to current user. Manual moderator review needed.
manual_review_no_login_in_memoTransaction found, but memo/comment is empty or contains no suitable login.
Manual moderator review needed.
manual_review_login_matches_but_not_foundmemo/comment matches the user, but payment not found in user's last payments and not found on missed-ton.
Manual moderator review needed.
chain_found_but_not_in_recent_paymentsTransaction exists on blockchain, but not found in user's last payments or on missed-ton.
Do not say payment is credited. Manual review needed if user disputes.
chain_in_progressTransaction found but still processing on chain.
If less than 30 minutes passed, say payment may still be processing.
not_found_on_chainTransaction not found on blockchain. Say so; check if user made a mistake in txid/hash/link.
wrong_walletTransaction found, but recipient is not a TV Team wallet.
Do not promise credit to TV Team.
unsupported_assetTransaction found, but asset is not TON or USDT TON.
Do not continue TON scenario by inertia.
no_supported_transfer_in_eventEvent found, but no supported transfer TON / USDT TON inside.
Do not confirm payment.
txid/hash/explorer link should be checked via handles, not visually comparednot_found_on_chain, say so: transaction not foundThe reply should be a conclusion on the case, not a dump of internal fields.
Do not write raw values in reply:
paymentStatus=1 or status 1 — write creditedpaymentStatus=2 or status 2 — write reversed / cancelledpsPaymentId — call it txid only if it is really a TON/USDT TON hashDo not end the answer with phrases like “if needed, I can check txid separately.”
If blockchain check is required by the algorithm and txid is available, the bot must perform it, not suggest doing it later.
If blockchain check is not needed because credit was already found in TV Team, write it that way.
Write short and clear:
TON GRAM or USDT TON)credited, not found, manual processing required, still processingExample if payment was found in TV Team:
Payment via TON found and already credited: 16.06.2026 09:30, amount 3.58 USD. Additional blockchain check not required.
Can provide working summary, but without raw status 1:
TV Teamcredited, reversed / cancelled, not foundtxid if anymemo/comment, handle status, missed-tonIf only last TV Team payments were checked, explicitly write: checked by last payments in TV Team; do not suggest blockchain is already checked.
TON / USDT TON into Cryptomus without explicit reasonCryptomus, Heleket, Trybit, Plisio into TON just because of txid/hash/addresstxid/hash if branch is not definedUUID/order_id for TONwallet address, memo/comment/login and txid/hashTON or USDT TON are unavailable: both methods are active via payments