Error 50052 insufficient funds

Биржа Exmo – полный обзор популярной торговой площадки Table of Contents Биржа криптовалют Exmo (Эксмо) – разбор всех нюансов платформы Регистрация и верификация на Exmo Безопасность аккаунта Как торговать на бирже Exmo Как завести или вывести деньги с Exmo Обмен и торги Распространенные ошибки Другие сервисы биржи Cashback OTC-Trading Мерчант Сервис VIP-клиенты Реферальная программа […]
Биржа Exmo – отзывы 2022 года и перспективы

Ошибка 10016: запрет на отправку сообщений в чат

Такая ошибка на exmo возникает, если на балансе пользователя сумма, эквивалент которой составляет менее 500 долларов США. Для того, чтобы писать в чат, не обязательно иметь 500 долларов, но можно иметь любую валюту: евро, рубли, биткоин или монеро. Важно, чтобы общая стоимость этих средств по курсу биржи была равна 500 долларам или более.

Такое ограничение принято администрацией биржи для того, чтобы снизить нагрузку на чат и модераторов. Из-за высокой популярности торговой площадки желающих высказаться высказаться в чате слишком высокое.

Биржа криптовалют Exmo (Эксмо) – разбор всех нюансов платформы

Exmo – международная торговая площадка, одна из крупнейших в восточной Европе. Биржа основана в 2013 году и сегодня может похвастаться суточным торговым оборотом в более чем 40 миллионов долларов. На Эксмо действует около 40 тысяч активных трейдеров и представлено 157 валютных пар.

Компания EXMO EXCHANGE LTD. зарегистрирована в Великобритании по адресу 41 Corsham St, London, United Kingdom. Ее офисы действуют в Лондоне, Киеве, Барселоне и Москве. Основателями криптобиржи являются выходцы из стран СНГ Иван Петуховский и Павел Лернер, родившийся в Курске и ныне проживающий в Барселоне под именем Палтиэль Лернер.

К слову, в конце 2022 года Лернер был похищен неизвестными в Киеве и отпущен на свободу после того, как заплатил выкуп в размере 2 миллионов долларов в биткоинах.

Интерфейс сервиса имеет многоязычную локализацию. Всего доступно 12 языков – русский, польский, английский, украинский, испанский, итальянский, португальский и другие.

Официальный сайт –exmo.com. Зеркало – exmo.me (было создано после блокировки основного адреса Роскомнадзором).

В апреле 2022 года на платформе состоялось первое IEO (аналог ICO) – первичное биржевое предложение, которое завершилось буквально за полторы минуты. Токенсейл проводил проект Paytomat, который разрабатывает решение для платежных систем, позволяющее им работать с криптовалютами. Всего инвесторы выкупили 85 тысяч монет на общую сумму в 409 тысяч долларов.

Ошибка 10096: введён неправильный адрес ВСН при выводе

Если увидели такую ошибку на exmo, то следует поступить следующим образом:

  1. Сначала проверить, правильно ли был введён адрес кошелька. Зачастую, в начале или конце кода копируется пробел. Если пробела нет, сверить адрес кошелька.
  2. Если адрес введён верно, но exmo отдаёт ошибку, возможно, такого кошелька просто нет в блокчейне. Проверить реальность кошелька можно перейдя по этой ссылке https://blockchair.com/ru/bitcoin-cash/addresses и введя в соответствующую строку адрес кошелька.
  3. Проверьте какой из форматов адресов кошелька, Legacy или CashAddr поддерживает кошелёк, на который должны быть отправлены средства. Это можно сделать по адресу https://blockdozer.com.

Помните, что exmo поддерживает работу кошельков только сети BCHABC.

Стоит ли выводить Биткоины через биржу?

Этот вопрос задают очень часто.

Допустим, у нас есть Биткоины на кошельке. Выгодно ли обналичить их через биржу?

Реализовать это можно одним из трёх способов:

Заводим BTC на биржу, меняем, выводим.

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

Где выгоднее всего покупать и продавать Биткоины (Сравнение лучших курсов)

Как можно увидеть, в плане выгодности такая схема вывода находится на последнем месте.

То есть, если вы решите менять Биткоины через EXMO, то потеряете до 11%, по сравнению с другими способами.

Так что для обналичивания Биткоинов намного выгоднее пользоваться WebMoney или LocalBitcoins.

Заводим BTC на биржу, создаём EX-CODE в BTC, выводим через обменник.

Такой способ вывода может показаться интересным. Ведь не нужно платить комиссию за вывод денег на карту или платёжную систему.

Напомню, что комиссия здесь колеблется от 2,5% до 4,5% на вывод.

При этом вывод через EX-CODE составляет всего 0,2%.

Но давайте сравним курсы обмена.

Для этого переходим на мониторинг BestChange и выбираем направление: Bitcoin на Сбербанк.

Как можно увидеть, курс составляет около 679 000 рублей за 1 BTC.

Теперь выбираем направление: Exmo BTC на Сбербанк.

Курс здесь менее выгодный и составляет 677 635 рублей за 1 Биткоин.

Так что нам выгоднее менять Биткоины напрямую через BestChange, чем делать это через биржу.

Заводим BTC на биржу, создаём EX-CODE в рублях, выводим через обменник.

Да, по сравнению с двумя предыдущими способами вывода, этот — самый выгодный.

Комиссия на вывод через обменник отрицательная и составляет -0,4%. То есть, если вы обменяете 1000 рублей, то получите 1004 рубля на карту.

А комиссия биржи за создание кода равняется 0,2%.

Но даже с такими комиссиями, данная схема вывода остаётся далеко не самой выгодной. Она всё ещё уступает Web Money, LocalBitcoins, Bestchange и BTC Banker.

При этом в некоторых представленных выше способах, сама процедура обмена — проще и удобнее. В Bestchange, например, не нужно даже регистрироваться.

Вывод очевиден. Если вы хотите продать Биткоины, то нет никакого смысла использовать для этого биржу EXMO.

Ошибка 10143: блокировка в связи с изменениями профиля

По правилам биржи, если в настройки профиля пользователя были внесены изменения, для обеспечения безопасности, вывод средств блокируется трое суток с момента сохранения настроек. Это сделано для того, чтобы обезопасить средства клиентов, если злоумышленники получат доступ к аккаунту злоумышленниками. Через трое суток после изменения настроек, вывод средств будет автоматически разблокирован.

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

Биржа Exmo – отзывы 2022 года и перспективы

Эксмо продолжает развиваться. В настоящее время тестируется новый функционал, в частности, работа стоп-ордеров. В будущем разработчики обещают представить также мобильное приложение своей торговой платформы.

Биржа пользуется наибольшей популярностью среди пользователей из стран Восточной Европы, что не удивительно, учитывая поддержку местных фиатных валют и популярных в регионе платежных систем.

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

Ошибка 10220: блокировка снятия средств с аккаунта

На торговой площадке работает анти-фрод система, которая должна обеспечивать безопасность денежных средств пользователей. Ошибка 10220 на exmo может возникать при любых подозрительных действиях. Например, при заходе в кабинет с ip-адреса другой страны или с мобильного телефона (при том, что раньше вход осуществлялся только с персонального компьютера) система безопасности может временно заблокировать вывод средств с аккаунта.

Для того, чтобы узнать причину блокировки и разблокировать аккаунт, необходимо обратиться в службу поддержки, заполнив форму здесь https://support.exmoney.com/hc/ru/requests/new. При обращении важно использовать тот адрес электронной почты, указанный при регистрации.

Exmo код (EX-CODE) – что это такое и как его получить

EX-CODE или иначе «Эксмо код» является внутренним денежным сресдтвом площадки. С егопомощью пользователи могут передавать деньги друг другу как на крипобирже, так и вне сервиса.

Платформа позволяет сгенерировать код в любой валюте, представленной на Эксмо.

Находим во вкладке «Кошелек» внизу списка валют строку «EX-CODE». Кликаем на «Вывести». Далее выбираем валюту из выпадающего списка, указываем сумму вывода. Опционально можно вписать и логин получателя – в этом случае получится именной код и активировать его сможете только вы или указанный человек.

С Exmo кодом сегодня работает большинство популярных онлайн-обменников валют, а потому используя его можно быстро выводить средства с биржи в любые фиатные валюты, не представленные на платформе. К слову, в этих обменных сервисах можно и приобрести при необходимости EX-CODE. Также код можно преподнести знакомым или друзьям в качестве подарка.

Преимущества биржи Эксмо

  • платформа как для новичков, так и профессиональных трейдеров;
  • многоязычный интерфейс;
  • быстрая регистрация;
  • необязательная верификация;
  • большое количество вариантов пополнения, а также вывода средств;
  • поддержка популярных фиатных валют;
  • бонусы для владельцев EXM;
  • круглосуточная техподдержка;
  • минималистичный продуманный дизайн;
  • ночной режим интерфейса.

Недостатки

  • Отсутствует маржинальная торговля.

Ошибка 10413: использование неизвестного IP адреса

Такая ошибка появляется на exmo, если вы пытаетесь вывести средства, зайдя туда с ip-адреса, который ранее вами не использовался. Ограничение введено с целью защитить средства пользователей от мошенников.

Для вывода средств необходимо выйти из аккаунта и совершить повторную авторизацию. Этим вы дадите понять системе, что имеете устойчивый доступ к кошельку и, вероятно, являетесь его законным владельцем. После этого надо создать заявку на вывод и в полученном письме подтвердить её.

Exmo coin

Криптобиржа представила собственный токен для внутреннего пользования Exmo coin (EXM). Выпущен он на блокчейне Эфира и относится к стандарту ERC-20. Всего эмитировано 2 000 000 000 EXM. Закрытый пресейл прошел в конце июля 2022 года. В августе провели первый раунд открытых продаж. 2-й и 3-й запланированы на сентябрь-октябрь этого года.

Владельцы EXM получают скидки и бонусы на площадке. В частности, с их помощью можно снизить размер торговых комиссий до 50%. Кроме того:

  • Держатели токенов получают доступ к копитрейдингу. Иными словами, могут копировать сделки успешных трейдеров.
  • За Exmo coin биржа предлагает возможность приобретения майнинговых мощностей у партнеров платформы.
  • Все IEO на бирже проводятся в 2-х парах – к bitcoin и EXM.
  • Собственники EXM могут принимать участие в голосовании за листинг либо делистинг тех или иных монет.

Ошибка 10419: неправильный код из Google Authenticator

Ошибка 10419 на exmo чаще всего появляется (если не считать ошибочный ввод числового кода), когда время приложения Google Authenticator не синхронизировано с временем на компьютере. Для работы TOTP кодов синхронизация должна быть настроена до секунды.

Для настройки синхронизации нужно:

  1. Открыть меню Google Authenticator на смартфоне.
  2. Открыть «Настройки».
  3. Выбрать «Коррекция времени для кодов».
  4. Нажать «Синхронизировать».

Должно появиться подтверждение синхронизации времени приложения. Теперь коды двухфакторной аутентификации должны работать нормально.

Ошибка 11021: не прошло необходимое количество подтверждений транзакции в сети

Такое сообщение в личном кабинете exmo появляется, когда попытка совершить вывод средств совершена в то время, когда происходит зачисление валюты на кошелёк. Зачисление валюты происходит не моментально. С момента отправки средств до их окончательного зачисления, сумма на балансе, эквивалентная количеству зачисляемых монет в удвоенном размере, будет доступна для торгов, но не для снятия с баланса.

Снятие криптовалюты будет возможно после того, как будет получено нужное количество подтверждений сети. Для разных криптовалют установлены разные количества подтверждений. Так, для вывода:

  • PTI требуется 1 подтверждение;
  • LTC, DOGE требуется 4 подтверждение;
  • NEO, GAS требуется 5 подтверждений;
  • BTC, BCH, DASH, USDT, KICK, ETH требуется 6 подтверждений;
  • SMART, QTUM, XMR требуется 6 подтверждений;
  • ATMcash, DCR требуется 12 подтверждений;
  • ADA, LSK, XEM требуется 15 подтверждений;
  • WAVES, ZEC, ETC, BTCZ, TRX требуется 20 подтверждений;
  • EOS, HBZ, DXT, OMG, STQ, MNX, INK, ZRX, GNT, USDC, GUSD, HB, DAI, MKR, MNC требуется 30 подтверждений;
  • BTG (занимает иногда больше часа) требуется 50 подтверждений;
  • ETZ требуется 60 подтверждений;
  • ETC требуется 1200 подтверждений.

Каким-то образом ускорить процесс служба технической поддержки exmo не может. Альтернативный способ пополнения, чтобы сократить время зачисления средств — это эксмо коды.

Ошибка 11122: вывод средств временно заблокирован

Подобная ошибка является результатом срабатывания системы anti-fraud, которая обеспечивает безопасность средств пользователей биржи Exmo. Блокировка срабатывает в том случае,если система безопасности замечает какие-то подозрительные действия с аккаунтом пользователя.

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

Безопасность

Что касается обеспечения безопасности, криптовалютная биржа Exmo следует различных политикам и гайдлайнам. Компания внедрила строгий режим по борьбе с отмыванием денег и финансированием терроризма. Меры, которые принимает компания, направлены на защиту цифровой валюты против киберпреступлений и также снижение риска волатильности (изменений курса). Кошельки пользователей находятся в безопасности в режиме оффлайн, а информация на серверах зашифрована. Кроме того, у биржи есть защита против DDoS-атак.

Источник

[«Error 10008: Authorization error»]=»Ошибка 10008: Ошибка авторизации»;
[«Error 201: Server error»]=»Ошибка сервера 201″;
[«Error 10001: Too many login attempts»]=»Ошибка 10001: Слишком много попыток входа»;
[«Error 10002: Too many authorization errors»]=»Ошибка 10002: Слишком много ошибок авторизации»;
[«Error 10003: Daily message limit exceeded»]=»Ошибка 10003: Достигнут лимит на количество сообщений в сутки»;
[«Error 10004: Too many password reset attempts»]=»Ошибка 10004: Слишком много попыток восстановления пароля»;
[«Error 10005: Too many registration attempts»]=»Ошибка 10005: Слишком много попыток регистрации»;
[«Error 10006: Too many attempts of sending SMS»]=»Ошибка 10006: Слишком много попыток отправки SMS»;
[«Error 10007: Too many erroneous attempts to load codes»]=»Ошибка 10007: Слишком много ошибочных попыток загрузки кодов»;
[«Error 10175: Too many sms sent during authorization»]=»Ошибка 10175: Слишком много отправок смс при авторизации»;
[«Error 10009: Authorization error»]=»Ошибка 10009: Ошибка авторизации»;
[«Error 10010: Authorization error»]=»Ошибка 10010: Ошибка авторизации»;
[«Error 10011: You need to login»]=»Ошибка 10011: Вам необходимо авторизоваться на сайте»;
[«Error 10012″]=»Ошибка №100012»;
[«Error 10013: Chat temporarily not available»]=»Ошибка 10013: Чат временно недоступен»;
[«Error 10179″]=»Ошибка №10179»;
[«Error 10015: Chat message length exceeded»]=»Ошибка 10015: Превышена максимальная длина сообщения в чате»;
[«Error 10016: Refill your balance to write messages in the chat»]=»Ошибка 10016: Пополните баланс чтобы писать в чат»;
[«Error 10017: Chat available in [1] days after registration»]=»Ошибка 10017: Писать в чат можно через [1] дней после регистрации»;
[«Error 10018: You are banned from the chat»]=»Ошибка 10018: Вы заблокированы в чате»;
[«Error 10020″]=»Ошибка №10020»;
[«Error 10021: Message included prohibited content, you have been banned for [1] minutes»]=»Ошибка 10021: Сообщение содержало запрещенную фразу, Вы были заблокированы на [1] минут»;
[«Error 10022: Message included prohibited content, for next attempt you will be banned from the chat»]=»Ошибка 10022: Сообщение содержало запрещенную фразу, за следующую попытку Вы будете заблокированы в чате»;
[«Error 10023″]=»Ошибка №10023»;
[«Error 10024: Complaints about moderator’s message are not allowed»]=»Ошибка 10024: Нельзя жаловаться на сообщение модератора»;
[«Error 10025: Not allowed to reiterate a complaint against the same user in 24 hours period»]=»Ошибка 10025: На одного и того же пользователя можно отправлять жалобу всего один раз в 24 часа»;
[«Error 10026: You have reached the daily limit of complaints»]=»Ошибка 10026: Вы исчерпали лимит жалоб за 24 часа»;
[«Other users have been complaining about your behaviour in the chat room»]=»Вашим поведение в чате были недовольны другие пользователи»;
[«Error 10027″]=»Ошибка №10027»;
[«Error 10028″]=»Ошибка №10028»;
[«Error 10029: Need to register on the website»]=»Ошибка №10029. Необходимо авторизоваться на сайте»;
[«Error 10030: User’s account blocked»]=»Ошибка 10030: Аккаунт пользователя заблокирован»;
[«Error 10183″]=»Ошибка №10183»;
[«Error 10031: Operations with given currency are not allowed [1]»]=»Ошибка 10031: Операции с данной валютой запрещены [1]»;
[«Error 10032: Operations with given currency are not allowed [1]»]=»Ошибка 10032: Операции с данной валютой запрещены [1]»;
[«Error 10174″]=»Ошибка №10174»;
[«Error 10033: Operations for given currency pair are not allowed [1]»]=»Ошибка 10033: Операции с данной валютой парой запрещены [1]»;
[«Error 10034: Operations for given currency pair are not allowed [1]»]=»Ошибка 10034: Операции с данной валютой парой запрещены [1]»;
[«Error 10035: Answer to the question not found: [1]»]=»Ошибка 10035: Ответ на вопрос не найден: [1]»;
[«Error 10036: Error during credit-granting process»]=»Ошибка 10036: Ошибка кредитования»;
[«Error 10037: Too low margin level»]=»Ошибка 10037: Слишком низкий уровень маржи»;
[«Error 10038: Credit limit for given currency»]=»Ошибка 10038: Кредитный лимит исчерпан»;
[«Error 10040″]=»Ошибка №10040»;
[«Error 10041: Message not found»]=»Ошибка 10041: Сообщение не найдено»;
[«Error 10042: Message deleted»]=»Ошибка 10042: Сообщение удалено»;
[«Error 10043″]=»Ошибка №10043»;
[«Error 10044: News not found»]=»Ошибка 10044: Новость не найдена»;
[«Error 10045: News not found»]=»Ошибка 10045: Новость не найдена»;
[«Error 10046: News not found»]=»Ошибка 10046: Новость не найдена»;
[«Error 10047: Currency pair not found»]=»Ошибка 10047: Валютная пара не найдена»;
[«Error 10048: Currency pair blocked»]=»Ошибка 10048: Валютная пара заблокирована»;
[«Error 10049: Wrong order type»]=»Ошибка 10049: Неверный тип ордера»;
[«Error 10050: Margin loans cannot be used with given currency [1]»]=»Ошибка 10050: С данной валютой нельзя использовать маржинальное кредитование [1].»;
[«Error 10051: You have already received loan in given currency [1]»]=»Ошибка 10051: У Вас уже есть кредит по данной валюте [1]»;
[«Error 10052: Error in loan settings»]=»Ошибка 10052: Ошибка настроек кредитования»;
[«Error 10053: Insufficient funds on your account balance»]=»Ошибка 10053: Недостаточно средств на балансе»;
[«Error 10055: Credit not necessary, your balance is sufficient»]=»Ошибка 10055: Нет необходимости в кредитовании, средств Вашего баланса достаточно»;
[«Error 10054: Insufficient funds on your account balance»]=»Ошибка 10054: Недостаточно средств на балансе»;
[«Error 10056: Type of order not indicated»]=»Ошибка 10056: Тип ордера не указан»;
[«Error 10057: Incorrect type of order»]=»Ошибка 10057: Неверный тип ордера»;
[«Error 10058: Currency pair not indicated»]=»Ошибка 10058: Валютная пара не указана»;
[«Error 10059: Buy price not indicated»]=»Ошибка 10059: Цена покупки не указана»;
[«Error 10060: Amount for this order not indicated»]=»Ошибка 10060: Количество по ордеру не указано»;
[«Error 10060: Quantity for this order not indicated»]=»Ошибка 10060: Количество по ордеру не указано»;
[«Error 10061: Sell price not indicated»]=»Ошибка 10061: Цена продажи не указана»;
[«Error 10062: Stop loss not indicated»]=»Ошибка 10062: Stop loss не указан»;
[«Error 10063: Trailing stop not indicated»]=»Ошибка 10063: Trailing stop не указан»;
[«Error 10064: Indicate whether to use trailing stop or not»]=»Ошибка 10064: Укажите использовать или нет Trailing stop»;
[«Error 10065: Indicate whether to take a loan or not»]=»Ошибка 10065: Укажите использовать или нет кредитование»;
[«Error 10066: Incorrect buy price type»]=»Ошибка 10066: Тип цены покупки неверен»;
[«Error 10067: Incorrect amount type for order»]=»Ошибка 10067: Тип количества по ордеру неверен»;
[«Error 10068: Incorrect sell price type»]=»Ошибка 10068: Тип цены продажи неверен»;
[«Error 10069: Incorrect Stop loss type»]=»Ошибка 10069: Тип Stop loss неверен»;
[«Error 10070: Incorrect Trailing stop type»]=»Ошибка 10070: Тип Trailing stop неверен»;
[«Error 10071: Incorrect data type: use_trailing»]=»Ошибка 10071: Неверный тип данных: use_trailing»;
[«Error 10072: Incorrect data type: use_kredit»]=»Ошибка 10072: Неверный тип данных: use_kredit»;
[«Error 10073: Amount should exceed zero»]=»Ошибка 10073: Количество должно быть больше нуля»;
[«Error 10074: Buy price should exceed zero»]=»Ошибка 10074: Цена покупки должна быть больше нуля»;
[«Error 10075: Sell price should exceed zero»]=»Ошибка 10075: Цена продажи должна быть больше нуля»;
[«Error 10077: Trailing stop should exceed zero»]=»Ошибка 10077: Trailing stop должен быть больше нуля»;
[«Error 10078: Sell price should be greater than the buy price»]=»Ошибка 10078: Цена продажи должна быть больше цены покупки»;
[«Error 10079: Amount below the minimum allowed»]=»Ошибка 10079: Количество меньше минимального»;
[«Error 10080: No active buy orders, impossible to use trailing stop»]=»Ошибка 10080: Невозможно использовать Trailing stop т.к. нет ордеров на покупку»;
[«Error 10081: Margin loans cannot be used with instant orders»]=»Ошибка 10081: Маржинальное кредитование нельзя использовать с ордерами по рынку»;
[«Error 10082: One of the wallets has a margin level below zero, all operations except deposit are blocked»]=»Ошибка №10082 На одном из кошельков уровень маржи меньше нуля, все операции кроме депозита заблокированы»;
[«Error 10083: Currency blocked»]=»Ошибка 10083: Валюта заблокирована»;
[«Error 10084: Limit of orders for this session exceeded»]=»Ошибка 10084: Лимит ордеров на сессию превышен»;
[«Error 10085: Amount for this order exceeds the maximum allowed»]=»Ошибка 10085: Количество по ордеру больше максимально допустимого»;
[«Error 10086: Currency pair not found [1]»]=»Ошибка 10086: Валютная пара не найдена [1]»;
[«Error 10087: Order not found [1]»]=»Ошибка 10087: Ордер не найден [1]»;
[«Error 10088: Template not found»]=»Ошибка 10088: Шаблон не найден»;
[«Error 10089: Wallet not found»]=»Ошибка 10089: Кошелек не найден»;
[«Error 10039: Insufficient funds in user’s wallet UID: [1], currency: [2]»]=»Ошибка 10039: Недостаточно средств на кошельке пользователя UID:[1], валюта:[2]»;
[«Error 10090: Wallet not found»]=»Ошибка 10090: Кошелек не найден»;
[«Error 10091″]=»Ошибка 10091»;
[«Error 10092″]=»Ошибка 10092»;
[«Error 10093″]=»Ошибка 10093»;
[«Error 10094: Not possible to withdraw funds while open instant orders exist»]=»Ошибка 10094: Нельзя вывести средства пока есть открытые ордера по рынку»;
[«Error 10143: Withdrawals blocked until [1] due to changes in profile settings»]=»Ошибка 10143: Вывод заблокирован до [1] т.к. было изменение настроек профиля»;
[«Error 10095: Not possible to withdraw funds due to existing loan»]=»Ошибка 10095: Нельзя вывести средства так как есть кредит»;
[«Error 10096: Invalid address»]=»Ошибка 10096: Неправильный адрес»;
[«Error 10097: Amount less than the minimum allowed»]=»Ошибка 10097: Количество меньше минимально допустимого»;
[«Error 10496: Amount less than the minimum allowed»]=»Ошибка 10496: Количество меньше минимально допустимого»;
[«Error 10098: Amount should exceed zero»]=»Ошибка 10098: Количество должно быть больше нуля»;
[«Error 10099: Insufficient funds on your account balance»]=»Ошибка 10099: Недостаточно средств на балансе»;
[«Error 10100″]=»Ошибка №10100»;
[«Error 10101: Daily limit for withdrawals reached»]=»Ошибка 10101: Достигнут лимит операций вывода за сутки»;
[«Error 10105: Currency pair not indicated»]=»Ошибка 10105: Валютная пара не указана»;
[«Error 10106: Timeframe not indicated»]=»Ошибка 10106: Период не указан»;
[«Error 10107: Incorrect parameters type»]=»Ошибка 10107: Тип параметров не верен»;
[«Error 10108: Currency not indicated»]=»Ошибка 10108: Валюта не указана»;
[«Error 10180″]=»Ошибка №10180»;
[«Error 10109: Incorrect code format»]=»Ошибка 10109: Формат кода не верен»;
[«Error 10110: Template name not indicated»]=»Ошибка 10110: Имя шаблона не задано»;
[«Error 10111: Template not found»]=»Ошибка 10111: Шаблон не найден»;
[«Error 10112: Parameters error»]=»Ошибка 10112: Ошибка параметров»;
[«Error 10181: Parameters error»]=»Ошибка 10181: Ошибка параметров»;
[«Error 10113: Parameters error»]=»Ошибка 10113: Ошибка параметров»;
[«Error 10114: Parameters error»]=»Ошибка 10114: Ошибка параметров»;
[«Error 10182: Parameters error»]=»Ошибка 10182: Ошибка параметров»;
[«Error 10115: Recipient of the message not indicated»]=»Ошибка 10115: Получатель сообщения не указан»;
[«Error 10116: Not allowed to send message to user with login ‘noreply’»]=»Ошибка 10116: Нельзя отправить сообщение пользователю с логином ‘noreply’»;
[«Error 10117: Subject of the message not indicated»]=»Ошибка 10117: Тема сообщения не указана»;
[«Error 10118: Empty message»]=»Ошибка 10118: Текс сообщения не указан»;
[«Error 10119: Refill your balance to send private messages»]=»Ошибка 10119: Пополните баланс для возможности отправки личных сообщений»;
[«Error 10120: Parameters error»]=»Ошибка 10120: Ошибка параметров»;
[«Error 10121: Parameters error»]=»Ошибка 10121: Ошибка параметров»;
[«Error 10122: Not possible to load information for this timeframe»]=»Ошибка 10122: Нельзя получить данные по графику за этот период»;
[«Error 10205: Withdrawal error»]=»Ошибка 10205: Ошибка вывода»;
[«Error 10208: Enter TOTP code»]=»Ошибка 10208: Укажите TOTP код»;
[«Error 10124: Incorrect TOTP code»]=»Ошибка 10124: Неверный TOTP код»;
[«Error 10208: Enter code from SMS»]=»Ошибка 10208: Укажите код из SMS»;
[«Error 10123: Incorrect SMS code»]=»Ошибка 10123: SMS код неверный»;
[«Error 10125: Account blocked»]=»Ошибка 10125: Аккаунт заблокирован»;
[«Error 10126: Account not activated»]=»Ошибка 10126: Аккаунт не активирован»;
[«Error 10127: Incorrect login or password»]=»Ошибка 10127: Неверный логин или пароль»;
[«Error 10128: Login already exists»]=»Ошибка 10128: Такой логин уже существует»;
[«Error 10129: This e-mail already has an account»]=»Ошибка 10129: Аккаунт на данный email уже зарегистрирован»;
[«Error 10130: Incorrect Captcha»]=»Ошибка 10130: Captcha неверна»;
[«Error 10131: Password too short»]=»Ошибка 10131: Пароль слишком короткий»;
[«Error 10132: Login too short»]=»Ошибка 10132: Логин слишком короткий»;
[«Error 10133: Wrong e-mail»]=»Ошибка 10133: E-mail указан неверно»;
[«Error 10134: Enter password»]=»Ошибка 10134: Укажите пароль»;
[«Error 10135: Password too short»]=»Ошибка 10135: Пароль слишком короткий»;
[«Error 10136: Different passwords»]=»Ошибка 10136: Пароли отличаются»;
[«Error 10137: TOTP code too short»]=»Ошибка 10137: ТОТР код слишком короткий»;
[«Error 10138: Phone number not confirmed»]=»Ошибка 10138: Телефон не подтвержден»;
[«Error 10139: API key too short»]=»Ошибка 10139: API ключ слишком короткий»;
[«Error 10140: Telephone number already confirmed»]=»Ошибка 10140: Данный номер уже подтвержден»;
[«Error 10141: Incorrect confirmation code»]=»Ошибка 10141: Код подтверждения не верен»;
[«Error 10142: Enter e-mail»]=»Ошибка 10142: Укажите почту»;
[«Error 10177: Amount should exceed zero»]=»Ошибка 10177: Количество должно быть больше нуля»;
[«Error 10178: Enter withdrawal address»]=»Ошибка 10178: Укажите адрес вывода»;
[«Error 10144″]=»Ошибка №10144»;
[«Error 10145: Parameters error»]=»Ошибка 10145: Ошибка параметров»;
[«Error 10146: Withdrawal blocked due to change of password»]=»Ошибка 10146: Вывод заблокирован т.к. было изменение пароля»;
[«Error 10147: User blocked»]=»Ошибка 10147: Пользователь заблокирован»;
[«Error 10148: Parameters error»]=»Ошибка 10148: Ошибка параметров»;
[«Error 10076: Stop loss should be less than the maximum buy price»]=»Ошибка 10076: Stop loss должен быть меньше максимальной цены в стакане на покупку»;
[«Error 10189: Limit of open positions exceeded»]=»Ошибка 10189: Превышение лимита активных ордеров»;
[«Error 10190: The hour limit for new orders creation exceeded»]=»Ошибка 10190: Превышен лимит создания новых ордеров за час»;
[«Error 10191: Order not found [1]»]=»Ошибка 10191: Ордер не найден [1]»;
[«Error 10039: Insufficient funds in ‘[1]’ wallet [2]»]=»Ошибка 10039: Недостаточно средств на кошельке [2] пользователя ‘[1]’»;
[«Error 10192: Withdrawal error»]=»Ошибка 10192: Ошибка вывода»;
[«Error 10193: Withdrawal task not found [1]»]=»Ошибка 10193: Задание на вывод не найдено [1]»;
[«Error 10194: Withdrawal error»]=»Ошибка 10194: Ошибка вывода»;
[«Error 10195: Withdrawal error»]=»Ошибка 10195: Ошибка вывода»;
[«Error 10196: Withdrawal error»]=»Ошибка 10196: Ошибка вывода»;
[«Error 10197: Withdrawal error»]=»Ошибка 10197: Ошибка вывода»;
[«Error 10185″]=»Ошибка №10185»;
[«Error 10186″]=»Ошибка №10186»;
[«Error 10198: Wrong captcha»]=»Ошибка 10199: Капча не верна»;
[«Error 10200: Withdrawal provider is not set»]=»Ошибка 10200: Не указан провайдер вывода»;
[«Error 10201: Invalid withdrawal provider»]=»Ошибка 10201: Указан неверный провайдер вывода»;
[«Error 10204: Settings error»]=»Ошибка 10204: Ошибка настроек»;
[«Error 404″]=»Ошибка 404»;
[«Error 10184″]=»Ошибка №10184»;
[«Error 10149: Server problem»]=»Ошибка 10149: Проблема с сервером»;
[«Error 10346: Server problem»]=»Ошибка 10346: Проблема с сервером»;
[«Error 10150: Server problem»]=»Ошибка 10150: Проблема с сервером»;
[«Error 10342: Server problem»]=»Ошибка 10342: Проблема с сервером»;
[«Error 10152: Server problem»]=»Ошибка 10152: Проблема с сервером»;
[«Error 10339: Server problem»]=»Ошибка 10339: Проблема с сервером»;
[«Error 10153: Server problem»]=»Ошибка 10153: Проблема с сервером»;
[«Error 10340: Server problem»]=»Ошибка 10340: Проблема с сервером»;
[«Error 10151: Server problem»]=»Ошибка 10151: Проблема с сервером»;
[«Error 10341: Server problem»]=»Ошибка 10341: Проблема с сервером»;
[«Error 10154: Server problem»]=»Ошибка 10154: Проблема с сервером»;
[«Error 10155: Server problem»]=»Ошибка 10155: Проблема с сервером»;
[«Error 10160: Server problem»]=»Ошибка 10160: Проблема с сервером»;
[«Error 10156: Server problem»]=»Ошибка 10156: Проблема с сервером»;
[«Error 10157: Server problem»]=»Ошибка 10157: Проблема с сервером»;
[«Error 10158: Server problem»]=»Ошибка 10158: Проблема с сервером»;
[«Error 10159: Server problem»]=»Ошибка 10159: Проблема с сервером»;
[«Error 10161: Server problem»]=»Ошибка 10161: Проблема с сервером»;
[«Error 10162: Server problem»]=»Ошибка 10162: Проблема с сервером»;
[«Error 10163: Server problem»]=»Ошибка 10163: Проблема с сервером»;
[«Error 10164: Server problem»]=»Ошибка 10164: Проблема с сервером»;
[«Error 10165: Server problem»]=»Ошибка 10165: Проблема с сервером»;
[«Error 10166: Server problem»]=»Ошибка 10166: Проблема с сервером»;
[«Error 10167: Server problem»]=»Ошибка 10167: Проблема с сервером»;
[«Error 10168: Server problem»]=»Ошибка 10168: Проблема с сервером»;
[«Error 10169: Server problem»]=»Ошибка 10169: Проблема с сервером»;
[«Error 10170: Server problem»]=»Ошибка 10170: Проблема с сервером»;
[«Error 10171: Server problem»]=»Ошибка 10171: Проблема с сервером»;
[«Error 10172: Server problem»]=»Ошибка 10172: Проблема с сервером»;
[«Error 10173: User with this login not found ‘[1]’»]=»Ошибка 10173: Пользователь с таким логином не найден ‘[1]’»;
[«Error 10202: Server problem»]=»Ошибка 10202: Проблема с сервером»;
[«Error 10344: Server problem»]=»Ошибка 10344: Проблема с сервером»;
[«Error 10203: Server problem»]=»Ошибка 10203: Проблема с сервером»;
[«Error 10345: Server problem»]=»Ошибка 10345: Проблема с сервером»;
[«Error 10219: Request limit exceeded, try later»]=»Ошибка 10219: Превышен лимит на количество запросов. Повторите операцию позже»;
[«Error 10225″]=»Ошибка №10225»;
[«Error 10019: You cannot send more than one message in [1] seconds»]=»Ошибка 10019: Отправлять в чат сообщения можно не чаще одного раза в [1] секунд»;
[«Error 10213: Access denied»]=»Ошибка 10213: Доступ запрещен.»;
[«Error 10215: Access denied»]=»Ошибка 10215: Доступ запрещен.»;
[«Error 10222: Authorization error»]=»Ошибка 10222: Ошибка авторизации»;
[«Error 10223: Currency pair not found»]=»Ошибка 10223: Валютная пара не найдена»;
[«Error 10206: Deposit provider not available»]=»Error 10206: Провайдер депозита недоступен»;
[«Error 10226: Reached your 24 hour-limit for QIWI»]=»Ошибка 10226: Достигнут лимит счет в киви за сутки»;
[«Error 10227: User [1] has more than one credit by currency [2]»]=»Ошибка 10227: Пользователь [1] имеет больше одного кредита в валюте [2]»;
[«Error 10228″]=»Ошибка 10228»;
[«Error 10229: Credit [1] not found»]=»Ошибка 10229: Кредит [1] не найден»;
[«Error 10230: Credit remove failed»]=»Ошибка 10230: Не удалось удалить кредит»;
[«Error 10231″]=»Ошибка 10231»;
[«Error 10232″]=»Ошибка 10232»;
[«Error 10233″]=»Ошибка 10233»;
[«Error 10234: Message failed to send [1]»]=»Ошибка 10234: Ошибка отправки письма [1]»;
[«Error 10235: Insufficient funds»]=»Ошибка 10235: Недостаточно средств»;
[«Error 10236: Insufficient funds»]=»Ошибка 10236: Недостаточно средств»;
[«Error 10237: Loans temporarily unavailable»]=»Ошибка 10237: Кредитование временно недоступно»;
[«Error 10238: Insufficient funds on your account balance»]=»Ошибка 10238: Недостаточно средств на балансе»;
[«Error 10239: Insufficient funds on your account balance»]=»Ошибка 10239: Недостаточно средств на балансе»;
[«Error 10241: There were no transactions on the currency pair, impossible to use loans»]=»Ошибка 10241: Сделок по валютной паре не было, использовать кредитование нельзя»;
[«Error 10242: There were no transactions on the currency pair, impossible to use loans»]=»Ошибка 10242: Сделок по валютной паре не было, использовать кредитование нельзя»;
[«Error 10243: Order ID is not set»]=»Ошибка 10243: Отсутствует Order ID»;
[«Error 10244: Order UID is not set»]=»Ошибка 10244: Отсутствует Order UID»;
[«Error 10245: Order ID type is invalid»]=»Ошибка 10245: Неправильный тип Order ID»;
[«Error 10246: Order UID type is invalid»]=»Ошибка 10246: Неправильный тип Order UID»;
[«Error 10247: Failed to identify the order owner»]=»Ошибка 10247: Ошибка при проверке владельца ордера»;
[«Error 10248: Order is not processed»]=»Ошибка 10248: Ордер не обработан»;
[«Error 10249: Instant order cannot be cancelled»]=»Ошибка 10249: Ордер по рынку не может быть отменен»;
[«Error 10250: No more orders»]=»Ошибка 10250: Ордеров больше нет»;
[«Error 10251: Message not found»]=»Ошибка 10251: Сообщение не найдено»;
[«Error 10187: file [1] not found»]=»Ошибка 10187: Файл [1] не найден»;
[«Error 10252: User with id=[1] not found»]=»Ошибка 10252: Пользователь с id=[1] не найден»;
[«Error 10214: Invalid API key»]=»Ошибка 10214: Неправильный ключ API»;
[«Error 10253: Invalid email»]=»Ошибка 10253: Пользователь с такой почтой не найден»;
[«Error 10254: User with email=[1] not found»]=»Ошибка 10254: Пользователь с email=[1] не найден»;
[«Error 10255: Task has been already confirmed»]=»Ошибка 10255: Задание уже было подтверждено»;
[«Error 10256: Task has been already cancelled»]=»Ошибка 10256: Задание уже было отменено»;
[«Error 10257: Provider with this name already exists»]=»Ошибка 10257: Провайдер с таким именем уже существует»;
[«Error 10258: Parameters error»]=»Ошибка 10258: Ошибка параметров»;
[«Error 10259: Incorrect task status»]=»Ошибка 10259: Неверный статус задания»;
[«Error 10260: Incorrect task status»]=»Ошибка 10260: Неверный статус задания»;
[«Error 10176″]=»Ошибка 10176»;
[«Error 10261: Deposit provider is not set»]=»Ошибка 10261: Провайдер ввода не указан»;
[«Error 10262: Amount should exceed zero»]=»Ошибка 10262: Сумма должна быть больше нуля»;
[«Error 10207: Given currency is not available for this provider»]=»Ошибка 10207: Для данного провайдера эта валюта недоступна»;
[«Error 10263: Telephone number is not indicated»]=»Ошибка 10263: Не указан номер телефона»;
[«Error 10264: Telephone number contains unsupported characters»]=»Ошибка 10264: Номер телефона содержит недопустимые символы»;
[«Error 10490: Telephone number contains unsupported characters»]=»Ошибка 10490: Номер телефона содержит недопустимые символы»;
[«Error 10265: Indicate your phone number»]=»Ошибка 10265: Укажите номер телефона»;
[«Error 10266: Message and/or subject contain inappropriate words»]=»Ошибка 10266: Сообщение иили тема содержит запрещенные слова»;
[«Error 10312: Introduce e-mail and password»]=»Ошибка 10312: Введите почту и пароль»;
[«Error 10267: Wrong e-mail or password»]=»Ошибка 10267: Неверная почта или пароль»;
[«Error 10268: Login contains unsupported characters»]=»Ошибка 10268: Логин содержит недопустимые символы»;
[«Error 10220: Withdrawals blocked»]=»Ошибка 10220: Вывод заблокирован»;
[«Error 10491: Withdrawals blocked»]=»Ошибка 10491: Вывод заблокирован»;
[«Error 10269: Provider temporarily unavailable due to technical problems»]=»Ошибка 10269: Провайдер недоступен по техническим причинам»;
[«Error 10270: Withdrawal amount exceeds the maximum allowed»]=»Ошибка 10270: Сумма вывода больше максимально допустимого»;
[«Error 10497: Withdrawal amount exceeds the maximum allowed»]=»Ошибка 10497: Сумма вывода больше максимально допустимого»;
[«Error 10271: Number of Z-payment wallet is missing»]=»Ошибка 10271: Номер Z-payment кошелька отсутствует»;
[«Error 10272: Wallet number should start with ‘ZP’»]=»Ошибка 10272: Номер кошелька должен начинаться с ‘ZP’»;
[«Error 10273: Number of Perfect money wallet is missing»]=»Ошибка 10273: Номер кошелька Perfect money отсутствует»;
[«Error 10274: Wallet number should start with ‘U’»]=»Ошибка 10274: Номер кошелька должен начинаться с буквы ‘U’»;
[«Error 10274: Wallet number should start with ‘E’»]=»Ошибка 10274: Номер кошелька должен начинаться с буквы ‘E’»;
[«Error 10275: Number of Payeer wallet is missing»]=»Ошибка 10275: Номер кошелька Payeer отсутствует»;
[«Error 10276: Wallet number should start with ‘P’»]=»Ошибка 10276: Номер кошелька должен начинаться с буквы ‘P’»;
[«Error 10277: Telephone number is missing»]=»Ошибка 10277: Номер телефона отсутствует»;
[«Error 10278: Telephone number should contain at least 10 characters»]=»Ошибка 10278: Длина номера телефона должна быть не меньше 10 символов»;
[«Error 10279: Number of Yandex.Money wallet is missing»]=»Ошибка 10279: Номер кошелька Яндекс.Деньги отсутствует»;
[«Error 10280: Wallet number should contain 13 characters»]=»Ошибка 10280: Длина номера кошелька должна быть 13 символов»;
[«Error 10281: Wallet number contains unsupported characters»]=»Ошибка 10281: Номер кошелька содержит недопустимые символы»;
[«Error 10282: Number of WebMoney WMR wallet is missing»]=»Ошибка 10282: Номер кошелька WebMoney WMR отсутствует»;
[«Error 10283: Wallet number should start with ‘R’»]=»Ошибка 10283: Номер кошелька должен начинаться с буквы ‘R’»;
[«Error 10284: Wrong email: [1]»]=»Ошибка 10284: Указан неверный email: [1]»;
[«Error 10285: Cardholder full name missing»]=»Ошибка 10285: ФИО владельца карты отсутствует»;
[«Error 10286: Card expiration date missing»]=»Ошибка 10286: Дата истечения срока действия карты отсутствует»;
[«Error 10287: Telephone number of the payment recipient missing»]=»Ошибка 10287: Телефон получателя платежа отсутствует»;
[«Error 10288: Card number missing»]=»Ошибка 10288: Номер банковской карты отсутствует»;
[«Error 10289: Cardholder full name should be written in two separate words»]=»Ошибка 10289: Имя и фамилия владельца должны состоять из двух слов разделенных пробелом»;
[«Error 10290: Cardholder full name contains unsupported characters»]=»Ошибка 10290: Имя или фамилия владельца содержит недопустимые символы»;
[«Error 10291: Card expiration date should contain 4 characters»]=»Ошибка 10291: Длина срока окончания действия карты должна быть 4 символа»;
[«Error 10292: The field with card expiration date contains unsupported characters»]=»Ошибка 10292: Поле срок окончания действия карты содержит недопустимые символы»;
[«Error 10293: Telephone number should contain at least 10 characters»]=»Ошибка 10293: Длина номера телефона не может быть меньше 10 символов»;
[«Error 10294: Card number should contain 16 characters»]=»Ошибка 10294: Длина номера карты должна быть 16 символов»;
[«Error 10295: Card number contains unsupported characters»]=»Ошибка 10295: Номер карты содержит недопустимые символы»;
[«Error 10296: Withdrawals possible only to Master Card»]=»Ошибка 10296: Вывод возможен только на карты Master Card»;
[«Error 10297: Need to indicate the wallet or telephone number»]=»Ошибка 10297: Необходимо указать номер кошелька (или телефона)»;
[«Error 10298: Need to indicate the telephone number»]=»Ошибка 10298: Необходимо указать номер телефона»;
[«Error 10299: Need to indicate the wallet number»]=»Ошибка 10299: Необходимо указать номер кошелька»;
[«Error 10300: Need to indicate the card number»]=»Ошибка 10300: Необходимо указать номер карты»;
[«Error 10301: Need to indicate the name»]=»Ошибка 10301: Необходимо указать имя»;
[«Error 10302: Need to indicate the last name»]=»Ошибка 10302: Необходимо указать фамилию»;
[«Error 10303: Need to indicate the middle name»]=»Ошибка 10303: Необходимо указать отчество»;
[«Error 10304: Need to indicate passport series and number»]=»Ошибка 10304: Необходимо указать серию и номер паспорта»;
[«Error 10305: Need to indicate full name»]=»Ошибка 10305: Необходимо указать ФИО»;
[«Error 10306: Need to indicate billing address»]=»Ошибка 10306: Необходимо указать адрес»;
[«Error 10307: Need to indicate the city»]=»Ошибка 10307: Необходимо указать город»;
[«Error 10308: Withdrawal account is wrong»]=»Ошибка 10308: Аккаунт вывода указан неверно»;
[«Error 10309: You need to login»]=»Ошибка 10309: Вам необходимо авторизоваться на сайте»;
[«Error 10310: Internal error»]=»Ошибка 10310: Внутренняя ошибка»;
[«Error 10311: Internal error»]=»Ошибка 10311: Внутренняя ошибка»;
[«Error 10343: Internal error»]=»Ошибка 10343: Внутренняя ошибка»;
[«Error 10317: Currency pair not indicated»]=»Ошибка 10317: Валютная пара не указана»;
[«Error 10318: Timeframe not indicated»]=»Ошибка 10318: Период не указан»;
[«Error 10313″]=»Ошибка 10313»;
[«Error 10314″]=»Ошибка 10314»;
[«Error 10315″]=»Ошибка 10315»;
[«Error 10210: Error during deposit task creation»]=»Ошибка 10210: Ошибка создания задания на ввод»;
[«Error 10316: You cannot send more than 1 message in 5 min ([1] sec)»]=»Ошибка 10316: Письмо можно отправлять не чаще раза в 5 минут ([1] сек)»;
[«Error 10319. The amount is too low»]=»Ошибка 10319: Слишком маленькая сумма»;
[«Error 10320. The amount is too low»]=»Ошибка 10320: Слишком маленькая сумма»;
[«Error 10321. The page heading is not indicated»]=»Error 10321. The page heading is not indicated»;
[«Error 10322. The main template file is not found»]=»Ошибка 10322: Файл главного шаблона не найден»;
[«Error 10323. This currency pair does not exist: [1]»]=»Ошибка 10323: Такая валютная пара не существует: [1]»;
[«Error 10324. Need to confirm the email»]=»Ошибка 10324: Необходимо подтвердить почту»;
[«Error 10325. Need to confirm the email»]=»Ошибка 10325: Необходимо подтвердить почту»;
[«Error 10330″]=»Ошибка 10330»;
[«Error 10328: Need to confirm the email»]=»Ошибка 10328: Необходимо подтвердить почту»;
[«Error 10327: Invalid withdrawal parameters»]=»Ошибка 10327: Параметры вывода указаны не верно»;
[«Error 10021: Your message contains inappropriate word ‘[1]’»]=»Ошибка 10021: Сообщение содержит запрещенное слово ‘[1]’»;
[«Error 10331: Replenishment sum below the minimum permitted by the provider»]=»Ошибка 10331: Сумма ввода меньше минимального для текущего провайдера»;
[«Error 10332: Replenishment sum exceeds the maximum permitted by the provider»]=»Ошибка 10332: Сумма ввода больше максимального для текущего провайдера»;
[«Error 10336: Variable name not indicated»]=»Ошибка 10336: Не указано имя переменной»;
[«Error 10337: All fields are required»]=»Ошибка 10337: Необходимо заполнить все поля»;
[«Error 10338″]=»Ошибка 10338»;
[«Error 10333: Trailing Stop exceeds the maximum buy price; Stop Loss represents the difference between the maximum buy price and the Trailing Stop»]=»Ошибка 10333: Значение trailing stop выше максимальной цены, stop loss высчитывается как разница между максимальной ценой покупки и значением trailing stop»;
[«Error 10334″]=»Ошибка 10334»;
[«Error 10347: setting loading error»]=»Ошибка 10347: ошибка загрузки настроек»;
[«Error 10348: invalid parameters»]=»Ошибка 10348: неверные параметры»;
[«Error 10349: invalid parameters»]=»Ошибка 10349: неверные параметры»;
[«Error 10350: you are blocked from sending personal messages»]=»Ошибка 10350: Отправка личных сообщений заблокирована»;
[«Error 10351: News not found»]=»Ошибка 10351: новость не найдена»;
[«Error 10352″]=»Ошибка 10352»;
[«Error 10353″]=»Ошибка 10353»;
[«Error 10354. Parameter’s error»]=»Ошибка 10354: Ошибка параметров»;
[«Error 10355. The field ‘phone number’ must be filled»]=»Ошибка 10355: Номер телефона не должен быть пустым»;
[«Error 10356. Phone number contains invalid characters»]=»Ошибка 10356: Номер телефона содержит недопустимые символы»;
[«Error 10357. The field ‘password’ must be filled»]=»Ошибка 10357: Пароль не должен быть пустым»;
[«Error 10358. The field ‘to use or not to use a wallet for deposit’ must be filled»]=»Ошибка 10358: Поле использовать или нет кошелек для депозита не должно быть пустым»;
[«Error 10359. The field ‘to use or not to use a wallet for withdrawal’ must be filled»]=»Ошибка 10359: Поле использовать или нет кошелек для вывода не должно быть пустым»;
[«Error 10360. The field ‘to use or not to use a wallet for deposit’ must contain either 1 either 0″]=»Ошибка 10360: Поле использовать или нет кошелек для депозита может быть равно 1 или 0»;
[«Error 10361. The field ‘to use or not to use a wallet for withdrawal’ must contain either 1 either 0″]=»Ошибка 10361: Поле использовать или нет кошелек для вывода может быть равно 1 или 0»;
[«Error 10362. The period of conversion of statistic should not be empty»]=»Ошибка 10362: Период пересчета статистики не должен быть пустым»;
[«Error 10363. The period of conversion of statistic should be a number (more than 0)»]=»Error 10363. The period of conversion of statistic should be a number (more than 0)»;
[«Error 10364. Specify the ‘Deposit limit’»]=»Ошибка 10364: Укажите поле Лимит по депозитам»;
[«Error 10365. Specify the ‘Maximum balance on the wallet’»]=»Ошибка 10365: Укажите поле Максимальный баланс по кошельку»;
[«Error 10366. Specify the ‘Withdrawal limit’»]=»Ошибка 10366: Укажите поле Лимит по выводу»;
[«Error 10367. Specify enabled or not enabled the wallet»]=»Ошибка 10367: Укажите поле Включён ли кошелек или нет»;
[«Error 10368. The field ‘to use or not to use a wallet’ must contain 0 or 1″]=»Ошибка 10368: Поле использовать или нет кошелек может быть равно 1 или 0»;
[«Error 10369. Specify the ‘minimum balance on the wallet’»]=»Ошибка 10369: Укажите поле Минимальный баланс по кошельку»;
[«Error 10370. This phone number is already used»]=»Ошибка 10370: Такой номер уже есть в пуле»;
[«Error 10371. Task to output with similar this ID already exists»]=»Ошибка 10371: Задание на вывод с таким ID уже существует»;
[«Error 10372: You must fill in all fields»]=»Ошибка 10372: Необходимо заполнить все поля»;
[«Error 10373: Scanned file should be the ‘jpeg’ or ‘png’»]=»Ошибка 10373: Файл скана должен быть формата jpeg или png»;
[«Error 10374: Size of the scanned file should be less than 3Mb»]=»Ошибка 10374: Размер файла скана должен быть меньше 3Mb»;
[«Error 10383: Size of the scanned file should be less than 3Mb»]=»Ошибка 10383: Размер файла скана должен быть меньше 3Mb»;
[«Error 10514: Size of the scanned file should be larger than 500kb»]=»Ошибка 10514: Размер файла скана должен быть больше 500kb»;
[«Error 10375: You must specify the date of birth»]=»Ошибка 10375: Необходимо указать дату рождения»;
[«Error 10376: Verification is in the process, editing is not available»]=»Ошибка 10376: Данные на проверке, изменение недоступно»;
[«Error 10377: Verification is completed, editing is not available»]=»Ошибка 10377: Данные верифицированы, изменение недоступно»;
[«Error 10378: Please, upload a scan of your passport (ID card)»]=»Ошибка 10378: Необходимо загрузить скан паспорта»;
[«Error 10379: Please upload a scan of the document which proves your residency»]=»Ошибка 10379: Необходимо загрузить скан счета подтверждения»;
[«Error 10382. File resolution less than 300 DPI»]=»Ошибка 10382: Разрешение файла скана меньше 300 DPI»;
[«Error 10382. File resolution less than 90 DPI»]=»Ошибка 10382: Разрешение файла скана меньше 90 DPI»;
[«Error 10384. File resolution less than 300 DPI»]=»Ошибка 10384: Разрешение файла скана меньше 300 DPI»;
[«Error 10384. File resolution less than 90 DPI»]=»Ошибка 10384: Разрешение файла скана меньше 90 DPI»;
[«Error 10380: You must specify a phone number with the country code»]=»Ошибка 10380: номер телефона необходимо указывать с кодом страны (код РФ ‘7’)»;
[«Error 10489: You must specify a phone number with the country code»]=»Ошибка 10489: номер телефона необходимо указывать с кодом страны (код РФ ‘7’)»;
[«Error 10381: Sorry, provider temporarily is out of service, please try later»]=»Ошибка 10381: временно недоступно, технические проблемы у провайдера»;
[«Error 10385: To use this method to deposit your funds, you must verify your account»]=»Ошибка 10385: Для использования данного провайдера на ввод необходимо идентифицировать аккаунт»;
[«Error 10386: Withdrawal will be available within 3 work days after registration»]=»Ошибка 10386: Вывод будет доступен через 3 дня после регистрации»;
[«Error 10387″]=»Ошибка 10387»;
[«Error 10388: setting loading error»]=»Ошибка 10388: ошибка загрузки настроек»;
[«Error 10389: The field can not be empty»]=»Ошибка 10389: Поле не может быть пустым»;
[«Error 10390: card number contains unsupported characters»]=»Ошибка 10390: номер карты содержит неподдерживаемые символы»;
[«Error 10391: the field of card number must contain 16 characters»]=»Ошибка 10391: длина номера карты должна быть 16 символов»;
[«Error 10392: card expiration date (Month) contains unsupported characters»]=»Ошибка 10392: месяц окончания действия карты содержит неподдерживаемые символы»;
[«Error 10393: the field of card expiration date (Month) must contain 2 characters»]=»Ошибка 10393: длина месяца окончания карты должна быть 2 символа»;
[«Error 10394: card expiration date (Year) contains unsupported characters»]=»Ошибка 10394: месяц окончания действия карты содержит неподдерживаемые символы»;
[«Error 10395: the field of card expiration date (Year) must contain 2 characters»]=»Ошибка 10395: длина года окончания карты должна быть 2 символа»;
[«Error 10398: Deposite address replacement error, please try again later»]=»Ошибка 10398: Ошибка замены адреса, повторите попытку позже»;
[«Error 10399: Try again later»]=»Ошибка 10399: Повторите попытку позже»;
[«Error 10396: Provider error»]=»Ошибка 10396: Ошибка провайдера»;
[«Error 10397: Provider error»]=»Ошибка 10397: Ошибка провайдера»;
[«Error 10400: Internal error»]=»Ошибка 10400: Системная ошибка»;
[«Error 10401: You must specify the name of the currency»]=»Ошибка 10401: Необходимо указать наименование валюты»;
[«Error 10402: Specified currency is not a cryptocurrency»]=»Ошибка 10402: Указанная валюта не является крипто валютой»;
[«Error 10403: Your transaction confirmation is less than [1], the withdrawal is temporarily unavailable»]=»Ошибка 10403: У вас есть транзакции с количеством подтверждений меньше [1], вывод временно недоступен»;
[«Error 10404″]=»Ошибка 10404»;
[«Error 10410: Save trusted IP settings invalid parameter»]=»Ошибка 10410: Неверный параметр при сохранении настроек доверенных IP»;
[«Error 10411: Is not a valid IP address»]=»Ошибка 10411: Неправильный IP адрес»;
[«Error 10412: IP address is not trusted»]=»Ошибка 10412: IP адрес не является доверенным»;
[«Error 10413″]=»Ошибка 10413»;
[«Error 10414″]=»Ошибка 10414»;
[«Error 10437: Is not a valid CIDR»]=»Ошибка 10437: Неправильный CIDR»;
[«Error 10427: You must specify the name of the account»]=»Ошибка 10427: Необходимо указать наименование аккаунта»;
[«Error 10428: Account with the same name already exists»]=»Ошибка 10428: Аккаунт с таким именем уже существует»;
[«Error 10425″]=»Ошибка 10425»;
[«Error 10416″]=»Ошибка 10416»;
[«Error 10418: Incorrect password»]=»Ошибка 10418: Неверный пароль»;
[«Error 10419: Incorrect TOTP code»]=»Ошибка 10419: Неверный TOTP код»;
[«Error 10420″]=»Ошибка 10420»;
[«Error 10421: Incorrect SMS code»]=»Ошибка 10421: Неверный SMS код»;
[«Error 10417″]=»Ошибка 10417»;
[«Error 10415: Disallowed characters»]=»Ошибка 10415: Сообщение содержит запрещенные символы»;
[«Error 10424: Your account has been blocked for 30 minutes»]=»Ошибка 10424: Ваш аккаунт блокирован на 30 минут»;
[«Error 10423: Too many authorizations»]=»Ошибка 10423: Слишком много авторизаций»;
[«Error 10432″]=»Ошибка 10432»;
[«Error 10433: You must fill in the key field»]=»Error 10433: You must fill in the key field»;
[«Error 10434: You must specify the name of the set of requisites»]=»Ошибка 10434: Необходимо указать название набора реквизитов»;
[«Error 10435: Enter your wallet address»]=»Ошибка 10435: Укажите адрес кошелька»;
[«Error 10436: Incorrect wallet address»]=»Ошибка 10436: Неверный адрес кошелька»;
[«Error 10431: An account with that requisite already exists»]=»Ошибка 10431: Аккаунт с такими реквизитами уже существует»;
[«Error 10429: This provider is temporarily unavailable»]=»Ошибка 10429: Данный провайдер временно недоступен»;
[«Error 10439: Refill your balance to write messages»]=»Ошибка 10439: Пополните баланс чтобы писать сообщения»;
[«Error 10438: SMS failed to send»]=»Ошибка 10438: Ошибка отправки смс»;
[«Error 10445: Currency Not Specified»]=»Ошибка 10445: Не указана валюта»;
[«Error 10446: Amount Not Specified»]=»Ошибка 10446: Не указана сумма»;
[«Error 10447: The amount must be greater than zero»]=»Ошибка 10447: Сумма должна быть больше нуля»;
[«Error 10448: Unknown Code»]=»Ошибка 10448: Код не указан»;
[«Error 10449: The code has been created a long time ago using an API and cannot be loaded»]=»Ошибка 10449: Код был создан давно, с помощью API его загрузить невозможно»;
[«Error 10472: user by deposite address not found»]=»Ошибка 10472: Пользователь по адресу депозита не найден»;
[«Error 10405″]=»Ошибка 10405»;
[«Error 10459″]=»Ошибка 10459»;
[«Error 10453: Your current balance is insufficient»]=»Ошибка 10453: Недостаточно средств на счете»;
[«Error 10454: Please contact the technical support»]=»Ошибка 10454: Обратитесь к службе тех поддержки»;
[«Error 10456: Error during the money transfer, please try again later»]=»Ошибка 10456: Ошибка списания средств, повторите попытку чуть позже»;
[«Error 10457″]=»Ошибка 10457»;
[«Error 10460: Maintenance works in progress, please try again later»]=»Ошибка 10460: Технические работы, повторите попытку позже»;
[«Error 10461: Maintenance works in progress, please try again later»]=»Ошибка 10461: Технические работы, повторите попытку позже»;
[«Error 10462: Maintenance works in progress, please try again later»]=»Ошибка 10462: Технические работы, повторите попытку позже»;
[«Error 10463: Maintenance works in progress, please try again later»]=»Ошибка 10463: Технические работы, повторите попытку позже»;
[«Error 10464: The amount is below the minimum allowed for this currency pair»]=»Ошибка 10464: Кол-во по ордеру меньше минимально допустимого по этой валютной паре»;
[«Error 10465: The amount exceeds the maximum allowed for this currency pair»]=»Ошибка 10465: Кол-во по ордеру больше максимально допустимого по этой валютной паре»;
[«Error 10466: The ‘total’ rate is below the minimum allowed for this currency pair»]=»Ошибка 10466: Сумма по ордеру меньше минимально допустимой по этой валютной паре»;
[«Error 10467: The ‘total’ rate exceeds the maximum allowed for this currency pair»]=»Ошибка 10467: Сумма по ордеру больше максимально допустимой по этой валютной паре»;
[«Error 10468: The price is below the minimum allowed for this currency pair»]=»Ошибка 10468: Цена по ордеру меньше минимально допустимой по этой валютной паре»;
[«Error 10469: The price exceeds the maximum allowed for this currency pair»]=»Ошибка 10469: Цена по ордеру больше максимально допустимой по этой валютной паре»;
[«Error 10470: Maintenance works in progress, please try again later»]=»Ошибка 10470: Технические работы, повторите попытку позже»;
[«Error 10422: Please indicate the password»]=»Ошибка 10422: Укажите пароль»;
[«Error 10422: Please indicate the TOTP code»]=»Ошибка 10422: Укажите TOTP код»;
[«Error 10422: Please indicate the SMS code»]=»Ошибка 10422: Укажите SMS код»;
[«Error 10471: The telephone number should start with an international country code»]=»Ошибка 10471: Номер телефона должен начинаться с кода страны»;
[«Error 10386: Replenishments through YandexMoney involve putting withdrawals on hold; withdrawal operations will become available 72 hours after the replenishment»]=»Ошибка 10386: При пополнении через ЯндексДеньги устанавливается холд(заморозка) на вывод средств, вывод будет доступен через 72 часа после пополнения»;
[«Error 10474: Price should be more than zero»]=»Ошибка 10474: Цена должна быть больше нуля»;
[«Error 10475: Quantity should be more than zero»]=»Ошибка 10475: Количество должно быть больше нуля»;
[«Error 10499: Validation Error»]=»Ошибка 10499: Ошибка валидации»;
[«Error 10500: The withdrawal amount is not specified»]=»Ошибка 10500: Сумма вывода не указана»;
[«Error 10501: Withdrawal currency not specified»]=»Ошибка 10501: Валюта вывода не указана»;
[«Error 10502: The name of the payment system is not specified»]=»Ошибка 10502: Наименование платежной системы не указано»;
[«Error 10503: The amount must be greater than zero»]=»Ошибка 10503: Сумма должна быть больше нуля»;
[«Error 10504: The name of the payment system is not specified»]=»Ошибка 10504: Наименование платежной системы пустое»;
[«Error 10505: Withdrawals for this payment system using the API are not supported»]=»Ошибка 10505: Вывод на эту платежную систему с помощью API невозможен»;
[«Error 10506: Option not specified — whether or not to use the wallet to withdrawal on the card»]=»Ошибка 10506: Не указан параметр — использовать ли кошелек для вывода на карты»;
[«Error 10507″]=»Ошибка 10507»;
[«Error 10498″]=»Ошибка 10498»;
[«Error 10508: Invalid format of the card number»]=»Ошибка 10508: Неверный формат номера карты»;
[«Error 10509: The weekly limit amount for this card has been exceeded (150 000 rub)»]=»Ошибка 10509: Лимит по сумме выводов за неделю по этой карте (150 т.р.)»;
[«Error 10510: The limit on the number of withdrawals per/day on this card has been exceeded (5 times)»]=»Ошибка 10510: Лимит по количесту выводов за сутки по этой карте (5 раз)»;
[«Error 10476: Article not found»]=»Ошибка 10476: Статья не найдена»;
[«Error 10477: Article not found»]=»Ошибка 10477: Статья не найдена»;
[«Error 10478: Article not found»]=»Ошибка 10478: Статья не найдена»;
[«Error 10479: Category not found»]=»Ошибка 10479: Категория не найдена»;
[«Error 10480: Article not found»]=»Ошибка 10480: Статья не найдена»;
[«Error 10481: Category not found»]=»Ошибка 10481: Категория не найдена»;
[«Error 10482: Category not found»]=»Ошибка 10482: Категория не найдена»;
[«Error 10483: Category not found»]=»Ошибка 10483: Категория не найдена»;
[«Error 10511: You have made the first replenishment Qiwi (DBB) for number [1]. Withdrawal of funds from your account has been suspended for a period of 24 to 48 hours from the moment of the last deposit to your account.»]=»Error 10511: Вы произвели первое пополнение Qiwi (DBB) по номеру [1]. Вывод денежных средств с вашего аккаунта приостановлен на срок от 24 до 48 часов с момента поступления средств на счет.»;
[«Error 10515: Wrong format»]=»Ошибка 10515: Неправильный формат»;
[«Error 10274″]=»Ошибка 10274»;
[«Error 10516″]=»Ошибка 10516»;
[«Error 10520: Anti robot protection. If you see this message please contact support»]=»Ошибка 10520: Сработала защита против роботов. Если вы видите это сообщение, свяжитесь со службой поддержки»;
[«Error 10521: Anti robot protection. If you see this message please contact support»]=»Ошибка 10521: Сработала защита против роботов. Если вы видите это сообщение, свяжитесь со службой поддержки»;
[«Error 10536″]=»Ошибка 10536»;
[«Error 10513″]=»Ошибка 10513»;
[«Error 10529″]=»Ошибка 10529»;
[«Error 10458: Password has expired»]=»Ошибка 10458: Время действия пароля истекло»;
[«Error 10527: Verification blocked by the administrator»]=»Ошибка 10527: Верификация заблокирована администратором»;
[«Error 10537: Introduced captcha is not correct»]=»Ошибка 10537: Введенная капча не верна»;
[«Error 10538: You should indicate a currency pair»]=»Ошибка 10538: Необходимо указать валютную пару»;
[«Error 10540: Anti-bot protection activated. Please, reload the page»]=»Ошибка 10540: Сработала защита от роботов. Пожалуйста, обновите страницу»;
[«Error 10539: Anti-bot protection activated. Please, reload the page»]=»Ошибка 10539: Сработала защита от роботов. Пожалуйста, обновите страницу»;
[«Error 10535: You should enter the login»]=»Ошибка 10535: Необходимо указать логин»;
[«Error 10543: Deposite task not found [1]»]=»Ошибка 10543: Задание на ввод не найдено. [1]»;
[«Error 10519: API method is not allowed»]=»Ошибка 10519: API метод не разрешен»;
[«Error 10565: Payment notification from an invalid IP ([1])»]=»Ошибка 10565: Уведомление о платеже с недопустимого IP ([1])»;
[«Error 10548: Token missing»]=»Ошибка 10548: Отсутствует токен»;
[«Error 10549: Invalid token»]=»Ошибка 10549: Неправильный токен»;
[«Error 10550: Invalid Payza API reply format»]=»Ошибка 10550: Некорректный формат ответа от Payza API»;
[«Error 10551: Invalid payment type ([1])»]=»Ошибка 10551: Неправильный тип платежа ([1])»;
[«Error 10552: Invalid payment status ([1])»]=»Ошибка 10552: Неправильный статус платежа ([1])»;
[«Error 10553: Invalid merchant account ([1])»]=»Ошибка 10553: Неправильный аккаунт мерчанта ([1])»;
[«Error 10554: Test mode activated»]=»Ошибка 10554: Включен тестовый режим»;
[«Error 10555: Unsupported currency ([1])»]=»Ошибка 10555: Валюта не поддерживается ([1])»;
[«Error 10560: Invalid Payza API reply»]=»Ошибка 10560: Некорректный ответ Payza API»;
[«Error 10556: Empty Payza API reply»]=»Ошибка 10556: Пустой ответ от Payza API»;
[«Error 10558: Invalid Payza API reply format»]=»Ошибка 10558: Некорректный формат ответа от Payza API»;
[«Error 10559: Payza API error:»]=»Ошибка 10559: Ошибка Payza API:»;
[«Error 10557: Password for Payza API is not set in the configuration menu»]=»Ошибка 10557: В конфиге не задан пароль для Payza API»;

# -*- coding: utf-8 -*- # PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN: # https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code from ccxt.base.exchange import Exchange import hashlib from ccxt.base.errors import ExchangeError from ccxt.base.errors import AuthenticationError from ccxt.base.errors import PermissionDenied from ccxt.base.errors import ArgumentsRequired from ccxt.base.errors import BadRequest from ccxt.base.errors import InsufficientFunds from ccxt.base.errors import InvalidOrder from ccxt.base.errors import OrderNotFound from ccxt.base.errors import RateLimitExceeded from ccxt.base.errors import OnMaintenance from ccxt.base.errors import InvalidNonce from ccxt.base.decimal_to_precision import TICK_SIZE from ccxt.base.precise import Precise class exmo(Exchange): def describe(self): return self.deep_extend(super(exmo, self).describe(), { ‘id’: ‘exmo’, ‘name’: ‘EXMO’, ‘countries’: [‘LT’], # Lithuania ‘rateLimit’: 350, # once every 350 ms ≈ 180 requests per minute ≈ 3 requests per second ‘version’: ‘v1.1’, ‘has’: { ‘CORS’: None, ‘spot’: True, ‘margin’: True, ‘swap’: False, ‘future’: False, ‘option’: False, ‘addMargin’: True, ‘cancelOrder’: True, ‘cancelOrders’: False, ‘createDepositAddress’: False, ‘createOrder’: True, ‘createStopLimitOrder’: True, ‘createStopMarketOrder’: True, ‘createStopOrder’: True, ‘fetchAccounts’: False, ‘fetchBalance’: True, ‘fetchCanceledOrders’: True, ‘fetchCurrencies’: True, ‘fetchDeposit’: True, ‘fetchDepositAddress’: True, ‘fetchDeposits’: True, ‘fetchDepositWithdrawFee’: ’emulated’, ‘fetchDepositWithdrawFees’: True, ‘fetchFundingHistory’: False, ‘fetchFundingRate’: False, ‘fetchFundingRateHistory’: False, ‘fetchFundingRates’: False, ‘fetchIndexOHLCV’: False, ‘fetchMarginMode’: False, ‘fetchMarkets’: True, ‘fetchMarkOHLCV’: False, ‘fetchMyTrades’: True, ‘fetchOHLCV’: True, ‘fetchOpenInterestHistory’: False, ‘fetchOpenOrders’: True, ‘fetchOrder’: ’emulated’, ‘fetchOrderBook’: True, ‘fetchOrderBooks’: True, ‘fetchOrderTrades’: True, ‘fetchPositionMode’: False, ‘fetchPremiumIndexOHLCV’: False, ‘fetchTicker’: True, ‘fetchTickers’: True, ‘fetchTrades’: True, ‘fetchTradingFee’: False, ‘fetchTradingFees’: True, ‘fetchTransactionFees’: True, ‘fetchTransactions’: True, ‘fetchTransfer’: False, ‘fetchTransfers’: False, ‘fetchWithdrawal’: True, ‘fetchWithdrawals’: True, ‘reduceMargin’: True, ‘setMargin’: False, ‘transfer’: False, ‘withdraw’: True, }, ‘timeframes’: { ‘1m’: ‘1’, ‘5m’: ‘5’, ’15m’: ’15’, ’30m’: ’30’, ’45m’: ’45’, ‘1h’: ’60’, ‘2h’: ‘120’, ‘3h’: ‘180’, ‘4h’: ‘240’, ‘1d’: ‘D’, ‘1w’: ‘W’, ‘1M’: ‘M’, }, ‘urls’: { ‘logo’: ‘https://user-images.githubusercontent.com/1294454/27766491-1b0ea956-5eda-11e7-9225-40d67b481b8d.jpg’, ‘api’: { ‘public’: ‘https://api.exmo.com’, ‘private’: ‘https://api.exmo.com’, ‘web’: ‘https://exmo.me’, }, ‘www’: ‘https://exmo.me’, ‘referral’: ‘https://exmo.me/?ref=131685’, ‘doc’: [ ‘https://exmo.me/en/api_doc?ref=131685’, ], ‘fees’: ‘https://exmo.com/en/docs/fees’, }, ‘api’: { ‘web’: { ‘get’: [ ‘ctrl/feesAndLimits’, ‘en/docs/fees’, ], }, ‘public’: { ‘get’: [ ‘currency’, ‘currency/list/extended’, ‘order_book’, ‘pair_settings’, ‘ticker’, ‘trades’, ‘candles_history’, ‘required_amount’, ‘payments/providers/crypto/list’, ], }, ‘private’: { ‘post’: [ ‘user_info’, ‘order_create’, ‘order_cancel’, ‘stop_market_order_create’, ‘stop_market_order_cancel’, ‘user_open_orders’, ‘user_trades’, ‘user_cancelled_orders’, ‘order_trades’, ‘deposit_address’, ‘withdraw_crypt’, ‘withdraw_get_txid’, ‘excode_create’, ‘excode_load’, ‘code_check’, ‘wallet_history’, ‘wallet_operations’, ‘margin/user/order/create’, ‘margin/user/order/update’, ‘margin/user/order/cancel’, ‘margin/user/position/close’, ‘margin/user/position/margin_add’, ‘margin/user/position/margin_remove’, ‘margin/currency/list’, ‘margin/pair/list’, ‘margin/settings’, ‘margin/funding/list’, ‘margin/user/info’, ‘margin/user/order/list’, ‘margin/user/order/history’, ‘margin/user/order/trades’, ‘margin/user/order/max_quantity’, ‘margin/user/position/list’, ‘margin/user/position/margin_remove_info’, ‘margin/user/position/margin_add_info’, ‘margin/user/wallet/list’, ‘margin/user/wallet/history’, ‘margin/user/trade/list’, ‘margin/trades’, ‘margin/liquidation/feed’, ], }, }, ‘fees’: { ‘trading’: { ‘feeSide’: ‘get’, ‘tierBased’: True, ‘percentage’: True, ‘maker’: self.parse_number(‘0.004’), ‘taker’: self.parse_number(‘0.004’), }, ‘transaction’: { ‘tierBased’: False, ‘percentage’: False, # fixed transaction fees for crypto, see fetchDepositWithdrawFees below }, }, ‘options’: { ‘networks’: { ‘ETH’: ‘ERC20’, ‘TRX’: ‘TRC20’, }, ‘fetchTradingFees’: { ‘method’: ‘fetchPrivateTradingFees’, # or ‘fetchPublicTradingFees’ }, ‘margin’: { ‘fillResponseFromRequest’: True, }, }, ‘commonCurrencies’: { ‘GMT’: ‘GMT Token’, }, ‘precisionMode’: TICK_SIZE, ‘exceptions’: { ‘exact’: { ‘40005’: AuthenticationError, # Authorization error, incorrect signature ‘40009’: InvalidNonce, # ‘40015’: ExchangeError, # API function do not exist ‘40016’: OnMaintenance, # {«result»:false,»error»:»Error 40016: Maintenance work in progress»} ‘40017’: AuthenticationError, # Wrong API Key ‘40032’: PermissionDenied, # {«result»:false,»error»:»Error 40032: Access is denied for self API key»} ‘40033’: PermissionDenied, # {«result»:false,»error»:»Error 40033: Access is denied, self resources are temporarily blocked to user»} ‘40034’: RateLimitExceeded, # {«result»:false,»error»:»Error 40034: Access is denied, rate limit is exceeded»} ‘50052’: InsufficientFunds, ‘50054’: InsufficientFunds, ‘50304’: OrderNotFound, # «Order was not found ‘123456789’»(fetching order trades for an order that does not have trades yet) ‘50173’: OrderNotFound, # «Order with id X was not found.»(cancelling non-existent, closed and cancelled order) ‘50277’: InvalidOrder, ‘50319’: InvalidOrder, # Price by order is less than permissible minimum for self pair ‘50321’: InvalidOrder, # Price by order is more than permissible maximum for self pair ‘50381’: InvalidOrder, # {«result»:false,»error»:»Error 50381: More than 2 decimal places are not permitted for pair BTC_USD»} }, ‘broad’: { ‘range period is too long’: BadRequest, ‘invalid syntax’: BadRequest, ‘API rate limit exceeded’: RateLimitExceeded, # {«result»:false,»error»:»API rate limit exceeded for x.x.x.x. Retry after 60 sec.»,»history»:[],»begin»:1579392000,»end»:1579478400} }, }, }) def modify_margin_helper(self, symbol, amount, type, params={}): self.load_markets() market = self.market(symbol) request = { ‘position_id’: market[‘id’], ‘quantity’: amount, } method = None if type == ‘add’: method = ‘privatePostMarginUserPositionMarginAdd’ elif type == ‘reduce’: method = ‘privatePostMarginUserPositionMarginReduce’ response = getattr(self, method)(self.extend(request, params)) # # {} # margin = self.parse_margin_modification(response, market) options = self.safe_value(self.options, ‘margin’, {}) fillResponseFromRequest = self.safe_value(options, ‘fillResponseFromRequest’, True) if fillResponseFromRequest: margin[‘type’] = type margin[‘amount’] = amount return margin def parse_margin_modification(self, data, market=None): # # {} # return { ‘info’: data, ‘type’: None, ‘amount’: None, ‘code’: self.safe_value(market, ‘quote’), ‘symbol’: self.safe_symbol(None, market), ‘total’: None, ‘status’: ‘ok’, } def reduce_margin(self, symbol, amount, params={}): «»» remove margin from a position :param str symbol: unified market symbol :param float amount: the amount of margin to remove :param dict params: extra parameters specific to the exmo api endpoint :returns dict: a `margin structure <https://docs.ccxt.com/en/latest/manual.html#reduce-margin-structure>` «»» return self.modify_margin_helper(symbol, amount, ‘reduce’, params) def add_margin(self, symbol, amount, params={}): «»» add margin :param str symbol: unified market symbol :param float amount: amount of margin to add :param dict params: extra parameters specific to the exmo api endpoint :returns dict: a `margin structure <https://docs.ccxt.com/en/latest/manual.html#add-margin-structure>` «»» return self.modify_margin_helper(symbol, amount, ‘add’, params) def fetch_trading_fees(self, params={}): «»» fetch the trading fees for multiple markets :param dict params: extra parameters specific to the exmo api endpoint :returns dict: a dictionary of `fee structures <https://docs.ccxt.com/en/latest/manual.html#fee-structure>` indexed by market symbols «»» method = self.safe_string(params, ‘method’) params = self.omit(params, ‘method’) if method is None: options = self.safe_value(self.options, ‘fetchTradingFees’, {}) method = self.safe_string(options, ‘method’, ‘fetchPrivateTradingFees’) return getattr(self, method)(params) def fetch_private_trading_fees(self, params={}): self.load_markets() response = self.privatePostMarginPairList(params) # # { # pairs: [{ # name: ‘EXM_USD’, # buy_price: ‘0.02728391’, # sell_price: ‘0.0276’, # last_trade_price: ‘0.0276’, # ticker_updated: ‘1646956050056696046’, # is_fair_price: True, # max_price_precision: ‘8’, # min_order_quantity: ‘1’, # max_order_quantity: ‘50000’, # min_order_price: ‘0.00000001’, # max_order_price: ‘1000’, # max_position_quantity: ‘50000’, # trade_taker_fee: ‘0.05’, # trade_maker_fee: ‘0’, # liquidation_fee: ‘0.5’, # max_leverage: ‘3’, # default_leverage: ‘3’, # liquidation_level: ‘5’, # margin_call_level: ‘7.5’, # position: ‘1’, # updated: ‘1638976144797807397’ # } # … # ] # } # pairs = self.safe_value(response, ‘pairs’, []) result = {} for i in range(0, len(pairs)): pair = pairs[i] marketId = self.safe_string(pair, ‘name’) symbol = self.safe_symbol(marketId, None, ‘_’) makerString = self.safe_string(pair, ‘trade_maker_fee’) takerString = self.safe_string(pair, ‘trade_taker_fee’) maker = self.parse_number(Precise.string_div(makerString, ‘100’)) taker = self.parse_number(Precise.string_div(takerString, ‘100’)) result[symbol] = { ‘info’: pair, ‘symbol’: symbol, ‘maker’: maker, ‘taker’: taker, ‘percentage’: True, ‘tierBased’: True, } return result def fetch_public_trading_fees(self, params={}): self.load_markets() response = self.publicGetPairSettings(params) # # { # BTC_USD: { # min_quantity: ‘0.00002’, # max_quantity: ‘1000’, # min_price: ‘1’, # max_price: ‘150000’, # max_amount: ‘500000’, # min_amount: ‘1’, # price_precision: ‘2’, # commission_taker_percent: ‘0.3’, # commission_maker_percent: ‘0.3’ # }, # } # result = {} for i in range(0, len(self.symbols)): symbol = self.symbols[i] market = self.market(symbol) fee = self.safe_value(response, market[‘id’], {}) makerString = self.safe_string(fee, ‘commission_maker_percent’) takerString = self.safe_string(fee, ‘commission_taker_percent’) maker = self.parse_number(Precise.string_div(makerString, ‘100’)) taker = self.parse_number(Precise.string_div(takerString, ‘100’)) result[symbol] = { ‘info’: fee, ‘symbol’: symbol, ‘maker’: maker, ‘taker’: taker, ‘percentage’: True, ‘tierBased’: True, } return result def parse_fixed_float_value(self, input): if (input is None) or (input == ‘-‘): return None if input == »: return 0 isPercentage = (input.find(‘%’) >= 0) parts = input.split(‘ ‘) value = parts[0].replace(‘%’, ») result = float(value) if (result > 0) and isPercentage: raise ExchangeError(self.id + ‘ parseFixedFloatValue() detected an unsupported non-zero percentage-based fee ‘ + input) return result def fetch_transaction_fees(self, codes=None, params={}): «»» *DEPRECATED* please use fetchDepositWithdrawFees instead see https://documenter.getpostman.com/view/10287440/SzYXWKPi#4190035d-24b1-453d-833b-37e0a52f88e2 :param [str]|None codes: list of unified currency codes :param dict params: extra parameters specific to the exmo api endpoint :returns dict: a list of `transaction fees structures <https://docs.ccxt.com/en/latest/manual.html#fees-structure>` «»» self.load_markets() cryptoList = self.publicGetPaymentsProvidersCryptoList(params) # # { # «BTC»:[ # {«type»:»deposit», «name»:»BTC», «currency_name»:»BTC», «min»:»0.001″, «max»:»0″, «enabled»:true,»comment»:»Minimum deposit amount is 0.001 BTC. We do not support BSC and BEP20 network, please consider self when sending funds», «commission_desc»:»0%», «currency_confirmations»:1}, # {«type»:»withdraw», «name»:»BTC», «currency_name»:»BTC», «min»:»0.001″, «max»:»350″, «enabled»:true,»comment»:»Do not withdraw directly to the Crowdfunding or ICO address as your account will not be credited with tokens from such sales.», «commission_desc»:»0.0005 BTC», «currency_confirmations»:6} # ], # «ETH»:[ # {«type»:»withdraw», «name»:»ETH», «currency_name»:»ETH», «min»:»0.01″, «max»:»500″, «enabled»:true,»comment»:»Do not withdraw directly to the Crowdfunding or ICO address as your account will not be credited with tokens from such sales.», «commission_desc»:»0.004 ETH», «currency_confirmations»:4}, # {«type»:»deposit», «name»:»ETH», «currency_name»:»ETH», «min»:»0.01″, «max»:»0″, «enabled»:true,»comment»:»Minimum deposit amount is 0.01 ETH. We do not support BSC and BEP20 network, please consider self when sending funds», «commission_desc»:»0%», «currency_confirmations»:1} # ], # «USDT»:[ # {«type»:»deposit», «name»:»USDT(OMNI)», «currency_name»:»USDT», «min»:»10″, «max»:»0″, «enabled»:false,»comment»:»Minimum deposit amount is 10 USDT», «commission_desc»:»0%», «currency_confirmations»:2}, # {«type»:»withdraw», «name»:»USDT(OMNI)», «currency_name»:»USDT», «min»:»10″, «max»:»100000″, «enabled»:false,»comment»:»Do not withdraw directly to the Crowdfunding or ICO address as your account will not be credited with tokens from such sales.», «commission_desc»:»5 USDT», «currency_confirmations»:6}, # {«type»:»deposit», «name»:»USDT(ERC20)», «currency_name»:»USDT», «min»:»10″, «max»:»0″, «enabled»:true,»comment»:»Minimum deposit amount is 10 USDT», «commission_desc»:»0%», «currency_confirmations»:2}, # { # «type»:»withdraw», # «name»:»USDT(ERC20)», # «currency_name»:»USDT», # «min»:»55″, # «max»:»200000″, # «enabled»:true, # «comment»:»Caution! Do not withdraw directly to a crowdfund or ICO address, as your account will not be credited with tokens from such sales. Recommendation: Due to the high load of ERC20 network, using TRC20 address for withdrawal is recommended.», # «commission_desc»:»10 USDT», # «currency_confirmations»:6 # }, # {«type»:»deposit», «name»:»USDT(TRC20)», «currency_name»:»USDT», «min»:»10″, «max»:»100000″, «enabled»:true,»comment»:»Minimum deposit amount is 10 USDT. Only TRON main network supported», «commission_desc»:»0%», «currency_confirmations»:2}, # {«type»:»withdraw», «name»:»USDT(TRC20)», «currency_name»:»USDT», «min»:»10″, «max»:»150000″, «enabled»:true,»comment»:»Caution! Do not withdraw directly to a crowdfund or ICO address, as your account will not be credited with tokens from such sales. Only TRON main network supported.», «commission_desc»:»1 USDT», «currency_confirmations»:6} # ], # «XLM»:[ # {«type»:»deposit», «name»:»XLM», «currency_name»:»XLM», «min»:»1″, «max»:»1000000″, «enabled»:true,»comment»:»Attention! A deposit without memo(invoice) will not be credited. Minimum deposit amount is 1 XLM. We do not support BSC and BEP20 network, please consider self when sending funds», «commission_desc»:»0%», «currency_confirmations»:1}, # {«type»:»withdraw», «name»:»XLM», «currency_name»:»XLM», «min»:»21″, «max»:»1000000″, «enabled»:true,»comment»:»Caution! Do not withdraw directly to a crowdfund or ICO address, as your account will not be credited with tokens from such sales.», «commission_desc»:»0.01 XLM», «currency_confirmations»:1} # ], # } # result = {} cryptoListKeys = list(cryptoList.keys()) for i in range(0, len(cryptoListKeys)): code = cryptoListKeys[i] if codes is not None and not self.in_array(code, codes): continue result[code] = { ‘deposit’: None, ‘withdraw’: None, } currency = self.currency(code) currencyId = self.safe_string(currency, ‘id’) providers = self.safe_value(cryptoList, currencyId, []) for j in range(0, len(providers)): provider = providers[j] type = self.safe_string(provider, ‘type’) commissionDesc = self.safe_string(provider, ‘commission_desc’) fee = self.parse_fixed_float_value(commissionDesc) result[code][type] = fee result[code][‘info’] = providers # cache them for later use self.options[‘transactionFees’] = result return result def fetch_deposit_withdraw_fees(self, codes=None, params={}): «»» fetch deposit and withdraw fees see https://documenter.getpostman.com/view/10287440/SzYXWKPi#4190035d-24b1-453d-833b-37e0a52f88e2 :param [str]|None codes: list of unified currency codes :param dict params: extra parameters specific to the exmo api endpoint :returns dict: a list of `transaction fees structures <https://docs.ccxt.com/en/latest/manual.html#fees-structure>` «»» self.load_markets() response = self.publicGetPaymentsProvidersCryptoList(params) # # { # «USDT»: [ # { # «type»: «deposit», # or «withdraw» # «name»: «USDT(ERC20)», # «currency_name»: «USDT», # «min»: «10», # «max»: «0», # «enabled»: True, # «comment»: «Minimum deposit amount is 10 USDT», # «commission_desc»: «0%», # «currency_confirmations»: 2 # }, # … # ], # … # } # result = self.parse_deposit_withdraw_fees(response, codes) # cache them for later use self.options[‘transactionFees’] = result return result def parse_deposit_withdraw_fee(self, fee, currency=None): # # [ # { # «type»: «deposit», # or «withdraw» # «name»: «BTC», # «currency_name»: «BTC», # «min»: «0.001», # «max»: «0», # «enabled»: True, # «comment»: «Minimum deposit amount is 0.001 BTC. We do not support BSC and BEP20 network, please consider self when sending funds», # «commission_desc»: «0%», # «currency_confirmations»: 1 # }, # … # ] # result = self.deposit_withdraw_fee(fee) for i in range(0, len(fee)): provider = fee[i] type = self.safe_string(provider, ‘type’) networkId = self.safe_string(provider, ‘name’) networkCode = self.network_id_to_code(networkId, self.safe_string(currency, ‘code’)) commissionDesc = self.safe_string(provider, ‘commission_desc’) splitCommissionDesc = [] percentage = None if commissionDesc is not None: splitCommissionDesc = commissionDesc.split(‘%’) splitCommissionDescLength = len(splitCommissionDesc) percentage = splitCommissionDescLength >= 2 network = self.safe_value(result[‘networks’], networkCode) if network is None: result[‘networks’][networkCode] = { ‘withdraw’: { ‘fee’: None, ‘percentage’: None, }, ‘deposit’: { ‘fee’: None, ‘percentage’: None, }, } result[‘networks’][networkCode][type] = { ‘fee’: self.parse_fixed_float_value(self.safe_string(splitCommissionDesc, 0)), ‘percentage’: percentage, } return self.assign_default_deposit_withdraw_fees(result) def fetch_currencies(self, params={}): «»» fetches all available currencies on an exchange :param dict params: extra parameters specific to the exmo api endpoint :returns dict: an associative dictionary of currencies «»» # currencyList = self.publicGetCurrencyListExtended(params) # # [ # {«name»:»VLX»,»description»:»Velas»}, # {«name»:»RUB»,»description»:»Russian Ruble»}, # {«name»:»BTC»,»description»:»Bitcoin»}, # {«name»:»USD»,»description»:»US Dollar»} # ] # cryptoList = self.publicGetPaymentsProvidersCryptoList(params) # # { # «BTC»:[ # {«type»:»deposit», «name»:»BTC», «currency_name»:»BTC», «min»:»0.001″, «max»:»0″, «enabled»:true,»comment»:»Minimum deposit amount is 0.001 BTC. We do not support BSC and BEP20 network, please consider self when sending funds», «commission_desc»:»0%», «currency_confirmations»:1}, # {«type»:»withdraw», «name»:»BTC», «currency_name»:»BTC», «min»:»0.001″, «max»:»350″, «enabled»:true,»comment»:»Do not withdraw directly to the Crowdfunding or ICO address as your account will not be credited with tokens from such sales.», «commission_desc»:»0.0005 BTC», «currency_confirmations»:6} # ], # «ETH»:[ # {«type»:»withdraw», «name»:»ETH», «currency_name»:»ETH», «min»:»0.01″, «max»:»500″, «enabled»:true,»comment»:»Do not withdraw directly to the Crowdfunding or ICO address as your account will not be credited with tokens from such sales.», «commission_desc»:»0.004 ETH», «currency_confirmations»:4}, # {«type»:»deposit», «name»:»ETH», «currency_name»:»ETH», «min»:»0.01″, «max»:»0″, «enabled»:true,»comment»:»Minimum deposit amount is 0.01 ETH. We do not support BSC and BEP20 network, please consider self when sending funds», «commission_desc»:»0%», «currency_confirmations»:1} # ], # «USDT»:[ # {«type»:»deposit», «name»:»USDT(OMNI)», «currency_name»:»USDT», «min»:»10″, «max»:»0″, «enabled»:false,»comment»:»Minimum deposit amount is 10 USDT», «commission_desc»:»0%», «currency_confirmations»:2}, # {«type»:»withdraw», «name»:»USDT(OMNI)», «currency_name»:»USDT», «min»:»10″, «max»:»100000″, «enabled»:false,»comment»:»Do not withdraw directly to the Crowdfunding or ICO address as your account will not be credited with tokens from such sales.», «commission_desc»:»5 USDT», «currency_confirmations»:6}, # {«type»:»deposit», «name»:»USDT(ERC20)», «currency_name»:»USDT», «min»:»10″, «max»:»0″, «enabled»:true,»comment»:»Minimum deposit amount is 10 USDT», «commission_desc»:»0%», «currency_confirmations»:2}, # {«type»:»withdraw», «name»:»USDT(ERC20)», «currency_name»:»USDT», «min»:»55″, «max»:»200000″, «enabled»:true, «comment»:»Caution! Do not withdraw directly to a crowdfund or ICO address, as your account will not be credited with tokens from such sales. Recommendation: Due to the high load of ERC20 network, using TRC20 address for withdrawal is recommended.», «commission_desc»:»10 USDT», «currency_confirmations»:6}, # {«type»:»deposit», «name»:»USDT(TRC20)», «currency_name»:»USDT», «min»:»10″, «max»:»100000″, «enabled»:true,»comment»:»Minimum deposit amount is 10 USDT. Only TRON main network supported», «commission_desc»:»0%», «currency_confirmations»:2}, # {«type»:»withdraw», «name»:»USDT(TRC20)», «currency_name»:»USDT», «min»:»10″, «max»:»150000″, «enabled»:true,»comment»:»Caution! Do not withdraw directly to a crowdfund or ICO address, as your account will not be credited with tokens from such sales. Only TRON main network supported.», «commission_desc»:»1 USDT», «currency_confirmations»:6} # ], # «XLM»:[ # {«type»:»deposit», «name»:»XLM», «currency_name»:»XLM», «min»:»1″, «max»:»1000000″, «enabled»:true,»comment»:»Attention! A deposit without memo(invoice) will not be credited. Minimum deposit amount is 1 XLM. We do not support BSC and BEP20 network, please consider self when sending funds», «commission_desc»:»0%», «currency_confirmations»:1}, # {«type»:»withdraw», «name»:»XLM», «currency_name»:»XLM», «min»:»21″, «max»:»1000000″, «enabled»:true,»comment»:»Caution! Do not withdraw directly to a crowdfund or ICO address, as your account will not be credited with tokens from such sales.», «commission_desc»:»0.01 XLM», «currency_confirmations»:1} # ], # } # result = {} for i in range(0, len(currencyList)): currency = currencyList[i] currencyId = self.safe_string(currency, ‘name’) name = self.safe_string(currency, ‘description’) providers = self.safe_value(cryptoList, currencyId) active = False type = ‘crypto’ limits = { ‘deposit’: { ‘min’: None, ‘max’: None, }, ‘withdraw’: { ‘min’: None, ‘max’: None, }, } fee = None depositEnabled = None withdrawEnabled = None if providers is None: active = True type = ‘fiat’ else: for j in range(0, len(providers)): provider = providers[j] type = self.safe_string(provider, ‘type’) minValue = self.safe_number(provider, ‘min’) maxValue = self.safe_number(provider, ‘max’) if maxValue == 0.0: maxValue = None activeProvider = self.safe_value(provider, ‘enabled’) if type == ‘deposit’: if activeProvider and not depositEnabled: depositEnabled = True elif not activeProvider: depositEnabled = False elif type == ‘withdraw’: if activeProvider and not withdrawEnabled: withdrawEnabled = True elif not activeProvider: withdrawEnabled = False if activeProvider: active = True if (limits[type][‘min’] is None) or (minValue < limits[type][‘min’]): limits[type][‘min’] = minValue limits[type][‘max’] = maxValue if type == ‘withdraw’: commissionDesc = self.safe_string(provider, ‘commission_desc’) fee = self.parse_fixed_float_value(commissionDesc) code = self.safe_currency_code(currencyId) result[code] = { ‘id’: currencyId, ‘code’: code, ‘name’: name, ‘type’: type, ‘active’: active, ‘deposit’: depositEnabled, ‘withdraw’: withdrawEnabled, ‘fee’: fee, ‘precision’: self.parse_number(‘1e-8’), ‘limits’: limits, ‘info’: providers, } return result def fetch_markets(self, params={}): «»» retrieves data on all markets for exmo :param dict params: extra parameters specific to the exchange api endpoint :returns [dict]: an array of objects representing market data «»» response = self.publicGetPairSettings(params) # # { # «BTC_USD»:{ # «min_quantity»:»0.0001″, # «max_quantity»:»1000″, # «min_price»:»1″, # «max_price»:»30000″, # «max_amount»:»500000″, # «min_amount»:»1″, # «price_precision»:8, # «commission_taker_percent»:»0.4″, # «commission_maker_percent»:»0.4″ # }, # } # keys = list(response.keys()) result = [] for i in range(0, len(keys)): id = keys[i] market = response[id] symbol = id.replace(‘_’, ‘/’) baseId, quoteId = symbol.split(‘/’) base = self.safe_currency_code(baseId) quote = self.safe_currency_code(quoteId) takerString = self.safe_string(market, ‘commission_taker_percent’) makerString = self.safe_string(market, ‘commission_maker_percent’) result.append({ ‘id’: id, ‘symbol’: symbol, ‘base’: base, ‘quote’: quote, ‘settle’: None, ‘baseId’: baseId, ‘quoteId’: quoteId, ‘settleId’: None, ‘type’: ‘spot’, ‘spot’: True, ‘margin’: True, ‘swap’: False, ‘future’: False, ‘option’: False, ‘active’: None, ‘contract’: False, ‘linear’: None, ‘inverse’: None, ‘taker’: self.parse_number(Precise.string_div(takerString, ‘100’)), ‘maker’: self.parse_number(Precise.string_div(makerString, ‘100’)), ‘contractSize’: None, ‘expiry’: None, ‘expiryDatetime’: None, ‘strike’: None, ‘optionType’: None, ‘precision’: { ‘amount’: self.parse_number(‘1e-8’), ‘price’: self.parse_number(self.parse_precision(self.safe_string(market, ‘price_precision’))), }, ‘limits’: { ‘leverage’: { ‘min’: None, ‘max’: None, }, ‘amount’: { ‘min’: self.safe_number(market, ‘min_quantity’), ‘max’: self.safe_number(market, ‘max_quantity’), }, ‘price’: { ‘min’: self.safe_number(market, ‘min_price’), ‘max’: self.safe_number(market, ‘max_price’), }, ‘cost’: { ‘min’: self.safe_number(market, ‘min_amount’), ‘max’: self.safe_number(market, ‘max_amount’), }, }, ‘info’: market, }) return result def fetch_ohlcv(self, symbol, timeframe=‘1m’, since=None, limit=None, params={}): «»» fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market :param str symbol: unified symbol of the market to fetch OHLCV data for :param str timeframe: the length of time each candle represents :param int|None since: timestamp in ms of the earliest candle to fetch :param int|None limit: the maximum amount of candles to fetch :param dict params: extra parameters specific to the exmo api endpoint :returns [[int]]: A list of candles ordered as timestamp, open, high, low, close, volume «»» self.load_markets() market = self.market(symbol) request = { ‘symbol’: market[‘id’], ‘resolution’: self.safe_string(self.timeframes, timeframe, timeframe), } options = self.safe_value(self.options, ‘fetchOHLCV’) maxLimit = self.safe_integer(options, ‘maxLimit’, 3000) duration = self.parse_timeframe(timeframe) now = self.milliseconds() if since is None: if limit is None: limit = 1000 # cap default at generous amount if limit > maxLimit: limit = maxLimit # avoid exception request[‘from’] = int(now / 1000) limit * duration 1 request[‘to’] = int(now / 1000) else: request[‘from’] = int(since / 1000) 1 if limit is None: request[‘to’] = int(now / 1000) else: if limit > maxLimit: raise BadRequest(self.id + ‘ fetchOHLCV() will serve ‘ + str(maxLimit) + ‘ candles at most’) to = self.sum(since, limit * duration * 1000) request[‘to’] = int(to / 1000) response = self.publicGetCandlesHistory(self.extend(request, params)) # # { # «candles»:[ # {«t»:1584057600000,»o»:0.02235144,»c»:0.02400233,»h»:0.025171,»l»:0.02221,»v»:5988.34031761}, # {«t»:1584144000000,»o»:0.0240373,»c»:0.02367413,»h»:0.024399,»l»:0.0235,»v»:2027.82522329}, # {«t»:1584230400000,»o»:0.02363458,»c»:0.02319242,»h»:0.0237948,»l»:0.02223196,»v»:1707.96944997}, # ] # } # candles = self.safe_value(response, ‘candles’, []) return self.parse_ohlcvs(candles, market, timeframe, since, limit) def parse_ohlcv(self, ohlcv, market=None): # # { # «t»:1584057600000, # «o»:0.02235144, # «c»:0.02400233, # «h»:0.025171, # «l»:0.02221, # «v»:5988.34031761 # } # return [ self.safe_integer(ohlcv, ‘t’), self.safe_number(ohlcv, ‘o’), self.safe_number(ohlcv, ‘h’), self.safe_number(ohlcv, ‘l’), self.safe_number(ohlcv, ‘c’), self.safe_number(ohlcv, ‘v’), ] def parse_balance(self, response): result = {‘info’: response} free = self.safe_value(response, ‘balances’, {}) used = self.safe_value(response, ‘reserved’, {}) currencyIds = list(free.keys()) for i in range(0, len(currencyIds)): currencyId = currencyIds[i] code = self.safe_currency_code(currencyId) account = self.account() if currencyId in free: account[‘free’] = self.safe_string(free, currencyId) if currencyId in used: account[‘used’] = self.safe_string(used, currencyId) result[code] = account return self.safe_balance(result) def fetch_balance(self, params={}): «»» query for balance and get the amount of funds available for trading or funds locked in orders :param dict params: extra parameters specific to the exmo api endpoint :returns dict: a `balance structure <https://docs.ccxt.com/en/latest/manual.html?#balance-structure>` «»» self.load_markets() response = self.privatePostUserInfo(params) # # { # «uid»:131685, # «server_date»:1628999600, # «balances»:{ # «EXM»:»0″, # «USD»:»0″, # «EUR»:»0″, # «GBP»:»0″, # }, # } # return self.parse_balance(response) def fetch_order_book(self, symbol, limit=None, params={}): «»» fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data :param str symbol: unified symbol of the market to fetch the order book for :param int|None limit: the maximum amount of order book entries to return :param dict params: extra parameters specific to the exmo api endpoint :returns dict: A dictionary of `order book structures <https://docs.ccxt.com/en/latest/manual.html#order-book-structure>` indexed by market symbols «»» self.load_markets() market = self.market(symbol) request = { ‘pair’: market[‘id’], } if limit is not None: request[‘limit’] = limit response = self.publicGetOrderBook(self.extend(request, params)) result = self.safe_value(response, market[‘id’]) return self.parse_order_book(result, market[‘symbol’], None, ‘bid’, ‘ask’) def fetch_order_books(self, symbols=None, limit=None, params={}): «»» fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data for multiple markets :param [str]|None symbols: list of unified market symbols, all symbols fetched if None, default is None :param int|None limit: max number of entries per orderbook to return, default is None :param dict params: extra parameters specific to the exmo api endpoint :returns dict: a dictionary of `order book structures <https://docs.ccxt.com/en/latest/manual.html#order-book-structure>` indexed by market symbol «»» self.load_markets() ids = None if symbols is None: ids = ‘,’.join(self.ids) # max URL length is 2083 symbols, including http schema, hostname, tld, etc… if len(ids) > 2048: numIds = len(self.ids) raise ExchangeError(self.id + ‘ fetchOrderBooks() has ‘ + str(numIds) + ‘ symbols exceeding max URL length, you are required to specify a list of symbols in the first argument to fetchOrderBooks’) else: ids = self.market_ids(symbols) ids = ‘,’.join(ids) request = { ‘pair’: ids, } if limit is not None: request[‘limit’] = limit response = self.publicGetOrderBook(self.extend(request, params)) result = {} marketIds = list(response.keys()) for i in range(0, len(marketIds)): marketId = marketIds[i] symbol = self.safe_symbol(marketId) result[symbol] = self.parse_order_book(response[marketId], symbol, None, ‘bid’, ‘ask’) return result def parse_ticker(self, ticker, market=None): # # { # «buy_price»:»0.00002996″, # «sell_price»:»0.00003002″, # «last_trade»:»0.00002992″, # «high»:»0.00003028″, # «low»:»0.00002935″, # «avg»:»0.00002963″, # «vol»:»1196546.3163222″, # «vol_curr»:»35.80066578″, # «updated»:1642291733 # } # timestamp = self.safe_timestamp(ticker, ‘updated’) market = self.safe_market(None, market) last = self.safe_string(ticker, ‘last_trade’) return self.safe_ticker({ ‘symbol’: market[‘symbol’], ‘timestamp’: timestamp, ‘datetime’: self.iso8601(timestamp), ‘high’: self.safe_string(ticker, ‘high’), ‘low’: self.safe_string(ticker, ‘low’), ‘bid’: self.safe_string(ticker, ‘buy_price’), ‘bidVolume’: None, ‘ask’: self.safe_string(ticker, ‘sell_price’), ‘askVolume’: None, ‘vwap’: None, ‘open’: None, ‘close’: last, ‘last’: last, ‘previousClose’: None, ‘change’: None, ‘percentage’: None, ‘average’: self.safe_string(ticker, ‘avg’), ‘baseVolume’: self.safe_string(ticker, ‘vol’), ‘quoteVolume’: self.safe_string(ticker, ‘vol_curr’), ‘info’: ticker, }, market) def fetch_tickers(self, symbols=None, params={}): «»» fetches price tickers for multiple markets, statistical calculations with the information calculated over the past 24 hours each market :param [str]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned :param dict params: extra parameters specific to the exmo api endpoint :returns dict: an array of `ticker structures <https://docs.ccxt.com/en/latest/manual.html#ticker-structure>` «»» self.load_markets() symbols = self.market_symbols(symbols) response = self.publicGetTicker(params) # # { # «ADA_BTC»:{ # «buy_price»:»0.00002996″, # «sell_price»:»0.00003002″, # «last_trade»:»0.00002992″, # «high»:»0.00003028″, # «low»:»0.00002935″, # «avg»:»0.00002963″, # «vol»:»1196546.3163222″, # «vol_curr»:»35.80066578″, # «updated»:1642291733 # } # } # result = {} marketIds = list(response.keys()) for i in range(0, len(marketIds)): marketId = marketIds[i] market = self.safe_market(marketId, None, ‘_’) symbol = market[‘symbol’] ticker = self.safe_value(response, marketId) result[symbol] = self.parse_ticker(ticker, market) return self.filter_by_array(result, ‘symbol’, symbols) def fetch_ticker(self, symbol, params={}): «»» fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market :param str symbol: unified symbol of the market to fetch the ticker for :param dict params: extra parameters specific to the exmo api endpoint :returns dict: a `ticker structure <https://docs.ccxt.com/en/latest/manual.html#ticker-structure>` «»» self.load_markets() response = self.publicGetTicker(params) market = self.market(symbol) return self.parse_ticker(response[market[‘id’]], market) def parse_trade(self, trade, market=None): # # fetchTrades(public) # # { # «trade_id»:165087520, # «date»:1587470005, # «type»:»buy», # «quantity»:»1.004″, # «price»:»0.02491461″, # «amount»:»0.02501426″ # }, # # fetchMyTrades, fetchOrderTrades # # { # «trade_id»: 3, # «date»: 1435488248, # «type»: «buy», # «pair»: «BTC_USD», # «order_id»: 12345, # «quantity»: 1, # «price»: 100, # «amount»: 100, # «exec_type»: «taker», # «commission_amount»: «0.02», # «commission_currency»: «BTC», # «commission_percent»: «0.2» # } # timestamp = self.safe_timestamp(trade, ‘date’) id = self.safe_string(trade, ‘trade_id’) orderId = self.safe_string(trade, ‘order_id’) priceString = self.safe_string(trade, ‘price’) amountString = self.safe_string(trade, ‘quantity’) costString = self.safe_string(trade, ‘amount’) side = self.safe_string(trade, ‘type’) type = None marketId = self.safe_string(trade, ‘pair’) market = self.safe_market(marketId, market, ‘_’) symbol = market[‘symbol’] takerOrMaker = self.safe_string(trade, ‘exec_type’) fee = None feeCostString = self.safe_string(trade, ‘commission_amount’) if feeCostString is not None: feeCurrencyId = self.safe_string(trade, ‘commission_currency’) feeCurrencyCode = self.safe_currency_code(feeCurrencyId) feeRateString = self.safe_string(trade, ‘commission_percent’) if feeRateString is not None: feeRateString = Precise.string_div(feeRateString, ‘1000’, 18) fee = { ‘cost’: feeCostString, ‘currency’: feeCurrencyCode, ‘rate’: feeRateString, } return self.safe_trade({ ‘id’: id, ‘info’: trade, ‘timestamp’: timestamp, ‘datetime’: self.iso8601(timestamp), ‘symbol’: symbol, ‘order’: orderId, ‘type’: type, ‘side’: side, ‘takerOrMaker’: takerOrMaker, ‘price’: priceString, ‘amount’: amountString, ‘cost’: costString, ‘fee’: fee, }, market) def fetch_trades(self, symbol, since=None, limit=None, params={}): «»» get the list of most recent trades for a particular symbol :param str symbol: unified symbol of the market to fetch trades for :param int|None since: timestamp in ms of the earliest trade to fetch :param int|None limit: the maximum amount of trades to fetch :param dict params: extra parameters specific to the exmo api endpoint :returns [dict]: a list of `trade structures <https://docs.ccxt.com/en/latest/manual.html?#public-trades>` «»» self.load_markets() market = self.market(symbol) request = { ‘pair’: market[‘id’], } response = self.publicGetTrades(self.extend(request, params)) # # { # «ETH_BTC»:[ # { # «trade_id»:165087520, # «date»:1587470005, # «type»:»buy», # «quantity»:»1.004″, # «price»:»0.02491461″, # «amount»:»0.02501426″ # }, # { # «trade_id»:165087369, # «date»:1587469938, # «type»:»buy», # «quantity»:»0.94″, # «price»:»0.02492348″, # «amount»:»0.02342807″ # } # ] # } # data = self.safe_value(response, market[‘id’], []) return self.parse_trades(data, market, since, limit) def fetch_my_trades(self, symbol=None, since=None, limit=None, params={}): «»» fetch all trades made by the user :param str symbol: unified market symbol :param int|None since: the earliest time in ms to fetch trades for :param int|None limit: the maximum number of trades structures to retrieve :param dict params: extra parameters specific to the exmo api endpoint :returns [dict]: a list of `trade structures <https://docs.ccxt.com/en/latest/manual.html#trade-structure>` «»» # a symbol is required but it can be a single string, or a non-empty array if symbol is None: raise ArgumentsRequired(self.id + ‘ fetchMyTrades() requires a symbol argument(a single symbol or an array)’) self.load_markets() pair = None market = None if isinstance(symbol, list): numSymbols = len(symbol) if numSymbols < 1: raise ArgumentsRequired(self.id + ‘ fetchMyTrades() requires a non-empty symbol array’) marketIds = self.market_ids(symbol) pair = ‘,’.join(marketIds) else: market = self.market(symbol) pair = market[‘id’] request = { ‘pair’: pair, } if limit is not None: request[‘limit’] = limit response = self.privatePostUserTrades(self.extend(request, params)) result = [] marketIds = list(response.keys()) for i in range(0, len(marketIds)): marketId = marketIds[i] resultMarket = self.safe_market(marketId, None, ‘_’) items = response[marketId] trades = self.parse_trades(items, resultMarket, since, limit) result = self.array_concat(result, trades) return self.filter_by_since_limit(result, since, limit) def create_order(self, symbol, type, side, amount, price=None, params={}): «»» create a trade order :param str symbol: unified symbol of the market to create an order in :param str type: ‘market’ or ‘limit’ :param str side: ‘buy’ or ‘sell’ :param float amount: how much of currency you want to trade in units of base currency :param float|None price: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders :param dict params: extra parameters specific to the exmo api endpoint :returns dict: an `order structure <https://docs.ccxt.com/en/latest/manual.html#order-structure>` «»» self.load_markets() market = self.market(symbol) prefix = (type + ‘_’) if (type == ‘market’) else » orderType = prefix + side orderPrice = price if (type == ‘market’) and (price is None): orderPrice = 0 request = { ‘pair’: market[‘id’], # ‘leverage’: 2, ‘quantity’: self.amount_to_precision(market[‘symbol’], amount), # spot — buy, sell, market_buy, market_sell, market_buy_total, market_sell_total # margin — limit_buy, limit_sell, market_buy, market_sell, stop_buy, stop_sell, stop_limit_buy, stop_limit_sell, trailing_stop_buy, trailing_stop_sell ‘type’: orderType, ‘price’: self.price_to_precision(market[‘symbol’], orderPrice), # ‘stop_price’: self.price_to_precision(symbol, stopPrice), # ‘distance’: 0, # distance for trailing stop orders # ‘expire’: 0, # expiration timestamp in UTC timezone for the order, unless expire is 0 # ‘client_id’: 123, # optional, must be a positive integer # ‘comment’: », # up to 50 latin symbols, whitespaces, underscores } method = ‘privatePostOrderCreate’ clientOrderId = self.safe_value_2(params, ‘client_id’, ‘clientOrderId’) if clientOrderId is not None: clientOrderId = self.safe_integer_2(params, ‘client_id’, ‘clientOrderId’) if clientOrderId is None: raise BadRequest(self.id + ‘ createOrder() client order id must be an integer / numeric literal’) else: request[‘client_id’] = clientOrderId params = self.omit(params, [‘client_id’, ‘clientOrderId’]) if (type == ‘stop’) or (type == ‘stop_limit’) or (type == ‘trailing_stop’): stopPrice = self.safe_number_2(params, ‘stop_price’, ‘stopPrice’) if stopPrice is None: raise InvalidOrder(self.id + ‘ createOrder() requires a stopPrice extra param for a ‘ + type + ‘ order’) else: params = self.omit(params, [‘stopPrice’, ‘stop_price’]) request[‘stop_price’] = self.price_to_precision(symbol, stopPrice) method = ‘privatePostMarginUserOrderCreate’ response = getattr(self, method)(self.extend(request, params)) id = self.safe_string(response, ‘order_id’) timestamp = self.milliseconds() status = ‘open’ return { ‘id’: id, ‘info’: response, ‘timestamp’: timestamp, ‘datetime’: self.iso8601(timestamp), ‘lastTradeTimestamp’: None, ‘status’: status, ‘symbol’: market[‘symbol’], ‘type’: type, ‘side’: side, ‘price’: price, ‘cost’: None, ‘amount’: amount, ‘remaining’: amount, ‘filled’: 0.0, ‘fee’: None, ‘trades’: None, ‘clientOrderId’: clientOrderId, ‘average’: None, } def cancel_order(self, id, symbol=None, params={}): «»» cancels an open order :param str id: order id :param str|None symbol: not used by exmo cancelOrder() :param dict params: extra parameters specific to the exmo api endpoint :returns dict: An `order structure <https://docs.ccxt.com/en/latest/manual.html#order-structure>` «»» self.load_markets() request = {‘order_id’: id} return self.privatePostOrderCancel(self.extend(request, params)) def fetch_order(self, id, symbol=None, params={}): «»» fetches information on an order made by the user :param str|None symbol: not used by exmo fetchOrder :param dict params: extra parameters specific to the exmo api endpoint :returns dict: An `order structure <https://docs.ccxt.com/en/latest/manual.html#order-structure>` «»» self.load_markets() request = { ‘order_id’: str(id), } response = self.privatePostOrderTrades(self.extend(request, params)) # # { # «type»: «buy», # «in_currency»: «BTC», # «in_amount»: «1», # «out_currency»: «USD», # «out_amount»: «100», # «trades»: [ # { # «trade_id»: 3, # «date»: 1435488248, # «type»: «buy», # «pair»: «BTC_USD», # «order_id»: 12345, # «quantity»: 1, # «price»: 100, # «amount»: 100 # } # ] # } # order = self.parse_order(response) return self.extend(order, { ‘id’: str(id), }) def fetch_order_trades(self, id, symbol=None, since=None, limit=None, params={}): «»» fetch all the trades made from a single order :param str id: order id :param str|None symbol: unified market symbol :param int|None since: the earliest time in ms to fetch trades for :param int|None limit: the maximum number of trades to retrieve :param dict params: extra parameters specific to the exmo api endpoint :returns [dict]: a list of `trade structures <https://docs.ccxt.com/en/latest/manual.html#trade-structure>` «»» market = None if symbol is not None: market = self.market(symbol) request = { ‘order_id’: str(id), } response = self.privatePostOrderTrades(self.extend(request, params)) # # { # «type»: «buy», # «in_currency»: «BTC», # «in_amount»: «1», # «out_currency»: «USD», # «out_amount»: «100», # «trades»: [ # { # «trade_id»: 3, # «date»: 1435488248, # «type»: «buy», # «pair»: «BTC_USD», # «order_id»: 12345, # «quantity»: 1, # «price»: 100, # «amount»: 100, # «exec_type»: «taker», # «commission_amount»: «0.02», # «commission_currency»: «BTC», # «commission_percent»: «0.2» # } # ] # } # trades = self.safe_value(response, ‘trades’) return self.parse_trades(trades, market, since, limit) def fetch_open_orders(self, symbol=None, since=None, limit=None, params={}): «»» fetch all unfilled currently open orders :param str|None symbol: unified market symbol :param int|None since: the earliest time in ms to fetch open orders for :param int|None limit: the maximum number of open orders structures to retrieve :param dict params: extra parameters specific to the exmo api endpoint :returns [dict]: a list of `order structures <https://docs.ccxt.com/en/latest/manual.html#order-structure>` «»» self.load_markets() if symbol is not None: market = self.market(symbol) symbol = market[‘symbol’] response = self.privatePostUserOpenOrders(params) marketIds = list(response.keys()) orders = [] for i in range(0, len(marketIds)): marketId = marketIds[i] market = self.safe_market(marketId) parsedOrders = self.parse_orders(response[marketId], market) orders = self.array_concat(orders, parsedOrders) return self.filter_by_symbol_since_limit(orders, symbol, since, limit) def parse_order(self, order, market=None): # # fetchOrders, fetchOpenOrders, fetchClosedOrders, fetchCanceledOrders # # { # «order_id»: «14», # «created»: «1435517311», # «type»: «buy», # «pair»: «BTC_USD», # «price»: «100», # «quantity»: «1», # «amount»: «100» # } # # fetchOrder # # { # «type»: «buy», # «in_currency»: «BTC», # «in_amount»: «1», # «out_currency»: «USD», # «out_amount»: «100», # «trades»: [ # { # «trade_id»: 3, # «date»: 1435488248, # «type»: «buy», # «pair»: «BTC_USD», # «order_id»: 12345, # «quantity»: 1, # «price»: 100, # «amount»: 100 # } # ] # } # id = self.safe_string(order, ‘order_id’) timestamp = self.safe_timestamp(order, ‘created’) side = self.safe_string(order, ‘type’) marketId = None if ‘pair’ in order: marketId = order[‘pair’] elif (‘in_currency’ in order) and (‘out_currency’ in order): if side == ‘buy’: marketId = order[‘in_currency’] + ‘_’ + order[‘out_currency’] else: marketId = order[‘out_currency’] + ‘_’ + order[‘in_currency’] market = self.safe_market(marketId, market) symbol = market[‘symbol’] amount = self.safe_string(order, ‘quantity’) if amount is None: amountField = ‘in_amount’ if (side == ‘buy’) else ‘out_amount’ amount = self.safe_string(order, amountField) price = self.safe_string(order, ‘price’) cost = self.safe_string(order, ‘amount’) transactions = self.safe_value(order, ‘trades’, []) clientOrderId = self.safe_integer(order, ‘client_id’) return self.safe_order({ ‘id’: id, ‘clientOrderId’: clientOrderId, ‘datetime’: self.iso8601(timestamp), ‘timestamp’: timestamp, ‘lastTradeTimestamp’: None, ‘status’: None, ‘symbol’: symbol, ‘type’: ‘limit’, ‘timeInForce’: None, ‘postOnly’: None, ‘side’: side, ‘price’: price, ‘stopPrice’: None, ‘triggerPrice’: None, ‘cost’: cost, ‘amount’: amount, ‘filled’: None, ‘remaining’: None, ‘average’: None, ‘trades’: transactions, ‘fee’: None, ‘info’: order, }, market) def fetch_canceled_orders(self, symbol=None, since=None, limit=None, params={}): «»» fetches information on multiple canceled orders made by the user :param str|None symbol: unified market symbol of the market orders were made in :param int|None since: timestamp in ms of the earliest order, default is None :param int|None limit: max number of orders to return, default is None :param dict params: extra parameters specific to the exmo api endpoint :returns dict: a list of `order structures <https://docs.ccxt.com/en/latest/manual.html#order-structure>` «»» self.load_markets() request = {} if since is not None: request[‘offset’] = limit if limit is not None: request[‘limit’] = limit market = None if symbol is not None: market = self.market(symbol) response = self.privatePostUserCancelledOrders(self.extend(request, params)) # # [{ # «order_id»: «27056153840», # «client_id»: «0», # «created»: «1653428646», # «type»: «buy», # «pair»: «BTC_USDT», # «quantity»: «0.1», # «price»: «10», # «amount»: «1» # }] # return self.parse_orders(response, market, since, limit, params) def fetch_deposit_address(self, code, params={}): «»» fetch the deposit address for a currency associated with self account :param str code: unified currency code :param dict params: extra parameters specific to the exmo api endpoint :returns dict: an `address structure <https://docs.ccxt.com/en/latest/manual.html#address-structure>` «»» self.load_markets() response = self.privatePostDepositAddress(params) # # { # «TRX»:»TBnwrf4ZdoYXE3C8L2KMs7YPSL3fg6q6V9″, # «USDTTRC20″:»TBnwrf4ZdoYXE3C8L2KMs7YPSL3fg6q6V9» # } # depositAddress = self.safe_string(response, code) address = None tag = None if depositAddress: addressAndTag = depositAddress.split(‘,’) address = addressAndTag[0] numParts = len(addressAndTag) if numParts > 1: tag = addressAndTag[1] self.check_address(address) return { ‘currency’: code, ‘address’: address, ‘tag’: tag, ‘network’: None, ‘info’: response, } def get_market_from_trades(self, trades): tradesBySymbol = self.index_by(trades, ‘pair’) symbols = list(tradesBySymbol.keys()) numSymbols = len(symbols) if numSymbols == 1: return self.markets[symbols[0]] return None def withdraw(self, code, amount, address, tag=None, params={}): «»» make a withdrawal :param str code: unified currency code :param float amount: the amount to withdraw :param str address: the address to withdraw to :param str|None tag: :param dict params: extra parameters specific to the exmo api endpoint :returns dict: a `transaction structure <https://docs.ccxt.com/en/latest/manual.html#transaction-structure>` «»» tag, params = self.handle_withdraw_tag_and_params(tag, params) self.load_markets() currency = self.currency(code) request = { ‘amount’: amount, ‘currency’: currency[‘id’], ‘address’: address, } if tag is not None: request[‘invoice’] = tag networks = self.safe_value(self.options, ‘networks’, {}) network = self.safe_string_upper(params, ‘network’) # self line allows the user to specify either ERC20 or ETH network = self.safe_string(networks, network, network) # handle ERC20>ETH alias if network is not None: request[‘transport’] = network params = self.omit(params, ‘network’) response = self.privatePostWithdrawCrypt(self.extend(request, params)) return self.parse_transaction(response, currency) def parse_transaction_status(self, status): statuses = { ‘transferred’: ‘ok’, ‘paid’: ‘ok’, ‘pending’: ‘pending’, ‘processing’: ‘pending’, ‘verifying’: ‘pending’, } return self.safe_string(statuses, status, status) def parse_transaction(self, transaction, currency=None): # # fetchTransactions # # { # «dt»: 1461841192, # «type»: «deposit», # «curr»: «RUB», # «status»: «processing», # «provider»: «Qiwi(LA) [12345]», # «amount»: «1», # «account»: «», # «txid»: «ec46f784ad976fd7f7539089d1a129fe46…», # } # # fetchWithdrawals # # { # «operation_id»: 47412538520634344, # «created»: 1573760013, # «updated»: 1573760013, # «type»: «withdraw», # «currency»: «DOGE», # «status»: «Paid», # «amount»: «300», # «provider»: «DOGE», # «commission»: «0», # «account»: «DOGE: DBVy8pF1f8yxaCVEHqHeR7kkcHecLQ8nRS», # «order_id»: 69670170, # «provider_type»: «crypto», # «crypto_address»: «DBVy8pF1f8yxaCVEHqHeR7kkcHecLQ8nRS», # «card_number»: «», # «wallet_address»: «», # «email»: «», # «phone»: «», # «extra»: { # «txid»: «f2b66259ae1580f371d38dd27e31a23fff8c04122b65ee3ab5a3f612d579c792», # «confirmations»: null, # «excode»: «», # «invoice»: «» # }, # «error»: «» # } # # withdraw # # { # «result»: True, # «error»: «», # «task_id»: 11775077 # } # timestamp = self.safe_timestamp_2(transaction, ‘dt’, ‘created’) amount = self.safe_string(transaction, ‘amount’) if amount is not None: amount = Precise.string_abs(amount) txid = self.safe_string(transaction, ‘txid’) if txid is None: extra = self.safe_value(transaction, ‘extra’, {}) extraTxid = self.safe_string(extra, ‘txid’) if extraTxid != »: txid = extraTxid type = self.safe_string(transaction, ‘type’) currencyId = self.safe_string_2(transaction, ‘curr’, ‘currency’) code = self.safe_currency_code(currencyId, currency) address = None comment = None account = self.safe_string(transaction, ‘account’) if type == ‘deposit’: comment = account elif type == ‘withdrawal’: address = account if address is not None: parts = address.split(‘:’) numParts = len(parts) if numParts == 2: address = self.safe_string(parts, 1) address = address.replace(‘ ‘, ») fee = { ‘currency’: None, ‘cost’: None, ‘rate’: None, } # fixed funding fees only(for now) if not self.fees[‘transaction’][‘percentage’]: key = ‘withdraw’ if (type == ‘withdrawal’) else ‘deposit’ feeCost = self.safe_string(transaction, ‘commission’) if feeCost is None: transactionFees = self.safe_value(self.options, ‘transactionFees’, {}) codeFees = self.safe_value(transactionFees, code, {}) feeCost = self.safe_string(codeFees, key) # users don’t pay for cashbacks, no fees for that provider = self.safe_string(transaction, ‘provider’) if provider == ‘cashback’: feeCost = ‘0’ if feeCost is not None: # withdrawal amount includes the fee if type == ‘withdrawal’: amount = Precise.string_sub(amount, feeCost) fee[‘cost’] = self.parse_number(feeCost) fee[‘currency’] = code return { ‘info’: transaction, ‘id’: self.safe_string_2(transaction, ‘order_id’, ‘task_id’), ‘txid’: txid, ‘type’: type, ‘currency’: code, ‘network’: self.safe_string(transaction, ‘provider’), ‘amount’: amount, ‘status’: self.parse_transaction_status(self.safe_string_lower(transaction, ‘status’)), ‘timestamp’: timestamp, ‘datetime’: self.iso8601(timestamp), ‘address’: address, ‘addressFrom’: None, ‘addressTo’: address, ‘tag’: None, ‘tagFrom’: None, ‘tagTo’: None, ‘updated’: self.safe_timestamp(transaction, ‘updated’), ‘comment’: comment, ‘fee’: fee, } def fetch_transactions(self, code=None, since=None, limit=None, params={}): «»» fetch history of deposits and withdrawals :param str|None code: unified currency code for the currency of the transactions, default is None :param int|None since: timestamp in ms of the earliest transaction, default is None :param int|None limit: max number of transactions to return, default is None :param dict params: extra parameters specific to the exmo api endpoint :returns dict: a list of `transaction structure <https://docs.ccxt.com/en/latest/manual.html#transaction-structure>` «»» self.load_markets() request = {} if since is not None: request[‘date’] = int(since / 1000) currency = None if code is not None: currency = self.currency(code) response = self.privatePostWalletHistory(self.extend(request, params)) # # { # «result»: True, # «error»: «», # «begin»: «1493942400», # «end»: «1494028800», # «history»: [ # { # «dt»: 1461841192, # «type»: «deposit», # «curr»: «RUB», # «status»: «processing», # «provider»: «Qiwi(LA) [12345]», # «amount»: «1», # «account»: «», # «txid»: «ec46f784ad976fd7f7539089d1a129fe46…», # }, # { # «dt»: 1463414785, # «type»: «withdrawal», # «curr»: «USD», # «status»: «paid», # «provider»: «EXCODE», # «amount»: «-1», # «account»: «EX-CODE_19371_USDda…», # «txid»: «», # }, # ], # } # return self.parse_transactions(response[‘history’], currency, since, limit) def fetch_withdrawals(self, code=None, since=None, limit=None, params={}): «»» fetch all withdrawals made from an account :param str|None code: unified currency code :param int|None since: the earliest time in ms to fetch withdrawals for :param int|None limit: the maximum number of withdrawals structures to retrieve :param dict params: extra parameters specific to the exmo api endpoint :returns [dict]: a list of `transaction structures <https://docs.ccxt.com/en/latest/manual.html#transaction-structure>` «»» self.load_markets() currency = None request = { ‘type’: ‘withdraw’, } if limit is not None: request[‘limit’] = limit # default: 100, maximum: 100 if code is not None: currency = self.currency(code) request[‘currency’] = currency[‘id’] response = self.privatePostWalletOperations(self.extend(request, params)) # # { # «items»: [ # { # «operation_id»: 47412538520634344, # «created»: 1573760013, # «updated»: 1573760013, # «type»: «withdraw», # «currency»: «DOGE», # «status»: «Paid», # «amount»: «300», # «provider»: «DOGE», # «commission»: «0», # «account»: «DOGE: DBVy8pF1f8yxaCVEHqHeR7kkcHecLQ8nRS», # «order_id»: 69670170, # «extra»: { # «txid»: «f2b66259ae1580f371d38dd27e31a23fff8c04122b65ee3ab5a3f612d579c792», # «excode»: «», # «invoice»: «» # }, # «error»: «» # }, # ], # «count»: 23 # } # items = self.safe_value(response, ‘items’, []) return self.parse_transactions(items, currency, since, limit) def fetch_withdrawal(self, id, code=None, params={}): «»» fetch data on a currency withdrawal via the withdrawal id :param str id: withdrawal id :param str|None code: unified currency code of the currency withdrawn, default is None :param dict params: extra parameters specific to the exmo api endpoint :returns dict: a `transaction structure <https://docs.ccxt.com/en/latest/manual.html#transaction-structure>` «»» self.load_markets() currency = None request = { ‘order_id’: id, ‘type’: ‘withdraw’, } if code is not None: currency = self.currency(code) request[‘currency’] = currency[‘id’] response = self.privatePostWalletOperations(self.extend(request, params)) # # { # «items»: [ # { # «operation_id»: 47412538520634344, # «created»: 1573760013, # «updated»: 1573760013, # «type»: «deposit», # «currency»: «DOGE», # «status»: «Paid», # «amount»: «300», # «provider»: «DOGE», # «commission»: «0», # «account»: «DOGE: DBVy8pF1f8yxaCVEHqHeR7kkcHecLQ8nRS», # «order_id»: 69670170, # «extra»: { # «txid»: «f2b66259ae1580f371d38dd27e31a23fff8c04122b65ee3ab5a3f612d579c792», # «excode»: «», # «invoice»: «» # }, # «error»: «» # }, # ], # «count»: 23 # } # items = self.safe_value(response, ‘items’, []) first = self.safe_value(items, 0, {}) return self.parse_transaction(first, currency) def fetch_deposit(self, id=None, code=None, params={}): «»» fetch information on a deposit :param str id: deposit id :param str|None code: unified currency code, default is None :param dict params: extra parameters specific to the exmo api endpoint :returns dict: a `transaction structure <https://docs.ccxt.com/en/latest/manual.html#transaction-structure>` «»» self.load_markets() currency = None request = { ‘order_id’: id, ‘type’: ‘deposit’, } if code is not None: currency = self.currency(code) request[‘currency’] = currency[‘id’] response = self.privatePostWalletOperations(self.extend(request, params)) # # { # «items»: [ # { # «operation_id»: 47412538520634344, # «created»: 1573760013, # «updated»: 1573760013, # «type»: «deposit», # «currency»: «DOGE», # «status»: «Paid», # «amount»: «300», # «provider»: «DOGE», # «commission»: «0», # «account»: «DOGE: DBVy8pF1f8yxaCVEHqHeR7kkcHecLQ8nRS», # «order_id»: 69670170, # «extra»: { # «txid»: «f2b66259ae1580f371d38dd27e31a23fff8c04122b65ee3ab5a3f612d579c792», # «excode»: «», # «invoice»: «» # }, # «error»: «» # }, # ], # «count»: 23 # } # items = self.safe_value(response, ‘items’, []) first = self.safe_value(items, 0, {}) return self.parse_transaction(first, currency) def fetch_deposits(self, code=None, since=None, limit=None, params={}): «»» fetch all deposits made to an account :param str|None code: unified currency code :param int|None since: the earliest time in ms to fetch deposits for :param int|None limit: the maximum number of deposits structures to retrieve :param dict params: extra parameters specific to the exmo api endpoint :returns [dict]: a list of `transaction structures <https://docs.ccxt.com/en/latest/manual.html#transaction-structure>` «»» self.load_markets() currency = None request = { ‘type’: ‘deposit’, } if limit is not None: request[‘limit’] = limit # default: 100, maximum: 100 if code is not None: currency = self.currency(code) request[‘currency’] = currency[‘id’] response = self.privatePostWalletOperations(self.extend(request, params)) # # { # «items»: [ # { # «operation_id»: 47412538520634344, # «created»: 1573760013, # «updated»: 1573760013, # «type»: «deposit», # «currency»: «DOGE», # «status»: «Paid», # «amount»: «300», # «provider»: «DOGE», # «commission»: «0», # «account»: «DOGE: DBVy8pF1f8yxaCVEHqHeR7kkcHecLQ8nRS», # «order_id»: 69670170, # «extra»: { # «txid»: «f2b66259ae1580f371d38dd27e31a23fff8c04122b65ee3ab5a3f612d579c792», # «excode»: «», # «invoice»: «» # }, # «error»: «» # }, # ], # «count»: 23 # } # items = self.safe_value(response, ‘items’, []) return self.parse_transactions(items, currency, since, limit) def sign(self, path, api=‘public’, method=‘GET’, params={}, headers=None, body=None): url = self.urls[‘api’][api] + ‘/’ if api != ‘web’: url += self.version + ‘/’ url += path if (api == ‘public’) or (api == ‘web’): if params: url += ‘?’ + self.urlencode(params) elif api == ‘private’: self.check_required_credentials() nonce = self.nonce() body = self.urlencode(self.extend({‘nonce’: nonce}, params)) headers = { ‘Content-Type’: ‘application/x-www-form-urlencoded’, ‘Key’: self.apiKey, ‘Sign’: self.hmac(self.encode(body), self.encode(self.secret), hashlib.sha512), } return {‘url’: url, ‘method’: method, ‘body’: body, ‘headers’: headers} def nonce(self): return self.milliseconds() def handle_errors(self, httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody): if response is None: return # fallback to default error handler if (‘result’ in response) or (‘errmsg’ in response): # # {«result»:false,»error»:»Error 50052: Insufficient funds»} # {«s»:»error»,»errmsg»:»strconv.ParseInt: parsing «»: invalid syntax»} # success = self.safe_value(response, ‘result’, False) if isinstance(success, str): if (success == ‘true’) or (success == ‘1’): success = True else: success = False if not success: code = None message = self.safe_string_2(response, ‘error’, ‘errmsg’) errorParts = message.split(‘:’) numParts = len(errorParts) if numParts > 1: errorSubParts = errorParts[0].split(‘ ‘) numSubParts = len(errorSubParts) code = errorSubParts[1] if (numSubParts > 1) else errorSubParts[0] feedback = self.id + ‘ ‘ + body self.throw_exactly_matched_exception(self.exceptions[‘exact’], code, feedback) self.throw_broadly_matched_exception(self.exceptions[‘broad’], message, feedback) raise ExchangeError(feedback)
Result Code Description Как решить проблему Куда обратиться

76

51

076

9859

116

603

Insufficient funds

Not sufficient funds

Decline, not sufficient funds

Decline, not sufficient funds На балансе карты недостаточно средств Если на карте баланс больше или равен сумме транзакции, а отказ все равно происходит по причине недостатка средств, тогда возможны такие причины:
— банк-эмитент удерживает дополнительные комиссии с держателя карты. Это может возникать в случаях погашение кредита посредством интернет-платежа, либо если договор на обслуживание банковской карты предусматривает дополнительные комиссии;
— происходит конвертация из валюты покупки в валюту карты. Убедитесь, что средств на карте достаточно для покрытия комиссии за конвертацию валют. Некоторые банки-эмитенты устанавливают комиссии на конвертацию валют как-правило в пределах 1% Банк-эмитент (банк, выпустивший карту)

50

5

9905

180

Transaction declined

Do not honor

Do not Honour

Transaction declined

Do not honor Не обслуживать Пожалуй, самый общий и не определенный код отказа. Он может указывать на любые ограничения, наложенные банком-эмитентом, которые банк пожелал оставить не уточненными.
Возможные причины:
— карта заблокирована или на ней установлен статус
— на карте не установлен лимит на оплату в интернет, либо этот лимит недостаточный
— сработали настройки системы безопасности банка-эмитента
— сработали ограничения по сумме или количеству операций по карте у банка-эмитента
— банк-эмитент установил ограничения на проведение данного типа транзакций
— по карте не разрешены международные платежи (доместиковая карта)
— банк-эмитент установил ограничение на транзакции с двойной конвертацией валют (DCC)
— банк-эмитент установил ограничения на транзакции в данной валюте
— банк-эмитент установил ограничения на транзакции в данной стране
— банк-эмитент в США ограничил по карте операции в валюте, отличной от USD
— банк-эмитент в США ограничил по карте операции в странах бывшего СНГ и других рисковых регионах Банк-эмитент (банк, выпустивший карту). Если банк-эмитент не видит данную транзакцию, тогда необходимо обратиться в банк-эквайер (банк, обслуживающий торговую точку) или к платежному провайдеру

55

055

12

902

9882

9912

Invalid transaction

Invalid transaction card / issuer / acquirer

Decline reason message: invalid transaction

Invalid transaction Операция для данной карты или мерчанта не разрешена Причины могут быть теми же, что и для Do not honor Банк-эмитент (банк, выпустивший карту). Если банк-эмитент не видит данную транзакцию, тогда необходимо обратиться в банк-эквайер (банк, обслуживающий торговую точку) или к платежному провайдеру

95

095

61

061

121

9861

9863

Decline, exceeds withdrawal amount limit

Exceeds amount limit

Exceeds withdrawal limit

Withdrawal limit would be exceeded

Withdrawal limit already reached

Card exceeds withdrawal amount limit На карте достигнут лимит по сумме операций в сутки, в месяц или на разовую транзакцию Возможные причины (более детально смотрите по банку-эквайеру выше):
— на карте не установлен лимит операций в интернет или он уже достигнут или будет достигнут с текущей транзакцией
— общий лимит по сумме для операций покупок по карте уже достигнут или будет достигнут с текущей транзакцией
— карта не открыта для расчетов в интернет
— на карте не активирован сервис 3D-Secure из-за чего операции в интернет без 3D-Secure пароля попадают под ограничения банка-эмитента Банк-эмитент (банк, выпустивший карту)

65

065

82

082

9860

Activity count exceeded

Exceeds frequency limit

Maximum number of times used

Card exceeds withdrawal frequency limit На карте достигнут лимит по количеству операций в сутки или в месяц Возможные причины (более детально смотрите по банку-эквайеру выше):
— на карте не установлен лимит операций в интернет или он уже достигнут или будет достигнут с текущей транзакцией
— общий лимит по количеству операций покупок по карте уже достигнут или будет достигнут с текущей транзакцией
— карта не открыта для расчетов в интернет
— на карте не активирован сервис 3D-Secure из-за чего операции в интернет без 3D-Secure пароля попадают под ограничения банка-эмитента Банк-эмитент (банк, выпустивший карту)

57

119

Not permitted to client

Transaction not permitted on card

Transaction not permitted to card

Decline, transaction not permitted to cardholder

Transaction not permitted to card

Not permitted to client

Decline, transaction not permitted to cardholder

Function Not Permitted To Cardholder

Not permitted to client Транзакция не разрешена для карты или клиента

Банк эмитент отклонил транзакцию так как она не может быть осуществлена для этой карты или клиента.

Возможные причины (более детально смотрите по банку-эквайеру выше):
— данный карточный продукт не рассчитан для такого типа операции
— для данной карты не настроен такой тип операции на стороне банка-эмитента

Банк-эмитент (банк, выпустивший карту)

58

120

Decline, transaction not permitted to terminal

Not permitted to merchant

The requested service is not permitted for terminal

Function Not Permitted To Terminal

Txn Not Permitted On Term

Not permitted to merchant Транзакция не разрешена для терминала или мерчанта Мерчант или терминал настроен некорректно, или данный тип операции не разрешен на стороне банка-эквайера или платежного провайдера. В первую очередь нужно уточнить конфигурацию торговой точки у платежного провайдера и список допустимых операций Банк-эквайер (банк, обслуживающий торговую точку) или к платежному провайдеру

211

N7

9881

Bad CVV2

Decline for CVV2 Failure

CVV2 is invalid

Invalid CVV2

Decline Cvv2 failure

Invalid CVV2 code Введен неверный CVV2 код во время проведения платежа Необходимо проверить CVV2 код на оборотной стороне карты. Код состоит из 3 цифр для Visa/MasterCard/Discover и из 4 цифр для карт American Express.
CVV2 код также может называться CVC2, CID, CSC2 код.
В некоторых случаях такой код отказа может возвращаться и при вводе неверного срока действия карты.
Стоит обратить внимание, если банк эмитент использует динамический код CVV2, генерируемый на короткий промежуток времени в клиент-банке — срок жизни такого CVV2 кода мог истечь на момент совершения операции Банк-эмитент (банк, выпустивший карту)

058

59

059

62

062

9858

104

Restricted card

Restricted status

Decline, restricted card

Card is restricted

Your card is restricted

Restricted Card Операции по карте ограничены Возможные причины:
— операции по карте в данном регионе/стране не разрешены
— на карте установлен статус, ограничивающий платежи
— для карты не доступны интернет-платежи Банк-эмитент (банк, выпустивший карту)

56

056

Transaction not supported by institution Your card is not supported. Please use card of other payment system Данный тип платежной системы не поддерживается Банк-эквайер или платежный провайдер не поддерживает платежную систему данной карты.
Отказ может возникать в таких случаях:
— оплата картой локальной платежной системы за рубежом. Например картой платежной системы МИР за пределами РФ, картой платежной системы ПРОСТИР за пределами Украины
— оплата картами оплата AMERICAN EXPRESS, Diners Club,JCB, China Union Pay, Discover которые не поддерживаются платежным провайдером
— оплата картой Monobank в счет микро-кредитной организации (погашение кредита), либо выдача кредит. Монобанк блокирует операции в адрес МФО по некоторым типам карт Банк-эквайер (банк, обслуживающий торговую точку) или к платежному провайдеру
Монобанк, если карта этого банка

100

1000

Decline (general, no comments)

General decline, no comments

General decline

General decline Общий отказ. Причины могут быть теми же, что и для Do not honor Банк-эмитент (банк, выпустивший карту)

54

101

Expired card

Decline, expired card

Expired card

Pick-up, expired card

Card expired

Invalid card expiry date Истек срок действия карты Возможные причины
— срок действия карты закончился
— указан неверный срок действия карты
— карта была перевыпущена с новым сроком Банк-эмитент (банк, выпустивший карту)

14

111

9852

1012

305113

Card number does not exist

Invalid card number

No such card

Decline, card not effective

Invalid card

Wrong card number

Invalid card number Неверный номер карты Возможные причины:
— неверный номер карты
— карта не действительна
— оплата картой локальной платежной системы за рубежом. Например картой платежной системы МИР за пределами РФ, картой платежной системы ПРОСТИР за пределами Украины
— оплата картами оплата AMERICAN EXPRESS, Diners Club,JCB, China Union Pay, Discover которые не поддерживаются платежным провайдером
— операции по карте в данном регионе/стране не разрешены
— на карте установлен статус, ограничивающий платежи Банк-эмитент (банк, выпустивший карту)

909

42

7

07

108

9875

207

42

External Decline Special Condition

Special Pickup

Pick up card (special)

Pick up card, special condition (fraud account)

Pick-up, special conditions

Decline, refer to card issuer’s special conditions

Pick up card, special condition (fraud account) Специальный отказ банка-эмитента. Владелец карты подозревается в мошенничестве. Банк-эмитент подозревает держателя карты в мошенничестве, либо система безопасности (антифрод-система) банка эмитента отклонила транзакцию Банк-эмитент (банк, выпустивший карту)

122

63

89

Decline, security violation

Security violation

Security violation Отказ по соображениям безопасности Код отказа может отдаваться как банком-эмитентом, так и банком-эквайером. Возможные причины:
— карточный счет заморожен или заблокирован
— ограничения правил безопасности (система Antifraud на стороне любого из участников) Банк-эмитент (банк, выпустивший карту)
Банк-эквайер (банк, обслуживающий торговую точку) или к платежному провайдеру

200

76

114

21

Invalid account

Decline, no account of type requested

No To Account

Invalid card number Неверный номер карты или счета Возможные причины:
— счет карты закрыт или заблокирован
— по счету запрещены расходные операции
— карта не действительна
— неверный номер карты
— оплата картой локальной платежной системы за рубежом. Например картой платежной системы МИР за пределами РФ, картой платежной системы ПРОСТИР за пределами Украины
— оплата картами оплата AMERICAN EXPRESS, Diners Club,JCB, China Union Pay, Discover которые не поддерживаются платежным провайдером
— операции по карте в данном регионе/стране не разрешены
— на карте установлен статус, ограничивающий платежи
— карта не предназначена для расчетов в интернет Банк-эмитент (банк, выпустивший карту)

74

074

907

911

910

9872

91

291

82

908

810

Unable to authorize

Decline reason message: card issuer or switch inoperative

Destination not available

Issuer or switch inoperative

Issuer unavailable

Time-out at issuer

Decline reason message: card issuer timed out

Decline reason message: transaction destination cannot be found for routing

Transaction timeout

Acquiring bank request timeout

Ошибка связи: таймаут

Недоступен эмитент/эквайер

Таймаут при попытке связи с банком-эмитентом. Как правило такая ошибка возникает при проблемах технического характера на стороне любого из участников: банка-эквайера, банка эмитента, платежной системы Visa/MasterCard/МИР.

В первую очередь необходимо обратиться в банк-эквайер для выяснения причины и определения, на чьей стороне неисправности.

Банк-эквайер (банк, обслуживающий торговую точку) или к платежному провайдеру

Банк-эмитент (при получении 91 кода)

15

815

92

No such card/issuer

No such issuer

Invalid Issuer

Invalid card number Указан неверный номер карты см. Неверный номер карты

811

96

0

System error Unknown payment system error Технический сбой на стороне эквайера/платежной системы Технический сбой на стороне банка-эквайера Банк-эквайер (банк, обслуживающий торговую точку) или к платежному провайдеру

4

04

44

43

200

104

Pick-up (general, no comments)

Pick up card

Your card is restricted

Hot Card, Pickup (if possible)

Hold — Pick up card

Pick-up, restricted card

Pick-up, card acceptor contact card acquirer

Pick up card (no fraud) Изъять карту Банк-эмитент отклонил транзакцию с сообщением о необходимости изъять карту, если это возможно. Как правило причиной является блокировка карты по причине утери Банк-эмитент (банк, выпустивший карту) 52 Number of PIN tries exceeded PIN tries exceeded Превышен лимит попыток ввода PIN-кода На карте установлен статус в связи с превышением попыток ввода PIN-кода при оплате в наземных POS-терминалах или использования карты в банкомате.
Также причиной может быть то, что карта только что выпущена и первой операцией для нее должна быть операция смены PIN-кода Банк-эмитент (банк, выпустивший карту)

205

110

13

567

9913

9867

Invalid advance amount

Decline, invalid amount

Invalid amount

Invalid amount Неверная сумма Причины отказа:
— слишком маленькая сумма. Если карта открыта в валюте, убедитесь, что сумма транзакции не менее 1 цента доллара США или 1 Евро цента
— слишком большая сумма
— из суммы транзакции невозможно удержать сумму комиссии платежного провайдера. Убедитесь, что сумма транзакции не меньше суммы всех комиссий
— ограничения на карте плательщика на стороне банка, который выпуcтил карту.
— достигнуты лимиты на стороне банка-эквайера. Банк-эквайер (банк, обслуживающий торговую точку) или к платежному провайдеру, Банк-эмитент (банк, выпустивший карту)

948

102

202

9934

59

Suspected fraud

Decline, suspected fraud

Suspected fraud Подозрение в мошенничестве Система безопасности одного из участников процессинговой цепочки подозревает участие карты в мошеннических действиях или в компрометации.
Также, возможно, что банк-эмитент заблокировал карту/счет в связи с подозрительными действиями, скиммингом, компрометацией Банк-эмитент (банк, выпустивший карту)

800

904

30

030

9874

574

Format error

Decline reason message: format error

Format error Ошибка формата сообщения Технический сбой при попытке авторизовать транзакцию у банка-эмитента. Вероятно, какие-то из атрибутов транзакции указаны неверно. Необходимо уточнить у банка детали, которые вызвали такой отказ. Банк-эквайер (банк, обслуживающий торговую точку) или к платежному провайдеру

41

540

208

9840

Lost Card, Pickup

Pick up card (lost card)

Lost card

Lost card, pick-up

Pick-up, lost card

Lost card Карта утеряна На карте установлен статус утеряна по заявлению картодержателя. Банк-эмитент (банк, выпустивший карту)

93

124

Violation of law

Decline, violation of law

Suspected fraud Транзакция не может быть выполнена: нарушение закона Банк-эмитент отказал в осуществлении транзакции во избежание нарушения закона Банк-эмитент (банк, выпустивший карту)

909

96

Decline reason message: system malfunction

System malfunction

System malfunction Технический сбой на стороне эквайера/платежной системы Технический сбой на стороне банка-эквайера Банк-эквайер (банк, обслуживающий торговую точку) или к платежному провайдеру

01

02

107

108

Refer to card issuer

Decline, refer to card issuer

Decline, refer to card issuer special conditions

Refer to issuer

Decline, refer to card issuer Обратиться к банку-эмитенту Отказ банка-эмитента. Держатель карты должен обратиться в свой банк Банк-эмитент (банк, выпустивший карту) 201 Incorrect PIN Incorrect PIN Неверный PIN На карте установлен статус в связи с превышением попыток ввода PIN-кода при оплате в наземных POS-терминалах или использования карты в банкомате.
Также причиной может быть то, что карта только что выпущена и первой операцией для нее должна быть операция смены PIN-кода Банк-эмитент (банк, выпустивший карту) 210 Bad CAVV Do not honor Неверный CAVV Ошибка возникает при проверке 3DSecure на стороне банка-эмитента. Причиной может случить либо неверная настройка 3DSecure на карте, либо некорректная реализация Apple/Google Pay токенов на стороне платежной платформы, мерчанта или банка-эквайера Банк-эквайер (банк, обслуживающий торговую точку) или к платежному провайдеру

43

209

057

9841

Pick up card (stolen card)

Pick-up, stolen card

Stolen card

Stolen card, pick-up

Lost/Stolen

Lost or stolen card

Stolen card Карта украдена Банк-эмитент установил на карте статус «украдена» по обращению держателя карты Банк-эмитент (банк, выпустивший карту)

6000

106

Pre-authorizations are not allowed within this context.

Merchant is not allowed preauth

Preauth not allowed Операция предавторизации на разрешена для торговца Необходимо обратиться к платежному провайдеру или банку-эквайеру для активации двухстадийной оплаты перед пред-авторизацию/завершение (preauth/capture или prepurchase/completion или authorization/sale) Банк-эквайер (банк, обслуживающий торговую точку) или к платежному провайдеру

03

3

109

9903

20003

Invalid merchant

Decline, invalid merchant

Merchant is not configured correctly Мерчант настроен некорректно Необходимо обратиться к платежному провайдеру или банку-эквайеру для настройки или активации мерчанта или мерчант-аккаунта.
Также причиной может быть некорректно переданный идентификатор мерчанта в транзакции Банк-эквайер (банк, обслуживающий торговую точку) или к платежному провайдеру

  • #1

Пытаюсь перевести Догов в ETC и получаю сообщение об ошибке «Insufficient funds»:
Screenshot_91.png
— что, по всей видимости, переводится как «недостаток средств». Недостаток каких средств? — на бирже для реальных обменов? — по моему их там more; — средств для комиссии? — у меня четыре сверху от минимума, при 0.2 требующейся. Прошу разъяснить.

  • #2

Процент за операцию не учёл, меньше сумму ставь. Посмотри в графу Total и в графу Available внимательно. У тебя Total больше чем Available.

  • #3

Так видно же что у тебя мало на счету, 104.88401416 , а тебе надо с учетом комиссии — 104.88401492, нахватает

  • #4

Присмотрись, может некому хот-доги продавать на районе.

  • #5

Боже кошмар… Почему я должен напарываться на такие грабли.. Почему я вручную должен возиться с знаками после запятой — я не пересчитаю полностью, запас останется, Криптопия должна автоматом пересчитывать такие штуки.

Мне сразу не понравилась Криптопия — отрицательная автоматика портит нервы.
**************
Спасибо.

  • #6

Там совершенно нормальная автоматика. Видимо, курс изменился пока ты правил цифры.

  • #7

Мне сразу не понравилась Криптопия — отрицательная автоматика портит нервы.

такое на всех биржах бывает, редко, но бывает.

Кошельки / сервисы

Ошибка означает, что у вас недостаточно монет для создания. Скорее всего, вы выбрали короткий «Coin symbol» (например, BTC) – такие стоят по умолчанию дороже. Комиссии при выпуске монет:

Комиссии в зависимости от длины тикера:

3 буквы — 1 000 000 BIP
4 буквы — 100 000 BIP
5 букв — 10 000 BIP
6 букв — 1 000 BIP
7-10 букв — 100 BIP

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

Зарегистрироваться

Кошельки / сервисы

  • Где создать кошелек?
  • Как сообщить о багах или проблемах с приложениями или сервисами Minter?
  • Что такое консоль и как в нее попасть?
  • Как узнать свой адрес кошелька?
  • По ошибке отправил BIP на адрес кошелька из тестовой версии, что делать в этом случае, можно ли их вернуть?
  • Что делать, если кошельками Minter не поддерживается мое устройство?
  • Как выпустить свои монеты/токены в Minter? Что указывать в параметрах?
  • Где хранятся монеты?
  • Какова роль параметра CRR, задаваемого при создании своей монеты?
  • Могу ли я на свой кошелек отправлять другие криптовалюты и выполнять операции с ними?
  • Я не устанавливал пароль и имя пользователя. Как войти в аккаунт в консоли?
  • Я забыл пароль от кошелька.
    Что делать ?

Все еще остались вопросы?

Понравилась статья? Поделить с друзьями:
  • Error 409 это
  • Error 5005 p cad
  • Error 408 exe скачать вирус
  • Error 500 решение проблемы
  • Error 500 при регистрации