API v2 haqida
Bu versiya hozircha ommaviy e'lon qilinmagan (beta). v1 to'liq ishlashda davom etadi va o'zgarmaydi - v2 shunchaki qo'shimcha imkoniyatlar (qaytarish, bekor qilish, webhook monitoring, scoped kalitlar, profil darajasidagi ma'lumot) taqdim etadi.
https://checkout.uz/api/v2
"Kassa kaliti" - kassa sozlamalaridagi API kalit (Authorization: Bearer). "Profil kaliti" - Profil sahifasidagi alohida kalit, hisob darajasidagi ma'lumot uchun.
Kalit brauzeringizda saqlanadi, serverga (bizga) yuborilmaydi - faqat to'g'ridan-to'g'ri so'rov uchun ishlatiladi.
To'lovlar
Ixtiyoriy expire_time (soniyada) qo'shish mumkin, standart 1 soat. Takroriy so'rovning oldini olish uchun "Idempotency-Key" sarlavhasi (header) qo'shish mumkin - shu kalit bilan 24 soat ichida qayta so'ralsa, yangisi ochilmaydi, eski invoys qaytariladi.
Parametrlar
amount
(number, Talab qilinadi)
expire_time
(number, Ixtiyoriy)
description
(string, Ixtiyoriy)
webhook_url
(string, Ixtiyoriy)
return_url
(string, Ixtiyoriy)
Javob namunasi
{
"status": "success",
"idempotent_replay": false,
"payment": {
"_id": 12345,
"_uuid": "78144b2f-95be-4c1a-9c2e-abcdef123456",
"_url": "https://checkout.uz/pay/78144b2f-95be-4c1a-9c2e-abcdef123456",
"_amount": 50000,
"_status": "pending",
"_pay_via": {
"payme": "https://checkout.uz/pay/78144b2f.../payme",
"click": "https://checkout.uz/pay/78144b2f.../click"
},
"_return_url": null,
"_lifteme": {
"_second": 86400,
"_hour": 24
}
}
}
Xatolik holatlari
400
amount chegaradan tashqarida YOKI expire_time 60-432000 oralig'ida emas
Javobda qo'shimcha "provider" (qaysi tizim orqali to'langani) va "description" maydonlari bor. id yoki uuid'dan bittasi yetarli.
Parametrlar
id
(number, Ixtiyoriy)
uuid
(string, Ixtiyoriy)
Javob namunasi
{
"status": "success",
"data": {
"id": 12345,
"amount": 50000,
"description": "Buyurtma #123",
"status": "paid",
"created_at": "2026-09-27 10:00:00",
"paid_at": "2026-09-27 10:05:12",
"provider": "payme"
}
}
Muvaffaqiyatli bo'lsa karta egasiga SMS-kod yuboriladi, javobdagi payment_token 5 daqiqa amal qiladi.
Parametrlar
order_id
(number, Talab qilinadi)
card_number
(string, Talab qilinadi)
card_expiry
(string, Talab qilinadi)
Javob namunasi
{
"status": "success",
"message": "Tasdiqlash kodi yuborildi",
"payment_token": "9f1c2e3a-...-payment"
}
pay_via_card'dan olingan payment_token va SMS kodni yuborib, to'lovni yakunlaydi.
Parametrlar
payment_token
(string, Talab qilinadi)
sms_code
(string, Talab qilinadi)
Javob namunasi
{
"status": "success",
"type": "success"
}
Qaytarish va bekor qilish
Faqat Plum, Payme yoki Click orqali to'langan, hali 22 soat o'tmagan to'lovlar uchun ishlaydi.
Parametrlar
order_id
(number, Talab qilinadi)
Javob namunasi
{
"status": "success",
"order_id": 12345,
"amount": 50000,
"provider": "click"
}
Xatolik holatlari
404
To'lov topilmadi yoki allaqachon qaytarilgan
409
22 soatlik oyna o'tib ketgan
502
Provayder qaytarishni rad etdi
Pul hali harakatlanmagan (pending) invoysni bekor qiladi, holatni 'canceled'ga o'zgartiradi.
Parametrlar
order_id
(number, Talab qilinadi)
Javob namunasi
{
"status": "success",
"order_id": 12345,
"order_status": "canceled"
}
Xatolik holatlari
404
Invoys topilmadi
409
Invoys 'pending' holatida emas
Hisobot
Valyuta kalitlari katta harfda qaytadi (masalan "UZS").
Parametr talab qilinmaydi
Javob namunasi
{
"status": "success",
"balance": {
"UZS": 125000
}
}
Sana/holat bo'yicha filtrlash va sahifalash qo'shilgan, javobda has_more keyingi sahifa bor-yo'qligini bildiradi.
Parametrlar
limit
(number, Ixtiyoriy)
offset
(number, Ixtiyoriy)
status
(string, Ixtiyoriy)
pending
paid
canceled
reversed
date_from
(string, Ixtiyoriy)
date_to
(string, Ixtiyoriy)
Javob namunasi
{
"status": "success",
"has_more": true,
"data": [
{
"id": 12345,
"uuid": "78144b2f-95be-4c1a-9c2e-abcdef123456",
"amount": 50000,
"description": "Buyurtma #123",
"status": "paid",
"created_at": "2026-09-27 10:00:00",
"paid_at": "2026-09-27 10:05:12",
"webhook_url": null,
"return_url": null,
"expire_seconds": 3600
}
]
}
Sana oralig'i bo'yicha filtrlash mumkin, javobda by_provider (tizim bo'yicha taqsimot) va unattributed_amount bor.
Parametrlar
date_from
(string, Ixtiyoriy)
date_to
(string, Ixtiyoriy)
Javob namunasi
{
"status": "success",
"stats": {
"total_orders": 42,
"total_amount": 2500000,
"by_provider": {
"click": {
"count": 15,
"amount": 900000
},
"payme": {
"count": 20,
"amount": 1300000
},
"plum": {
"count": 7,
"amount": 300000
}
},
"unattributed_amount": 0
}
}
Har bir usul uchun min/max summa va fiskal chek qo'llab-quvvatlanishi (fiscal_supported) ko'rsatiladi.
Parametr talab qilinmaydi
Javob namunasi
{
"status": "success",
"data": [
{
"key": "click",
"name": "Click - O'zbekiston",
"logo_light": "https://...click-light.png",
"logo_dark": "https://...click-dark.png",
"min_amount": 1000,
"max_amount": 10000000,
"fiscal_supported": true
},
{
"key": "paynet",
"name": "Paynet - O'zbekiston",
"logo_light": "",
"logo_dark": "",
"min_amount": 1000,
"max_amount": 1000000,
"fiscal_supported": false
}
]
}
Pul yechish
Kassa api_key yoki profil profile_api_key bilan ishlaydi.
Parametrlar
currency
(string, Ixtiyoriy)
Javob namunasi
{
"status": "success",
"data": [
{
"id": 1,
"method_name": "Bank karta (O'zbekiston)",
"currency": "UZS",
"min_amount": 40000,
"max_amount": 13000000,
"fee_percent": 7.5,
"fields": [
{
"name": "card_number",
"label": "Karta raqami",
"placeholder": "8600 ..."
},
{
"name": "card_name",
"label": "Karta egasi",
"placeholder": "F.I.Sh"
}
]
}
]
}
Pul yechish so'rovidan oldin karta egasini alohida tekshirish imkonini beradi. Faqat profil kaliti bilan ishlaydi.
Parametrlar
card_number
(string, Talab qilinadi)
Javob namunasi
{
"status": "success",
"name": "ISMOIL KARIMOV"
}
Xatolik holatlari
400
card_number kiritilmagan
422
Karta topilmadi yoki identifikatsiya ma'lumotlariga mos kelmadi
Xavfsizlik uchun ikki kalit kerak: profil kaliti (header) va kassaning o'z api_key'i (shop_token, tanada). Balans darhol ayiriladi, so'rov admin tasdig'ini kutadi.
Parametrlar
shop_id
(number, Talab qilinadi)
method_id
(number, Talab qilinadi)
shop_token
(string, Talab qilinadi)
amount
(number, Talab qilinadi)
currency
(string, Talab qilinadi)
fields
(object, Talab qilinadi)
Javob namunasi
{
"status": "success",
"message": "Ariza qabul qilindi",
"withdrawal_id": 546
}
Xatolik holatlari
400
Majburiy maydon yo'q yoki miqdor min/max dan tashqarida
403
shop_id bu profilga tegishli emas YOKI shop_token noto'g'ri
404
Usul topilmadi yoki valyuta mos kelmadi
422
Karta egasining ismi identifikatsiya ma'lumotlariga mos kelmadi
429
So'nggi 1 soat ichida xuddi shu summa+valyutada ariza yuborilgan
Faqat kassa api_key'i bilan ishlaydi, natija shu kassaning o'z arizalari bilan cheklanadi.
Parametrlar
limit
(number, Ixtiyoriy)
offset
(number, Ixtiyoriy)
status
(string, Ixtiyoriy)
Ariza olingan
Tasdiqlandi
Bekor qilindi
date_from
(string, Ixtiyoriy)
date_to
(string, Ixtiyoriy)
Javob namunasi
{
"status": "success",
"has_more": false,
"data": [
{
"id": 546,
"amount": 100000,
"currency": "UZS",
"status": "Ariza olingan",
"method_id": 1,
"fields": {
"card_number": "8600123412345678",
"card_name": "ISMOIL KARIMOV"
},
"created_at": "2026-10-01 10:00:00"
}
]
}
Fiscal chek
Hozircha faqat Payme va Click orqali to'langan invoyslar uchun ishlaydi.
Parametrlar
order_id
(number, Talab qilinadi)
Javob namunasi
{
"status": "success",
"fiscal_url": "https://..."
}
Xatolik holatlari
501
Bu to'lov tizimi uchun fiscal chek hali qo'llab-quvvatlanmaydi
Profil (hisob darajasida)
Kassa api_key'i EMAS - Profil sahifasidagi ALOHIDA profile_api_key bilan ishlaydi. Faqat o'qish, moliyaviy amal yo'q.
Parametr talab qilinmaydi
Javob namunasi
{
"status": "success",
"id": 5,
"login": "otabekhde",
"email": "user@example.com",
"email_verified": true
}
Profil kalitiga tegishli barcha kassalarning asosiy ma'lumotini qaytaradi.
Parametr talab qilinmaydi
Javob namunasi
{
"status": "success",
"count": 2,
"shops": [
{
"id": 3,
"shop_name": "CHECKOUT.UZ",
"status": "Faol",
"balance_uzs": 9889
}
]
}
Har bir kassa uchun alohida so'rov yubormasdan, barcha kassalar bo'yicha birlashtirilgan statistikani qaytaradi.
Parametrlar
date_from
(string, Ixtiyoriy)
date_to
(string, Ixtiyoriy)
Javob namunasi
{
"status": "success",
"stats": {
"total_orders": 1109,
"total_amount": 3727845,
"by_provider": {
"click": {
"count": 114,
"amount": 1122149
},
"payme": {
"count": 99,
"amount": 2014529
}
},
"unattributed_amount": 25000,
"by_shop": [
{
"shop_id": 59,
"shop_name": "LiveSMSBot",
"total_orders": 659,
"total_amount": 3378000
},
{
"shop_id": 3,
"shop_name": "CHECKOUT.UZ",
"total_orders": 376,
"total_amount": 165345
}
]
}
}