# Создание invoice

Для создания invoice на оплату необходимо отправить зарос в API сервиса по адресу:

<https://bpa.payanyway.ru/api/invoice?key=***>

где invoice - это имя метода

key - ключ партнера, будет ему сгенерирован и выдан сервисом БПА ПА PayAnyWay (bpa.payanyway.ru)

через json POST следует передать данные:

```
{
  "signature": "***",
  "paymentAmount": 9.00,
  "debitMntAccount": 317,
  "mntTransactionId": "***",
  "customerEmail": "***@***.**",
  "inventory": [
    {"sellerAccount": "30990009", 
     "sellerInn": "1234", 
     "sellerName": "ООО Рога и копыта", 
     "sellerPhone": "71234567890",
     "productName": "test1",
     "productQuantity": 1, 
     "productPrice": 0.20,
     "productVatCode": 1105},
    {"sellerAccount": "60252006",
     "sellerInn": "5678", 
     "sellerName": "ООО Ромашка",
     "sellerPhone": "71234567890",
     "productName": "test2", 
     "productQuantity": 2, 
     "productPrice": 4,
     "productVatCode": 1105},
    {"sellerAccount": "30990009",
     "sellerInn": "1234",
     "sellerName": "ООО Рога и копыта", 
     "sellerPhone": "71234567890",
     "productName": "test3",
     "productQuantity": 2,
     "productPrice": 0.40,
     "productVatCode": 1105}
  ]
}
```

где:

* **signature** - подпись запроса - должна быть равна md5(debitMntAccount + mntTransactionId + secret). Символ + это конкатенация строк, secret - секретный код партнера, который будет выдан сервисом БПА ПА PayAnyWay (bpa.payanyway.ru).
* **paymentAmount** - общая сумма платежа. Десятичный разделитель - точка с двумя десятичными знаками даже если это нули.
* **debitMntAccount** - счет списания в системе PayAnyWay (Монета.ру) - не обязательный параметр.
* **mntTransactionId** - уникальный внешний идентификатор транзакции.
* **customerEmail** - e-mail покупателя, на который надо отправить чек от ОФД.
* **inventory** - номенклатура по поставщикам с указанием данных о поставщиках:
  * **sellerAccount** - номер бизнес-счета продавца в PayAnyWay.
  * **sellerInn** - ИНН продавца.
  * **sellerName** - название продавца.
  * **sellerPhone** - номер телефона продавца.
  * **productName** - название товара.
  * **productQuantity** - количество товара.
  * **productPrice** - окончательная цена товара с учетом всех скидок и наценок.
  * **productVatCode** - код ставки НДС - одно из значений:
    * 1104 - НДС 0%
    * 1103 - НДС 10%
    * 1102 - c 01.01.2019 ставка 20%
    * 1105 - НДС не облагается
    * 1107 - НДС с рассч. ставкой 10%
    * 1106 - c 01.01.2019 НДС с рассч. ставкой 20%

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

Для приема платежа с холдированием, необходимо передать также параметр **hold** в значении **1**.

API БПА ПА PayAnyWay выполнит проверку входящих данных и сообщит об ошибке если:

* **incorrect input data** - отсутствует часть входящих данных.
* **incorrect signature** - не верная подпись запроса.
* **incorrect inventory data, line: N** - где N - номер строки номенклатуры - отсутствует часть данных по строке номенклатуры.
* **incorrect amount** - отсутствует общая сумма.
* **inventoryTotal (\*\*\*) and paymentAmount (\*\*\*) are missmatch** - не совпала общая сумма и сумма по всем позициям inventory.
* **invoice could not be created** - не удалось создать invoice.

Ошибка отдается в формате json:

```
{"error": "***"}
```

В результате выполнения команды будет создан invoice на оплату, а метод отдаст следующие данные в json:

```
{"operation": ***}
```

\*\*\* - ID операции, созданной в системе PayAnyWay (Монета.ру).

Покупателя следует перенаправить на оплату данного invoice по ссылке:

{% embed url="<https://www.payanyway.ru/assistant?operationId=>\*\*\*" %}

\*\*\* - ID операции, созданной в системе PayAnyWay (Монета.ру).

В ссылку можно добавить дополнительные параметры по протоколу [MONETA.Assistant](https://www.moneta.ru/doc/MONETA.Assistant.ru.pdf).
