# Документация API

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


# Политика сотрудничества

### **1. Запрет на изменение условий трафика** <a href="#id-1.-zapret-na-izmenenie-uslovii-trafika" id="id-1.-zapret-na-izmenenie-uslovii-trafika"></a>

Мерчантам категорически запрещается изменять тип или ГЕО трафика, изначально согласованные с платформой. В случае предоставления заявок (денежного потока), тип или гео которых не соответствует ранее установленному соглашению, на мерчанта накладывается штраф в размере 10,000 USDT.

### **2. Обязательная прозрачность источников трафика:** <a href="#id-2.-obyazatelnaya-prozrachnost-istochnikov-trafika" id="id-2.-obyazatelnaya-prozrachnost-istochnikov-trafika"></a>

Мерчанты обязаны предоставлять полную и достоверную информацию обо всех источниках трафика, используемых в рамках сотрудничества. За сокрытие информации или предоставление заведомо ложных данных о происхождении трафика на мерчанта налагается штраф в размере 10,000 USDT.

### **3. Ответственность за мошеннические действия:** <a href="#id-3.-otvetstvennost-za-moshennicheskie-deistviya" id="id-3.-otvetstvennost-za-moshennicheskie-deistviya"></a>

Мерчанты несут полную ответственность за предоставление заявок, которые являются недобросовестными, мошенническими или «фейковыми». За каждый выявленный случай такой заявки мерчант обязан выплатить штраф в размере 10,000 USDT.

### **4. Обменные проекты:** <a href="#id-4.-obmennye-proekty" id="id-4.-obmennye-proekty"></a>

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

### **5. Обязательство по возмещению убытков:** <a href="#id-5.-obyazatelstvo-po-vozmesheniyu-ubytkov" id="id-5.-obyazatelstvo-po-vozmesheniyu-ubytkov"></a>

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

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

### **6. Информирование своих клиентов** <a href="#id-6.-informirovanie-svoikh-klientov" id="id-6.-informirovanie-svoikh-klientov"></a>

Мерчант обязан информировать плательщиков о последствиях нарушений правил оплаты.

### **7. Антипарсинг** <a href="#id-7.-antiparsing" id="id-7.-antiparsing"></a>

Мерчант обязан обеспечить противодействие парсингу и перебору реквизитов


# Обработка апелляций

## Обработка апелляций

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

### Причины апелляций <a href="#prichiny-apellyacii" id="prichiny-apellyacii"></a>

#### 1. Клиентская ошибка <a href="#id-1.-klientskaya-oshibka" id="id-1.-klientskaya-oshibka"></a>

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

Давайте рассмотрим ситуацию подробнее:

Я - Вася, создал заявку на 1000 рублей но не успел ее оплатить.

Я - Петя. Я попытался создать заявку на 1000 рублей, но все реквизиты заняты, потому мерчант запросил заявку на 1001 рубль. В итоге мне нужно оплатить 1001 рубль, но либо мерчант меня плохо проинформировал, либо я не дружу с головой - я оплачиваю 1000 рублей как и планировал изначально.

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

**1.1. Недоплата**

Заявка была сформирована на 100 рублей, а клиент оплатил 99

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

**1.2. Переплата**

Заявка была сформирована на 99 рублей, а клиент оплатил 100.

Ему показалось что он делает доброе дело, или просто лениво было набирать разные цифры, потому он округлил и закинул общую.

Иногда происходит более **вопиющее нарушение регламента** по переплатам. Клиент не смог получить реквизиты на 500к, поэтому запросил на 5к и выполнил оплату 500к. Хотим отметить что такие превышения приводят к нарушению работы системы и несмотря на подтвержденный факт оплаты существует большой риск того что эта операция не будет зачислена. **Операция будет в блоке** до тех пор, пока трейдеры не зачислят указанную сумму на свой баланс, если такое в принципе произойдет ( были случаи когда не происходило ).

**1.3. Погашение после закрытия заявки**

Заявка была выдана на 15 минут, а клиент оплатил через час. Мы не несем ответственности за такой перевод, если он закрыл другой перевод, созданный на эти реквизиты на эту сумму.

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

**1.4. Оплата по старым реквизитам**

Заявка была сформирована на 100 рублей, клиент ее оплатил и она закрылась автоматически. Затем клиент создал новую заявку на 100 рублей, а оплатил по той карте, которая была выдана в предыдущий раз.

**1.5. Перевод на другой банк**

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

**1.6. Оплата несколькими платежами**

Часть клиентов считают себя умнее всех и платеж на 5к оплатят платежом на 3578 и еще одним на 2422. Наверное чтобы легче было обрабатывать. Автоматика такое не распознает, потому закрывать такой платеж придется только вручную. В случае разбиения на такие суммы - все скорее всего пройдет успешно. Если же речь идет про суммы типа 2000 и 3000, то они запросто закроют другие платежи и возврата не будет.

#### 2. Мошенничество <a href="#id-2.-moshennichestvo" id="id-2.-moshennichestvo"></a>

К сожалению не все люди хотят жить честно. Мы ежедневно сталкиваемся с разными видами мошенничества и вынуждены ужесточать правила для проверки апелляций

**2.1. Поддельный чек**

Есть много любителей нарисовать чек и прислать в качестве подтверждения якобы выполненого платежа.

**2.2. Дубликат чека**

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

**2.3. Прочие кейсы под NDA**

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

#### 3. Техническая ошибка <a href="#id-3.-tekhnicheskaya-oshibka" id="id-3.-tekhnicheskaya-oshibka"></a>

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

### Требования к подтверждающим документам <a href="#trebovaniya-k-podtverzhdayushim-dokumentam" id="trebovaniya-k-podtverzhdayushim-dokumentam"></a>

#### Что такое правильный чек? <a href="#chto-takoe-pravilnyi-chek" id="chto-takoe-pravilnyi-chek"></a>

Это документ **в формате pdf** , который подтверждает перевод средств и должен включать:

* **Дата** и **время** транзакции.
* **Сумма** перевода.
* **Получатель** (чётко видно, на чей счёт поступили деньги).
* **Конечный результат**: статус "вывод успешен".
* **Чек не должен содержать лишней информации** (личные данные, которые не относятся к платежу).

#### Что такое правильная видеофиксация? <a href="#chto-takoe-pravilnaya-videofiksaciya" id="chto-takoe-pravilnaya-videofiksaciya"></a>

Это запись экрана, которая подтверждает успешный вывод средств:

* **Без лишней информации** — не должно быть посторонних данных, не связанных с интернет-банком.
* Начинать запись с **входа в личный кабинет** после ввода пароля.
* Видно **реквизиты**, на которые выводятся средства.
* Видна **сумма** и **дата**.
* **Результат** — вывод произведён успешно.

#### Что такое правильная выписка по счёту? <a href="#chto-takoe-pravilnaya-vypiska-po-schyotu" id="chto-takoe-pravilnaya-vypiska-po-schyotu"></a>

Документ из банка с деталями по операциям:

* Номер **карты**, **счёта** или **телефона**.
* **Даты** и **время** транзакций.
* **Суммы операций** (приход или расход).
* Ясно, какая операция относится к приходу, а какая к расходу.

#### *Что такое правильное аудиосообщение ?* <a href="#chto-takoe-pravilnoe-audiosoobshenie" id="chto-takoe-pravilnoe-audiosoobshenie"></a>

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

**Номер телефона:** В кадре должен быть виден номер телефона, на который был совершен звонок, чтобы подтвердить подлинность звонка в банк.

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

**Информация о переводе:**

*Реквизиты*: Обязательно произнесите номер карты, номер телефона или номер счета, на которые был осуществлен перевод.

*Дата и время*: Укажите точные дату и время перевода, чтобы оператор мог провести поиск по конкретной транзакции.

**Запрос о поступлении позже**: Если прошло несколько часов или дней с момента перевода, уточните у оператора, не могла ли уйти данная сумма позже .

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

### Процесс обработки апелляций <a href="#process-obrabotki-apellyacii" id="process-obrabotki-apellyacii"></a>

#### 1. Оформление апелляции <a href="#id-1.-oformlenie-apellyacii" id="id-1.-oformlenie-apellyacii"></a>

Мерчант создает апелляцию, предпочтительно через API, в крайнем случае через нашего бота @PaySyncSupportBot.

#### 2. Модерация апелляции <a href="#id-2.-moderaciya-apellyacii" id="id-2.-moderaciya-apellyacii"></a>

На данном этапе сотрудники площадки выполняют проверку апелляции на предмет соответствия критериям.&#x20;

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

#### 3. Прием или отклонение апелляции <a href="#id-3.-priem-ili-otklonenie-apellyacii" id="id-3.-priem-ili-otklonenie-apellyacii"></a>

* Если трейдер нашел платеж, и он не был зачислен по другому ордеру, то заявка принимается трейдером и транзакция переводится в статус "оплачено"
* Если платеж был найден, но уже был зачислен по другой операции, то трейдер отклоняет апелляцию с указанием причины "погашен другой ордер".
* Если платеж не был найден, то трейдер отклоняет апелляцию с причиной "платеж не найден". Если плательщик настаивает на платеже и первоначально предоставлял чек то для решения данного вопроса мерчант может сформировать повторное обращение создав вторую апелляцию к оспариваемой транзакции приложив видеофиксацию. В ответ трейдер обязан предоставить доказательство в ответ Если трейдер не в состоянии своевременно предоставить нужные доказательства (в течении регламента ) , при этом есть видео фиксация со стороны мерчанта, то апелляция закрывается в пользу мерчанта. Поэтому, чтоб не терять время и если такая возможность есть, лучше приложить видеофиксацию сразу, чтобы не проходить этот путь повторно
* Если есть видеофиксация со стороны мерчанта (в которой видно списание ) и видеофиксация со стороны трейдера (в котором нет поступления), то апелляция закрывается в пользу трейдера, поскольку его слово в данном вопросе имеет бОльший вес.
* После отказа в апелляции с предоставлением доказательства отсутствия платежа , вы можете подать следующую апелляцию **не ранее чем через три дня** с момента подачи первой апелляции предоставив свежие доказательства платежа: выписку/ видеофиксацию с момента оплаты плюс 3 дня .

**Почему установлен срок 3 -и дня :**

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

Если при данном запросе трейдер предоставит все необходимые доказательства отсутствия поступления, апелляция по данной транзакции , она будет закрыта со статусом «отменена», и последующие апелляции по ней подать уже будет нельзя.

### Регламент обработки апелляций <a href="#reglament-obrabotki-apellyacii" id="reglament-obrabotki-apellyacii"></a>

Отдел по работе с апелляциями работает 24/7

Кроме того, апелляция не считается вступившей в силу до момента, пока транзакция не будет переведена в статус **«Отклонена»**

#### 1. Обработка заявок от 0 до 2 дней : <a href="#id-1.-obrabotka-zayavok-ot-0-do-2-dnei" id="id-1.-obrabotka-zayavok-ot-0-do-2-dnei"></a>

* С 8:00 до 22:00 по московскому времени - до 3 часов.
* С 22:00 до 8:00 по московскому времени - до 3 часов часов.

#### 2. Обработка заявок от 2 дней до 2 недель : <a href="#id-2.-obrabotka-zayavok-ot-2-dnei-do-2-nedel" id="id-2.-obrabotka-zayavok-ot-2-dnei-do-2-nedel"></a>

* до 3 дней

#### 3. Обработка заявок от 2 до 3 недель: <a href="#id-3.-obrabotka-zayavok-ot-2-do-3-nedel" id="id-3.-obrabotka-zayavok-ot-2-do-3-nedel"></a>

* до 7 дней

#### 4. Заявки старше 3 недель в работу не принимаем <a href="#id-4.-zayavki-starshe-3-nedel-v-rabotu-ne-prinimaem" id="id-4.-zayavki-starshe-3-nedel-v-rabotu-ne-prinimaem"></a>

<br>


# Проверка баланса

API `get_balance` предоставляет возможность получения баланса пользователя на платформе `paysync.bot`. Для доступа к этому API необходимо использовать ваш уникальный API-ключ, который вы можете получить, следуя указанным ниже инструкциям.

Пример запроса

Выполните GET-запрос к следующему URL, подставив ваш API-ключ вместо `{api_key}`:

```url
https://paysync.bot/get_balance/{api_key}
```

Пример ответа

**JSON**

Успешная оплата

```
{
"balance": 100.50
}
```

Если при выполнении запроса возникнут ошибки, API вернет соответствующий статус и описание ошибки в формате JSON.

Пример ошибки

```
{"error":"Неправильный API ключ"}
```


# Использование кодов

Этот endpoint активирует транзакционный код для пользователя. Он проверяет, действителен ли код, активирован ли он ранее, и обновляет баланс пользователя, если код ещё не был активирован.

**Формат запроса:**

* `user_id` — уникальный идентификатор пользователя.
* `code` — код транзакции, который необходимо активировать.

**Пример cURL запроса:**

```http
curl -X GET "https://paysync.bot/api/activate_code/{номерклиента}/{код}" -H "Accept: application/json"
```

**Примеры ответа:**

1. **Успешная активация (200 OK):**

```json
{
    "success": "Code activated successfully",
    "added_amount": "amount"
}
```

2. **Ошибка (400 Bad Request):**

* Пользователь не найден:

```json
{
    "error": "User not found"
}
```

* Код не найден:

```json
{
    "error": "Code not found"
}
```

* Код уже активирован:

```json
{
    "error": "Code already activated"
}
```

**Примечания:**

* При успешной активации кода пользователю отправляется уведомление через Telegram с указанием обновленного баланса.
* Убедитесь в корректности `user_id` и `code`, чтобы избежать ошибок.
* Доступ к этому endpoint должен быть защищён и предоставляться только аутентифицированным пользователям, чтобы предотвратить несанкционированные действия.


# Актуальный курс

cURL для получения всех курсов

```http
curl https://paysync.bot/api/curs
```

cURL для получения курса одной валюты

```http
curl https://paysync.bot/curs?currency=USD
```

Пример ответа для всех валют

```json
{"BYN":"3.60","EUR":"0.93","INR":"93.25","KGS":"93.44","KZT":"463.44","MDL":"19.39","PLN":"4.12","RUB":"97.89","UAH":"41.92","USD":"1.00","UZS":"14192.26"}
```

Пример ответа для одной валюты (USD)

```json
{"USD":"1.00","timestamp":"2024-09-22 14:32:02"}
```


# Перевод между пользователями

Этот endpoint позволяет перевести средства между пользователями PaySync без комиссии, используя API-ключ отправителя.

**URL для запроса:**

`GET https://paysync.bot/api/transfer`

**Параметры запроса:**

* `api_key` — API-ключ пользователя, который отправляет средства.
* `amount` — сумма в USDT для перевода.
* `client_id` — ID пользователя, который получит средства.
* `data`— Комментарий к переводу — отображается в уведомлениях отправителю, получателю.

**Пример cURL запроса без комментария:**

```http
curl -X GET "https://paysync.bot/api/transfer?api_key=ваш_api_key&amount=100&client_id=получатель_id" -H "Accept: application/json"
```

**Пример cURL запроса c комментарием:**

```http
curl -X GET "https://paysync.bot/api/transfer?api_key=ваш_api_key&amount=100&client_id=получатель_id&data=Ваш комментарии" -H "Accept: application/json"
```

**Пример ответа (200 OK):**

```json
{
    "success": "Transfer completed successfully",
    "amount": "100",
    "to": "client_id"
}
```

**Пример ответа (400 Bad Request):**

```json
{
    "error": "Invalid api_key or client_id"
}
```

**Примечания:**

* Убедитесь, что сумма и идентификаторы введены корректно.
* Переводы осуществляются без комиссии и только между авторизованными пользователями.


# Перевод на внешний адрес&#x20;

Все запросы к API должны быть отправлены по следующему базовому URL:

Базовый URL `https://paysync.bot/send/usdt`

Аутентификация

Некоторые эндпоинты API могут требовать аутентификации с использованием API-ключа. Для получения API-ключа Зайдите в [нашего бота](https://t.me/paysyncbot) Telegram нажмите

```
⚙️ Настройки > Настройки API > Выпустить токен
```

cURL

```http
curl -X POST -H "Content-Type: application/json" -d '{"apikey":"your_api_key","amount":100.0,"address":"recipient_address"}' https://paysync.bot/send/usdt
```

**Параметры запроса**

| Имя параметра | Тип данных | Обязательно | Описание                                                                                |
| ------------- | ---------- | ----------- | --------------------------------------------------------------------------------------- |
| apikey        | float      | +           | Уникальный api-ключ из бота [@PaySyncBot](https://t.me/paysyncbot) он же ключ доступа . |
| amount        | string     | +           | Сумма для вывода средств в USDT TRC20.                                                  |
| address       | string     | +           | Адрес кошелька USDT TRC20.                                                              |

**Пример ответа**

```json
{
    'address': address, 
    'amount': amount, 
    'status':'success', 
    'time': current_time
}
```


# Доступные валюты

**Endpoint**

```
GET https://paysync.bot/api/currencies
```

**Описание:**\
Данный метод возвращает **полный список доступных валют в системе PaySync**, а также их текущие курсы относительно базовой валюты.

Базовая валюта системы — **USDT**.

Курс указывается в формате: `1 USDT = X <CURRENCY>`.

**Ответ**

```json
{
  "base_currency": "USDT",
  "currencies": [
    {
      "code": "RUB",
      "country": "Россия",
      "name": "Российский рубль",
      "rate": 81.62,
      "rate_description": "1 USDT = 81.62 RUB",
      "symbol": "₽"
    },
    {
      "code": "RUBCRS",
      "country": "Россия",
      "name": "Российский рубль (Межд. Платежи)",
      "rate": 85.14,
      "rate_description": "1 USDT = 85.14 RUBCRS",
      "symbol": "₽"
    },
    {
      "code": "SBPQR",
      "country": "Россия",
      "name": "СБП QR",
      "rate": 81.55,
      "rate_description": "1 USDT = 81.55 SBPQR",
      "symbol": "₽"
    },
    {
      "code": "UAH",
      "country": "Украина",
      "name": "Украинская гривна",
      "rate": 44.83,
      "rate_description": "1 USDT = 44.83 UAH",
      "symbol": "₴"
    },
    {
      "code": "KZT",
      "country": "Казахстан",
      "name": "Казахстанский тенге",
      "rate": 517.04,
      "rate_description": "1 USDT = 517.04 KZT",
      "symbol": "₸"
    },
    {
      "code": "KZTCRS",
      "country": "Казахстан",
      "name": "Казахстанский тенге (Межд. Платежи)",
      "rate": 517.04,
      "rate_description": "1 USDT = 517.04 KZTCRS",
      "symbol": "₸"
    },
    {
      "code": "BYN",
      "country": "Беларусь",
      "name": "Белорусский рубль",
      "rate": 3.34,
      "rate_description": "1 USDT = 3.34 BYN",
      "symbol": "Br"
    },
    {
      "code": "KGS",
      "country": "Кыргызстан",
      "name": "Киргизский сом",
      "rate": 88.35,
      "rate_description": "1 USDT = 88.35 KGS",
      "symbol": "с"
    },
    {
      "code": "UZS",
      "country": "Узбекистан",
      "name": "Узбекский сум",
      "rate": 12757.2,
      "rate_description": "1 USDT = 12757.2 UZS",
      "symbol": "сўм"
    },
    {
      "code": "TRY",
      "country": "Турция",
      "name": "Турецкая лира",
      "rate": 46.63,
      "rate_description": "1 USDT = 46.63 TRY",
      "symbol": "₺"
    },
    {
      "code": "AZN",
      "country": "Азербайджан",
      "name": "Азербайджанский манат",
      "rate": 1.75,
      "rate_description": "1 USDT = 1.75 AZN",
      "symbol": "₼"
    }
  ],
  "total": 11
}
```

#### Описание полей

| Поле               | Тип    | Описание                 |
| ------------------ | ------ | ------------------------ |
| `base_currency`    | string | Базовая валюта системы   |
| `currencies`       | array  | Список доступных валют   |
| `code`             | string | Код валюты               |
| `country`          | string | Страна                   |
| `name`             | string | Название валюты          |
| `rate`             | number | Курс к USDT              |
| `rate_description` | string | Текстовое описание курса |
| `symbol`           | string | Валютный символ          |
| `total`            | number | Общее количество валют   |


# Создание платежа (H2H)

Создание платежа через API PaySync

Для генерации карты с помощью API PaySync можно использовать необязательный параметр `data` в запросе. Этот параметр позволяет передавать любые данные, которые будут возвращены в ответе на вебхук. Это может быть полезно для отслеживания или хранения дополнительной информации о запросе.

**Пример запроса**

```json
curl -X GET "https://paysync.bot/api/client{номер клиента}/amount{сумма}/currency{валюта}?data={ваши данные}" \
-H "Content-Type: application/json"
```

**Параметры запроса:**

| Имя параметра | Тип данных | Обязательный | Описание                                                                       |
| ------------- | ---------- | ------------ | ------------------------------------------------------------------------------ |
| client        | int        | Да           | Уникальный номер клиента из бота @PaySyncBot (ID пользователя Telegram).       |
| amount        | int        | Да           | Сумма для оплаты.                                                              |
| currency      | string     | Да           | [Валюта для оплаты.](https://docs.paysync.bot/merchanty-p2p/dostupnye-valyuty) |
| data          | string     | Нет          | Произвольные данные, возвращаемые в ответе на вебхук.                          |

**Пример ответа (JSON):**

```json
{
  "amount": "5000",
  "bank": "sberbank",
  "card_number": "5469 *** **** 2087",
  "commission": 0.13,
  "conversion_rate": 81.94,
  "conversion_usdt": "61.02",
  "currency": "RUB",
  "data": null,
  "status": "wait",
  "time": "2025-06-24 08:55:05",
  "token": "dcdb1c06-fb5c-4d26-9c70-46eef4009039",
  "trade": "2324912",
  "usdt_amount": "54.61",
  "user_id": *****
}


```


# Создание платежа (REDIRECT)

Для генерации карты с помощью API PaySync можно использовать необязательный параметр `data` в запросе. Этот параметр позволяет передавать любые данные, которые будут возвращены в ответе на вебхук. Это может быть полезно для отслеживания или хранения дополнительной информации о запросе.

**Пример запроса**

```json
curl -X GET "https://paysync.bot/create_invoice/{номер клиента}/{сумма}/{валюта}?data={ваши данные}" \
-H "Content-Type: application/json"
```

**Параметры запроса:**

| Имя параметра | Тип данных | Обязательный | Описание                                                                       |
| ------------- | ---------- | ------------ | ------------------------------------------------------------------------------ |
| client        | int        | Да           | Уникальный номер клиента из бота @PaySyncBot (ID пользователя Telegram).       |
| amount        | int        | Да           | Сумма для оплаты.                                                              |
| currency      | string     | Да           | [Валюта для оплаты.](https://docs.paysync.bot/merchanty-p2p/dostupnye-valyuty) |
| data          | string     | Нет          | Произвольные данные, возвращаемые в ответе на вебхук.                          |

**Пример ответа (JSON):**

```json
{
    "amount": "5000",
    "currency": "RUB",
    "url": "https://paysync.bot/invoice/42ed6ef4-94d6-476e-9766-e57d5b700ef0",
    "conversion_usdt": 50.25
    "conversion_rate": "487.652",
    "trade": 2913962,
    "usdt_amount": "49.92"
    "data": "your data" //Ваши данные если они были отправлены в запросе
}

```


# Создание платежа (Telegram)

#### Создание счета на оплату

**Запрос:**

```http
curl -X GET "https://paysync.bot/api/payinvoice?user_id={номер клиента}&amount={суммаUSDT}&callback_url={вебхук_урл}" \
    -H "Content-Type: application/json"
```

**Параметры:**

* `amount` — Сумма к оплате в USDT.
* `user_id` — Номер клиента.
* `callback_url` — Вебхук урл.

**Ответ API:**

API возвращает JSON-объект со следующей информацией:

* `amount` — Сумма к оплате в USDT.
* `invoice_id` — Уникальный идентификатор счета.
* `payment_url` — Ссылка для оплаты счета через бот.
* `success` — Статус успешности запроса.
* `user_id` — Идентификатор пользователя.
* `webhook` — URL для получения уведомлений.

**Пример JSON:**

```json
{
  "amount": 2.0,
  "invoice_id": "f1c5005a-adb2-4dbb-86d8-0baf48e10c8b",
  "payment_url": "https://t.me/paysyncbot?start=pay_invoice_f1c5005a-adb2-4dbb-86d8-0baf48e10c8b",
  "success": true,
  "user_id": "ваш айди в боте",
  "webhook": "https://cpbot.cc/api/test/hook.php"
}
```

**Callback URL ответ:**

После оплаты счета на указанный `callback_url` будет отправлен следующий JSON:

```json
{
  "invoice_id": "f1c5005a-adb2-4dbb-86d8-0baf48e10c8b",
  "amount": 2.0,
  "status": "paid",
  "user_id": "айди клиента который оплатил",
  "recipient_id": "ваш айди в боте"
}
```


# Обработчик платежей

Получение уведомления с информацией о платеже возможно при указанной ссылке в том случае если вы не используйте webhook&#x20;

**Пример запроса**

```json
curl -X GET "https://paysync.bot/gettrans/{trade}" \
-H "Content-Type: application/json"
```

`{trade}` — уникальный идентификатор транзакции.

#### Описание полей ответа

* **amount**: Строка, представляющая сумму в валюте, привязанную к торговле.
* **card\_number**: Строка, показывающая номер карты, связанной с оплатой.
* **conversion\_rate**: Число, показывающее коэффициент конверсии валюты в момент сделки.
* **currency**: Строка, обозначающая валюту, использованную для сделки.
* **status**: Строка, показывающая текущий статус торговли:
  * `paid`: Торговля успешно оплачена.
  * `wait`: Торговля в ожидании.
* **time**: Строка, представляющая время и дату создания сделки.
* **time\_paid**: Строка, отображающая время и дату оплаты сделки, если применимо.
* **trade**: Уникальный идентификатор торговли.
* **usdt\_amount**: Число, показывающее сумму в USDT.
* **user\_id**: Целое число, представляющее уникальный идентификатор мерчанта.

**Пример ответа (JSON)**

```json
{
"amount":"384",
"card_number":"4149609024775746",
"conversion_rate":"41.0",
"currency":"UAH",
"status":"paid",
"time":"2024-03-07 20:54:37",
"time_paid":"2024-03-07 21:06:05",
"trade":"109070",
"usdt_amount":8.1519,
"user_id":1931502438
}
```


# Получение списка транзакций

**Пример cURL запроса:**

```http
curl -X GET "https://paysync.bot/get_transactions/ваш_apikey?limit=10" 
-H "Accept: application/json"
```

**Параметры запроса:**

* `apikey` — ваш уникальный ключ для доступа к API.
* `limit`— лимит списка транзакции по умолчанию **10** максимум **250**

**Формат ответа:**

Ответ представлен в формате JSON. В нем содержится массив `transactions`, каждая из которых — это объект с информацией о транзакции:

* `amount` — сумма транзакции.
* `card_number` — номер карты или ссылка на инвойс (зависит от типа транзакции).
* `currency` — валюта транзакции.
* `status` — статус транзакции (`wait` — ожидает оплаты, `paid` — оплачена).
* `trade` — уникальный номер транзакции.

**Пример ответа**

```json
{
    "transactions": [
        {
            "amount": "600",
            "card_number": "5168180003354781",
            "currency": "UAH",
            "status": "wait",
            "trade": "456412"
        }
    ]
}

```


# Уведомление об оплате

<figure><img src="/files/Kv9XUJKGiYW9KSBEnwNb" alt=""><figcaption><p>Чтобы установить callback url переходим в разделе настройки в боте <a href="https://t.me/paysyncbot"><strong>@PaySyncBot</strong></a> и выбираем пункт <strong>Настройки API</strong></p></figcaption></figure>

Callback URL используется для получения уведомлений о подтверждении заявок в реальном времени. Это URL, на который API будет отправлять HTTP POST запросы при подтверждении заявок.

**Формат Callback**

Когда заявка подтверждается, на установленный Callback URL будет отправлен **HTTP POST запрос с JSON телом**, содержащим информацию о транзакции.

```json
{
"trade": "678099",
"card_number": "2200 3804 5257 1862",
"amount": "7539",
"usdt_amount": "69.54",
"currency": "RUB",
"conversion_rate": "95.95",
"status": "paid",
"time": "2024-09-21 10:03:18",
"time_paid": "2024-09-21 10:06:09",
"token": "f571d339-dd80-4d88-a6ee-43a3986e301e",
"user_id": "********",
"data": "ваши данные",
}
          
```

**Дополнительная защита подписи**

Когда мы отправляем обратный вызов (callback), обычно он не содержит аутентификационной подписи. Однако, для дополнительного уровня проверки, вы можете включить проверку подписи вебхука. Для этого необходимо включить параметры **apikey** и **client\_id** в хеш **sha256**.

`apikey` можно получить из раздела настроек API вашего бота.

`client_id` представляет собой ваш уникальный идентификатор клиента, который также можно найти в нашем боте.

При получении вебхука от нас, осуществите проверку по параметру **sign**, используя хеш **sha256(apikey + client\_id)**.

```json
{
"trade": "678099",
"card_number": "2200 3804 5257 1862",
"amount": "7539",
"usdt_amount": "69.54",
"currency": "RUB",
"conversion_rate": "95.95",
"status": "paid",
"time": "2024-09-21 10:03:18",
"time_paid": "2024-09-21 10:06:09",
"token": "f571d339-dd80-4d88-a6ee-43a3986e301e",
"user_id": "********",
"data": "ваши данные",
"sign": "d1de74fe96b8d01784df0da20927cce8e63d89b36fa84f54b4e9974d4dfccb06"
}
 
```

Обработка

При получении Callback, ваш сервер должен обработать информацию о транзакции и отправить ответ со статусом <mark style="color:green;">`200 OK`</mark>, чтобы подтвердить, что уведомление было успешно получено.

Уведомление в боте

Независимо от того, установлен ли **Callback URL**, пользователи всегда будут получать уведомления о транзакциях напрямую в боте-кошельке. Это обеспечивает дополнительный уровень уверенности, что пользователь не пропустит уведомление о транзакции, даже если какие-то проблемы возникнут с **Callback URL** или сервером пользователя.

Интеграция с callback url

Если **Callback UR**L также установлен, уведомления в боте будут дополняться уведомлениями, отправленными на Callback URL. Это позволяет пользователям использовать уведомления в боте для быстрой проверки транзакций и Callback URL для автоматизированной обработки транзакций на стороне сервера.


# Условия Эквайринга

#### **1. Холд на средства**

Все платежи проходят обязательный **холд на 14 дней**. Это необходимо для минимизации рисков и соблюдения правил платежной системы.

* **Холд**: Средства будут заблокированы на вашем счету на 14 календарных дней после успешной оплаты.
* **Доступ к средствам**: После истечения холда сумма становится доступной для вывода.

***

#### **2. Лимиты на вывод средств**

* **Минимальная сумма для вывода**: 1000 евро.
* Вывод доступен только для накопленных средств, которые не находятся в состоянии холда.

***

#### **Пример работы с холдом**

1. Платеж на сумму **500 евро** поступает 1 января.
2. Средства станут доступными для вывода **15 января** (по истечении 14 дней).
3. После достижения суммы 1000 евро вы сможете подать заявку на вывод.

***

#### **Как проверить баланс и доступные средства**

В Telegram-боте PaySyncBot вы можете получить информацию о балансе и сумме доступной для вывода:

* Перейдите в раздел **"Баланс"**.
* Ознакомьтесь с данными о:
  * Общем балансе.
  * Сумме в холде.
  * Сумме, доступной для вывода.

***

#### **Вывод средств**

Для вывода средств:

1. Достигните минимального лимита в **1000 евро**.
2. Отправьте запрос на вывод через Telegram-бот.

**Обратите внимание:** Вывод может занять до **3 рабочих дней** в зависимости от загруженности системы и банка получателя.


# Создание платежа

Данная документация описывает, как инициировать платеж в евро с использованием API PaySync. Система поддерживает 3D Secure-платежи и предоставляет удобный интерфейс для работы с эквайрингом.

Эндпоинт

```
https://paysync.bot/api/3dsecure/{user_id}/{amount}/{description}/{webhook}
```

HTTP-метод

```
GET
```

#### **Параметры (все параметры обязательны)**

| **Параметр**  | **Тип**  | **Описание**                                                                                    |
| ------------- | -------- | ----------------------------------------------------------------------------------------------- |
| `user_id`     | `string` | Уникальный идентификатор пользователя(мерчанта) в системе PaySyncBot.                           |
| `amount`      | `float`  | Сумма платежа в евро (`EUR`). Поддерживаются значения с точностью до двух знаков после запятой. |
| `description` | `string` | Краткое описание платежа (например, ID заказа, назначение или другая информация).               |
| `webhook`     | `string` | URL-адрес, на который будут отправляться обновления о статусе платежа.                          |

#### **Ответ**

В случае успеха API возвращает JSON-объект следующего формата:

```json
{
    "amount": 0.5,
    "currency": "eur",
    "description": "312",
    "payment_id": "************",
    "payment_url": "https://paysync.bot/pay/***************"
}
```


# Уведомление о платеже

После завершения платежа система отправляет уведомление на указанный `webhook` URL. Формат передаваемых данных следующий:

```json
{
    "payment_id": "*************",
    "amount": 0.5,
    "currency": "eur",
    "status": "paid"
}
```

#### **Описание данных webhook**

| **Поле**     | **Тип**  | **Описание**                                                             |
| ------------ | -------- | ------------------------------------------------------------------------ |
| `payment_id` | `string` | Уникальный идентификатор платежа в системе.                              |
| `amount`     | `float`  | Сумма платежа в евро.                                                    |
| `currency`   | `string` | Валюта платежа (всегда `"eur"`).                                         |
| `status`     | `string` | Текущий статус платежа. Возможные значения: `paid`, `failed`, `pending`. |

#### **Telegram Уведомление для Мерчанта**

Дополнительно, мерчант получит уведомление в своем Telegram-боте с информацией о статусе платежа. Формат уведомления:

```
✅ Платеж успешно обработан!

ID платежа: ***********
Сумма платежа: 0.50 EUR
Комиссия сервиса с учетом НДС (20%): 0.10 EUR
Итоговая сумма: 0.40 EUR

Ваш баланс был пополнен на 0.40 EUR
Спасибо за использование нашего сервиса! 🙏  
```

#### **Важно**

* Убедитесь, что ваш webhook URL доступен через HTTPS.
* Для безопасности рекомендуется проверять подпись запроса, если это предусмотрено API.


