> For the complete documentation index, see [llms.txt](https://docs.payanyway.ru/marketplace/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.payanyway.ru/marketplace/fz-54/primenenie-kontrolno-kassovoi-tekhniki-pri-osushestvlenii-raschetov/formirovanie-cheka-v-kkt-ooo-peienivei/sozdanie-invoice.md).

# Создание invoice

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

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

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

key - ключ партнера, будет ему сгенерирован и выдан сервисом ПА ООО "ПЭЙ ЭНИ ВЭЙ"

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

```
{
  "signature": "***",
  "paymentAmount": 9.00,
  "debitMntAccount": номер счета списания,
  "creditMntAccount": номер счета пополнения,
  "sourceTariffMultiplier": комиссия с продавца,
  "mntTransactionId": "***",
  "customerEmail": "***@***.**",
  "mntSubscriberId": идентификатор покупателя,
  "storeCard": true/false,
  "useCard": true/false,
  "inventory": [
    {"sellerAccount": "30990009",
     "sourceTariffMultiplier": комиссия с продавца,
     "sellerInn": "1234", 
     "sellerName": "ООО Название 1", 
     "sellerPhone": "71234567890",
     "clientTransaction": "N1",
     "productName": "test1",
     "productQuantity": 1, 
     "productPrice": 0.20,
     "productVatCode": 1105,
     "po": "***",
     "pm": "***"},
    {"sellerAccount": "60252006",
     "sourceTariffMultiplier": комиссия с продавца,
     "sellerInn": "5678", 
     "sellerName": "ООО Название 2",
     "sellerPhone": "71234567890",
     "clientTransaction": "N2",
     "productName": "test2", 
     "productQuantity": 2, 
     "productPrice": 4,
     "productVatCode": 1105},
    {"sellerAccount": "30990009",
     "sourceTariffMultiplier": комиссия с продавца,
     "sellerInn": "1234",
     "sellerName": "ООО Название 1", 
     "sellerPhone": "71234567890",
     "clientTransaction": "N3",
     "productName": "test3",
     "productQuantity": 2,
     "productPrice": 0.40,
     "productVatCode": 1105,
     "po": "***",
     "pm": "***"}
  ]
}
```

где:

* **signature** - подпись запроса - должна быть равна md5(debitMntAccount + mntTransactionId + secret). Символ + это конкатенация строк, secret - секретный код партнера, который будет выдан сервисом ПА ООО "ПЭЙ ЭНИ ВЭЙ"
* **paymentAmount** - общая сумма платежа. Десятичный разделитель - точка с двумя десятичными знаками даже если это нули.
* **debitMntAccount** - не обязательный параметр - счет списания в Системе МОНЕТА.РУ - необходимо уточнить в коммерческом отделе. Если не указывается, в сигнатуре вместо него следует оставить пустую строку.
* **creditMntAccount** - счет ПА ООО "ПЭЙ ЭНИ ВЭЙ" в Системе МОНЕТА.РУ, на который необходимо принять денежные средства. Необходимо уточнить в коммерческом отделе.
* **sourceTariffMultiplier** - не обязательный параметр - размер комиссии с продавца в процентах, разделенных на 100, то есть значение 0.015 соответствует 1,5%. Поле sourceTariffMultiplier для позиции является необязательным и если указано перекрывает значение sourceTariffMultiplier указанное для всего документа.
* **mntTransactionId** - уникальный внешний идентификатор транзакции.
* **customerEmail** - e-mail покупателя, на который надо отправить чек от ОФД.
* **mntSubscriberId** - не обязательный параметр - идентификатор покупателя в учетной системе продавца.
* **storeCard** - не обязательный параметр - true/false - сохранять ли банковскую карту покуателя. Для стандартных торговых площакок, за исключением cvv карты. Если передано значение true, то параметр **mntSubscriberId** становится обязательным. В комбинации с параметром **QRTTL** осуществляется привязка СБП покупателя с возможностью повторного списания средств по аналогии как это произходит при посторном списании с банковских карт покупателей.
* **useCard** - не обязательный параметр, если передано true, то для данного покупателя с **mntSubscriberId** на платежной форме будет восстановлен номер банковской карты, за исключением кода CVV.
* **QRTTL** - период в минутах, в течение которого будет возможна оплата через СБП. При передаче данного параметра в запрос **invoice**, платеж будет приниматься через СБП. Иначе - банковской картой.
* **inventory** - номенклатура по поставщикам с указанием данных о поставщиках:
  * **sellerAccount** - номер бизнес-счета продавца в Системе МОНЕТА.РУ.
  * **sellerInn** - ИНН продавца.
  * **sellerName** - название продавца.
  * **sellerPhone** - номер телефона продавца.
  * **clientTransaction** - внешний идентификатор транзакции второго шага (при расщеплении).
  * **productName** - название товара.
  * **productQuantity** - количество товара.
  * **productPrice** - окончательная цена товара с учетом всех скидок и наценок.
  * **productVatCode** - код ставки НДС - одно из значений:
    * 1104 - НДС 0%
    * 1103 - НДС 10%
    * 1102 - c 01.01.2019 ставка 20%
    * 1105 - НДС не облагается
    * 1107 - НДС с рассч. ставкой 10%
    * 1106 - c 01.01.2019 НДС с расчётной ставкой 20%
  * **po** - необязательный параметр - объект оплаты
  * **pm** - необязательный параметр - метод оплаты

Признак предмета расчёта **po** (payment\_object):

*commodity* – товар (за исключением подакцизного товара)

*excise* – подакцизный товар

*job* – работа

*service* – услуга.&#x20;

Признак способа расчёта **pm** (payment\_method):

*full\_prepayment* – предоплата 100%. Полная предварительная оплата до момента передачи предмета расчета

*prepayment* – предоплата. Частичная предварительная оплата до момента передачи предмета расчета

*advance* – аванс

*full\_payment* – полный расчет. Полная оплата, в том числе с учетом аванса (предварительной оплаты) в момент передачи предмета расчета

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

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

Чтобы сформировать invoice для оплаты по QR СБП, счёт получателя обязательно должен быть настроен для работы с СБП (по согласованию с коммерческим отделом системы Монета). Также необходимо передать параметр **QRTTL** - это время в течение которого будет возможна оплата по платёжной ссылке (QR-коду). Минимальное значение - одна минута, максимальное значение - 129600 (90 дней в минутах).

API ПА ООО "ПЭЙ ЭНИ ВЭЙ" выполнит проверку входящих данных и сообщит об ошибке если:

* **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 операции, созданной в Системе МОНЕТА.РУ.

Если был передан параметр **QRTTL**, в результат бедет так же возвращен массив **operationInfo**, ключи и значения которого содержат в том числе ссылку на оплату по СБП, которую можно отобразить в виде QR-кода покупателю. В этом случае переадресания на оплату через Assistant может не потребоваться.&#x20;

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

<https://www.payanyway.ru/assistant.htm?operationId=***>

\*\*\* - ID операции, созданной в Системе МОНЕТА.РУ.

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

При передаче **storeCard** и **mntSubscriberId** будет сохранена использованная при оплате карта. Чтобы воспользоваться ей, нужно при последующих вызовах метода снова передать **storeCard**, тогда на платежной форме будет виден маскированный номер карты и expire date. Покупателю останется ввести cvv код для проведения оплаты.
