> For the complete documentation index, see [llms.txt](https://docs.iexexchanger.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.iexexchanger.com/guide/kursy/istochniki/kursy-konkurentov/format-xml-faila-konkurenta.md).

# Формат XML-файла конкурента

Для работы модуля «Курсы конкурентов» необходимо предоставить ссылку на XML-файл, содержащий курсы валют и криптовалют.

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

XML-файл должен соответствовать установленной структуре, иначе система не сможет корректно обработать данные.

***

## Общие требования

XML-файл должен соответствовать следующим требованиям:

| Параметр                  | Значение                        |
| ------------------------- | ------------------------------- |
| Формат файла              | XML                             |
| Кодировка                 | UTF-8                           |
| Максимальный размер файла | 2 МБ                            |
| Тип ссылки                | Публичная HTTP или HTTPS ссылка |
| Доступность               | Без авторизации                 |
| Редиректы                 | Не поддерживаются               |

Если файл не соответствует данным требованиям, источник не сможет быть добавлен в систему.

## Базовая структура XML

Каждая валютная пара должна быть размещена внутри элемента `<item>`.

Минимальный пример:

```xml
<?xml version="1.0" encoding="UTF-8"?>

<rates>
    <item>
        <from>BTC</from>
        <to>USDT</to>
        <in>1</in>
        <out>65000</out>
    </item>
</rates>
```

После обработки система получит курс: **BTC - USDT = 65000**

## Обязательные поля

Каждый элемент `<item>` должен содержать четыре обязательных поля.

| Поле     | Описание                            |
| -------- | ----------------------------------- |
| `<from>` | Код валюты, которую отдаёт клиент   |
| `<to>`   | Код валюты, которую получает клиент |
| `<in>`   | Количество валюты отдаю             |
| `<out>`  | Количество валюты получаю           |

## Что означают поля

Рассмотрим пример:

```xml
<item>
    <from>BTC</from>
    <to>USDT</to>
    <in>1</in>
    <out>65000</out>
</item>
```

Здесь:

| Поле | Значение |
| ---- | -------- |
| From | BTC      |
| To   | USDT     |
| In   | 1        |
| Out  | 65000    |

Это означает: **1 BTC = 65000 USDT**

## Как рассчитывается курс

Система рассчитывает курс по формуле: `Курс = Out ÷ In`

Пример:

```xml
<item>
    <from>USD</from>
    <to>RUB</to>
    <in>100</in>
    <out>9000</out>
</item>
```

Расчёт: **9000 ÷ 100 = 90**

Результат: **USD - RUB = 90**

## Полноценный пример XML-файла

```xml
<?xml version="1.0" encoding="UTF-8"?>

<rates>
    <item>
        <from>BTC</from>
        <to>USDT</to>
        <in>1</in>
        <out>65000</out>
    </item>
    <item>
        <from>ETH</from>
        <to>USDT</to>
        <in>1</in>
        <out>3500</out>
    </item>
    <item>
        <from>USD</from>
        <to>RUB</to>
        <in>100</in>
        <out>9000</out>
    </item>
</rates>
```

После обработки система получит:

| Пара       | Курс  |
| ---------- | ----- |
| BTC - USDT | 65000 |
| ETH - USDT | 3500  |
| USD - RUB  | 90    |

## Поддерживаемые коды валют

В кодах валют допускаются:

| Тип             | Пример      |
| --------------- | ----------- |
| Латинские буквы | BTC         |
| Цифры           | RUB1        |
| Подчёркивание   | USDT\_TRC20 |
| Дефис           | USDT-TRC20  |

Примеры корректных кодов:

```xml
<from>BTC</from>
<from>USDT_TRC20</from>
<from>RUB1</from>
```

## Рекомендации по кодам валют

Рекомендуется использовать:

```
BTC
ETH
USDT
USDC
TRX
LTC
XRP
BNB
RUB
USD
EUR
```

или общепринятые обозначения платёжных систем:

```
SBERRUB
TCSBRUB
TRC20
ERC20
BEP20
TON
```

Использование нестандартных обозначений может усложнить настройку пар в системе.

## Несколько примеров

{% stepper %}
{% step %}

### Bitcoin → USDT

```xml
<item>
    <from>BTC</from>
    <to>USDT</to>
    <in>1</in>
    <out>65000</out>
</item>
```

Результат: **BTC - USDT = 65000**
{% endstep %}

{% step %}

### USD → RUB

```
<item>
    <from>USD</from>
    <to>RUB</to>
    <in>100</in>
    <out>9000</out>
</item>
```

Результат: **USD - RUB = 90**
{% endstep %}

{% step %}

### RUB → USD

```
<item>
    <from>RUB</from>
    <to>USD</to>
    <in>9000</in>
    <out>100</out>
</item>
```

Результат: **RUB - USD = 0.01111111**
{% endstep %}
{% endstepper %}

## Что поддерживается

| Возможность                                | Поддерживается |
| ------------------------------------------ | -------------- |
| XML-файлы                                  | Да             |
| UTF-8                                      | Да             |
| Любое количество валютных пар              | Да             |
| HTTP-ссылки                                | Да             |
| HTTPS-ссылки                               | Да             |
| Десятичные числа                           | Да             |
| Большие значения курсов                    | Да             |
| Автоматический расчёт курса через In / Out | Да             |

## Что не поддерживается

| Возможность                      | Поддерживается |
| -------------------------------- | -------------- |
| JSON-файлы                       | Нет            |
| CSV-файлы                        | Нет            |
| TXT-файлы                        | Нет            |
| Защищённые ссылки с авторизацией | Нет            |
| Локальные адреса сервера         | Нет            |
| Редиректы                        | Нет            |
| Файлы более 2 МБ                 | Нет            |
| Некорректный XML                 | Нет            |

## Частые ошибки

###

{% stepper %}
{% step %}

### Отсутствует поле From

Неправильно:

```
<item>
    <to>USDT</to>
    <in>1</in>
    <out>65000</out>
</item>
```

Правильно:

```
<item>
    <from>BTC</from>
    <to>USDT</to>
    <in>1</in>
    <out>65000</out>
</item>
```

{% endstep %}

{% step %}

### Отсутствует поле To

Неправильно:

```
<item>
    <from>BTC</from>
    <in>1</in>
    <out>65000</out>
</item>
```

{% endstep %}

{% step %}

### Значение In равно нулю

Неправильно:

```
<item>
    <from>BTC</from>
    <to>USDT</to>
    <in>0</in>
    <out>65000</out>
</item>
```

В данном случае система не сможет выполнить расчёт курса.
{% endstep %}

{% step %}

### Неверная кодировка

Файл должен использовать кодировку: **UTF-8**

Использование других кодировок может привести к ошибкам обработки данных.
{% endstep %}
{% endstepper %}

## Проверка XML перед подключением

Перед добавлением источника рекомендуется проверить:

| Проверка                        | Результат |
| ------------------------------- | --------- |
| Файл открывается в браузере     | Да        |
| XML корректно отображается      | Да        |
| Присутствуют элементы `<item>`  | Да        |
| Указаны поля From, To, In и Out | Да        |
| Размер файла менее 2 МБ         | Да        |
| Используется UTF-8              | Да        |

## Рекомендации

Для стабильной работы рекомендуется:

* использовать только прямые ссылки на XML;
* не изменять структуру файла после подключения;
* использовать стандартные коды валют;
* регулярно проверять доступность XML-файла;
* не превышать размер 2 МБ;
* использовать кодировку UTF-8;
* обновлять XML автоматически на стороне источника.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.iexexchanger.com/guide/kursy/istochniki/kursy-konkurentov/format-xml-faila-konkurenta.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
