Единое руководство по Merchant API: от первого инвойса до сверки выплат. Начните с готовой страницы оплаты, затем подключите уведомления и автоматизацию на своём сервере.
Создайте проект в кабинете. Если проект ожидает активации, завершите её до интеграции.
В разделе «Интеграции» получите project_id, ключ API и секрет API. Храните секреты на сервере.
Создайте инвойс запросом ниже. Сохраните invoice_id и связь с вашим order_id.
Перенаправьте покупателя на invoice_url из ответа. Страница Bitcofy предложит доступные сети и активы.
Примите подписанное уведомление или проверьте инвойс через API. Выдавайте товар по подтверждённому результату, а не по возврату покупателя на ваш сайт.
amount — стоимость в USD или RUB, а не количество USDT. Покупатель отправляет криптовалюту в сумме выбранной платёжной опции. Не рассчитывайте её самостоятельно из рекламного курса: используйте amount_crypto, комиссию и срок фиксации из API.
Повтор создания с тем же project_id и order_id возвращает существующий инвойс. Новые поля такого повтора не обновляют старый инвойс. Для нового заказа нужен новый order_id.
02 / GUIDE
Доступ и секреты
Базовый адрес: https://pay.bitcofy.pro. Пути справочника уже содержат /api/v1: не добавляйте его второй раз.
Операция
Что передать
Назначение
Публичная информация
Без ключа
Сети, курсы и возможности интеграции
Чтение данных проекта
X-API-Key или Authorization: Bearer <project_api_key>
Доступ только к своему проекту
Изменение данных проекта
Ключ API и X-API-Secret
Создание инвойсов, настройки, выплаты
Подписанная выплата или решение по заявке
Доступ на запись и signature, nonce, timestamp
Дополнительная подпись Ed25519
Вход в кабинет
Сессия пользователя
Не является ключом Merchant API
Ключ API имеет префикс bpk_, секрет API — bps_, секрет подписи webhook — bwhsec_live_. Это разные значения. Приватный ключ Ed25519 остаётся у вас; в API регистрируется публичный ключ в Base64.
Заголовки HTTP не зависят от регистра. Названия полей JSON, сетей и активов используйте в точности как в ответах API. X-API-Secret не заменяет ключ API. Для POST/PUT с JSON передавайте Content-Type: application/json.
03 / GUIDE
Жизненный цикл инвойса
Состояние инвойса, подтверждения перевода и доступный для вывода баланс — разные сущности. Отслеживайте их отдельно.
Статус
Что означает
Как поступить
created
Инвойс создан, платёжное окно ещё не запущено
Показать ссылку на оплату
waiting_payment
Выбрана платёжная опция и запущено окно оплаты
Ожидать перевод до срока сессии
pending
Обнаружен перевод, обработка не завершена
Дождаться подтверждений и окончательного решения
paid
Оплата принята
Обработать заказ один раз
paid_over
Принята оплата с переплатой
Учесть фактически зачисленную сумму
partially_paid, wrong_amount, additional_payment
Требуется обработка неполной или отличающейся суммы
Сверить платежи и разрешение инвойса; не считать полной оплатой автоматически
late_payment
Зафиксирована поздняя оплата
Проверить платежи и результат зачисления по своей политике заказа
expired, cancel
Окно истекло или инвойс отменён
Не выдавать заказ только на основании перехода по ссылке
Ориентируйтесь на required_confirmations в выбранной опции и confirmations/credited в платежах. Число подтверждений зависит от сети и конфигурации; не фиксируйте одно значение для всех сетей. Сам факт появления транзакции или её хеша не означает зачисление.
Состояние created не следует трактовать как запущенный таймер оплаты: срок платёжной сессии начинается после выбора сети и актива. При активной сессии маршрут и курс фиксируются на её срок. Проверяйте поля сессии и текущий ответ API.
04 / GUIDE
Готовая страница оплаты и доступные активы
Рекомендуемый путь — открыть invoice_url. Публичные методы by-hash обслуживают готовую страницу оплаты; это отдельный сценарий, а не замена защищённому Merchant API.
Для POST …/payment-session сначала откройте готовую страницу инвойса в том же браузере: сервер проверяет cookie доступа и ограничивает частоту запросов. Одного invoice_hash для запуска сессии недостаточно. Ответ 403 с просьбой открыть страницу означает отсутствие действующего доступа.
Список сетей /api/v1/public/networks описывает возможности платформы. Для конкретного инвойса используйте его payment_options: доступность зависит от настроек проекта и администратора и может измениться. Не предлагайте покупателю отключённую опцию из закешированного списка.
Адрес и сумма берутся из одной выбранной пары network + asset. Совпадающий символ токена в разных сетях не означает взаимозаменяемость. success_url и cancel_url управляют переходом браузера, а не подтверждают оплату.
05 / GUIDE
Уведомления об операциях
Настройте HTTPS-адрес в кабинете или через POST /api/v1/projects/{project_id}/webhook/config. Отправьте тест через POST …/webhook/test. Состояние доставок доступно в GET …/webhook/events.
Сервер присылает JSON и заголовки X-Bitcofy-Event-Id, X-Bitcofy-Event-Type, X-Bitcofy-Timestamp, X-Bitcofy-Signature, X-Bitcofy-Retry-Count. Подпись — HMAC-SHA256 в hex, ключ — секрет webhook, сообщение — точная строка timestamp, точка и исходные байты тела. Не разбирайте и не сериализуйте JSON заново до проверки.
Проверьте подпись, допустимую давность timestamp и принадлежность события вашему проекту. Окно давности задайте в своей интеграции с учётом часов серверов.
Сохраните событие и дедуплицируйте по event_id атомарно с изменением заказа. Повторная доставка не должна повторно зачислять деньги или выдавать товар.
Ответьте любым 2xx после надёжного сохранения. Длительную обработку выполняйте в очереди.
Если события пришли не по порядку или состояние неоднозначно, запросите актуальный инвойс либо выплату через API.
На попытку доставки отводится 5 секунд. При ошибке выполняется до 10 попыток всего: интервалы 15, 30, 60, 120, 240 секунд, далее не более 300 секунд между попытками; фактический запуск зависит от очереди. После исчерпания попыток событие помечается недоставленным окончательно. Не полагайтесь на уведомления как на единственный способ сверки.
Основные события: invoice.created, invoice.status_changed, payout.created, payout.processing, payout.status_changed, payout.rejected, webhook.test. Для выплат возможны дополнительные события переходов; используйте event_type и текущий объект, а не порядок доставки.
06 / GUIDE
Выплаты и заявки
Выберите подходящий сценарий: прямая подписанная выплата через POST /api/v1/payouts или заявка POST /api/v1/projects/{project_id}/payout-requests с отдельным подтверждением/отклонением.
До отправки проверьте /balances, сеть, актив и адрес. Общий учётный баланс и available_for_withdrawal могут различаться: часть средств ещё ожидает сбора. Значения комиссии и доступности берите из ответов API, а не задавайте константами.
Для прямой выплаты amount включает комиссию: сумма получателю определяется после её вычета. Сверяйте gross_amount, fee_amount и net_amount в результате. Нельзя считать HTTP 200 доказательством завершённой отправки в сеть: выплата обрабатывается асинхронно.
Состояние
Значение
requested
Заявка ожидает решения
approved, rejected
Решение по заявке; подтверждение ещё не означает завершение выплаты
pending / provider_status=processing
Выплата обрабатывается
success / provider_status=completed
Успешное завершение
send_error / provider_status=failed
Ошибка отправки; сверить актуальный результат и возврат резерва
Сохраняйте request_id, payout_id, idempotency_key, tx_hash и итоговые флаги ответа. Для единой сверки используйте GET …/payouts/reconcile, передав ровно один из request_id, payout_id или idempotency_key.
07 / GUIDE
Подпись Ed25519
Создайте пару ключей на своём сервере и зарегистрируйте публичный ключ через POST …/security/payout-key. Подпись кодируется в Base64. Ключ и секрет API всё равно обязательны.
Сообщение прямой выплаты — UTF-8, поля соединяются \n, без перевода строки в конце:
Для подтверждения или отклонения заявки используется другое сообщение. В строке action передайте approve или reject. При подтверждении строка причины остаётся пустой:
timestamp должен отличаться от текущего времени сервера не более чем на 5 минут. Сервер нормализует его в UTC через Python isoformat(): например, 2026-09-29T12:00:00+00:00. Чтобы избежать различий Z/+00:00 и дробных секунд, отправляйте и подписывайте UTC-время без долей секунды с суффиксом +00:00. Для каждого нового подписанного действия генерируйте уникальный nonce.
Передавайте денежное amount строкой десятичного числа без экспоненты и подписывайте ту же строку. Не используйте числа с плавающей точкой. Пример сообщения, возвращённый сервером, показывает формат, но не заменяет сообщение вашей конкретной операции.
Примеры ниже подписывают уже собранное каноническое сообщение. private_key генератора API — 32-байтовый seed в Base64. Это не 64-байтовый расширенный ключ TweetNaCl/Go: преобразуйте seed, как показано ниже.
Найти по order_id или повторить создание с тем же order_id
Таймаут выплаты
Сначала запросить результат по тому же idempotency_key либо через reconcile
Выплата найдена
Продолжать наблюдать её состояние; не создавать новую
Новая подписанная попытка после сверки
Сохранить ключ логической операции, обновить timestamp и nonce, заново подписать
400, 401, 403, 422
Исправить параметры, доступ или подпись; слепой повтор не поможет
409 при выплате
Разобрать структурированную причину, доступный баланс и резерв
429 или временная недоступность
Увеличивать задержку с разбросом; учитывать Retry-After, если он присутствует
Не меняйте idempotency_key только потому, что ответ потерялся: это может создать вторую выплату. Для проверки состояния используйте чтение и webhook, а не частые повторные POST. При сетевой ошибке результат записи может быть неизвестен.
09 / GUIDE
Перед запуском
Проверьте привязку ключа к проекту, активацию проекта и доступные активы.
Пройдите успешную оплату, неполную сумму, истечение срока и позднюю оплату.
Проверьте подпись webhook на исходном теле, повтор события и неупорядоченную доставку.
Убедитесь, что возврат браузера не выдаёт заказ без подтверждения API.
Проверьте потерянный ответ создания, восстановление по идентификатору и защиту от повторной выплаты.
Для выплат проверьте комиссию, доступный баланс, Ed25519, timestamp и nonce.
Логируйте идентификаторы и ответы об ошибках, но не ключи API, секреты и приватные ключи.
10 / GUIDE
Документация для агентов
Достаточно передать агенту эту страницу: руководство и справочник уже присутствуют в HTML и не требуют JavaScript или входа.
Markdown на русском — руководство, параметры, ответы и ошибки всех публичных методов.
Начните с сценария интеграции, затем уточните поля и ответы конкретного метода. Примеры с YOUR_PROJECT_ID и демонстрационными значениями нужно заменить; они не являются рабочими реквизитами. Сети, комиссии и требуемые подтверждения получайте из API.
REFERENCE
Каждый запрос — по полочкам
Выберите метод. Параметры, успешный ответ и ошибки раскрываются отдельно. Примеры показывают формат; замените идентификаторы и подпишите реальные данные перед отправкой.
curl --request GET 'https://pay.bitcofy.pro/api/v1/health'
Успешный ответ
200 · application/json
Иллюстрация структуры: значения приведены для примера; фактическое состояние может отличаться.
Поле
Тип
Наличие
Значение и ограничения
status
string
Обязательно
Состояние объекта; значения и действия описаны в разделе соответствующего сценария.
app
string
Обязательно
App
json
{
"status": "ok",
"app": "string"
}
Ошибки и действия
Ошибки обработчика перечислены ниже. detail может зависеть от проверки и состояния; текст не является стабильным кодом ошибки. При 5xx результат записи может быть неизвестен — сначала сверьте операцию.
Ошибки обработчика перечислены ниже. detail может зависеть от проверки и состояния; текст не является стабильным кодом ошибки. При 5xx результат записи может быть неизвестен — сначала сверьте операцию.
Это реестр сетей. Доступность оплаты конкретного инвойса определяйте по его payment_options.
Параметры и пример запроса
Тело запроса не требуется.
bash
curl --request GET 'https://pay.bitcofy.pro/api/v1/public/networks'
Успешный ответ
200 · application/json
Иллюстрация структуры: значения приведены для примера; фактическое состояние может отличаться.
json
[
{
"example_key": "string"
}
]
Ошибки и действия
Ошибки обработчика перечислены ниже. detail может зависеть от проверки и состояния; текст не является стабильным кодом ошибки. При 5xx результат записи может быть неизвестен — сначала сверьте операцию.
Ошибки обработчика перечислены ниже. detail может зависеть от проверки и состояния; текст не является стабильным кодом ошибки. При 5xx результат записи может быть неизвестен — сначала сверьте операцию.
Идентификатор проекта; должен принадлежать ключу API.
order_id
string
Обязательно
Ваш идентификатор заказа. Повтор в том же проекте возвращает прежний инвойс.
amount
number / string
Обязательно
Сумма > 0: для инвойса в currency; для выплаты в единицах asset, включая комиссию. Передавайте десятичной строкой. >: 0; шаблон: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
currency
string
Обязательно
USD или RUB; валюта стоимости заказа, не криптоактив.
buy_type
string
Необязательно
package — оплата заказа; balance — пополнение с учётом фактической подтверждённой суммы после комиссии. по умолчанию: "package"; мин. длина: 1; макс. длина: 32
callback_url
string / null
Необязательно
Поле совместимости инвойса; не настраивает webhook проекта. Используйте /webhook/config.
success_url
string / null
Необязательно
Абсолютный HTTP(S) URL возврата после оплаты. Возврат не подтверждает зачисление.
cancel_url
string / null
Необязательно
Абсолютный HTTP(S) URL возврата при отмене.
customer_id
string / null
Необязательно
Необязательный идентификатор покупателя в вашей системе.
Ошибки обработчика перечислены ниже. detail может зависеть от проверки и состояния; текст не является стабильным кодом ошибки. При 5xx результат записи может быть неизвестен — сначала сверьте операцию.
HTTP
Что означает
Что делать
400
Некорректный запрос или состояние
Проверьте detail, параметры, подпись и текущее состояние. Не повторяйте неизменённый запрос.
401
Неверные реквизиты доступа
Проверьте ключ API, активность и секрет для записи.
403
Доступ запрещён
Проверьте принадлежность и активацию проекта; для сессии оплаты — cookie страницы инвойса.
404
Объект не найден
Проверьте идентификатор и проект.
422
Ошибка формата данных
detail содержит массив: loc — поле, msg — причина, type — код. Исправьте обязательные поля и типы.
423
Проект заблокирован
Проверьте активацию и ограничения проекта в кабинете. Повтор неизменённого запроса не поможет.
Обнаруженная транзакция ещё не равна зачислению. Проверяйте статус, confirmations, required_confirmations и credited там, где они присутствуют в ответе.
Ошибки обработчика перечислены ниже. detail может зависеть от проверки и состояния; текст не является стабильным кодом ошибки. При 5xx результат записи может быть неизвестен — сначала сверьте операцию.
HTTP
Что означает
Что делать
401
Неверные реквизиты доступа
Проверьте ключ API, активность и секрет для записи.
403
Доступ запрещён
Проверьте принадлежность и активацию проекта; для сессии оплаты — cookie страницы инвойса.
404
Объект не найден
Проверьте идентификатор и проект.
422
Ошибка формата данных
detail содержит массив: loc — поле, msg — причина, type — код. Исправьте обязательные поля и типы.
423
Проект заблокирован
Проверьте активацию и ограничения проекта в кабинете. Повтор неизменённого запроса не поможет.
Обнаруженная транзакция ещё не равна зачислению. Проверяйте статус, confirmations, required_confirmations и credited там, где они присутствуют в ответе.
curl --request GET 'https://pay.bitcofy.pro/api/v1/invoices/YOUR_INVOICE_ID/payments' \
--header "X-API-Key: $BITCOFY_API_KEY"
Успешный ответ
200 · application/json
Иллюстрация структуры: значения приведены для примера; фактическое состояние может отличаться.
Поле
Тип
Наличие
Значение и ограничения
invoice_id
string
Обязательно
Идентификатор инвойса из ответа создания.
invoice_status
string
Обязательно
Invoice Status
buy_type
string
Обязательно
package — оплата заказа; balance — пополнение с учётом фактической подтверждённой суммы после комиссии.
credited_total_amount
string
Необязательно
Credited Total Amount по умолчанию: "0"; шаблон: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
credited_fee_total
string
Необязательно
Credited Fee Total по умолчанию: "0"; шаблон: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
items
array<object>
Обязательно
Items
items[].transaction_id
string
Обязательно
Transaction Id
items[].invoice_id
string
Обязательно
Идентификатор инвойса из ответа создания.
items[].network
string
Обязательно
Код сети из /api/v1/public/networks. Для оплаты берите сеть из payment_options инвойса.
items[].asset
string
Обязательно
Код актива (например USDT). Он должен быть доступен в выбранной сети и проекте.
items[].tx_hash
string
Обязательно
Tx Hash
items[].logical_index
string
Обязательно
Logical Index
items[].address
string
Обязательно
Address
items[].amount
string
Обязательно
Сумма > 0: для инвойса в currency; для выплаты в единицах asset, включая комиссию. Передавайте десятичной строкой. шаблон: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
items[].confirmations
integer
Обязательно
Текущее количество подтверждений обнаруженной транзакции.
items[].block_number
integer / null
Необязательно
Block Number
items[].status
string
Обязательно
Состояние объекта; значения и действия описаны в разделе соответствующего сценария.
items[].buy_type
string
Обязательно
package — оплата заказа; balance — пополнение с учётом фактической подтверждённой суммы после комиссии.
items[].crediting_status
string
Обязательно
Crediting Status
items[].net_amount_after_fee
string
Необязательно
Net Amount After Fee по умолчанию: "0"; шаблон: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
items[].fee_amount
string
Необязательно
Fee Amount по умолчанию: "0"; шаблон: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
Ошибки обработчика перечислены ниже. detail может зависеть от проверки и состояния; текст не является стабильным кодом ошибки. При 5xx результат записи может быть неизвестен — сначала сверьте операцию.
HTTP
Что означает
Что делать
401
Неверные реквизиты доступа
Проверьте ключ API, активность и секрет для записи.
403
Доступ запрещён
Проверьте принадлежность и активацию проекта; для сессии оплаты — cookie страницы инвойса.
404
Объект не найден
Проверьте идентификатор и проект.
422
Ошибка формата данных
detail содержит массив: loc — поле, msg — причина, type — код. Исправьте обязательные поля и типы.
423
Проект заблокирован
Проверьте активацию и ограничения проекта в кабинете. Повтор неизменённого запроса не поможет.
Обнаруженная транзакция ещё не равна зачислению. Проверяйте статус, confirmations, required_confirmations и credited там, где они присутствуют в ответе.
Параметры и пример запроса
Поле
Тип
Наличие
Значение и ограничения
invoice_hash
path · string
Обязательно
Публичный идентификатор из ссылки оплаты. Не публикуйте ссылки чужих заказов.
Тело запроса не требуется.
bash
curl --request GET 'https://pay.bitcofy.pro/api/v1/public/invoices/by-hash/YOUR_INVOICE_HASH'
Успешный ответ
200 · application/json
Иллюстрация структуры: значения приведены для примера; фактическое состояние может отличаться.
Поле
Тип
Наличие
Значение и ограничения
invoice_id
string
Обязательно
Идентификатор инвойса из ответа создания.
invoice_hash
string
Обязательно
Публичный идентификатор из ссылки оплаты. Не публикуйте ссылки чужих заказов.
Ошибки обработчика перечислены ниже. detail может зависеть от проверки и состояния; текст не является стабильным кодом ошибки. При 5xx результат записи может быть неизвестен — сначала сверьте операцию.
HTTP
Что означает
Что делать
404
Объект не найден
Проверьте идентификатор и проект.
422
Ошибка формата данных
detail содержит массив: loc — поле, msg — причина, type — код. Исправьте обязательные поля и типы.
429
Слишком много запросов
Увеличьте интервал с небольшой случайной задержкой; учитывайте Retry-After, если он есть.
Ошибки обработчика перечислены ниже. detail может зависеть от проверки и состояния; текст не является стабильным кодом ошибки. При 5xx результат записи может быть неизвестен — сначала сверьте операцию.
HTTP
Что означает
Что делать
400
Некорректный запрос или состояние
Проверьте detail, параметры, подпись и текущее состояние. Не повторяйте неизменённый запрос.
403
Доступ запрещён
Проверьте принадлежность и активацию проекта; для сессии оплаты — cookie страницы инвойса.
404
Объект не найден
Проверьте идентификатор и проект.
422
Ошибка формата данных
detail содержит массив: loc — поле, msg — причина, type — код. Исправьте обязательные поля и типы.
429
Слишком много запросов
Увеличьте интервал с небольшой случайной задержкой; учитывайте Retry-After, если он есть.
Возможные пояснения detail
Too many public invoice requests
Open the hosted invoice page before starting a payment session
Обнаруженная транзакция ещё не равна зачислению. Проверяйте статус, confirmations, required_confirmations и credited там, где они присутствуют в ответе.
Параметры и пример запроса
Поле
Тип
Наличие
Значение и ограничения
invoice_hash
path · string
Обязательно
Публичный идентификатор из ссылки оплаты. Не публикуйте ссылки чужих заказов.
Тело запроса не требуется.
bash
curl --request GET 'https://pay.bitcofy.pro/api/v1/public/invoices/by-hash/YOUR_INVOICE_HASH/payments'
Успешный ответ
200 · application/json
Иллюстрация структуры: значения приведены для примера; фактическое состояние может отличаться.
Поле
Тип
Наличие
Значение и ограничения
invoice_id
string
Обязательно
Идентификатор инвойса из ответа создания.
invoice_status
string
Обязательно
Invoice Status
items
array<object>
Обязательно
Items
items[].network
string
Обязательно
Код сети из /api/v1/public/networks. Для оплаты берите сеть из payment_options инвойса.
items[].asset
string
Обязательно
Код актива (например USDT). Он должен быть доступен в выбранной сети и проекте.
items[].confirmations
integer
Обязательно
Текущее количество подтверждений обнаруженной транзакции.
items[].status
string
Обязательно
Состояние объекта; значения и действия описаны в разделе соответствующего сценария.
Ошибки обработчика перечислены ниже. detail может зависеть от проверки и состояния; текст не является стабильным кодом ошибки. При 5xx результат записи может быть неизвестен — сначала сверьте операцию.
HTTP
Что означает
Что делать
404
Объект не найден
Проверьте идентификатор и проект.
422
Ошибка формата данных
detail содержит массив: loc — поле, msg — причина, type — код. Исправьте обязательные поля и типы.
429
Слишком много запросов
Увеличьте интервал с небольшой случайной задержкой; учитывайте Retry-After, если он есть.
Обнаруженная транзакция ещё не равна зачислению. Проверяйте статус, confirmations, required_confirmations и credited там, где они присутствуют в ответе.
Параметры и пример запроса
Поле
Тип
Наличие
Значение и ограничения
project_id
path · string
Обязательно
Идентификатор проекта; должен принадлежать ключу API.
order_id
path · string
Обязательно
Ваш идентификатор заказа. Повтор в том же проекте возвращает прежний инвойс.
Ошибки обработчика перечислены ниже. detail может зависеть от проверки и состояния; текст не является стабильным кодом ошибки. При 5xx результат записи может быть неизвестен — сначала сверьте операцию.
HTTP
Что означает
Что делать
401
Неверные реквизиты доступа
Проверьте ключ API, активность и секрет для записи.
403
Доступ запрещён
Проверьте принадлежность и активацию проекта; для сессии оплаты — cookie страницы инвойса.
404
Объект не найден
Проверьте идентификатор и проект.
422
Ошибка формата данных
detail содержит массив: loc — поле, msg — причина, type — код. Исправьте обязательные поля и типы.
423
Проект заблокирован
Проверьте активацию и ограничения проекта в кабинете. Повтор неизменённого запроса не поможет.
Обнаруженная транзакция ещё не равна зачислению. Проверяйте статус, confirmations, required_confirmations и credited там, где они присутствуют в ответе.
curl --request GET 'https://pay.bitcofy.pro/api/v1/invoices/YOUR_INVOICE_ID/qr' \
--header "X-API-Key: $BITCOFY_API_KEY"
Успешный ответ
200 · image/svg+xml
Иллюстрация структуры: значения приведены для примера; фактическое состояние может отличаться.
xml
<svg xmlns="http://www.w3.org/2000/svg">…</svg>
Ошибки и действия401 · 403 · 404 · 422 · 423
Ошибки обработчика перечислены ниже. detail может зависеть от проверки и состояния; текст не является стабильным кодом ошибки. При 5xx результат записи может быть неизвестен — сначала сверьте операцию.
HTTP
Что означает
Что делать
401
Неверные реквизиты доступа
Проверьте ключ API, активность и секрет для записи.
403
Доступ запрещён
Проверьте принадлежность и активацию проекта; для сессии оплаты — cookie страницы инвойса.
404
Объект не найден
Проверьте идентификатор и проект.
422
Ошибка формата данных
detail содержит массив: loc — поле, msg — причина, type — код. Исправьте обязательные поля и типы.
423
Проект заблокирован
Проверьте активацию и ограничения проекта в кабинете. Повтор неизменённого запроса не поможет.
Обнаруженная транзакция ещё не равна зачислению. Проверяйте статус, confirmations, required_confirmations и credited там, где они присутствуют в ответе.
Параметры и пример запроса
Поле
Тип
Наличие
Значение и ограничения
invoice_hash
path · string
Обязательно
Публичный идентификатор из ссылки оплаты. Не публикуйте ссылки чужих заказов.
network
query · string
Обязательно
Код сети из /api/v1/public/networks. Для оплаты берите сеть из payment_options инвойса.
asset
query · string
Обязательно
Код актива (например USDT). Он должен быть доступен в выбранной сети и проекте.
Тело запроса не требуется.
bash
curl --request GET 'https://pay.bitcofy.pro/api/v1/public/invoices/by-hash/YOUR_INVOICE_HASH/payment-qr?network=tron&asset=USDT'
Успешный ответ
200 · image/svg+xml
Иллюстрация структуры: значения приведены для примера; фактическое состояние может отличаться.
xml
<svg xmlns="http://www.w3.org/2000/svg">…</svg>
Ошибки и действия404 · 422 · 429
Ошибки обработчика перечислены ниже. detail может зависеть от проверки и состояния; текст не является стабильным кодом ошибки. При 5xx результат записи может быть неизвестен — сначала сверьте операцию.
HTTP
Что означает
Что делать
404
Объект не найден
Проверьте идентификатор и проект.
422
Ошибка формата данных
detail содержит массив: loc — поле, msg — причина, type — код. Исправьте обязательные поля и типы.
429
Слишком много запросов
Увеличьте интервал с небольшой случайной задержкой; учитывайте Retry-After, если он есть.
Ошибки обработчика перечислены ниже. detail может зависеть от проверки и состояния; текст не является стабильным кодом ошибки. При 5xx результат записи может быть неизвестен — сначала сверьте операцию.
HTTP
Что означает
Что делать
401
Неверные реквизиты доступа
Проверьте ключ API, активность и секрет для записи.
403
Доступ запрещён
Проверьте принадлежность и активацию проекта; для сессии оплаты — cookie страницы инвойса.
422
Ошибка формата данных
detail содержит массив: loc — поле, msg — причина, type — код. Исправьте обязательные поля и типы.
423
Проект заблокирован
Проверьте активацию и ограничения проекта в кабинете. Повтор неизменённого запроса не поможет.
Ошибки обработчика перечислены ниже. detail может зависеть от проверки и состояния; текст не является стабильным кодом ошибки. При 5xx результат записи может быть неизвестен — сначала сверьте операцию.
HTTP
Что означает
Что делать
400
Некорректный запрос или состояние
Проверьте detail, параметры, подпись и текущее состояние. Не повторяйте неизменённый запрос.
401
Неверные реквизиты доступа
Проверьте ключ API, активность и секрет для записи.
403
Доступ запрещён
Проверьте принадлежность и активацию проекта; для сессии оплаты — cookie страницы инвойса.
422
Ошибка формата данных
detail содержит массив: loc — поле, msg — причина, type — код. Исправьте обязательные поля и типы.
423
Проект заблокирован
Проверьте активацию и ограничения проекта в кабинете. Повтор неизменённого запроса не поможет.
Ошибки обработчика перечислены ниже. detail может зависеть от проверки и состояния; текст не является стабильным кодом ошибки. При 5xx результат записи может быть неизвестен — сначала сверьте операцию.
HTTP
Что означает
Что делать
400
Некорректный запрос или состояние
Проверьте detail, параметры, подпись и текущее состояние. Не повторяйте неизменённый запрос.
401
Неверные реквизиты доступа
Проверьте ключ API, активность и секрет для записи.
403
Доступ запрещён
Проверьте принадлежность и активацию проекта; для сессии оплаты — cookie страницы инвойса.
404
Объект не найден
Проверьте идентификатор и проект.
422
Ошибка формата данных
detail содержит массив: loc — поле, msg — причина, type — код. Исправьте обязательные поля и типы.
423
Проект заблокирован
Проверьте активацию и ограничения проекта в кабинете. Повтор неизменённого запроса не поможет.
Ошибки обработчика перечислены ниже. detail может зависеть от проверки и состояния; текст не является стабильным кодом ошибки. При 5xx результат записи может быть неизвестен — сначала сверьте операцию.
HTTP
Что означает
Что делать
400
Некорректный запрос или состояние
Проверьте detail, параметры, подпись и текущее состояние. Не повторяйте неизменённый запрос.
401
Неверные реквизиты доступа
Проверьте ключ API, активность и секрет для записи.
403
Доступ запрещён
Проверьте принадлежность и активацию проекта; для сессии оплаты — cookie страницы инвойса.
422
Ошибка формата данных
detail содержит массив: loc — поле, msg — причина, type — код. Исправьте обязательные поля и типы.
423
Проект заблокирован
Проверьте активацию и ограничения проекта в кабинете. Повтор неизменённого запроса не поможет.
Ошибки обработчика перечислены ниже. detail может зависеть от проверки и состояния; текст не является стабильным кодом ошибки. При 5xx результат записи может быть неизвестен — сначала сверьте операцию.
HTTP
Что означает
Что делать
401
Неверные реквизиты доступа
Проверьте ключ API, активность и секрет для записи.
403
Доступ запрещён
Проверьте принадлежность и активацию проекта; для сессии оплаты — cookie страницы инвойса.
422
Ошибка формата данных
detail содержит массив: loc — поле, msg — причина, type — код. Исправьте обязательные поля и типы.
423
Проект заблокирован
Проверьте активацию и ограничения проекта в кабинете. Повтор неизменённого запроса не поможет.
Сервис создаёт пару Ed25519 и возвращает private_key один раз. Можно сгенерировать пару у себя и зарегистрировать только public_key через /security/payout-key.
Параметры и пример запроса
Поле
Тип
Наличие
Значение и ограничения
project_id
path · string
Обязательно
Идентификатор проекта; должен принадлежать ключу API.
Ошибки обработчика перечислены ниже. detail может зависеть от проверки и состояния; текст не является стабильным кодом ошибки. При 5xx результат записи может быть неизвестен — сначала сверьте операцию.
HTTP
Что означает
Что делать
400
Некорректный запрос или состояние
Проверьте detail, параметры, подпись и текущее состояние. Не повторяйте неизменённый запрос.
401
Неверные реквизиты доступа
Проверьте ключ API, активность и секрет для записи.
403
Доступ запрещён
Проверьте принадлежность и активацию проекта; для сессии оплаты — cookie страницы инвойса.
422
Ошибка формата данных
detail содержит массив: loc — поле, msg — причина, type — код. Исправьте обязательные поля и типы.
423
Проект заблокирован
Проверьте активацию и ограничения проекта в кабинете. Повтор неизменённого запроса не поможет.
Ошибки обработчика перечислены ниже. detail может зависеть от проверки и состояния; текст не является стабильным кодом ошибки. При 5xx результат записи может быть неизвестен — сначала сверьте операцию.
HTTP
Что означает
Что делать
400
Некорректный запрос или состояние
Проверьте detail, параметры, подпись и текущее состояние. Не повторяйте неизменённый запрос.
401
Неверные реквизиты доступа
Проверьте ключ API, активность и секрет для записи.
403
Доступ запрещён
Проверьте принадлежность и активацию проекта; для сессии оплаты — cookie страницы инвойса.
404
Объект не найден
Проверьте идентификатор и проект.
422
Ошибка формата данных
detail содержит массив: loc — поле, msg — причина, type — код. Исправьте обязательные поля и типы.
423
Проект заблокирован
Проверьте активацию и ограничения проекта в кабинете. Повтор неизменённого запроса не поможет.
Ошибки обработчика перечислены ниже. detail может зависеть от проверки и состояния; текст не является стабильным кодом ошибки. При 5xx результат записи может быть неизвестен — сначала сверьте операцию.
HTTP
Что означает
Что делать
401
Неверные реквизиты доступа
Проверьте ключ API, активность и секрет для записи.
403
Доступ запрещён
Проверьте принадлежность и активацию проекта; для сессии оплаты — cookie страницы инвойса.
404
Объект не найден
Проверьте идентификатор и проект.
422
Ошибка формата данных
detail содержит массив: loc — поле, msg — причина, type — код. Исправьте обязательные поля и типы.
423
Проект заблокирован
Проверьте активацию и ограничения проекта в кабинете. Повтор неизменённого запроса не поможет.
Ошибки обработчика перечислены ниже. detail может зависеть от проверки и состояния; текст не является стабильным кодом ошибки. При 5xx результат записи может быть неизвестен — сначала сверьте операцию.
HTTP
Что означает
Что делать
401
Неверные реквизиты доступа
Проверьте ключ API, активность и секрет для записи.
403
Доступ запрещён
Проверьте принадлежность и активацию проекта; для сессии оплаты — cookie страницы инвойса.
422
Ошибка формата данных
detail содержит массив: loc — поле, msg — причина, type — код. Исправьте обязательные поля и типы.
423
Проект заблокирован
Проверьте активацию и ограничения проекта в кабинете. Повтор неизменённого запроса не поможет.
curl --request GET 'https://pay.bitcofy.pro/api/v1/projects/YOUR_PROJECT_ID/transactions' \
--header "X-API-Key: $BITCOFY_API_KEY"
Успешный ответ
200 · application/json
Иллюстрация структуры: значения приведены для примера; фактическое состояние может отличаться.
Поле
Тип
Наличие
Значение и ограничения
items
array<object>
Обязательно
Items
items[].transaction_type
string
Обязательно
Transaction Type
items[].reference_id
string
Обязательно
Reference Id
items[].status
string
Обязательно
Состояние объекта; значения и действия описаны в разделе соответствующего сценария.
items[].network
string / null
Необязательно
Код сети из /api/v1/public/networks. Для оплаты берите сеть из payment_options инвойса.
items[].asset
string / null
Необязательно
Код актива (например USDT). Он должен быть доступен в выбранной сети и проекте.
items[].amount
string
Обязательно
Сумма > 0: для инвойса в currency; для выплаты в единицах asset, включая комиссию. Передавайте десятичной строкой. шаблон: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
items[].currency
string / null
Необязательно
USD или RUB; валюта стоимости заказа, не криптоактив.
Ошибки обработчика перечислены ниже. detail может зависеть от проверки и состояния; текст не является стабильным кодом ошибки. При 5xx результат записи может быть неизвестен — сначала сверьте операцию.
HTTP
Что означает
Что делать
401
Неверные реквизиты доступа
Проверьте ключ API, активность и секрет для записи.
403
Доступ запрещён
Проверьте принадлежность и активацию проекта; для сессии оплаты — cookie страницы инвойса.
422
Ошибка формата данных
detail содержит массив: loc — поле, msg — причина, type — код. Исправьте обязательные поля и типы.
423
Проект заблокирован
Проверьте активацию и ограничения проекта в кабинете. Повтор неизменённого запроса не поможет.
curl --request GET 'https://pay.bitcofy.pro/api/v1/projects/YOUR_PROJECT_ID/transactions/export.csv' \
--header "X-API-Key: $BITCOFY_API_KEY"
Успешный ответ
200 · text/csv
Иллюстрация структуры: значения приведены для примера; фактическое состояние может отличаться.
text
CSV-файл операций. Набор колонок зависит от формата экспорта.
Ошибки и действия401 · 403 · 422 · 423
Ошибки обработчика перечислены ниже. detail может зависеть от проверки и состояния; текст не является стабильным кодом ошибки. При 5xx результат записи может быть неизвестен — сначала сверьте операцию.
HTTP
Что означает
Что делать
401
Неверные реквизиты доступа
Проверьте ключ API, активность и секрет для записи.
403
Доступ запрещён
Проверьте принадлежность и активацию проекта; для сессии оплаты — cookie страницы инвойса.
422
Ошибка формата данных
detail содержит массив: loc — поле, msg — причина, type — код. Исправьте обязательные поля и типы.
423
Проект заблокирован
Проверьте активацию и ограничения проекта в кабинете. Повтор неизменённого запроса не поможет.
curl --request GET 'https://pay.bitcofy.pro/api/v1/projects/YOUR_PROJECT_ID/transactions/export-quickbooks.csv' \
--header "X-API-Key: $BITCOFY_API_KEY"
Успешный ответ
200 · text/csv
Иллюстрация структуры: значения приведены для примера; фактическое состояние может отличаться.
text
CSV-файл операций. Набор колонок зависит от формата экспорта.
Ошибки и действия401 · 403 · 422 · 423
Ошибки обработчика перечислены ниже. detail может зависеть от проверки и состояния; текст не является стабильным кодом ошибки. При 5xx результат записи может быть неизвестен — сначала сверьте операцию.
HTTP
Что означает
Что делать
401
Неверные реквизиты доступа
Проверьте ключ API, активность и секрет для записи.
403
Доступ запрещён
Проверьте принадлежность и активацию проекта; для сессии оплаты — cookie страницы инвойса.
422
Ошибка формата данных
detail содержит массив: loc — поле, msg — причина, type — код. Исправьте обязательные поля и типы.
423
Проект заблокирован
Проверьте активацию и ограничения проекта в кабинете. Повтор неизменённого запроса не поможет.
curl --request GET 'https://pay.bitcofy.pro/api/v1/projects/YOUR_PROJECT_ID/payout-requests' \
--header "X-API-Key: $BITCOFY_API_KEY"
Успешный ответ
200 · application/json
Иллюстрация структуры: значения приведены для примера; фактическое состояние может отличаться.
Поле
Тип
Наличие
Значение и ограничения
[].request_id
string
Обязательно
Идентификатор заявки на выплату.
[].project_id
string
Обязательно
Идентификатор проекта; должен принадлежать ключу API.
[].network
string
Обязательно
Код сети из /api/v1/public/networks. Для оплаты берите сеть из payment_options инвойса.
[].asset
string
Обязательно
Код актива (например USDT). Он должен быть доступен в выбранной сети и проекте.
[].amount
string
Обязательно
Сумма > 0: для инвойса в currency; для выплаты в единицах asset, включая комиссию. Передавайте десятичной строкой. шаблон: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
[].destination_address
string
Обязательно
Адрес получателя в указанной сети. Проверяйте сеть до подписи.
[].status
string
Обязательно
Состояние объекта; значения и действия описаны в разделе соответствующего сценария.
[].idempotency_key
string
Обязательно
Ваш постоянный идентификатор одной логической выплаты; повторно используйте при сверке.
[].requested_via
string
Обязательно
Requested Via
[].requested_by_user_id
string / null
Необязательно
Requested By User Id
[].approved_by_user_id
string / null
Необязательно
Approved By User Id
[].rejected_by_user_id
string / null
Необязательно
Rejected By User Id
[].approved_payout_id
string / null
Необязательно
Approved Payout Id
[].approved_payout_status
string / null
Необязательно
Approved Payout Status
[].rejection_reason
string / null
Необязательно
Причина отказа; входит в подписываемое сообщение без изменения.
Ошибки обработчика перечислены ниже. detail может зависеть от проверки и состояния; текст не является стабильным кодом ошибки. При 5xx результат записи может быть неизвестен — сначала сверьте операцию.
HTTP
Что означает
Что делать
401
Неверные реквизиты доступа
Проверьте ключ API, активность и секрет для записи.
403
Доступ запрещён
Проверьте принадлежность и активацию проекта; для сессии оплаты — cookie страницы инвойса.
422
Ошибка формата данных
detail содержит массив: loc — поле, msg — причина, type — код. Исправьте обязательные поля и типы.
423
Проект заблокирован
Проверьте активацию и ограничения проекта в кабинете. Повтор неизменённого запроса не поможет.
Код сети из /api/v1/public/networks. Для оплаты берите сеть из payment_options инвойса.
asset
string
Обязательно
Код актива (например USDT). Он должен быть доступен в выбранной сети и проекте.
amount
number / string
Обязательно
Сумма > 0: для инвойса в currency; для выплаты в единицах asset, включая комиссию. Передавайте десятичной строкой. >: 0; шаблон: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
destination_address
string
Обязательно
Адрес получателя в указанной сети. Проверяйте сеть до подписи.
idempotency_key
string
Обязательно
Ваш постоянный идентификатор одной логической выплаты; повторно используйте при сверке. мин. длина: 1; макс. длина: 255
note
string / null
Необязательно
Необязательное пояснение к заявке. макс. длина: 500
Иллюстрация структуры: значения приведены для примера; фактическое состояние может отличаться.
Поле
Тип
Наличие
Значение и ограничения
request_id
string
Обязательно
Идентификатор заявки на выплату.
project_id
string
Обязательно
Идентификатор проекта; должен принадлежать ключу API.
network
string
Обязательно
Код сети из /api/v1/public/networks. Для оплаты берите сеть из payment_options инвойса.
asset
string
Обязательно
Код актива (например USDT). Он должен быть доступен в выбранной сети и проекте.
amount
string
Обязательно
Сумма > 0: для инвойса в currency; для выплаты в единицах asset, включая комиссию. Передавайте десятичной строкой. шаблон: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
destination_address
string
Обязательно
Адрес получателя в указанной сети. Проверяйте сеть до подписи.
status
string
Обязательно
Состояние объекта; значения и действия описаны в разделе соответствующего сценария.
idempotency_key
string
Обязательно
Ваш постоянный идентификатор одной логической выплаты; повторно используйте при сверке.
requested_via
string
Обязательно
Requested Via
requested_by_user_id
string / null
Необязательно
Requested By User Id
approved_by_user_id
string / null
Необязательно
Approved By User Id
rejected_by_user_id
string / null
Необязательно
Rejected By User Id
approved_payout_id
string / null
Необязательно
Approved Payout Id
approved_payout_status
string / null
Необязательно
Approved Payout Status
rejection_reason
string / null
Необязательно
Причина отказа; входит в подписываемое сообщение без изменения.
Ошибки обработчика перечислены ниже. detail может зависеть от проверки и состояния; текст не является стабильным кодом ошибки. При 5xx результат записи может быть неизвестен — сначала сверьте операцию.
HTTP
Что означает
Что делать
400
Некорректный запрос или состояние
Проверьте detail, параметры, подпись и текущее состояние. Не повторяйте неизменённый запрос.
401
Неверные реквизиты доступа
Проверьте ключ API, активность и секрет для записи.
403
Доступ запрещён
Проверьте принадлежность и активацию проекта; для сессии оплаты — cookie страницы инвойса.
409
Выплата пока недоступна
Проверьте error_code и доступный баланс. insufficient_project_reserve — недостаточен резерв; insufficient_aggregated_balance — средства ещё не готовы к отправке. Сначала сверьте состояние.
422
Ошибка формата данных
detail содержит массив: loc — поле, msg — причина, type — код. Исправьте обязательные поля и типы.
423
Проект заблокирован
Проверьте активацию и ограничения проекта в кабинете. Повтор неизменённого запроса не поможет.
curl --request GET 'https://pay.bitcofy.pro/api/v1/projects/YOUR_PROJECT_ID/payout-requests/by-idempotency/YOUR_IDEMPOTENCY_KEY' \
--header "X-API-Key: $BITCOFY_API_KEY"
Успешный ответ
200 · application/json
Иллюстрация структуры: значения приведены для примера; фактическое состояние может отличаться.
Поле
Тип
Наличие
Значение и ограничения
request_id
string
Обязательно
Идентификатор заявки на выплату.
project_id
string
Обязательно
Идентификатор проекта; должен принадлежать ключу API.
network
string
Обязательно
Код сети из /api/v1/public/networks. Для оплаты берите сеть из payment_options инвойса.
asset
string
Обязательно
Код актива (например USDT). Он должен быть доступен в выбранной сети и проекте.
amount
string
Обязательно
Сумма > 0: для инвойса в currency; для выплаты в единицах asset, включая комиссию. Передавайте десятичной строкой. шаблон: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
destination_address
string
Обязательно
Адрес получателя в указанной сети. Проверяйте сеть до подписи.
status
string
Обязательно
Состояние объекта; значения и действия описаны в разделе соответствующего сценария.
idempotency_key
string
Обязательно
Ваш постоянный идентификатор одной логической выплаты; повторно используйте при сверке.
requested_via
string
Обязательно
Requested Via
requested_by_user_id
string / null
Необязательно
Requested By User Id
approved_by_user_id
string / null
Необязательно
Approved By User Id
rejected_by_user_id
string / null
Необязательно
Rejected By User Id
approved_payout_id
string / null
Необязательно
Approved Payout Id
approved_payout_status
string / null
Необязательно
Approved Payout Status
rejection_reason
string / null
Необязательно
Причина отказа; входит в подписываемое сообщение без изменения.
Ошибки обработчика перечислены ниже. detail может зависеть от проверки и состояния; текст не является стабильным кодом ошибки. При 5xx результат записи может быть неизвестен — сначала сверьте операцию.
HTTP
Что означает
Что делать
401
Неверные реквизиты доступа
Проверьте ключ API, активность и секрет для записи.
403
Доступ запрещён
Проверьте принадлежность и активацию проекта; для сессии оплаты — cookie страницы инвойса.
404
Объект не найден
Проверьте идентификатор и проект.
422
Ошибка формата данных
detail содержит массив: loc — поле, msg — причина, type — код. Исправьте обязательные поля и типы.
423
Проект заблокирован
Проверьте активацию и ограничения проекта в кабинете. Повтор неизменённого запроса не поможет.
Иллюстрация структуры: значения приведены для примера; фактическое состояние может отличаться.
Поле
Тип
Наличие
Значение и ограничения
request_id
string
Обязательно
Идентификатор заявки на выплату.
project_id
string
Обязательно
Идентификатор проекта; должен принадлежать ключу API.
network
string
Обязательно
Код сети из /api/v1/public/networks. Для оплаты берите сеть из payment_options инвойса.
asset
string
Обязательно
Код актива (например USDT). Он должен быть доступен в выбранной сети и проекте.
amount
string
Обязательно
Сумма > 0: для инвойса в currency; для выплаты в единицах asset, включая комиссию. Передавайте десятичной строкой. шаблон: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
destination_address
string
Обязательно
Адрес получателя в указанной сети. Проверяйте сеть до подписи.
status
string
Обязательно
Состояние объекта; значения и действия описаны в разделе соответствующего сценария.
idempotency_key
string
Обязательно
Ваш постоянный идентификатор одной логической выплаты; повторно используйте при сверке.
requested_via
string
Обязательно
Requested Via
requested_by_user_id
string / null
Необязательно
Requested By User Id
approved_by_user_id
string / null
Необязательно
Approved By User Id
rejected_by_user_id
string / null
Необязательно
Rejected By User Id
approved_payout_id
string / null
Необязательно
Approved Payout Id
approved_payout_status
string / null
Необязательно
Approved Payout Status
rejection_reason
string / null
Необязательно
Причина отказа; входит в подписываемое сообщение без изменения.
Ошибки обработчика перечислены ниже. detail может зависеть от проверки и состояния; текст не является стабильным кодом ошибки. При 5xx результат записи может быть неизвестен — сначала сверьте операцию.
HTTP
Что означает
Что делать
400
Некорректный запрос или состояние
Проверьте detail, параметры, подпись и текущее состояние. Не повторяйте неизменённый запрос.
401
Неверные реквизиты доступа
Проверьте ключ API, активность и секрет для записи.
403
Доступ запрещён
Проверьте принадлежность и активацию проекта; для сессии оплаты — cookie страницы инвойса.
409
Выплата пока недоступна
Проверьте error_code и доступный баланс. insufficient_project_reserve — недостаточен резерв; insufficient_aggregated_balance — средства ещё не готовы к отправке. Сначала сверьте состояние.
422
Ошибка формата данных
detail содержит массив: loc — поле, msg — причина, type — код. Исправьте обязательные поля и типы.
423
Проект заблокирован
Проверьте активацию и ограничения проекта в кабинете. Повтор неизменённого запроса не поможет.
Иллюстрация структуры: значения приведены для примера; фактическое состояние может отличаться.
Поле
Тип
Наличие
Значение и ограничения
request_id
string
Обязательно
Идентификатор заявки на выплату.
project_id
string
Обязательно
Идентификатор проекта; должен принадлежать ключу API.
network
string
Обязательно
Код сети из /api/v1/public/networks. Для оплаты берите сеть из payment_options инвойса.
asset
string
Обязательно
Код актива (например USDT). Он должен быть доступен в выбранной сети и проекте.
amount
string
Обязательно
Сумма > 0: для инвойса в currency; для выплаты в единицах asset, включая комиссию. Передавайте десятичной строкой. шаблон: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
destination_address
string
Обязательно
Адрес получателя в указанной сети. Проверяйте сеть до подписи.
status
string
Обязательно
Состояние объекта; значения и действия описаны в разделе соответствующего сценария.
idempotency_key
string
Обязательно
Ваш постоянный идентификатор одной логической выплаты; повторно используйте при сверке.
requested_via
string
Обязательно
Requested Via
requested_by_user_id
string / null
Необязательно
Requested By User Id
approved_by_user_id
string / null
Необязательно
Approved By User Id
rejected_by_user_id
string / null
Необязательно
Rejected By User Id
approved_payout_id
string / null
Необязательно
Approved Payout Id
approved_payout_status
string / null
Необязательно
Approved Payout Status
rejection_reason
string / null
Необязательно
Причина отказа; входит в подписываемое сообщение без изменения.
Ошибки обработчика перечислены ниже. detail может зависеть от проверки и состояния; текст не является стабильным кодом ошибки. При 5xx результат записи может быть неизвестен — сначала сверьте операцию.
HTTP
Что означает
Что делать
400
Некорректный запрос или состояние
Проверьте detail, параметры, подпись и текущее состояние. Не повторяйте неизменённый запрос.
401
Неверные реквизиты доступа
Проверьте ключ API, активность и секрет для записи.
403
Доступ запрещён
Проверьте принадлежность и активацию проекта; для сессии оплаты — cookie страницы инвойса.
422
Ошибка формата данных
detail содержит массив: loc — поле, msg — причина, type — код. Исправьте обязательные поля и типы.
423
Проект заблокирован
Проверьте активацию и ограничения проекта в кабинете. Повтор неизменённого запроса не поможет.
Идентификатор проекта; должен принадлежать ключу API.
asset
string
Обязательно
Код актива (например USDT). Он должен быть доступен в выбранной сети и проекте.
network
string
Обязательно
Код сети из /api/v1/public/networks. Для оплаты берите сеть из payment_options инвойса.
amount
number / string
Обязательно
Сумма > 0: для инвойса в currency; для выплаты в единицах asset, включая комиссию. Передавайте десятичной строкой. >: 0; шаблон: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
destination_address
string
Обязательно
Адрес получателя в указанной сети. Проверяйте сеть до подписи.
idempotency_key
string
Обязательно
Ваш постоянный идентификатор одной логической выплаты; повторно используйте при сверке.
nonce
string
Обязательно
Уникальное значение для новой попытки подписанного запроса; защищает от повтора подписи.
timestamp
string
Обязательно
UTC date-time в пределах ±5 минут. Подписывайте каноническую строку с +00:00; см. Подписи. формат: date-time
Иллюстрация структуры: значения приведены для примера; фактическое состояние может отличаться.
Поле
Тип
Наличие
Значение и ограничения
payout_id
string
Обязательно
Идентификатор выплаты.
project_id
string
Обязательно
Идентификатор проекта; должен принадлежать ключу API.
request_id
string / null
Необязательно
Идентификатор заявки на выплату.
note
string / null
Необязательно
Необязательное пояснение к заявке.
operational_expense
boolean / null
Необязательно
Operational Expense
source_scope
string / null
Необязательно
Source Scope
network
string
Обязательно
Код сети из /api/v1/public/networks. Для оплаты берите сеть из payment_options инвойса.
asset
string
Обязательно
Код актива (например USDT). Он должен быть доступен в выбранной сети и проекте.
amount
string
Обязательно
Сумма > 0: для инвойса в currency; для выплаты в единицах asset, включая комиссию. Передавайте десятичной строкой. шаблон: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
Ошибки обработчика перечислены ниже. detail может зависеть от проверки и состояния; текст не является стабильным кодом ошибки. При 5xx результат записи может быть неизвестен — сначала сверьте операцию.
HTTP
Что означает
Что делать
400
Некорректный запрос или состояние
Проверьте detail, параметры, подпись и текущее состояние. Не повторяйте неизменённый запрос.
401
Неверные реквизиты доступа
Проверьте ключ API, активность и секрет для записи.
403
Доступ запрещён
Проверьте принадлежность и активацию проекта; для сессии оплаты — cookie страницы инвойса.
409
Выплата пока недоступна
Проверьте error_code и доступный баланс. insufficient_project_reserve — недостаточен резерв; insufficient_aggregated_balance — средства ещё не готовы к отправке. Сначала сверьте состояние.
422
Ошибка формата данных
detail содержит массив: loc — поле, msg — причина, type — код. Исправьте обязательные поля и типы.
423
Проект заблокирован
Проверьте активацию и ограничения проекта в кабинете. Повтор неизменённого запроса не поможет.
curl --request GET 'https://pay.bitcofy.pro/api/v1/payouts/YOUR_PAYOUT_ID' \
--header "X-API-Key: $BITCOFY_API_KEY"
Успешный ответ
200 · application/json
Иллюстрация структуры: значения приведены для примера; фактическое состояние может отличаться.
Поле
Тип
Наличие
Значение и ограничения
payout_id
string
Обязательно
Идентификатор выплаты.
project_id
string
Обязательно
Идентификатор проекта; должен принадлежать ключу API.
request_id
string / null
Необязательно
Идентификатор заявки на выплату.
note
string / null
Необязательно
Необязательное пояснение к заявке.
operational_expense
boolean / null
Необязательно
Operational Expense
source_scope
string / null
Необязательно
Source Scope
network
string
Обязательно
Код сети из /api/v1/public/networks. Для оплаты берите сеть из payment_options инвойса.
asset
string
Обязательно
Код актива (например USDT). Он должен быть доступен в выбранной сети и проекте.
amount
string
Обязательно
Сумма > 0: для инвойса в currency; для выплаты в единицах asset, включая комиссию. Передавайте десятичной строкой. шаблон: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
Ошибки обработчика перечислены ниже. detail может зависеть от проверки и состояния; текст не является стабильным кодом ошибки. При 5xx результат записи может быть неизвестен — сначала сверьте операцию.
HTTP
Что означает
Что делать
401
Неверные реквизиты доступа
Проверьте ключ API, активность и секрет для записи.
403
Доступ запрещён
Проверьте принадлежность и активацию проекта; для сессии оплаты — cookie страницы инвойса.
404
Объект не найден
Проверьте идентификатор и проект.
422
Ошибка формата данных
detail содержит массив: loc — поле, msg — причина, type — код. Исправьте обязательные поля и типы.
423
Проект заблокирован
Проверьте активацию и ограничения проекта в кабинете. Повтор неизменённого запроса не поможет.
curl --request GET 'https://pay.bitcofy.pro/api/v1/projects/YOUR_PROJECT_ID/payouts/by-idempotency/YOUR_IDEMPOTENCY_KEY' \
--header "X-API-Key: $BITCOFY_API_KEY"
Успешный ответ
200 · application/json
Иллюстрация структуры: значения приведены для примера; фактическое состояние может отличаться.
Поле
Тип
Наличие
Значение и ограничения
payout_id
string
Обязательно
Идентификатор выплаты.
project_id
string
Обязательно
Идентификатор проекта; должен принадлежать ключу API.
request_id
string / null
Необязательно
Идентификатор заявки на выплату.
note
string / null
Необязательно
Необязательное пояснение к заявке.
operational_expense
boolean / null
Необязательно
Operational Expense
source_scope
string / null
Необязательно
Source Scope
network
string
Обязательно
Код сети из /api/v1/public/networks. Для оплаты берите сеть из payment_options инвойса.
asset
string
Обязательно
Код актива (например USDT). Он должен быть доступен в выбранной сети и проекте.
amount
string
Обязательно
Сумма > 0: для инвойса в currency; для выплаты в единицах asset, включая комиссию. Передавайте десятичной строкой. шаблон: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
Ошибки обработчика перечислены ниже. detail может зависеть от проверки и состояния; текст не является стабильным кодом ошибки. При 5xx результат записи может быть неизвестен — сначала сверьте операцию.
HTTP
Что означает
Что делать
401
Неверные реквизиты доступа
Проверьте ключ API, активность и секрет для записи.
403
Доступ запрещён
Проверьте принадлежность и активацию проекта; для сессии оплаты — cookie страницы инвойса.
404
Объект не найден
Проверьте идентификатор и проект.
422
Ошибка формата данных
detail содержит массив: loc — поле, msg — причина, type — код. Исправьте обязательные поля и типы.
423
Проект заблокирован
Проверьте активацию и ограничения проекта в кабинете. Повтор неизменённого запроса не поможет.
Ошибки обработчика перечислены ниже. detail может зависеть от проверки и состояния; текст не является стабильным кодом ошибки. При 5xx результат записи может быть неизвестен — сначала сверьте операцию.
HTTP
Что означает
Что делать
400
Некорректный запрос или состояние
Проверьте detail, параметры, подпись и текущее состояние. Не повторяйте неизменённый запрос.
401
Неверные реквизиты доступа
Проверьте ключ API, активность и секрет для записи.
403
Доступ запрещён
Проверьте принадлежность и активацию проекта; для сессии оплаты — cookie страницы инвойса.
404
Объект не найден
Проверьте идентификатор и проект.
422
Ошибка формата данных
detail содержит массив: loc — поле, msg — причина, type — код. Исправьте обязательные поля и типы.
423
Проект заблокирован
Проверьте активацию и ограничения проекта в кабинете. Повтор неизменённого запроса не поможет.
Возможные пояснения detail
API key does not have access to this project
Provide exactly one of request_id, payout_id, or idempotency_key
Ошибки обработчика перечислены ниже. detail может зависеть от проверки и состояния; текст не является стабильным кодом ошибки. При 5xx результат записи может быть неизвестен — сначала сверьте операцию.
HTTP
Что означает
Что делать
400
Некорректный запрос или состояние
Проверьте detail, параметры, подпись и текущее состояние. Не повторяйте неизменённый запрос.
401
Неверные реквизиты доступа
Проверьте ключ API, активность и секрет для записи.
403
Доступ запрещён
Проверьте принадлежность и активацию проекта; для сессии оплаты — cookie страницы инвойса.
404
Объект не найден
Проверьте идентификатор и проект.
422
Ошибка формата данных
detail содержит массив: loc — поле, msg — причина, type — код. Исправьте обязательные поля и типы.
423
Проект заблокирован
Проверьте активацию и ограничения проекта в кабинете. Повтор неизменённого запроса не поможет.
Ошибки обработчика перечислены ниже. detail может зависеть от проверки и состояния; текст не является стабильным кодом ошибки. При 5xx результат записи может быть неизвестен — сначала сверьте операцию.
HTTP
Что означает
Что делать
400
Некорректный запрос или состояние
Проверьте detail, параметры, подпись и текущее состояние. Не повторяйте неизменённый запрос.
401
Неверные реквизиты доступа
Проверьте ключ API, активность и секрет для записи.
403
Доступ запрещён
Проверьте принадлежность и активацию проекта; для сессии оплаты — cookie страницы инвойса.
404
Объект не найден
Проверьте идентификатор и проект.
422
Ошибка формата данных
detail содержит массив: loc — поле, msg — причина, type — код. Исправьте обязательные поля и типы.
423
Проект заблокирован
Проверьте активацию и ограничения проекта в кабинете. Повтор неизменённого запроса не поможет.
Возможные пояснения detail
API key does not have access to this project
Project not found
Project webhook_url or callback_secret is not configured
Ошибки обработчика перечислены ниже. detail может зависеть от проверки и состояния; текст не является стабильным кодом ошибки. При 5xx результат записи может быть неизвестен — сначала сверьте операцию.
HTTP
Что означает
Что делать
401
Неверные реквизиты доступа
Проверьте ключ API, активность и секрет для записи.
403
Доступ запрещён
Проверьте принадлежность и активацию проекта; для сессии оплаты — cookie страницы инвойса.
422
Ошибка формата данных
detail содержит массив: loc — поле, msg — причина, type — код. Исправьте обязательные поля и типы.
423
Проект заблокирован
Проверьте активацию и ограничения проекта в кабинете. Повтор неизменённого запроса не поможет.