Документация API для разработчиков
Все запросы, параметры и примеры, необходимые для подключения платёжной системы CHECKOUT.UZ к вашей платформе.
Введение
To'lovlarni yaratish, balansni tekshirish va kassa statistikasini boshqarish uchun yagona API tizimi.
Авторизация
Каждый запрос должен содержать API-ключ в заголовке Authorization в формате Bearer token. Ключ API можно получить в настройках кассы. Если включён IP Whitelist, запрос должен отправляться только с разрешённого IP-адреса.
Authorization: Bearer YOUR_API_KEY
Ваш ключ сохраняется только в браузере, запрос отправляется напрямую на выбранный сервер.
Webhook
Когда платёж успешно подтверждён, система отправляет POST-запрос с указанными ниже данными на ваш webhook-адрес. Может использоваться два адреса: общий "Webhook URL" в настройках кассы и/или адрес, указанный в параметре webhook_url при вызове /create_payment — если настроены оба, данные отправляются на каждый отдельно.
Отправляемые данные (payload)
{
"webhook_type": "version_1_1",
"status": "success",
"event": "payment_confirmed",
"payment_system": "click",
"shop_id": 3,
"data": {
"order_id": 45180,
"amount": 5000,
"currency": "UZS",
"status": "paid",
"provider_details": {
"...": "provayderga xos xom (raw) maydonlar"
},
"perform_time": 1784393083895
},
"timestamp": 1784393083
}
Поля
| Имя | Тип | Описание |
|---|---|---|
| webhook_type | string | Версия формата webhook. |
| status | string | Всегда "success" (означает успешную отправку, а не статус платежа). |
| event | string | Тип события. Пока только "payment_confirmed". |
| payment_system | string | Ключ платёжной системы (например click, payme, plum). |
| shop_id | integer | Идентификатор кассы. |
| data.order_id | integer | ID инвойса, связанного с платежом (совпадает с _id в ответе /create_payment). |
| data.amount | number | Сумма платежа. |
| data.currency | string | Валюта. Пока всегда "UZS". |
| data.status | string | Всегда "paid". |
| data.provider_details | object | Необработанные (raw) данные от платёжной системы - структура зависит от системы. |
| data.perform_time | integer | Время выполнения платежа (в миллисекундах, Unix timestamp). |
| timestamp | integer | Время отправки webhook (в секундах, Unix timestamp). |
Ожидаемый ответ
Вашему серверу достаточно ответить кодом HTTP 200. Повторная отправка при неудаче пока не реализована.
/create_payment
Yangi to'lov xavolasini yaratish (Invoice)
Параметры
| Имя | Тип | Обязательно | Описание |
|---|---|---|---|
| amount | number | обязательно | To'lov summasi (so'mda). Minimal: 1000, maksimal: 10 000 000. |
| description | string | необязательно | Ixtiyoriy. Buyurtma haqida qisqacha izoh, to'lov sahifasida mijozga ko'rsatiladi. |
| webhook_url | string | необязательно | Ixtiyoriy. To'lov tasdiqlangach, natija shu manzilga ham yuboriladi (kassaning umumiy webhook manziliga qo'shimcha ravishda). |
| return_url | string | необязательно | Ixtiyoriy. To'lov muvaffaqiyatli yakunlangach, mijoz avtomatik shu manzilga qaytariladi (masalan, do'koningizning "buyurtma qabul qilindi" sahifasi). Ko'rsatilmasa, mijoz checkout.uz'ning o'z "to'landi" sahifasida qoladi. |
Пример кода
curl -X POST "https://checkout.uz/api/v1/create_payment" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"amount": 50000,
"description": "Buyurtma #12345",
"webhook_url": "https://mysite.uz/webhooks/checkout",
"return_url": "https://mysite.uz/order-received/12345"
}'
Пример ответа
{
"status": "success",
"payment": {
"_id": 152,
"_uuid": "550e8400-e29b-41d4-a716-446655440000",
"_url": "https://checkout.uz/pay/550e8400-e29b-41d4-a716-446655440000",
"_amount": 50000,
"_status": "pending",
"_pay_via": {
"click": "https://checkout.uz/pay/550e8400-e29b-41d4-a716-446655440000/click",
"payme": "https://checkout.uz/pay/550e8400-e29b-41d4-a716-446655440000/payme"
},
"_return_url": "https://mysite.uz/order-received/12345",
"_lifteme": {
"_second": 3600,
"_hour": 1
}
}
}
Попробовать
/status_payment
To'lov holatini ID yoki UUID orqali tekshirish
Параметры
| Имя | Тип | Обязательно | Описание |
|---|---|---|---|
| id | integer | необязательно | Invoice ID raqami |
| uuid | string | необязательно | To'lovning UUID kodi |
Пример кода
curl -X POST "https://checkout.uz/api/v1/status_payment" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"id": 0,
"uuid": ""
}'
Пример ответа
{
"status": "success",
"data": {
"id": 152,
"amount": 50000,
"status": "paid",
"created_at": "2026-01-31 10:00:00",
"paid_at": "2026-01-31 10:05:22"
}
}
Попробовать
/get_fiscal
Buyurtmaning fiskal chek ma'lumotini olish (order_id orqali)
Параметры
| Имя | Тип | Обязательно | Описание |
|---|---|---|---|
| order_id | integer | обязательно | Invoice (buyurtma) ID raqami |
Пример кода
curl -X POST "https://checkout.uz/api/v1/get_fiscal" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"order_id": 0
}'
Пример ответа
200 OK
Попробовать
/pay_via_card
Kartaga to'g'ridan-to'g'ri to'lov - 1-qadam (SMS kod yuborish)
Параметры
| Имя | Тип | Обязательно | Описание |
|---|---|---|---|
| order_id | integer | обязательно | create_payment javobidagi payment._id (to'lanishi kerak bo'lgan invoys ID'si). |
| card_number | string | обязательно | Karta raqami (16 xonali, bo'sh joysiz yoki bo'sh joy bilan - ikkalasi ham qabul qilinadi). |
| card_expiry | string | обязательно | Kartaning amal qilish muddati, OY/YIL (MM/YY) formatida. |
Пример кода
curl -X POST "https://checkout.uz/api/v1/pay_via_card" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"order_id": 12345,
"card_number": "8600123456789012",
"card_expiry": "12/28"
}'
Пример ответа
{
"status": "success",
"message": "Tasdiqlash kodi hamyoningiz ulangan telefonga yuborildi.",
"payment_token": "2Q85LemHnysZBQWSgubRX6hL7h8ZfuaXKP-ma2CNZlZVyBtCPwlGsMZTGUfiJWWdQmzVSB5a3Wfeuu..."
}
Попробовать
/confirm_card_payment
Kartaga to'g'ridan-to'g'ri to'lov - 2-qadam (SMS kodni tasdiqlash)
Параметры
| Имя | Тип | Обязательно | Описание |
|---|---|---|---|
| payment_token | string | обязательно | pay_via_card javobidan olingan token (5 daqiqa amal qiladi). |
| sms_code | string | обязательно | Kartaga bog'langan telefonga kelgan tasdiqlash kodi (odatda 6 xonali). |
Пример кода
curl -X POST "https://checkout.uz/api/v1/confirm_card_payment" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"payment_token": "2Q85LemHnysZBQWSgubRX6hL7h8ZfuaXKP-ma2CNZlZVyBtCPwlGsMZTGUfiJWWdQmzVSB5a3Wfeuu...",
"sms_code": "123456"
}'
Пример ответа
{
"status": "success",
"type": "success"
}
Попробовать
/get_balance
Kassa balansini barcha valyutalarda olish
Этот запрос не требует тела (body).
Пример кода
curl -X POST "https://checkout.uz/api/v1/get_balance" \ -H "Authorization: Bearer YOUR_API_KEY"
Пример ответа
{
"status": "success",
"balance": {
"uzs": 2500000,
"usd": 120,
"ton": 15.5
}
}
Попробовать
/get_history
Oxirgi tranzaksiyalar ro'yxati
Параметры
| Имя | Тип | Обязательно | Описание |
|---|---|---|---|
| limit | integer | необязательно | Ixtiyoriy. Qaytariladigan tranzaksiyalar soni. |
Пример кода
curl -X POST "https://checkout.uz/api/v1/get_history" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"limit": 10
}'
Пример ответа
{
"status": "success",
"data": [
{
"id": 152,
"amount": 50000,
"status": "paid",
"created_at": "2026-01-31 10:00:00",
"paid_at": "2026-01-31 10:05:22"
},
{
"id": 151,
"amount": 120000,
"status": "paid",
"created_at": "2026-01-30 18:22:11",
"paid_at": "2026-01-30 18:23:40"
}
]
}
Попробовать
/get_stats
Kassa bo'yicha umumiy statistika
Этот запрос не требует тела (body).
Пример кода
curl -X POST "https://checkout.uz/api/v1/get_stats" \ -H "Authorization: Bearer YOUR_API_KEY"
Пример ответа
{
"status": "success",
"stats": {
"total_orders": 450,
"total_amount": 12500000.5
}
}
Попробовать
/get_payment_methods
Kassada yoqilgan to'lov tizimlari ro'yxati (nomi, kaliti, logotipi)
Этот запрос не требует тела (body).
Пример кода
curl -X POST "https://checkout.uz/api/v1/get_payment_methods" \ -H "Authorization: Bearer YOUR_API_KEY"
Пример ответа
{
"status": "success",
"data": [
{
"key": "click",
"name": "Click - O'zbekiston",
"logo_light": "https://example.com/click-light.png",
"logo_dark": "https://example.com/click-dark.png"
},
{
"key": "payme",
"name": "Payme - O'zbekiston",
"logo_light": "https://example.com/payme-light.png",
"logo_dark": "https://example.com/payme-dark.png"
}
]
}