Build on ODU API

Единый платёжный API для Узбекистана: Uzcard и Humo - всё через один эндпоинт. Подключение за 15 минут, автоматическое формирование фискальных чеков (ФЧ), PCI DSS Level 1 из коробки.

42ms

Avg Latency

99.98%

Uptime SLA

2

Платёжные системы

v1

Stable REST API

Полная документация
Почему ODU

Всё что нужно - из коробки

Не нужно собирать инфраструктуру по частям. ODU даёт готовый стек для приёма платежей в Узбекистане.

Все карты Узбекистана

Uzcard и Humo - через один API. Без отдельных договоров с банками.

currency: 'UZS'

Подписки и рекуррент

Автоматическое списание, retry при ошибке, webhook на каждое событие.

POST /subscriptions

ОФД-чек автоматом

Один параметр - и фискальный чек уходит в ГНИ через ОФД. Полная легальность.

fiscal: true

PCI DSS Ready

Данные карты никогда не касаются ваших серверов. Токенизация и HMAC из коробки.

PCI DSS Level 1

API First

RESTful API с версионированием и idempotency keys. Предсказуемый интерфейс для production.

Security

TLS 1.3 · HMAC Webhooks · Токенизация. Данные карты не касаются ваших серверов.

Scalable

10k+ RPS · Горизонтальное масштабирование · Автоматический failover без потери транзакций.

Reliable

Auto retry · Idempotency keys · Webhook retry с экспоненциальной задержкой.

Quickstart

Первый платёж за 5 минут

Четыре шага - и вы принимаете реальные платежи.

Зарегистрируйтесь

Developer Portal - только email и название. 2 минуты.

Получите API-ключ

Test-ключ сразу - бесплатно, без лимитов.

Установите SDK

npm, pip или composer - или чистый REST без SDK.

Запустите платёж

Один вызов - пользователь на странице оплаты.

Готовы начать?

Зарегистрируйтесь в Developer Portal и получите тестовый ключ прямо сейчас. Бесплатно.

Пошаговый гайд
Transaction Lifecycle

Как проходит платёж

Нажимайте на шаги или используйте кнопки - каждый этап объясняет что происходит на стороне ODU и вашего сервера.

происходит внутри.

Live API Playground

Тестовая среда - реальных списаний нет.

SDK & Code

Примеры кода

Установите SDK одной командой и принимайте платежи с нативной поддержкой UZS.

// npm install @odu/sdk

import { ODU } from '@odu/sdk';



const odu = new ODU({ apiKey: 'sk_test_...' });



const payment = await odu.payments.create({

  amount:    50000,           // в тийинах

  currency:  'UZS',

  orderId:   'order_1234',

  fiscal:    { enabled: true }, // ОФД-чек автоматически

  returnUrl: 'https://yoursite.com/success',

});



console.log(payment.paymentUrl);



app.post('/webhook', (req, res) => {

  const event = odu.webhooks.verify(req.body, req.headers['x-odu-signature']);

  if (event.type === 'payment.success') activateOrder(event.data.orderId);

  res.sendStatus(200);

});
API Reference

REST API

Base URL: https://api.odu.uz/v1  ·  Auth: Bearer Token

Платежи
POST/paymentsСоздать платёж
GET/payments/{id}Статус платежа
POST/payments/{id}/confirmПодтвердить двухстадийный
POST/payments/{id}/cancelОтменить платёж
GET/paymentsСписок с фильтрацией
Возвраты
POST/refundsСоздать возврат
GET/refunds/{id}Статус возврата
Подписки
POST/subscriptionsСоздать подписку
GET/subscriptions/{id}Информация о подписке
PUT/subscriptions/{id}Изменить подписку
POST/subscriptions/{id}/cancelОтменить подписку
Выплаты и баланс
POST/payoutsВыплата на карту
GET/balanceБаланс мерчанта
ОФД - Фискализация
POST/fiscal/receiptsСоздать ОФД-чек
GET/fiscal/receipts/{id}Статус чека в ГНИ
Полное описание параметров в документации →
Webhooks

События в реальном времени

HMAC-SHA256 подписанные POST-запросы при каждом событии. Всегда проверяйте подпись.

payment.success

Платёж прошёл

Деньги зачислены. Активируйте заказ. Содержит transaction_id, amount, orderId.

payment.failed

Платёж отклонён

Недостаточно средств или антифрод. Содержит код и причину отказа.

payment.refunded

Возврат выполнен

Средства возвращены. Содержит refund_id и сумму возврата.

subscription.charged

Рекуррент успешен

Автосписание прошло. Содержит subscription_id и период.

subscription.failed

Ошибка рекуррента

Автосписание не прошло. Система повторит по retry-настройкам.

fiscal.receipt_created

Фискальный чек создан

Чек передан в ГНИ. Содержит receipt_id и QR-код для верификации.

// Верификация HMAC-подписи - обязательно в production

const crypto = require('crypto');

function verifyWebhook(body, sig, secret) {

  const expected = crypto.createHmac('sha256', secret)

    .update(JSON.stringify(body)).digest('hex');

  return crypto.timingSafeEqual(Buffer.from(sig), Buffer.from(expected));

}
Подробнее о webhook-ах в документации →
Безопасность

Защита на каждом уровне

ODU соответствует PCI DSS Level 1. Данные карты никогда не попадают на ваши серверы.

TLS 1.3 Only

Все запросы только по HTTPS. Устаревшие протоколы заблокированы на уровне инфраструктуры.

API Keys + HMAC

Bearer Token + HMAC-SHA256 подпись каждого webhook. Двойная проверка подлинности.

Idempotency Keys

Защита от дублирования платежей при сетевых ошибках. Один ключ - один платёж.

Tokenization

Номер карты никогда не хранится. Только токен - уникальный для каждого мерчанта.

AntiFraud

ML-модель анализирует каждую транзакцию: velocity checks, device fingerprinting, IP scoring.

Безопасность и токенизация

Используя ODU SDK, вы автоматически выходите из PCI DSS scope. Карточные данные - только у нас.

Лимиты

Производительность

Горизонтальное масштабирование без изменений на вашей стороне.

<80ms
Avg Response
P99 latency < 200ms
10K+
RPS на аккаунт
Burst до 50K RPS
99.98%
SLA Uptime
99.99% для Enterprise
v1
API Version
Changelog + deprecation
Готовность

Чеклист интеграции

Пройдите все пункты перед выходом в production. Нажимайте чтобы отметить выполненные.

Прогресс: 0 / 8
Документация

Углубитесь в детали

Полная техническая документация с примерами кода, описанием параметров и пошаговыми гайдами.

Quickstart

Первый платёж за 5 минут

Аутентификация

API Keys и HMAC-подписи

Создание платежа

Параметры и примеры

Webhooks

События и верификация

Подписки

Рекуррентные платежи

Ошибки

Коды и обработка

Открыть полную документацию