В кабинете подтвердите email, включите MFA и пополните баланс ресурсов. Для EVM, TRON, Solana и Sui адрес счёта создаётся автоматически; для XRP создайте главный кошелёк и активируйте пополнением либо подключите внешний адрес с destination tag.
Создайте API-ключ проекта и сохраните его только на вашем сервере. Выдавайте права на переводы отдельно.
Получите доступные активы и создайте счёт. Направьте покупателя по checkout_url либо отобразите реквизиты в своей форме.
Адреса, ID, даты и подписанные транзакции в примерах — иллюстрации. Не отправляйте на них средства. Реальные реквизиты берите из ответа API.
Авторизация и права
Методы /v1/* требуют Authorization: Bearer YOUR_API_KEY. Ключ принадлежит одному проекту; передавать ID проекта не нужно. Ключ другого проекта не получит ваши счета и переводы. Создание ключей, управление проектом, MFA и webhook URL выполняются в кабинете.
Храните ключ в окружении или хранилище секретов вашего backend. Его нельзя добавлять в JavaScript сайта, мобильное приложение, URL или QR. Межсайтовый CORS для merchant API не предоставляется. Отзывайте скомпрометированный ключ в кабинете.
Право
Что разрешает
Обычный ключ
Активы, счета, баланс, чтение адресов/переводов, публикация уже подписанной транзакции. Дополнительные custody-права для чтения не нужны.
wallets:create
Создание управляемого адреса EVM/TRON/Solana/Sui/XRP.
wallets:export
Вместе с wallets:create разрешает returnPrivateKey=true. Ключ адреса выдаётся только один раз.
transfers:create
Переводы, сборы и отмена неподписанных заявок.
Владелец аккаунта должен подтвердить email и включить MFA для реального приёма и исходящих операций. Код MFA не передаётся в каждом запросе merchant API. Отсутствие подготовки аккаунта даёт 403 ACCOUNT_SECURITY_REQUIRED.
Своя форма оплаты
Один ответ на создание содержит и платёжную ссылку, и полные реквизиты. Ваш сервер привязывает id к заказу и отдаёт покупателю данные только этого заказа. Сумму и актив определяйте на сервере по вашему каталогу, а не по неподтверждённым значениям из браузера.
Покажите название/тикер, asset.chain, remaining, address и срок expires_at. Если memo не null, отобразите его как обязательную часть реквизитов.
Сформируйте QR из payment_uri. Для EVM URI — только адрес. При вызове кошелька отдельно используйте asset.chain_id, контракт и точную сумму с asset.decimals; не отправляйте нативную монету вместо токена.
Показывайте реквизиты для оплаты только при can_pay=true и до срока. При недоплате используйте remaining, при confirming остановите приглашение к повторной оплате.
Ваш backend получает состояние через GET /v1/invoices/{id}. Для активной страницы начните с интервала 10–15 секунд; централизуйте опрос и учитывайте общий лимит всех покупателей.
Webhook обновляет заказ на вашем сервере. Возврат пользователя со страницы оплаты, QR, хеш перевода и HTTP 201 сами по себе не подтверждают оплату.
Ссылка checkout_url остаётся готовым вариантом оплаты. Не публикуйте её в общих логах: токен предоставляет доступ к конкретному счёту. Ответ на публичный запрос по токену имеет отдельную схему.
Главные кошельки и сбор
Включённые сети EVM, TRON, Solana и Sui автоматически выдают отдельный управляемый адрес каждому счёту. Заранее создавать главный кошелёк не нужно. Если проект использует внешний пул или HD-кошелёк, счета продолжают получать адреса из него; создание главного кошелька переключает новые счета этой сети на управляемые адреса. В XRP создайте главный кошелёк этого магазина: каждый счёт получит этот же адрес и уникальный Destination Tag в memo. Теги не повторяются между магазинами и не освобождаются после оплаты, истечения срока или отмены. До активации главного адреса пополнением создание счёта вернёт 409 XRP_ACTIVATION_REQUIRED; без главного кошелька или внешнего источника — 409 XRP_MAIN_WALLET_REQUIRED.
У каждого магазина один собственный активный главный кошелёк на сеть. Адреса, архив и история переводов изолированы между магазинами, включая магазины одного владельца. Создайте недостающие адреса одной кнопкой в кабинете либо через POST /v1/main-wallets/bulk; для отдельной сети используйте POST /v1/main-wallets. Для API нужно право wallets:create ключа этого магазина. Ключ одного магазина не может видеть или использовать кошельки другого. Первое создание после подтверждения email не требует повторного пароля или MFA; замена действующего адреса и перевод в кабинете требуют дополнительного подтверждения. Приватный ключ главного адреса не экспортируется.
В XRP ручное пополнение без тега счёта не создаёт webhook. Перевод с точным тегом относится только к закреплённому счёту. При замене главного кошелька старые счета сохраняют реквизиты и обычное расписание проверки, новые используют новый адрес. Баланс XRP возвращает reserve, spendable и activated; резерв определяется по сети и при выводе не расходуется. Для перевода на биржу передайте destinationTag числом, включая 0 при необходимости. Система подписывает только нативные XRP Payment и проверяет подтверждённую доставленную сумму. Неизвестный результат или истёкшая подпись не приводят к созданию новой транзакции.
Пополните главный адрес нативной монетой: ETH, BNB, TRX, SOL, SUI или XRP. Это запас для комиссий; баланс ресурсов USDT пополняется отдельно.
В XRP средства сразу находятся на главном адресе и отдельного сбора нет. В EVM, TRON, Solana и Sui счета получают отдельные временные адреса. После подтверждённой оплаты создайте сбор с wallet_id из счёта и бюджетом комиссии.
Для токена fundGas=true по умолчанию. При нехватке нативной монеты создаётся перевод комиссии с главного адреса: purpose=gas_funding, parentTransferId указывает на сбор. Сумма — нехватка до feeBudget. Сбор продолжается после подтверждения пополнения. При экспортированном ключе автоматического пополнения нет.
Для вывода используйте POST /v1/transfers с ID главного кошелька, активом, получателем, суммой и feeBudget. История относится к проекту, создавшему заявку.
На заявку допускается одно пополнение комиссии. Его бюджет задаёт fundingFeeBudget, по умолчанию feeBudget. За пополнение списывается 0.01 USDT ресурсов за заявку и 0.01 за отправку. При отмене сбора его неподписанное пополнение отменяется вместе с ним; после подписи пополнения нужно дождаться результата. Остаток gas на временном адресе автоматически не возвращается.
Баланс и архив
GET /v1/main-wallets читает кеш. Ручной refresh обращается к сети не чаще раза в пять минут на адрес, независимо от IP и ключа. Повтор возвращает HTTP 200, cached=true и сохранённый снимок. Пустой balances означает, что успешной проверки ещё не было. При ошибке остаются прежние значения и balanceError; показывайте balanceCheckedAt. Ручные пополнения без тега счёта и обновление баланса не создают webhook. В XRP оплата с тегом счёта создаёт обычное событие этого счёта.
Для замены передайте chain и replaceWalletId актуального кошелька с новым Idempotency-Key. Старый адрес уходит в архив, его средства и ключ сохраняются. Перевод остатков выполняется отдельно; архивный адрес доступен для проверки и вывода. Незавершённые операции блокируют замену. Реквизиты ранее созданных счетов сохраняются.
Форматы данных
Тип / правило
Контракт
JSON / UTF-8
Для POST с телом передавайте Content-Type: application/json. Максимум 32768 байт на всё тело. Входные объекты создания строго проверяются: неизвестные поля запрещены.
Денежные значения
Строки десятичных чисел: "12.5", "0.000001". В суммах создания запрещены экспонента, запятые, пробелы, знак и JSON-number. Сумма >0; дробная часть не длиннее decimals, целая часть до 48 цифр. Не используйте float/Number для расчётов.
Минимальные единицы
Для операций кошелька используйте целые единицы: сумма × 10^decimals. Точность берите у конкретного assetId, а не из тикера.
Время
Главные кошельки, счета, checkout, webhook и Health: ISO 8601 UTC с Z. createdAt кошельков/переводов: UTC YYYY-MM-DD HH:mm:ss.SSS; добавьте UTC при разборе, не считайте локальным временем.
null и отсутствие
null — явное отсутствие значения. Необязательные поля могут не присутствовать: wallet_id, privateKey, sentAmount, txid broadcast. В merchant-счёте address/memo/payment_uri всегда присутствуют, иногда равны null.
Имена полей
Входные параметры исторически camelCase. Merchant-счёт использует snake_case, кошельки/переводы/checkout — camelCase. Точные имена приведены в схемах; автоматически менять регистр нельзя.
Совместимость
Игнорируйте неизвестные поля ответа. Неизвестный status не трактуйте как оплату. /api/* — внутренние маршруты кабинета; используйте документированные merchant-методы.
Лимиты запросов
Лимиты считаются по IP, а не по API-ключу. Запросы нескольких проектов с одного сервера делят соответствующий счётчик. Базовые маршруты используют одно общее окно; специальные маршруты ниже имеют собственные счётчики вместо базового.
Маршрут / уровень
Ограничение
По умолчанию
120 запросов за 60 секунд на IP суммарно для маршрутов без отдельной настройки (включая чтение и создание счетов).
POST /v1/main-wallets
5 запросов за 60 секунд на IP.
POST /v1/main-wallets/{id}/refresh
10 запросов за 60 секунд на IP; RPC-проверка раз в пять минут на адрес, включая ошибки.
POST /v1/addresses
20 запросов за 60 секунд на IP.
POST /v1/transfers
15 запросов за 60 секунд на IP.
POST /v1/sweeps
15 запросов за 60 секунд на IP, отдельный счётчик.
POST /v1/broadcast
15 запросов за 60 секунд на IP.
GET /status-api/rpc
60 запросов за 60 секунд на IP.
Внешний прокси
Дополнительно 5 запросов в секунду на IP, допустимый burst — 50. Применяется до приложения и может вернуть HTML 429.
Тело запроса
32768 байт в приложении. signedTransaction — до 30000 символов; JSON-экранирование также занимает место в теле.
Заголовок
Значение
x-ratelimit-limit
Максимум текущего счётчика.
x-ratelimit-remaining
Остаток запросов в текущем окне.
x-ratelimit-reset
Секунды до сброса окна; это не Unix timestamp.
Retry-After
При 429 приложения — секунды до повторной попытки. Прокси может вернуть ответ без заголовка.
После 429 остановите запросы до указанного времени. Если заголовка нет, используйте экспоненциальную задержку со случайным разбросом. После 503 или тайм-аута POST не меняйте ключ операции. Кешируйте доступные активы, централизуйте опрос и используйте webhooks.
Повторы запросов
Обязательный Idempotency-Key — 8–100 символов из A–Z a–z 0–9 _ . : -. Создайте и сохраните ключ на вашем сервере до первого запроса. Повтор после тайм-аута возвращает уже созданный ресурс, если параметры совпадают. Изменение параметров с тем же ключом даёт 409; для нового действия нужен новый ключ.
Ключи идемпотентности изолированы по магазину, включая главные кошельки. Счета, адреса и broadcast имеют свои области; переводы и сборы разделяют одну область. Используйте уникальный ключ на каждое действие во всём проекте. Не полагайтесь на срок удаления ключей и не используйте старые ключи для новых операций.
Повтор возвращает актуальное состояние, поэтому JSON может отличаться от первого ответа. Для адресов с экспортом повторный ответ не содержит приватного ключа. При unknown перевода или broadcast новый ключ создаёт риск второго перевода: сначала выясните состояние исходной заявки.
Статусы и расчёты
Пустые просроченные счета HYPE на управляемых адресах переходят в архив мониторинга через 24 часа после создания, если отсутствие средств подтверждено независимыми проверками. Адрес и история сохраняются. Если перевод отправлен позднее, откройте счет в кабинете и нажмите «Проверить снова»: после проверки транзакций обновится платежный статус и придёт обычный webhook. Автоматические проверки архивного адреса остановлены.
Счёт
Значение
Обработка
pending
Поступлений ещё нет. Предлагайте оплату только при can_pay=true и до expires_at.
underpaid
Есть поступление, но суммы недостаточно. До срока можно доплатить remaining; после срока нужен разбор.
confirming
Найдена достаточная сумма, но подтверждений недостаточно. Повторная оплата не нужна; заказ ещё не выдавайте.
paid
Достаточная сумма подтверждена и пришла вовремя. Можно исполнить соответствующий заказ после проверки данных и защиты от дублей.
overpaid
Подтверждённая сумма выше требуемой, достаточная часть пришла вовремя. Отдельно определите обработку излишка; автоматического возврата нет.
expired
Срок истёк, поступления не найдены. Поздний перевод всё ещё возможен.
late
Достаточная сумма подтверждена, но часть, нужная для оплаты, поступила после срока. Примените отдельные правила заказа.
review
Например, поступление после отмены или изменение подтверждений. Не выдавайте заказ автоматически.
cancelled
Счёт отменён. Отмена не отзывает транзакцию и не возвращает криптовалюту.
Статусы могут меняться и после оплаты при новых поступлениях или пересмотре подтверждений. received учитывает найденные валидные переводы; сравнения суммы недостаточно. Используйте status_version и webhook data.version. Решение resolution=accepted — действие продавца, а не автоматический перевод или изменение статуса.
Исходящий перевод / сбор
Значение
Обработка
queued
Ожидает подготовки и подписи.
blocked
Не хватает средств/комиссии либо есть другая устранимая причина. Смотрите errorCode.
signed
Подписанные данные сохранены; отмена уже недоступна.
unknown
Результат отправки неизвестен. Не создавайте замену; сверяйте ту же заявку.
submitted
Транзакция принята сетью; финальное подтверждение ещё не установлено.
confirmed
Перевод подтверждён.
failed_onchain
Сеть подтвердила неуспешное исполнение; комиссия могла быть потрачена.
GET /v1/balance возвращает действующие тарифы. Создание счёта — 0.01 USDT за отслеживание; принятая заявка на перевод — 0.01; принятие транзакции сетью — ещё 0.01; каждое webhook-событие — 0.01, автоматические повторы бесплатны. Для исходящей заявки нужны минимум 0.02 доступных ресурсов: 0.01 списывается, 0.01 резервируется. Чтение статусов не тарифицируется как отдельная операция. Ресурсный баланс и средства на кошельках — разные балансы.
Сетевой gas оплачивается отдельно в нативной монете. Спонсирование отдельных операций может быть доступно, но не гарантировано: рассчитывайте на нативную комиссию и обрабатывайте отсутствие спонсирования. feeBudget всегда выражен в нативной монете. Сбор не запускается автоматически после оплаты счёта.
Webhooks
Укажите HTTPS URL вашего backend в настройках проекта и создайте webhook-секрет. Используется порт 443, публичный адрес без перенаправлений. Событие отправляется POST-запросом с Content-Type: application/json.
Заголовок
Описание
X-Cryptosha-Event-Id
ID события, совпадает с body.id; постоянен во всех попытках.
X-Cryptosha-Timestamp
Unix timestamp попытки в секундах, строка из 10 цифр.
Полная схема: WebhookEvent и WebhookData. Тип — invoice.<status> или invoice.reviewed при решении продавца. Доплата может создать событие с тем же статусом и новой версией. Само создание счёта не гарантирует отдельного invoice.pending: сохраняйте ответ на создание.
Проверка подписи · Node.js
Node.js · исходные байты и проверка подписи
import { createHmac, timingSafeEqual } from "node:crypto";
// rawBody — Buffer исходных байтов до JSON.parse.
export function verify(rawBody, signature, timestamp, secret, now = Date.now()) {
if (typeof signature !== "string" || typeof timestamp !== "string" ||
!/^[a-f0-9]{64}$/.test(signature) || !/^\d{10}$/.test(timestamp) ||
Math.abs(now / 1000 - Number(timestamp)) > 300) return false;
const expected = createHmac("sha256", secret)
.update(timestamp + ".").update(rawBody).digest();
return timingSafeEqual(expected, Buffer.from(signature, "hex"));
}
// 1. Проверить X-Cryptosha-Signature и X-Cryptosha-Timestamp.
// 2. Разобрать JSON, сверить body.id с X-Cryptosha-Event-Id.
// 3. Транзакционно сохранить событие (UNIQUE event.id) и задание обработки.
// 4. Вернуть 2xx; для уже сохранённого event.id тоже вернуть 2xx.
// 5. В фоне обработать только новую data.version нужного invoice_id.
// 6. Сверить заказ, asset_id, amount и test_mode; спорные события — через API.
// 7. Выдать заказ один раз (UNIQUE invoice_id в журнале исполнения).
Сохраните raw body до JSON middleware. Не подписывайте повторно сериализованный объект: пробелы и порядок ключей меняют подпись. Допуск времени — 300 секунд в обе стороны; синхронизируйте часы сервера. Не добавляйте префикс sha256=.
Доставка, повторы и порядок
Дубликаты возможны, порядок не гарантируется. Для каждого счёта сохраняйте последнюю обработанную версию; события с меньшей/равной версией не должны откатывать состояние. У заказа должна быть собственная защита от повторной выдачи. Сначала надёжно сохраните событие и задание обработки, затем ответьте 2xx; повтор известного события также подтверждайте 2xx.
Любой не-2xx, редирект или тайм-аут вызывает повтор. Тайм-аут HTTP-запроса — 10 секунд; отвечайте сразу после сохранения. До 12 попыток суммарно. Задержка после неудачи: min(86400, 10 × 2^n) секунд, где n начинается с 0: 10, 20, 40, 80… Это минимальная задержка очереди, не гарантия времени доставки. После исчерпания попыток повтор доступен в кабинете с тем же event.id.
Недостаток ресурсов приостанавливает доставку; после пополнения очередь продолжает работу. При спорном или устаревшем событии запрашивайте текущий счёт. Отдельных webhook о подтверждении исходящих переводов нет. test_mode=true никогда не подтверждает реальную оплату.
Ошибки
Ошибки приложения возвращают JSON с обязательным error, иногда с code или fields. Логику стройте на HTTP-статусе и code, если он есть. Прокси при 413/429 и сетевых сбоях может вернуть не JSON — обрабатывайте ошибку разбора.
Превышен лимит. На уровне приложения ответ JSON и Retry-After в секундах; внешний прокси может вернуть HTML без этого заголовка.
503
Временная недоступность, сеть не включена для проекта или платёжная инфраструктура не готова.
Машинные коды HTTP-ошибок
Значение
Обработка
MAIN_WALLET_CHANGED
Обновите список и передайте актуальный replaceWalletId.
MAIN_WALLET_BUSY
Дождитесь завершения связанных операций.
ACCOUNT_SECURITY_REQUIRED
Подтвердите email владельца и включите MFA.
API_SCOPE_REQUIRED
Выдайте требуемое право API-ключу. Отзыв прав во время запроса также может дать 403 без code.
CUSTODY_CHAIN_UNSUPPORTED
Управляемые ключи доступны для EVM/TRON/Solana/Sui/XRP; каталог активов не добавляет поддержку подписи.
CUSTODY_UNAVAILABLE
Хранилище управляемых ключей не готово; новые операции временно недоступны.
SIGNER_UNAVAILABLE
Создание адреса приостановлено. Повторите с прежним ключом после восстановления.
WALLET_BUSY
На исходном адресе есть незавершённая заявка; дождитесь её результата или отмените до подписи.
INSUFFICIENT_RESOURCE_BALANCE
Пополните ресурсы. Ответ 402 также содержит balance, available, reserved и currency.
errorCode исходящего перевода
Значение
Обработка
GAS_FUNDING_PENDING
Ожидается подтверждение пополнения комиссии.
GAS_FUNDING_EXHAUSTED
Комиссия уже пополнялась; второго аванса не будет.
GAS_FUNDING_FAILED
Пополнение комиссии не выполнено.
MAIN_WALLET_BUSY
Главный адрес занят другой заявкой.
MAIN_WALLET_UNAVAILABLE
Зафиксированный главный кошелёк недоступен.
GAS_RESOURCE_BALANCE_REQUIRED
Не хватает ресурсов на пополнение комиссии.
TRANSFER_SIMULATION_FAILED
Проверка исполнения завершилась ошибкой.
UNSUPPORTED_ASSET
Актив больше не входит в каталог переводов.
UNSUPPORTED_CHAIN
Подпись для этой сети не поддерживается.
AMOUNT_TOO_LARGE
Сумма не помещается в допустимый формат сетевой операции.
INSUFFICIENT_FUNDS
Не хватает отправляемого актива на кошельке.
INSUFFICIENT_GAS
Не хватает нативной монеты для комиссии.
FEE_BUDGET_EXCEEDED
Требуемая комиссия выше бюджета; не создавайте дубли действующей заявки.
TOKEN_TRANSFER_REJECTED
Контракт токена отклонил проверку перевода.
SPONSORSHIP_UNAVAILABLE
Спонсирование недоступно; требуется обычная оплата gas.
RPC_OR_SIGNER_UNAVAILABLE
Проверка сети или сервис подписи временно недоступны.
NETWORK_RESULT_UNCERTAIN
Результат отправки неизвестен. Сверяйте ту же заявку и txid, не отправляйте с другим ключом.
AUTHORIZATION_REVOKED
Изменились права или защита аккаунта; проверьте ключ и доступ.
CHAIN_DISABLED
Отправка в сети отключена.
errorCode допускает новые значения. Неизвестная ошибка не означает, что средства не отправлены; сначала проверьте статус и txid.
Проверка интеграции
Публичного sandbox API на основном домене нет. Тестовые проекты работают только в изолированном локальном окружении. Их счета имеют test_mode=true, не выдают платёжный адрес и не подтверждают реальное получение. Управляемая отправка в песочнице запрещена.
Перед приёмом платежей проверьте: создание и повтор с одним ключом, недоплату и подтверждения, подпись и дубликаты webhook, позднюю оплату, отзыв ключа, 402/429/503 и защиту от двойной выдачи. Полный цикл на небольшой реальной сумме включает получение, подтверждение, уведомление, сбор и вывод. Health проверяет доступность сети, а не весь этот цикл.
Один активный главный кошелёк на сеть для текущего магазина. Каждый магазин имеет отдельные адреса, архив и историю; ключ одного магазина не видит кошельки другого, даже при общем владельце. GET возвращает кеш без RPC. В XRP счета используют главный адрес с уникальным Destination Tag в memo; только платёж с тегом счёта создаёт его webhook. Ручные пополнения без тега счёта и обновление баланса webhook не создают. В остальных сетях адреса счетов отдельные.
Bearer API-ключ проекта120 запросов / 60 с на IP, общий счётчик
Тело запроса не требуется.
cURL
curl --fail-with-body --request GET 'https://cryptosha.net/v1/main-wallets' \
--header "Authorization: Bearer $CRYPTOSHA_API_KEY"
Создаёт отдельный зашифрованный ключ без экспорта. Первое создание требует подтверждённый email, но не требует повторного пароля или MFA; для API нужен ключ этого магазина с wallets:create. При замене передайте replaceWalletId: прежний адрес становится архивным, средства автоматически не переводятся; в кабинете потребуются пароль и MFA. Архивный кошелёк остаётся доступен для ручного обновления и вывода через /v1/transfers. Незавершённые операции с текущим главным кошельком блокируют замену. В XRP каждый магазин использует собственный главный адрес с разными тегами своих счетов. Перед первым счётом активируйте адрес пополнением XRP; без этого вернётся 409 XRP_ACTIVATION_REQUIRED. Старые счета при замене сохраняют адрес и tag. В остальных сетях счета получают отдельные адреса.
Bearer API-ключ проекта5 запросов / 60 с на IP, отдельный счётчик этого маршрута
Права:wallets:create
Параметры запроса
Параметр / тип
Описание
Idempotency-Keyheader · stringОбязательно
Сохраните ключ до отправки. Повторяйте неопределённый результат с тем же ключом и теми же параметрами; другой запрос с прежним ключом вернёт 409.
длина ≥ 8 · длина ≤ 100 · pattern: ^[A-Za-z0-9_.:-]{8,100}$
Тело · application/json
Поле / тип
Описание
chainstringОбязательно
Включённая сеть EVM, TRON, Solana, Sui или XRP.
длина ≤ 40
replaceWalletIdstringНеобязательно
Для замены обязательно передайте ID текущего активного кошелька. При первом создании не передавайте.
Одна операция для всех включённых управляемых сетей проекта. Создаёт только отсутствующие главные адреса текущего магазина, существующие и архивные кошельки не меняет. Все новые адреса создаются атомарно: при ошибке ни один не сохраняется. Повтор безопасен и возвращает пустой created, если всё уже создано. Тело и Idempotency-Key не нужны. Требуется подтверждённый email и право wallets:create ключа текущего магазина; в кабинете повторный пароль и MFA не требуются. Переводы и замена адреса сохраняют дополнительную защиту.
Bearer API-ключ проекта5 запросов / 60 с на IP, отдельный счётчик этого маршрута
Права:wallets:create
Тело запроса не требуется.
cURL
curl --fail-with-body --request POST 'https://cryptosha.net/v1/main-wallets/bulk' \
--header "Authorization: Bearer $CRYPTOSHA_API_KEY"
Ручное чтение каталожных активов. TON использует настроенный источник с проверкой основной сети и свежести masterchain; остальные управляемые сети используют независимые источники. Ограничение 5 минут на адрес в БД, общее для всех ключей/IP, включая неуспешные попытки. Повтор внутри окна возвращает cached=true и прежний снимок; это не очередь нового RPC-запроса. При ошибке сохраняет предыдущие значения и balanceError. Работает для архива; не создаёт webhook. Только ключ магазина, которому принадлежит кошелёк.
Bearer API-ключ проекта10 запросов / 60 с на IP, отдельный счётчик этого маршрута
Параметры запроса
Параметр / тип
Описание
idpath · stringОбязательно
ID ресурса, полученный при создании или в списке. Ресурс должен принадлежать проекту API-ключа.
Тело запроса не требуется.
cURL
curl --fail-with-body --request POST 'https://cryptosha.net/v1/main-wallets/cw_example/refresh' \
--header "Authorization: Bearer $CRYPTOSHA_API_KEY"
Возвращает активы, разрешённые для приёма вашему проекту. Наличие валюты на сайте или доступность сети на Health не заменяет этот запрос. При пустом assets не создавайте платёжную форму. Точность зависит от сети: у USDT в BSC 18 знаков, в TRON 6.
Bearer API-ключ проекта120 запросов / 60 с на IP, общий счётчик
Тело запроса не требуется.
cURL
curl --fail-with-body --request GET 'https://cryptosha.net/v1/assets' \
--header "Authorization: Bearer $CRYPTOSHA_API_KEY"
Создаёт отдельный счёт и выделяет реквизиты. Нужны подтверждённый email, MFA владельца, доступный актив, настроенный источник адресов и не менее 0.01 USDT ресурсов. Первое создание списывает 0.01 USDT за отслеживание. Ответ сразу содержит адрес, memo, сумму, сеть и платёжную ссылку для вашей формы. Приватные ключи сюда не входят. orderId не уникален: от дублей защищает Idempotency-Key.
Bearer API-ключ проекта120 запросов / 60 с на IP, общий счётчик
Параметры запроса
Параметр / тип
Описание
Idempotency-Keyheader · stringОбязательно
Сохраните ключ до отправки. Повторяйте неопределённый результат с тем же ключом и теми же параметрами; другой запрос с прежним ключом вернёт 409.
длина ≥ 8 · длина ≤ 100 · pattern: ^[A-Za-z0-9_.:-]{8,100}$
Тело · application/json
Поле / тип
Описание
orderIdstringОбязательно
ID заказа вашей системы. Может повторяться; для защиты от дублей нужен Idempotency-Key.
длина ≥ 1 · длина ≤ 100
descriptionstringНеобязательно
Описание заказа.
длина ≤ 300 · по умолчанию: ""
assetIdstringОбязательно
Точное значение id из GET /v1/assets для вашего проекта.
длина ≥ 1 · длина ≤ 180
amountstringОбязательно
Положительная сумма в единицах актива, строка без знака, пробелов и экспоненты. Не более decimals дробных знаков и 48 цифр целой части; не более 78 цифр в сумме минимальных единиц.
Постраничный список только текущего проекта. Поиск q — подстрока в orderId, description или id. Сортировка created_at DESC, id DESC; при новых вставках offset-пагинация может сдвигаться, устраняйте дубли по id. Основные поля совпадают с созданием и получением счёта. Старые camelCase-поля сохранены только здесь для совместимости.
Bearer API-ключ проекта120 запросов / 60 с на IP, общий счётчик
Возвращает актуальные реквизиты и состояние. Чужой ID возвращает 404. Реквизиты реального счёта сохраняются после завершения, но can_pay=false и payment_uri=null. Полученная сумма может включать неподтверждённые поступления. Подтверждайте оплату по status и сверяйте asset_id, amount, order_id.
Bearer API-ключ проекта120 запросов / 60 с на IP, общий счётчик
Параметры запроса
Параметр / тип
Описание
idpath · stringОбязательно
ID ресурса, полученный при создании или в списке. Ресурс должен принадлежать проекту API-ключа.
Тело запроса не требуется.
cURL
curl --fail-with-body --request GET 'https://cryptosha.net/v1/invoices/inv_example' \
--header "Authorization: Bearer $CRYPTOSHA_API_KEY"
Разрешено только при status=pending и received=0. Тело и Idempotency-Key не нужны. Успешный ответ {ok:true}; повтор после отмены даёт 409. Отмена не возвращает средства и не запрещает перевод в блокчейне: позднее поступление на отменённый счёт переводит его в review. Адрес не выдаётся другому счёту.
Bearer API-ключ проекта120 запросов / 60 с на IP, общий счётчик
Параметры запроса
Параметр / тип
Описание
idpath · stringОбязательно
ID ресурса, полученный при создании или в списке. Ресурс должен принадлежать проекту API-ключа.
Тело запроса не требуется.
cURL
curl --fail-with-body --request POST 'https://cryptosha.net/v1/invoices/inv_example/cancel' \
--header "Authorization: Bearer $CRYPTOSHA_API_KEY"
200 · Успешный ответ
{
"ok": true
}
Структура ответа: Ok — все поля, типы и условия присутствия.
HTTP-ответы и ошибки
200
Успешный ответ
400
Некорректные поля, JSON, сумма, адрес или неподдерживаемая операция.
401
API-ключ отсутствует, неверен или отозван.
403
Недостаточно прав ключа, не подтверждён email/MFA или запрещён режим работы.
404
Объект не найден в проекте данного ключа либо неверен токен ссылки.
409
Конфликт Idempotency-Key, исчерпан пул адресов, кошелёк занят или текущее состояние запрещает действие.
429
Превышен лимит. На уровне приложения ответ JSON и Retry-After в секундах; внешний прокси может вернуть HTML без этого заголовка.
503
Временная недоступность, сеть не включена для проекта или платёжная инфраструктура не готова.
Создаёт отдельный ключ и адрес в EVM/TRON/Solana/Sui/XRP/TON. Обязательны email/MFA, работающий сервис подписи и wallets:create. returnPrivateKey=true дополнительно требует wallets:export. Первый ответ может содержать ключ, повтор никогда его не содержит. При потере первого ответа с экспортом ключа создайте новый адрес до использования средств, если вам нужна собственная копия. Создание адреса не создаёт счёт и не включает отслеживание поступлений.
Bearer API-ключ проекта20 запросов / 60 с на IP, отдельный счётчик этого маршрута
До 100 последних адресов проекта; приватных ключей нет. Query-параметров и пагинации нет. Для чтения достаточно обычного ключа проекта. Сохраните id нужного кошелька при создании, если адресов больше 100.
Bearer API-ключ проекта120 запросов / 60 с на IP, общий счётчик
Тело запроса не требуется.
cURL
curl --fail-with-body --request GET 'https://cryptosha.net/v1/addresses' \
--header "Authorization: Bearer $CRYPTOSHA_API_KEY"
Асинхронная заявка с управляемого кошелька EVM/TRON/Solana/Sui/XRP/TON. Списывается 0.01 USDT ресурсов за заявку, ещё 0.01 резервируется на отправку. Один незавершённый перевод на исходный кошелёк. Средства актива нужны на исходном адресе. При нехватке комиссии для токена fundGas=true разрешает одно пополнение с главного кошелька этого магазина и ожидание его подтверждения. Сам главный адрес пополняйте вручную; ресурсный баланс не заменяет сетевой gas. В XRP поддержан нативный XRP: destination — classic address, destinationTag передаётся отдельно. Резерв остаётся на кошельке, feeBudget оплачивается XRP. В TON поддержаны TON и USDT Jetton: кошелёк V4R2, комиссия в TON, приём на новые адреса без обязательного комментария. Для Jetton в бюджет входит 0.1 TON, прикрепляемый к запросу токенового кошелька, и оценка комиссии отправителя с запасом 30%; неиспользованный TON возвращается на исходный адрес. Статус confirmed требует финальной доставки, включая завершённую цепочку Jetton. txid в TON — хэш подписанного внешнего сообщения; исходная транзакция находится по хэшу его тела. HTTP 202 означает принятие заявки, не перевод средств. Нужны email/MFA, transfers:create и разрешённая проекту сеть.
Bearer API-ключ проекта15 запросов / 60 с на IP, отдельный счётчик этого маршрута
Права:transfers:create
Параметры запроса
Параметр / тип
Описание
Idempotency-Keyheader · stringОбязательно
Сохраните ключ до отправки. Повторяйте неопределённый результат с тем же ключом и теми же параметрами; другой запрос с прежним ключом вернёт 409.
длина ≥ 8 · длина ≤ 100 · pattern: ^[A-Za-z0-9_.:-]{8,100}$
Тело · application/json
Поле / тип
Описание
fundGasbooleanНеобязательно
При нехватке нативной монеты на временном адресе пополнить её с главного кошелька этого магазина. Только для токенов и адресов без экспорта ключа. На заявку допускается одно пополнение не более недостающей суммы до feeBudget. Главные и архивные главные адреса не пополняются автоматически.
по умолчанию: true
fundingFeeBudgetstringНеобязательно
Бюджет сетевой комиссии отдельной транзакции пополнения. По умолчанию feeBudget; те же пределы и точность. Пополнение имеет свою плату за заявку и отправку по 0.01 USDT ресурсов.
длина ≤ 80 · pattern: ^\d+(\.\d+)?$
walletIdstringОбязательно
ID управляемого кошелька вашего проекта в выбранной сети.
длина ≤ 50
assetIdstringОбязательно
Актив каталога переводов EVM/TRON/Solana/Sui/XRP/TON, соответствующий сети кошелька.
длина ≤ 180
destinationstringОбязательно
Адрес получателя в той же сети; нулевой адрес и исходный адрес запрещены.
длина ≤ 160
destinationTagintegerНеобязательно
Только XRP: Destination Tag получателя. Целое число от 0 до 4294967295; если получателю нужен тег, передайте его явно. Для остальных сетей и /sweeps параметр запрещён.
≥ 0 · ≤ 4294967295
amountstringОбязательно
Положительная сумма в единицах актива, строка без знака, пробелов и экспоненты. Не более decimals дробных знаков и 48 цифр целой части; не более 78 цифр в сумме минимальных единиц.
длина ≤ 80 · pattern: ^\d+(\.\d+)?$
feeBudgetstringОбязательно
Бюджет сетевой комиссии в НАТИВНОЙ монете (BNB/ETH/TRX/SOL/SUI/XRP/TON), не в токене. >0; ≤100 для TRON, ≤1 для остальных сетей. Точность нативной монеты; maxLength 80. Средства на комиссии нужны на исходном кошельке. В Base проверяется оценка дополнительной L1/operator fee с запасом, но протокол не позволяет жёстко ограничить L1-сбор; итог может измениться до включения в блок.
Последние 100 заявок текущего проекта, новые первыми. Включает переводы и сборы. Пагинации и фильтров нет; для долгой истории храните ID и статусы в своей системе. Webhook об исходящих переводах не отправляется — проверяйте GET /v1/transfers/{id}.
Bearer API-ключ проекта120 запросов / 60 с на IP, общий счётчик
Тело запроса не требуется.
cURL
curl --fail-with-body --request GET 'https://cryptosha.net/v1/transfers' \
--header "Authorization: Bearer $CRYPTOSHA_API_KEY"
Проверяйте до confirmed или failed_onchain/cancelled. unknown означает, что результат отправки не определён: не создавайте замену с новым Idempotency-Key. txid может существовать до включения в блок. Сервис продолжает проверку той же транзакции.
Bearer API-ключ проекта120 запросов / 60 с на IP, общий счётчик
Параметры запроса
Параметр / тип
Описание
idpath · stringОбязательно
ID ресурса, полученный при создании или в списке. Ресурс должен принадлежать проекту API-ключа.
Тело запроса не требуется.
cURL
curl --fail-with-body --request GET 'https://cryptosha.net/v1/transfers/tr_example' \
--header "Authorization: Bearer $CRYPTOSHA_API_KEY"
Тело и Idempotency-Key не нужны. Разрешено для queued/blocked, если подпись ещё не сохранена. Повтор отмены возвращает тот же cancelled. Резерв 0.01 USDT освобождается, стоимость принятой заявки не возвращается. После подписи возвращает 409, поскольку отправка уже могла произойти. Требует transfers:create и email/MFA.
Bearer API-ключ проекта120 запросов / 60 с на IP, общий счётчик
Права:transfers:create
Параметры запроса
Параметр / тип
Описание
idpath · stringОбязательно
ID ресурса, полученный при создании или в списке. Ресурс должен принадлежать проекту API-ключа.
Тело запроса не требуется.
cURL
curl --fail-with-body --request POST 'https://cryptosha.net/v1/transfers/tr_example/cancel' \
--header "Authorization: Bearer $CRYPTOSHA_API_KEY"
Сбор с управляемого кошелька на активный главный кошелёк этого магазина в той же сети. Создайте его заранее; для старых проектов без него сохраняется настроенный адрес сбора. Нельзя передавать destination или amount. Адрес назначения фиксируется в заявке и не меняется при смене настроек. Токен отправляется целиком; нативная монета — за вычетом бюджета комиссии. Остаток на gas возможен. XRP-счета сразу получают средства на главный адрес и сбора не требуют. При сборе с отдельного или архивного XRP-кошелька сохраняются сетевой резерв и бюджет комиссии. Оплата счёта сама по себе не запускает сбор. Тарифы и права такие же, как у /v1/transfers.
Bearer API-ключ проекта15 запросов / 60 с на IP, отдельный счётчик этого маршрута
Права:transfers:create
Параметры запроса
Параметр / тип
Описание
Idempotency-Keyheader · stringОбязательно
Сохраните ключ до отправки. Повторяйте неопределённый результат с тем же ключом и теми же параметрами; другой запрос с прежним ключом вернёт 409.
длина ≥ 8 · длина ≤ 100 · pattern: ^[A-Za-z0-9_.:-]{8,100}$
Тело · application/json
Поле / тип
Описание
walletIdstringОбязательно
ID управляемого кошелька вашего проекта в выбранной сети.
длина ≤ 50
assetIdstringОбязательно
Актив каталога переводов EVM/TRON/Solana/Sui/XRP/TON, соответствующий сети кошелька.
длина ≤ 180
feeBudgetstringОбязательно
Бюджет сетевой комиссии в НАТИВНОЙ монете (BNB/ETH/TRX/SOL/SUI/XRP/TON), не в токене. >0; ≤100 для TRON, ≤1 для остальных сетей. Точность нативной монеты; maxLength 80. Средства на комиссии нужны на исходном кошельке. В Base проверяется оценка дополнительной L1/operator fee с запасом, но протокол не позволяет жёстко ограничить L1-сбор; итог может измениться до включения в блок.
длина ≤ 80 · pattern: ^\d+(\.\d+)?$
fundGasbooleanНеобязательно
При нехватке нативной монеты на временном адресе пополнить её с главного кошелька этого магазина. Только для токенов и адресов без экспорта ключа. На заявку допускается одно пополнение не более недостающей суммы до feeBudget. Главные и архивные главные адреса не пополняются автоматически.
по умолчанию: true
fundingFeeBudgetstringНеобязательно
Бюджет сетевой комиссии отдельной транзакции пополнения. По умолчанию feeBudget; те же пределы и точность. Пополнение имеет свою плату за заявку и отправку по 0.01 USDT ресурсов.
Для транзакций, которые подписаны вашим кошельком. Сервис не меняет и не подписывает их. Проверяет формат и сеть; одна и та же каноническая транзакция в проекте не тарифицируется повторно. 0.01 USDT за заявку, 0.01 за принятие сетью. Неопределённый результат удерживает резерв. submitted не является подтверждением в блокчейне; этот метод не отслеживает финальность. Нужны email/MFA и включённая сеть; дополнительного custody-права не требуется.
Bearer API-ключ проекта15 запросов / 60 с на IP, отдельный счётчик этого маршрута
Параметры запроса
Параметр / тип
Описание
Idempotency-Keyheader · stringОбязательно
Сохраните ключ до отправки. Повторяйте неопределённый результат с тем же ключом и теми же параметрами; другой запрос с прежним ключом вернёт 409.
длина ≥ 8 · длина ≤ 100 · pattern: ^[A-Za-z0-9_.:-]{8,100}$
Тело · application/json
Поле / тип
Описание
chainstringОбязательно
Сеть с включённой отправкой для проекта. EVM, TRON, UTXO, XRP или Solana; TON и SUI не поддержаны этим методом.
signedTransactionstringОбязательно
Уже подписанная транзакция: EVM — 0x-prefixed hex (chainId должен совпадать); UTXO/XRP — hex без 0x; Solana — base64; TRON — JSON, закодированный строкой, с signature, raw_data_hex и txID. Не передавайте приватные ключи.
Возвращает состояние сохранённой заявки. Сам GET не запускает повторную отправку. При unknown повторяйте исходный POST с прежним ключом и теми же подписанными байтами. submitted подтверждает принятие сетью, а не исполнение транзакции.
Bearer API-ключ проекта120 запросов / 60 с на IP, общий счётчик
Параметры запроса
Параметр / тип
Описание
idpath · stringОбязательно
ID ресурса, полученный при создании или в списке. Ресурс должен принадлежать проекту API-ключа.
Тело запроса не требуется.
cURL
curl --fail-with-body --request GET 'https://cryptosha.net/v1/broadcast/br_example' \
--header "Authorization: Bearer $CRYPTOSHA_API_KEY"
Баланс оплаты ресурсов общий для проектов одного аккаунта в одном режиме (live/test). Это не баланс криптовалюты на ваших адресах и не выручка. available учитывает резервы. Тарифы возвращаются вместе с балансом; пополнение выполняется в кабинете.
Bearer API-ключ проекта120 запросов / 60 с на IP, общий счётчик
Тело запроса не требуется.
cURL
curl --fail-with-body --request GET 'https://cryptosha.net/v1/balance' \
--header "Authorization: Bearer $CRYPTOSHA_API_KEY"
200 · Успешный ответ
{
"balance": "5",
"reserved": "0.01",
"available": "4.99",
"currency": "USDT",
"testMode": false,
"rates": [
{
"kind": "tracking",
"label": "Заявка на отслеживание",
"detail": "Один раз при создании счёта; дальнейшие проверки включены",
"price": "0.01"
},
{
"kind": "send_request",
"label": "Заявка на отправку",
"detail": "Когда проверенная заявка принята в обработку",
"price": "0.01"
},
{
"kind": "send",
"label": "Отправка транзакции",
"detail": "Когда сеть приняла подписанную транзакцию",
"price": "0.01"
},
{
"kind": "webhook",
"label": "IPN / WebHook",
"detail": "За уведомление; автоматические повторы бесплатны",
"price": "0.01"
}
]
}
Структура ответа: Balance — все поля, типы и условия присутствия.
HTTP-ответы и ошибки
200
Успешный ответ
400
Некорректные поля, JSON, сумма, адрес или неподдерживаемая операция.
401
API-ключ отсутствует, неверен или отозван.
403
Недостаточно прав ключа, не подтверждён email/MFA или запрещён режим работы.
404
Объект не найден в проекте данного ключа либо неверен токен ссылки.
429
Превышен лимит. На уровне приложения ответ JSON и Retry-After в секундах; внешний прокси может вернуть HTML без этого заголовка.
503
Временная недоступность, сеть не включена для проекта или платёжная инфраструктура не готова.
Без API-ключа: доступ предоставляет 43-символьный токен из checkout_url. Не путайте с ID счёта. Здесь используется camelCase; address/memo/paymentUri отсутствуют, когда оплата закрыта. Для собственного checkout предпочтительно получать /v1/invoices/{id} с вашего сервера и выдавать покупателю только данные его заказа. Межсайтовый CORS не предоставляется.
Без API-ключа120 запросов / 60 с на IP, общий счётчик
Параметры запроса
Параметр / тип
Описание
tokenpath · stringОбязательно
Токен доступа из ссылки /pay/{token}; не сохраняйте в публичных логах.
длина ≥ 43 · длина ≤ 43 · pattern: ^[A-Za-z0-9_-]{43}$
Тело запроса не требуется.
cURL
curl --fail-with-body --request GET 'https://cryptosha.net/checkout-api/YOUR_CHECKOUT_TOKEN'
Обезличенные измерения сети, без служебных адресов и поставщиков. Снимок кешируется до 15 секунд. 24h — 96 интервалов по 15 минут; 7d — 84 по 2 часа; 30d — 90 по 8 часов. Зелёный график не подтверждает успешный приём, сбор или вывод. Для доступности конкретному проекту используйте /v1/assets.
Без API-ключа60 запросов / 60 с на IP, отдельный счётчик этого маршрута
Параметры запроса
Параметр / тип
Описание
periodquery · stringНеобязательно
Окно истории.
24h7d30d
по умолчанию: "24h"
Тело запроса не требуется.
cURL
curl --fail-with-body --request GET 'https://cryptosha.net/status-api/rpc'
Лёгкая проверка API и соединения с базой. Не проверяет входящие платежи, очереди или отправку средств. /health без Accept: text/html возвращает тот же JSON; в браузере /health — страница доступности.
Без API-ключа120 запросов / 60 с на IP, общий счётчик
Тело запроса не требуется.
cURL
curl --fail-with-body --request GET 'https://cryptosha.net/healthz'
200 · Успешный ответ
{
"status": "ok"
}
Структура ответа: ServiceHealth — все поля, типы и условия присутствия.
HTTP-ответы и ошибки
200
Успешный ответ
429
Превышен лимит. На уровне приложения ответ JSON и Retry-After в секундах; внешний прокси может вернуть HTML без этого заголовка.
503
Временная недоступность, сеть не включена для проекта или платёжная инфраструктура не готова.
Нажмите на имя модели, чтобы увидеть все поля. «Всегда» — поле присутствует в ответе; «Условно» — зависит от операции или состояния. null указан явно в типе.
MainWalletПолей: 14
Поле / тип
Описание
idstringВсегда
ID управляемого кошелька.
merchantIdstringВсегда
ID магазина, которому принадлежит кошелёк.
chainstringВсегда
Сеть.
addressstringВсегда
Адрес для ручного пополнения и сборов.
statusstringВсегда
Состояние главного кошелька.
activearchived
archivedAtstring | null · date-timeВсегда
Время замены на новый адрес.
createdAtstring · date-timeВсегда
Время создания.
balancesarray<object>Всегда
Кеш балансов; пуст до первого обновления или проверки активации XRP.
balanceCheckedAtstring | null · date-timeВсегда
Время последнего успешного обновления.
balanceErrorstring | nullВсегда
BALANCE_UNAVAILABLE при сбое. Прежний баланс сохраняется.
refreshAfterstring | null · date-timeВсегда
Раньше этого времени повторный POST вернёт кеш без обращения к сети.
refreshingbooleanВсегда
Предыдущая проверка ещё выполняется.
cachedbooleanУсловно
Только в ответе обновления: повтор использовал кеш.
replayedbooleanУсловно
Только в ответе создания: повтор с тем же Idempotency-Key.
Все активные главные кошельки текущего магазина после операции.
CreateMainWalletПолей: 2
Поле / тип
Описание
chainstringОбязательно
Включённая сеть EVM, TRON, Solana, Sui или XRP.
длина ≤ 40
replaceWalletIdstringНеобязательно
Для замены обязательно передайте ID текущего активного кошелька. При первом создании не передавайте.
длина ≤ 50
Неизвестные поля в теле отклоняются с HTTP 400.
AssetПолей: 6
Поле / тип
Описание
idstringВсегда
Идентификатор актива. Берите из GET /v1/assets; не составляйте по символу валюты.
chainstringВсегда
Идентификатор сети.
symbolstringВсегда
Тикер актива; не уникален между сетями.
namestringВсегда
Полное название актива.
decimalsintegerВсегда
Количество знаков после запятой; 1 токен = 10^decimals минимальных единиц.
≥ 0 · ≤ 255
contractstring | nullВсегда
Адрес контракта или идентификатор токена. null для нативной монеты.
InvoiceAssetПолей: 7
Поле / тип
Описание
idstringВсегда
Идентификатор актива. Берите из GET /v1/assets; не составляйте по символу валюты.
chainstringВсегда
Идентификатор сети.
symbolstringВсегда
Тикер актива; не уникален между сетями.
namestringВсегда
Полное название актива.
decimalsintegerВсегда
Количество знаков после запятой; 1 токен = 10^decimals минимальных единиц.
≥ 0 · ≤ 255
contractstring | nullВсегда
Адрес контракта или идентификатор токена. null для нативной монеты.
chain_idinteger | nullВсегда
EVM chainId для кошелька (например, 56 для BSC); null для других сетей.
≥ 0
CreateInvoiceПолей: 5
Поле / тип
Описание
orderIdstringОбязательно
ID заказа вашей системы. Может повторяться; для защиты от дублей нужен Idempotency-Key.
длина ≥ 1 · длина ≤ 100
descriptionstringНеобязательно
Описание заказа.
длина ≤ 300 · по умолчанию: ""
assetIdstringОбязательно
Точное значение id из GET /v1/assets для вашего проекта.
длина ≥ 1 · длина ≤ 180
amountstringОбязательно
Положительная сумма в единицах актива, строка без знака, пробелов и экспоненты. Не более decimals дробных знаков и 48 цифр целой части; не более 78 цифр в сумме минимальных единиц.
длина ≤ 80 · pattern: ^\d+(\.\d+)?$
expiresInintegerНеобязательно
Срок оплаты от момента создания, в секундах.
≥ 300 · ≤ 86400 · по умолчанию: 1800
Неизвестные поля в теле отклоняются с HTTP 400.
InvoiceПолей: 22
Поле / тип
Описание
idstringВсегда
ID счёта в CRYPTOSHA.
order_idstringВсегда
Ваш orderId, переданный при создании. Не является уникальным ключом операции.
descriptionstringВсегда
Описание заказа; пустая строка, если не задано.
statusstringВсегда
Состояние счёта; обработка каждого значения описана в разделе «Статусы».
Исходный адрес получения. Сохраняется и после завершения счёта для сверки. null в песочнице; показывайте для оплаты только при can_pay=true.
memostring | nullВсегда
Обязательная метка/комментарий, если не null: XRP Destination Tag или TON comment. Передавайте без изменения вместе с адресом.
payment_uristring | nullВсегда
Данные для QR. Могут быть обычным адресом, а не URL. UTXO URI включает remaining, XRP X-address включает tag, TON URI включает сумму и comment. Для EVM это только адрес: сеть, токен и сумму передавайте отдельно. null, если can_pay=false.
can_paybooleanВсегда
true только для реального неоплаченного/недоплаченного счёта до expires_at с remaining>0 и без отмены. Пересчитывается при каждом ответе.
test_modebooleanВсегда
true означает симуляцию: реального платежа нет, address/memo/payment_uri равны null, can_pay=false.
confirmationsintegerВсегда
Число подтверждений, учитываемое для текущего набора поступлений. Ориентируйтесь на status, а не только на счётчик.
≥ 0
required_confirmationsintegerВсегда
Требуемое для счёта количество подтверждений.
≥ 0
checkout_urlstring · uriВсегда
Готовая платёжная ссылка. Секретный токен в URL даёт доступ к этому счёту; передавайте только соответствующему покупателю.
created_atstring · date-timeВсегда
Время создания в UTC, ISO 8601.
expires_atstring · date-timeВсегда
Срок оплаты в UTC, ISO 8601. После него не показывайте новые инструкции по оплате, даже если status ещё pending.
wallet_idstringУсловно
ID управляемого кошелька для сбора через /v1/sweeps. Поле отсутствует для импортированных адресов и общих адресов с memo.
ListedInvoiceПолей: 35
Поле / тип
Описание
idstringВсегда
ID счёта в CRYPTOSHA.
order_idstringВсегда
Ваш orderId, переданный при создании. Не является уникальным ключом операции.
descriptionstringВсегда
Описание заказа; пустая строка, если не задано.
statusstringВсегда
Состояние счёта; обработка каждого значения описана в разделе «Статусы».
Исходный адрес получения. Сохраняется и после завершения счёта для сверки. null в песочнице; показывайте для оплаты только при can_pay=true.
memostring | nullВсегда
Обязательная метка/комментарий, если не null: XRP Destination Tag или TON comment. Передавайте без изменения вместе с адресом.
payment_uristring | nullВсегда
Данные для QR. Могут быть обычным адресом, а не URL. UTXO URI включает remaining, XRP X-address включает tag, TON URI включает сумму и comment. Для EVM это только адрес: сеть, токен и сумму передавайте отдельно. null, если can_pay=false.
can_paybooleanВсегда
true только для реального неоплаченного/недоплаченного счёта до expires_at с remaining>0 и без отмены. Пересчитывается при каждом ответе.
test_modebooleanВсегда
true означает симуляцию: реального платежа нет, address/memo/payment_uri равны null, can_pay=false.
confirmationsintegerВсегда
Число подтверждений, учитываемое для текущего набора поступлений. Ориентируйтесь на status, а не только на счётчик.
≥ 0
required_confirmationsintegerВсегда
Требуемое для счёта количество подтверждений.
≥ 0
checkout_urlstring · uriВсегда
Готовая платёжная ссылка. Секретный токен в URL даёт доступ к этому счёту; передавайте только соответствующему покупателю.
created_atstring · date-timeВсегда
Время создания в UTC, ISO 8601.
expires_atstring · date-timeВсегда
Срок оплаты в UTC, ISO 8601. После него не показывайте новые инструкции по оплате, даже если status ещё pending.
wallet_idstringУсловно
ID управляемого кошелька для сбора через /v1/sweeps. Поле отсутствует для импортированных адресов и общих адресов с memo.
orderIdstringУсловно · legacy
Поле совместимости только в списке счетов. Используйте order_id.
assetIdstringУсловно · legacy
Поле совместимости только в списке счетов. Используйте asset_id.
testModebooleanУсловно · legacy
Поле совместимости только в списке счетов. Используйте test_mode.
createdAtstring · date-timeУсловно · legacy
Поле совместимости только в списке счетов. Используйте created_at.
expiresAtstring · date-timeУсловно · legacy
Поле совместимости только в списке счетов. Используйте expires_at.
checkoutUrlstringУсловно · legacy
Поле совместимости только в списке счетов. Используйте checkout_url.
requiredConfirmationsintegerУсловно · legacy
Поле совместимости только в списке счетов. Используйте required_confirmations.
≥ 0
resolutionNotestring | nullУсловно
Примечание продавца к решению по спорному платежу; поле списка.
lastCheckedAtstring | null · date-timeУсловно
Время последней проверки платежа; поле списка.
lastErrorstring | nullУсловно
Обобщённый код последней ошибки проверки; поле списка. Служебные адреса не возвращаются.
recheckRequestedbooleanУсловно
Запрошена повторная проверка из кабинета; поле списка.
monitoringArchivedbooleanУсловно
Автоматическая проверка адреса остановлена. Для позднего перевода запустите повторную проверку счета в кабинете; поле списка.
Время UTC YYYY-MM-DD HH:mm:ss.SSS; первый ответ может не содержать поле.
replayedbooleanВсегда
false для первого создания, true при повторе.
privateKeystringУсловно
Только при returnPrivateKey=true в первом ответе. Формат задаётся keyFormat: XRP — строка family seed, остальные — 32 байта hex с 0x. Никогда не сохраняйте в логах и не передавайте в браузер. Для TRON при импорте может требоваться убрать 0x.
keyDeliverystringУсловно
При запросе экспорта: one_time в первом ответе; not_repeated в повторном. Если первый ответ потерян, ключ повторно не выдаётся.
Последние 100 адресов, новые первыми; пагинации нет.
элементов ≤ 100
CreateTransferПолей: 8
Поле / тип
Описание
fundGasbooleanНеобязательно
При нехватке нативной монеты на временном адресе пополнить её с главного кошелька этого магазина. Только для токенов и адресов без экспорта ключа. На заявку допускается одно пополнение не более недостающей суммы до feeBudget. Главные и архивные главные адреса не пополняются автоматически.
по умолчанию: true
fundingFeeBudgetstringНеобязательно
Бюджет сетевой комиссии отдельной транзакции пополнения. По умолчанию feeBudget; те же пределы и точность. Пополнение имеет свою плату за заявку и отправку по 0.01 USDT ресурсов.
длина ≤ 80 · pattern: ^\d+(\.\d+)?$
walletIdstringОбязательно
ID управляемого кошелька вашего проекта в выбранной сети.
длина ≤ 50
assetIdstringОбязательно
Актив каталога переводов EVM/TRON/Solana/Sui/XRP/TON, соответствующий сети кошелька.
длина ≤ 180
destinationstringОбязательно
Адрес получателя в той же сети; нулевой адрес и исходный адрес запрещены.
длина ≤ 160
destinationTagintegerНеобязательно
Только XRP: Destination Tag получателя. Целое число от 0 до 4294967295; если получателю нужен тег, передайте его явно. Для остальных сетей и /sweeps параметр запрещён.
≥ 0 · ≤ 4294967295
amountstringОбязательно
Положительная сумма в единицах актива, строка без знака, пробелов и экспоненты. Не более decimals дробных знаков и 48 цифр целой части; не более 78 цифр в сумме минимальных единиц.
длина ≤ 80 · pattern: ^\d+(\.\d+)?$
feeBudgetstringОбязательно
Бюджет сетевой комиссии в НАТИВНОЙ монете (BNB/ETH/TRX/SOL/SUI/XRP/TON), не в токене. >0; ≤100 для TRON, ≤1 для остальных сетей. Точность нативной монеты; maxLength 80. Средства на комиссии нужны на исходном кошельке. В Base проверяется оценка дополнительной L1/operator fee с запасом, но протокол не позволяет жёстко ограничить L1-сбор; итог может измениться до включения в блок.
длина ≤ 80 · pattern: ^\d+(\.\d+)?$
Неизвестные поля в теле отклоняются с HTTP 400.
CreateSweepПолей: 5
Поле / тип
Описание
walletIdstringОбязательно
ID управляемого кошелька вашего проекта в выбранной сети.
длина ≤ 50
assetIdstringОбязательно
Актив каталога переводов EVM/TRON/Solana/Sui/XRP/TON, соответствующий сети кошелька.
длина ≤ 180
feeBudgetstringОбязательно
Бюджет сетевой комиссии в НАТИВНОЙ монете (BNB/ETH/TRX/SOL/SUI/XRP/TON), не в токене. >0; ≤100 для TRON, ≤1 для остальных сетей. Точность нативной монеты; maxLength 80. Средства на комиссии нужны на исходном кошельке. В Base проверяется оценка дополнительной L1/operator fee с запасом, но протокол не позволяет жёстко ограничить L1-сбор; итог может измениться до включения в блок.
длина ≤ 80 · pattern: ^\d+(\.\d+)?$
fundGasbooleanНеобязательно
При нехватке нативной монеты на временном адресе пополнить её с главного кошелька этого магазина. Только для токенов и адресов без экспорта ключа. На заявку допускается одно пополнение не более недостающей суммы до feeBudget. Главные и архивные главные адреса не пополняются автоматически.
по умолчанию: true
fundingFeeBudgetstringНеобязательно
Бюджет сетевой комиссии отдельной транзакции пополнения. По умолчанию feeBudget; те же пределы и точность. Пополнение имеет свою плату за заявку и отправку по 0.01 USDT ресурсов.
длина ≤ 80 · pattern: ^\d+(\.\d+)?$
Неизвестные поля в теле отклоняются с HTTP 400.
TransferПолей: 18
Поле / тип
Описание
destinationTagintegerУсловно
Destination Tag для XRP; поле отсутствует, если не задан.
≥ 0 · ≤ 4294967295
purposestringУсловно
Назначение операции.
transfergas_funding
parentTransferIdstring | nullУсловно
ID перевода, для которого выдана комиссия. null для обычного перевода.
gasFundingbooleanУсловно
У заявки есть зафиксированный главный кошелёк для возможного пополнения комиссии.
idstringВсегда
ID заявки.
walletIdstringВсегда
Исходный управляемый кошелёк.
assetIdstringВсегда
Актив перевода.
destinationstringВсегда
Получатель, зафиксированный при создании заявки.
amountstringВсегда
Запрошенная сумма или строка max для сбора всего доступного остатка.
sentAmountstringУсловно
Фактическая подготовленная сумма; отсутствует до подготовки. Наличие не означает подтверждение.
pattern: ^\d+(\.\d+)?$
statusstringВсегда
Состояние обработки; только confirmed подтверждает выполнение.
Последние 100 заявок, включая сборы; новые первыми, пагинации нет.
элементов ≤ 100
BroadcastInputПолей: 2
Поле / тип
Описание
chainstringОбязательно
Сеть с включённой отправкой для проекта. EVM, TRON, UTXO, XRP или Solana; TON и SUI не поддержаны этим методом.
signedTransactionstringОбязательно
Уже подписанная транзакция: EVM — 0x-prefixed hex (chainId должен совпадать); UTXO/XRP — hex без 0x; Solana — base64; TRON — JSON, закодированный строкой, с signature, raw_data_hex и txID. Не передавайте приватные ключи.
длина ≥ 10 · длина ≤ 30000
Неизвестные поля в теле отклоняются с HTTP 400.
BroadcastПолей: 6
Поле / тип
Описание
idstringВсегда
ID заявки на публикацию.
statusstringВсегда
submitted означает принятие сетью, а не финальное подтверждение. unknown — результат неизвестен; processing — обработка; rejected — отклонено.
processingunknownsubmittedrejected
txidstringУсловно
Хеш транзакции, если известен.
requestCoststringВсегда
Стоимость заявки, USDT.
pattern: ^\d+(\.\d+)?$
sendCoststringВсегда
0.01 USDT для submitted, иначе 0.
pattern: ^\d+(\.\d+)?$
reservedstringВсегда
0.01 USDT при processing/unknown, иначе 0.
pattern: ^\d+(\.\d+)?$
RateПолей: 4
Поле / тип
Описание
kindstringВсегда
Вид оплачиваемого действия.
sendtrackingsend_requestwebhook
labelstringВсегда
Название.
detailstringВсегда
Когда начисляется стоимость.
pricestringВсегда
Стоимость в USDT.
pattern: ^\d+(\.\d+)?$
BalanceПолей: 6
Поле / тип
Описание
balancestringВсегда
Учётный баланс ресурсов, USDT, до вычета резерва. Десятичная строка; может быть отрицательной после корректировки поступлений.
pattern: ^-?\d+(\.\d+)?$
reservedstringВсегда
Резерв на незавершённые отправки.
pattern: ^\d+(\.\d+)?$
availablestringВсегда
balance − reserved; может быть отрицательной строкой.