Счета контакта
Эти методы работают со счетами контакта — внутренним балансом в боте: бонусами, баллами, депозитом. Это те же счета, что пополняют и списывают блоки «Пополнить счет контакта» и «Списать со счета контакта» и что видны в карточке контакта на вкладке «Счета». Например, платёжная система после оплаты на сайте может начислить контакту бонусы, а бот — показать баланс функцией getBalance.
У контакта на каждую валюту свой счёт. Операции через API попадают в журнал счёта как «Пополнение через API» и «Списание через API».
Внимание
Счета контакта — внутренние балансы бота (бонусы, баллы, депозит), а не банковские счета: платформа не переводит по ним деньги и не является платёжным сервисом. Ведите в своей системе учёт операций, которые отправляете через API, — по нему можно сверить балансы.
Важно
Суммы передаются и возвращаются в минимальных единицах валюты — копейках, центах — целым числом.
15000на счёте вRUB— это 150 ₽. Для валют без дробной части, напримерJPY, единица одна. Одно пополнение или списание — не больше 10¹⁴ минимальных единиц (для рублей — триллион рублей); больше — ошибка422.
getContactAccounts
Возвращает все счета контакта.
https://watbot.ru/api/v1/getContactAccounts| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
contact_id |
целое | да | Номер контакта |
curl -G "https://watbot.ru/api/v1/getContactAccounts" \
-H "Authorization: Bearer ВАШ_КЛЮЧ" \
-H "Accept: application/json" \
--data-urlencode "contact_id=678"
{
"data": [
{
"id": 4521,
"currency": "RUB",
"amount": 15000,
"amount_note": "150 RUB",
"created_at": "2026-09-14T10:22:05+03:00",
"updated_at": "2026-10-01T18:40:12+03:00",
"blocked_at": null
}
]
}
| Поле | Описание |
|---|---|
id |
Номер счёта — его передают в остальные методы как account_id |
currency |
Код валюты по ISO 4217 |
amount |
Баланс в минимальных единицах валюты |
amount_note |
Баланс в обычных единицах с кодом валюты, для показа человеку |
created_at, updated_at |
Когда счёт открыт и когда менялся |
blocked_at |
Когда счёт заблокирован; null — не заблокирован. С заблокированного счёта нельзя списывать |
Счета идут в порядке открытия.
addContactAccount
Открывает контакту счёт в валюте. Тот же метод доступен под именем createContactAccount.
https://watbot.ru/api/v1/addContactAccount| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
contact_id |
целое | да | Номер контакта |
currency |
строка | да | Код валюты по ISO 4217 заглавными буквами: RUB, USD, EUR |
curl -X POST "https://watbot.ru/api/v1/addContactAccount" \
-H "Authorization: Bearer ВАШ_КЛЮЧ" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"contact_id": 678, "currency": "RUB"}'
{
"data": {
"id": 4521,
"currency": "RUB",
"amount": 0,
"amount_note": "0 RUB",
"created_at": "2026-10-03T12:00:00+03:00",
"updated_at": "2026-10-03T12:00:00+03:00",
"blocked_at": null
}
}
{
"message": "У контакта уже есть счёт в этой валюте.",
"code": "currency_exists",
"errors": {
"currency": [
"У контакта уже есть счёт в этой валюте."
]
}
}
Особенности:
- Если у контакта уже есть счёт в этой валюте —
422, ошибка в полеcurrency. - Открывать счёт заранее не обязательно для блоков сценария: блок «Пополнить счет контакта» откроет его сам. Для методов пополнения через API счёт нужен — они работают по
account_id.
deleteContactAccount
Удаляет счёт контакта.
https://watbot.ru/api/v1/deleteContactAccount| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
account_id |
целое | да | Номер счёта |
curl -X POST "https://watbot.ru/api/v1/deleteContactAccount" \
-H "Authorization: Bearer ВАШ_КЛЮЧ" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"account_id": 4521}'
{
"message": "Нельзя удалить счёт с балансом 150 RUB.",
"code": "account_not_empty",
"errors": {
"account_id": [
"Нельзя удалить счёт с балансом 150 RUB."
]
}
}
Ответ — код 204 без тела.
Удалить можно только пустой счёт. Если на счёте есть деньги — 422 с ошибкой в поле account_id; сначала спишите остаток.
addFundsToContactAccount
Пополняет счёт.
https://watbot.ru/api/v1/addFundsToContactAccount| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
account_id |
целое | да | Номер счёта |
amount |
целое | да | Сумма в минимальных единицах валюты, от 1 до 100 000 000 000 000 (10¹⁴) |
description |
строка | да | За что начисление, до 255 символов. Попадёт в журнал счёта |
curl -X POST "https://watbot.ru/api/v1/addFundsToContactAccount" \
-H "Authorization: Bearer ВАШ_КЛЮЧ" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"account_id": 4521, "amount": 15000, "description": "Бонус за заказ A-1024"}'
{
"data": {
"id": 4521,
"currency": "RUB",
"amount": 15000,
"amount_note": "150 RUB",
"created_at": "2026-10-03T12:00:00+03:00",
"updated_at": "2026-10-03T12:05:41+03:00",
"blocked_at": null
}
}
Заблокированный счёт пополнять можно.
withdrawFundsFromContactAccount
Списывает со счёта.
https://watbot.ru/api/v1/withdrawFundsFromContactAccount| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
account_id |
целое | да | Номер счёта |
amount |
целое | да | Сумма в минимальных единицах валюты, от 1 до 100 000 000 000 000 (10¹⁴) |
description |
строка | да | За что списание, до 255 символов. Попадёт в журнал счёта |
curl -X POST "https://watbot.ru/api/v1/withdrawFundsFromContactAccount" \
-H "Authorization: Bearer ВАШ_КЛЮЧ" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"account_id": 4521, "amount": 5000, "description": "Оплата доставки"}'
{
"data": {
"id": 4521,
"currency": "RUB",
"amount": 10000,
"amount_note": "100 RUB",
"created_at": "2026-10-03T12:00:00+03:00",
"updated_at": "2026-10-03T12:07:15+03:00",
"blocked_at": null
}
}
{
"message": "Недостаточно средств. Текущий баланс 100 RUB.",
"code": "insufficient_funds",
"errors": {
"account_id": [
"Недостаточно средств. Текущий баланс 100 RUB."
]
}
}
Списание не уводит счёт в минус, в том числе при одновременных запросах. Если списать нельзя, метод ничего не меняет и отвечает 422 с ошибкой в поле account_id:
code |
Причина |
|---|---|
account_blocked |
Счёт заблокирован — разблокируйте его в карточке контакта |
insufficient_funds |
На счёте меньше, чем amount; в тексте — текущий баланс |
Сначала проверяется блокировка, потом остаток.
Ошибки счетов
- Нет контакта или счёта с таким номером, контакт удалён или удалён его бот —
404. - Контакт или счёт из чужого бота —
403. - Ошибки самих методов —
422с полямиmessage,codeиerrors. Текст ошибки — на языке запроса (заголовокAccept-Language), поэтому в коде проверяйтеcode:
code |
Метод | Причина |
|---|---|---|
currency_exists |
addContactAccount |
Счёт в этой валюте уже есть |
account_not_empty |
deleteContactAccount |
На счёте остались деньги |
account_blocked |
withdrawFundsFromContactAccount |
Счёт заблокирован |
insufficient_funds |
withdrawFundsFromContactAccount |
Не хватает денег на счёте |
Общие ошибки API — в разделе Ошибки.