tgpay cryptoAPI
crypto-payapiinvoicesrefunds

API maʼlumotnomasi: invoyslar va qaytarishlar

5 daqiqa oʻqishYangilandi 22-avg, 2026

Invoys metodlari: createInvoice, getInvoices, deleteInvoice, refundInvoice. Umumiy qoidalar (autentifikatsiya, konvert, summalar, spend_id) — Merchant API maʼlumotnomasi sahifasida; bosqichma-bosqich yoʻriqnoma — Invoyslar orqali toʻlovlarni qabul qilish.

createInvoice

POST /pay/api/createInvoiceinvoices huquqi, daqiqasiga 60 ta limit.

ParametrTuriMajburiyMaʼnosi
currency_typestringyoʻqcrypto (standart) yoki fiat
assetstringkripto rejimidaundiriladigan aktiv, masalan USDT. fiat bilan birga ishlatilmaydi
fiatstringfiat rejimidanarx koʻrsatilgan fiat valyuta (getCurrencies javobidagi is_fiat satrlari)
accepted_assetsstring / arrayyoʻqfaqat fiat rejimida: toʻlovchi toʻlashi mumkin boʻlgan aktivlar — vergul bilan ajratilgan satr ("USDT,GRAM") yoki JSON massiv. Koʻrsatilmasa — barcha qoʻllanadigan aktivlar
amountstringha, open_amount belgilanmagan boʻlsamusbat oʻnlik satr: kripto rejimida aktiv birliklari, fiat rejimida fiat birliklari (koʻpi bilan 2 kasr xonasi)
open_amountbooleanyoʻqkengaytma, faqat kripto rejimida: belgilangan summa yoʻq — toʻlovchi uni toʻlov paytida oʻzi kiritadi (xayriya va choychaqa). amount bilan birga ishlatilmaydi
descriptionstringyoʻq1024 belgigacha, toʻlovchiga koʻrsatiladi
hidden_messagestringyoʻq2048 belgigacha, toʻlovchiga faqat toʻlovdan keyin ochiladi
payloadstringyoʻq4096 belgigacha oʻz maʼlumotingiz; invoysda va webhookda oʻzgarishsiz qaytariladi
allow_commentsbooleanyoʻqtoʻlovchiga izoh qoldirishga ruxsat berish (standart true)
allow_anonymousbooleanyoʻqtoʻlovchiga oʻzini yashirishga ruxsat berish (standart true)
paid_btn_namestringyoʻqtoʻlovdan keyingi tugma: viewItem, openChannel, openBot yoki callback
paid_btn_urlstringyoʻqtugmaning http(s) manzili — paid_btn_name belgilanganda majburiy
swap_tostringyoʻqqabul qilingan toʻlovlarni shu aktivga avtomatik almashtirish. Imkon qadar bajariladi: toʻlov paytida almashtirish oʻtmasa, toʻlov baribir muvaffaqiyatli boʻladi, faqat almashtirilmagan holda
expires_inintegeryoʻqinvoys muddati tugagunga qadar soniyalar, 2678400 gacha (31 kun); koʻrsatilmasa yoki 0 — hech qachon
rate_lock_secondsintegeryoʻqkengaytma, faqat fiat rejimida: yaratish paytida konvertatsiya kurslarini shu oyna uchun muzlatadi (pastga qarang)

Natija — va invoice_paid webhookining maʼlumotlari — bu invoys obyekti. Uning asosiy maydonlari:

  • Identifikator va holat: invoice_id, hash (pay_url ichidagi ochiq id), status (active / paid / expired), pay_url — toʻlovchiga yuboradigan t.me havolangiz (bot_invoice_url, mini_app_invoice_url, web_app_invoice_url — uning muqobil nomlari).
  • Summalar: amount (nominal qiymat — fiat invoysda fiat birliklari, aks holda kripto; erkin summali invoys toʻlanmaguncha null), amount_minor, hamda toʻlangan fiat invoyslarda paid_asset / paid_amount / paid_fiat_rate — aslida undirilgan kripto va ishlatilgan kurs.
  • Komissiya: fee_asset / fee_amount, toʻlov paytida qayd etiladi — buxgalteriyangiz uchun asosiy raqam (fee va usd_rate — eskirgan Crypto Bot muqobillari). Qarang: komissiyalar va limitlar.
  • Toʻlovchi: paid_by_user_id (toʻlovchi anonimlikni tanlaganda null), paid_anonymously, comment.
  • Qaytarishlar (kengaytma): refunded_amount / refunded_minor (jamlanma) va refunded_at — invoys toʻliq qaytarilgach qoʻyiladi.
  • Kurs qulfi (kengaytma): rate_lock_until va rate_lock_rates — aktivlar boʻyicha qayd etilgan kurslar; qulf soʻralmagan boʻlsa null.
  • Yaratilgandagi holat: description, hidden_message, payload, paid_btn_name / paid_btn_url, expiration_date (expires_at — muqobil nomi), almashtirish maydonlari (swap_to, is_swapped, swapped_to, swapped_rate, swapped_output, …).

Xatolar: 400 invalid_currency (aktiv va fiat aralashtirib yuborilgan), 400 invalid_amount, 404 unknown_asset, 400 unsupported_fiat, 400 paid_btn_url_required, kurs qulfi soʻralganda esa 400 rate_lock_fiat_only, 409 ratelock_disabled, 409 rate_unavailable (qabul qilinadigan aktiv uchun yangi kurs yoʻq — qayta urinib koʻring).

Invoyslar qanday toʻlanadi

Toʻlovchi Mini App ichida hamyon balansidan toʻlaydi — bir zumda, tarmoq komissiyasisiz. Toʻlovchi invoysni tashqi hamyondan ham moliyalashtirishi mumkin: ilova unga toʻldirish manzilini koʻrsatadi, uning oʻtkazmasi oʻz hamyoniga tushadi va kelib tushishi bilan invoys avtomatik toʻlanadi. Ikkala holda ham siz bir xil narsani koʻrasiz: oddiy paid invoys va invoice_paid webhooki — qayta ishlash uchun qoʻshimcha parametr yoki maydon yoʻq.

Fiat invoysda kripto summasi toʻlov paytida hisoblanadi va sizning foydangizga yaxlitlanadi, shuning uchun siz hech qachon fiatdagi nominaldan kam olmaysiz. Yangi kurs boʻlmasa, toʻlov eskirgan kurs boʻyicha oʻtib ketmaydi, balki toʻlovchi tomonida uziladi.

Fiat invoysda kursni qulflash

rate_lock_seconds uzatilsa, yaratish paytida har bir qabul qilinadigan aktivning joriy kursi qayd etiladi. Qulf amal qilar ekan, toʻlovchi aynan qayd etilgan summalarni koʻradi va toʻlov qayd etilgan kurs boʻyicha konvertatsiya qilinadi — oyna davomidagi kurs xatarini siz olasiz. Server oynani 60 soniya bilan platforma maksimumi (hozircha 15 daqiqa) orasida cheklaydi.

Qulf tugagach, invoys toʻlanadigan boʻlib qolaveradi va sokingina toʻlov paytidagi konvertatsiyaga qaytadi. Invoys kotirovka bilan birga tugashini istasangiz, expires_in qiymatini xuddi shunday qilib qoʻying.

getInvoices

GET /pay/api/getInvoicesread huquqi. Filtrlar: asset, fiat, invoice_ids (vergul bilan ajratilgan), status (active / paid / expiredexpired kengaytma; active muddati allaqachon oʻtgan invoyslarni qamrab olmaydi), hamda offset / count. {"items": [invoice, …]} qaytaradi, yangilari birinchi.

deleteInvoice

POST /pay/api/deleteInvoiceinvoices huquqi. Bitta parametr: invoice_id. Toʻlanmagan invoysni bekor qiladi va true qaytaradi. Xatolar: 404 invoice_not_found, 409 invoice_already_paid — toʻlangan invoysni oʻchirib boʻlmaydi, pul allaqachon koʻchgan.

refundInvoice

POST /pay/api/refundInvoicerefunds huquqi, daqiqasiga 30 ta limit. Crypto Bot ustidagi kengaytma: toʻlangan invoysning nominal summasini — yoki uning bir qismini — ilova balansingizdan uni toʻlagan odamga qaytaradi, anonim toʻlovchilarni ham qoʻshib va ular kimligini oshkor qilmasdan.

ParametrTuriMajburiyMaʼnosi
invoice_idintegerhatoʻlangan invoys
amountstringyoʻqqaytariladigan summa, invoysning aktivida. Koʻrsatilmasa — qaytarilmagan butun qoldiq. Qisman qaytarishlar nominalgacha jamlanadi
spend_idstringyoʻqidempotentlik kaliti — uni ishlating, shunda taymaut boʻyicha qayta urinish ikki marta qaytarish oʻrniga natijani takrorlaydi

Natija — jamlangan refunded_amount / refunded_minor bilan yangilangan invoys obyekti; refunded_at invoys toʻliq qaytarilgach qoʻyiladi. Holat paid boʻlib qoladi. Platforma komissiyasi qaytarilmaydi. Har bir qaytarish ixtiyoriy ravishda yoqiladigan refund_completed webhookini ishga tushiradi.

Xatolar: 404 invoice_not_found, 409 invoice_not_paid, 409 already_refunded (qaytarishga hech narsa qolmagan), 409 amount_too_big (qaytarilmagan qoldiqdan koʻp), 409 insufficient_funds, 400 invalid_amount, hamda spend_id juftligi — 409 idempotency_conflict / 409 idempotency_in_progress.