CHECKOUT.UZ API v2
v1 hujjatlarga qaytish

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.

Asosiy manzil 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)
To'lov summasi (so'mda). Minimal 1000, maksimal 10 000 000.
expire_time (number, Ixtiyoriy)
Invoys qancha sekunddan keyin avtomatik bekor bo'lishi. Berilmasa - 3600 (1 soat). Minimal 60, maksimal 432000 (5 kun).
description (string, Ixtiyoriy)
Buyurtma haqida qisqacha izoh.
webhook_url (string, Ixtiyoriy)
Shu invoys uchun qo'shimcha webhook manzili - to'lov tasdiqlanganda, muddati tuganda yoki bekor qilinganda xabar yuboriladi.
return_url (string, Ixtiyoriy)
To'lovdan keyin mijoz qaytariladigan manzil.

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
Sinab ko'rish


                                                    

                                                    
                                                

Javobda qo'shimcha "provider" (qaysi tizim orqali to'langani) va "description" maydonlari bor. id yoki uuid'dan bittasi yetarli.

Parametrlar

id (number, Ixtiyoriy)
Invoys ID (create_payment javobidagi payment._id). uuid berilmasa shart.
uuid (string, Ixtiyoriy)
Invoys UUID (pay_token, payment._uuid). id berilmasa shart.

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"
    }
}
Sinab ko'rish


                                                    

                                                    
                                                

Muvaffaqiyatli bo'lsa karta egasiga SMS-kod yuboriladi, javobdagi payment_token 5 daqiqa amal qiladi.

Parametrlar

order_id (number, Talab qilinadi)
Invoys ID.
card_number (string, Talab qilinadi)
Karta raqami (16 xonali).
card_expiry (string, Talab qilinadi)
Kartaning amal qilish muddati, MM/YY formatida (masalan 12/28).

Javob namunasi

{
    "status": "success",
    "message": "Tasdiqlash kodi yuborildi",
    "payment_token": "9f1c2e3a-...-payment"
}
Sinab ko'rish


                                                    

                                                    
                                                

pay_via_card'dan olingan payment_token va SMS kodni yuborib, to'lovni yakunlaydi.

Parametrlar

payment_token (string, Talab qilinadi)
pay_via_card javobidagi payment_token (5 daqiqa amal qiladi).
sms_code (string, Talab qilinadi)
Karta egasiga SMS orqali kelgan tasdiqlash kodi.

Javob namunasi

{
    "status": "success",
    "type": "success"
}
Sinab ko'rish


                                                    

                                                    
                                                

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)
Qaytarilishi kerak bo'lgan invoys ID.

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
Sinab ko'rish


                                                    

                                                    
                                                

Pul hali harakatlanmagan (pending) invoysni bekor qiladi, holatni 'canceled'ga o'zgartiradi.

Parametrlar

order_id (number, Talab qilinadi)
Bekor qilinishi kerak bo'lgan invoys ID.

Javob namunasi

{
    "status": "success",
    "order_id": 12345,
    "order_status": "canceled"
}

Xatolik holatlari

404 Invoys topilmadi
409 Invoys 'pending' holatida emas
Sinab ko'rish


                                                    

                                                    
                                                

Hisobot

Valyuta kalitlari katta harfda qaytadi (masalan "UZS").

Parametr talab qilinmaydi

Javob namunasi

{
    "status": "success",
    "balance": {
        "UZS": 125000
    }
}
Sinab ko'rish


                                                    

                                                    
                                                

Sana/holat bo'yicha filtrlash va sahifalash qo'shilgan, javobda has_more keyingi sahifa bor-yo'qligini bildiradi.

Parametrlar

limit (number, Ixtiyoriy)
Nechta yozuv qaytarilishi (standart 10, maksimal 200).
offset (number, Ixtiyoriy)
Nechta yozuvdan boshlab qaytarilishi (sahifalash uchun, standart 0).
status (string, Ixtiyoriy)
Faqat shu holatdagi invoyslar.
pending paid canceled reversed
date_from (string, Ixtiyoriy)
Shu sanadan (YYYY-MM-DD yoki YYYY-MM-DD HH:mm:ss) keyin yaratilganlar.
date_to (string, Ixtiyoriy)
Shu sanagacha yaratilganlar.

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
        }
    ]
}
Sinab ko'rish


                                                    

                                                    
                                                

Sana oralig'i bo'yicha filtrlash mumkin, javobda by_provider (tizim bo'yicha taqsimot) va unattributed_amount bor.

Parametrlar

date_from (string, Ixtiyoriy)
Shu sanadan (YYYY-MM-DD yoki YYYY-MM-DD HH:mm:ss) keyin yaratilganlar.
date_to (string, Ixtiyoriy)
Shu sanagacha yaratilganlar.

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
    }
}
Sinab ko'rish


                                                    

                                                    
                                                

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
        }
    ]
}
Sinab ko'rish


                                                    

                                                    
                                                

Pul yechish

Kassa api_key yoki profil profile_api_key bilan ishlaydi.

Parametrlar

currency (string, Ixtiyoriy)
Faqat shu valyutadagi usullar (masalan 'UZS'). Berilmasa - barcha faol usullar.

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"
                }
            ]
        }
    ]
}
Sinab ko'rish


                                                    

                                                    
                                                

Pul yechish so'rovidan oldin karta egasini alohida tekshirish imkonini beradi. Faqat profil kaliti bilan ishlaydi.

Parametrlar

card_number (string, Talab qilinadi)
Tekshiriladigan karta raqami.

Javob namunasi

{
    "status": "success",
    "name": "ISMOIL KARIMOV"
}

Xatolik holatlari

400 card_number kiritilmagan
422 Karta topilmadi yoki identifikatsiya ma'lumotlariga mos kelmadi
Sinab ko'rish


                                                    

                                                    
                                                

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)
Qaysi kassadan yechish - shu profilga tegishli bo'lishi shart.
method_id (number, Talab qilinadi)
get_withdrawal_methods javobidagi usul ID.
shop_token (string, Talab qilinadi)
shop_id'dagi kassaning o'z API kaliti (2-bosqich tasdiqlash uchun).
amount (number, Talab qilinadi)
Yechish miqdori (usulning min/max oralig'ida).
currency (string, Talab qilinadi)
Masalan 'UZS'. Usulning valyutasiga mos bo'lishi shart.
fields (object, Talab qilinadi)
get_withdrawal_methods'dagi shu usul uchun e'lon qilingan BARCHA maydonlar.

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
Sinab ko'rish


                                                    

                                                    
                                                

Faqat kassa api_key'i bilan ishlaydi, natija shu kassaning o'z arizalari bilan cheklanadi.

Parametrlar

limit (number, Ixtiyoriy)
Nechta yozuv qaytarilishi (standart 10, maksimal 200).
offset (number, Ixtiyoriy)
Nechta yozuvdan boshlab qaytarilishi (sahifalash uchun, standart 0).
status (string, Ixtiyoriy)
Faqat shu holatdagi arizalar.
Ariza olingan Tasdiqlandi Bekor qilindi
date_from (string, Ixtiyoriy)
Shu sanadan (YYYY-MM-DD yoki YYYY-MM-DD HH:mm:ss) keyin yuborilganlar.
date_to (string, Ixtiyoriy)
Shu sanagacha yuborilganlar.

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"
        }
    ]
}
Sinab ko'rish


                                                    

                                                    
                                                

Fiscal chek

Hozircha faqat Payme va Click orqali to'langan invoyslar uchun ishlaydi.

Parametrlar

order_id (number, Talab qilinadi)
Invoys ID.

Javob namunasi

{
    "status": "success",
    "fiscal_url": "https://..."
}

Xatolik holatlari

501 Bu to'lov tizimi uchun fiscal chek hali qo'llab-quvvatlanmaydi
Sinab ko'rish


                                                    

                                                    
                                                

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
}
Sinab ko'rish


                                                    

                                                    
                                                

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
        }
    ]
}
Sinab ko'rish


                                                    

                                                    
                                                

Har bir kassa uchun alohida so'rov yubormasdan, barcha kassalar bo'yicha birlashtirilgan statistikani qaytaradi.

Parametrlar

date_from (string, Ixtiyoriy)
Shu sanadan (YYYY-MM-DD yoki YYYY-MM-DD HH:mm:ss) keyin yaratilganlar.
date_to (string, Ixtiyoriy)
Shu sanagacha yaratilganlar.

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
            }
        ]
    }
}
Sinab ko'rish