КАСТОДИ · ПРОЦЕСС ИНТЕГРАЦИИ

Ваш API записывает.
Ваша панель читает.

Создайте пользователя кастоди для каждого пользователя вашего приложения. Он получает постоянные адреса пополнения, каждое пополнение зачисляется на его баланс, а вы следите за всем в личном кабинете.

СОЗДАНИЕ ТОЛЬКО ЧЕРЕЗ API · ПАНЕЛЬ ТОЛЬКО ДЛЯ ПРОСМОТРА

Один пользователь кастоди на каждого пользователя приложения

Ваше приложение создаёт пользователей кастоди со своим ID пользователя (external_id) и сохраняет полученный id. У каждого пользователя кастоди есть постоянные адреса пополнения и собственный баланс по каждой монете внутри вашего шлюза. Личный кабинет показывает их, но не создаёт: это делается через API.

POST · /custody/users

1. Создайте пользователя

Отправьте ID пользователя и, при желании, имя, email и metadata. Повторный вызов с тем же external_id вернёт того же пользователя, поэтому повтор безопасен.

curl https://coino.live/api/v2/custody/users \
  -H "Authorization: Bearer ck_live_..." \
  -H "Content-Type: application/json" \
  -d '{"external_id": "customer_1001", "name": "Sara", "email": "[email protected]"}'
GET · /custody/users/{id}

2. Покажите пользователю адреса пополнения

Ответ содержит адреса пользователя, монеты и сети, которые принимает каждый из них, и его балансы. Адреса никогда не меняются, поэтому приложение может показывать их постоянно, например на странице «Пополнить».

{"data": {
  "id": "01m6…", "external_id": "customer_1001", "status": "active",
  "addresses": [{"address": "TQ5x…", "networks": ["tron"], "assets": ["usdt-tron", "trx-tron"]}, …],
  "balances": [{"asset": "usdt-tron", "balance": "125.5"}]
}}
GET · /custody/users/{id}/deposits

3. Пополнения зачисляются автоматически

Когда пользователь отправляет монеты на один из своих адресов, мы отправляем вебхук custody.deposit.detected, а после подтверждения и зачисления на баланс — custody.deposit.credited. Зачисленные пополнения также можно получить списком в любой момент, начиная с новых.

Зачисляйте средства пользователю в своём приложении по событию custody.deposit.credited и используйте id пополнения, чтобы никогда не зачислить одно пополнение дважды.

POST · /custody/users/{id}/transfers

4. Переводите балансы на основной баланс

Баланс пользователя кастоди принадлежит этому пользователю внутри вашего шлюза. Переведите его на основной баланс через API (полностью или частично), кнопкой на странице пользователя в личном кабинете или автоматически при каждом зачислении с помощью настройки шлюза. Выводы оплачиваются с основного баланса.

Обработка статусов

Статус в панелиЗначениеДоступный баланс
ПодтверждаетсяПополнение замечено в блокчейне и ожидает подтверждений.Без изменений
ЗачисленПополнение подтверждено и зачислено на баланс пользователя (за вычетом комиссий).Увеличивается на зачисленную сумму
Задержан на проверкуНаша команда проверяет пополнение перед зачислением.Без изменений

Пополнение зачисляется ровно один раз, даже если вебхук доставлен дважды.

Подробнее о сервисе кастоди