# Создание 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 код для проведения оплаты.


---

# Agent Instructions: 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:

```
GET https://docs.payanyway.ru/marketplace/fz-54/primenenie-kontrolno-kassovoi-tekhniki-pri-osushestvlenii-raschetov/formirovanie-cheka-v-kkt-ooo-peienivei/sozdanie-invoice.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
