> For the complete documentation index, see [llms.txt](https://help.unitpay.ru/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.unitpay.ru/online-cash-register/receipt_parameters.md).

# Параметры для формирования чека

Чтобы сформировать чек требуется в [запросе на создание платежа](/payments/create-payment.md) указать дополнительные параметры:

<table data-header-hidden><thead><tr><th width="234.33333333333331"></th><th width="145">Тип</th><th>Описание</th></tr></thead><tbody><tr><td><strong>Параметр</strong></td><td><strong>Тип</strong></td><td><strong>Описание</strong></td></tr><tr><td>customerEmail</td><td>строка</td><td>Email плательщика</td></tr><tr><td>customerPhone</td><td>число</td><td>Телефон плательщика в международном формате без "+"</td></tr><tr><td>cashItems</td><td>строка</td><td><p><strong>Позиции заказа</strong><br><br>Получается путем кодирования base64 значения в формате json. Например: <br></p><p></p><p>Получившееся значение необходимо кодировать в URL формат, чтобы ссылка на оплату открылась корректно.</p><pre class="language-javascript"><code class="lang-javascript">const cashItems = [
  { name: 'Булочка', count: 1, 
    price: 10.00, type: 'commodity' 
  },
  { name: 'Кофе', count: 2, 
    price: 5.00, type: 'commodity' 
  },
]

const json = JSON.stringify(cashItems);

const bytes = new TextEncoder().encode(json);

const encodedCashItems = btoa(String.fromCharCode(...bytes));

// Дополнительный шаг для всех методов кроме виджета
const cashItemsForUrl = encodeURIComponent(encodedCashItems);

console.log(cashItemsForUrl); </code></pre><p></p></td></tr></tbody></table>

{% hint style="danger" %}
Для [Юнит.Чеков](/online-cash-register.md) отправка чеков сейчас доступна только по электронной почте. Отправка чеков в смс недоступна. Чтобы пользователю поступил чек обязательно передавайте параметр **customerEmail**.
{% endhint %}

{% hint style="info" %}
Для формирования чека [возврата](/payments/payment-refund.md) достаточно передать **cashItems. CustomerEmail** или **customerPhone** не требуются
{% endhint %}

{% hint style="warning" %}
С 1.02.2021 года в кассовом чеке нужно **обязательно указывать корректно номенклатуру** (наименование, количество, цену) за товары/услуги в cashItems.&#x20;
{% endhint %}

**Параметр cashItems формируется из:**

<table data-header-hidden><thead><tr><th width="237"></th><th width="167.33333333333331">Тип</th><th>Описание</th></tr></thead><tbody><tr><td><strong>Параметр</strong></td><td><strong>Тип</strong></td><td><strong>Описание</strong></td></tr><tr><td>name</td><td>string</td><td>Название позиции <em>(обязательный параметр): <strong>не более 128 символов для одной позиции</strong></em></td></tr><tr><td>count</td><td>number</td><td>Количество <em>(обязательный параметр): <strong>суммарно в чеке не может быть более 100 позиций</strong></em></td></tr><tr><td>price</td><td>number</td><td>Цена за единицу товара <em>(обязательный параметр)</em></td></tr><tr><td>currency</td><td>string</td><td>По умолчанию всегда RUB (если ваши товары/услуги в рублях, то currency отдельно можно не передавать). <br>Валюта заказа по стандарту ISO 4217 (UAH, BYN, EUR, USD и тд. <a href="/pages/-MIy12TsNMnyS0DEFjSW">Полный список валют</a>). <br>В чеке у пользователя всегда будут рубли, даже если вы передали валюту, отличную от RUB (конвертация происходит на стороне Unitpay).</td></tr><tr><td>nds</td><td>string</td><td><p><strong>Размер ставки НДС:</strong> </p><p>none</p><p>vat0<br>vat5<br>vat7</p><p>vat10</p><p>vat22<br><br>vat110 (ставка 10/110, применяется только для чеков с признаками способа расчета "Предоплата, Предоплата 100% и Аванс)<br>vat122 (ставка 22/122, применяется только для чеков с признаками способа расчета "Предоплата, Предоплата 100% и Аванс)<br>vat105 (ставка 5/105, применяется только для чеков с признаками способа расчета "Предоплата, Предоплата 100% и Аванс) <br>vat107 (ставка 7/107, применяется только для чеков с признаками способа расчета "Предоплата, Предоплата 100% и Аванс)</p></td></tr><tr><td></td><td></td><td></td></tr><tr><td>type</td><td>string</td><td>Список <strong>типов позиций</strong>:<br><a href="https://help.unitpay.ru/online-cash-register/types-for-online-cashbox">https://help.unitpay.ru/online-cash-register/types-for-online-cashbox</a></td></tr><tr><td>paymentMethod</td><td>string</td><td><p><strong>Признак способа расчета:</strong></p><p>full_payment - полный расчет (<em>Используется по умолчанию)</em></p><p>full_prepayment - предоплата 100% </p><p>prepayment - предоплата </p><p>advance - аванс </p></td></tr><tr><td>sum</td><td>number</td><td>Сумма <strong>(необязательный параметр):</strong> обязателен только при использовании <strong>промокодов, купонов и скидочных сертификатов</strong><br>(в sum передается значение после применения скидки на товары, sum всегда должен быть равен произведению price*count).</td></tr></tbody></table>

{% hint style="info" %}
Если в ссылку/запрос передается информация о нескольких товарах, то их нужно передать через запятую в виде массива: \[{...},{...},{...}].
{% endhint %}

{% hint style="info" %}
С 12.01.2026 параметр НДС `vat20` автоматически подменяется на параметр `vat22`. До конца I квартала 2026 года вам необходимо изменить параметр `nds` и передавать `vat22` в cashItems.
{% endhint %}

{% hint style="warning" %}
Параметр **paymentMethod** необязательный и может быть так же задан в настройках кассы в личном кабинете Unitpay. При этом приоритет выбора будет такой:\
1\) Данные из запроса **cashItems** на создание платежа\
2\) Данные из настройки кассы\
3\) Если не заданы пункты 1 и 2, то по умолчанию - full\_payment
{% endhint %}

{% hint style="info" %}
При продаже маркированного товара с 1 марта 2020 года должен отображаться признак маркировки: **markCode**. При формировании чека на маркированные товары должны быть переданы дополнительные параметры:
{% endhint %}

<table><thead><tr><th width="209.33333333333331"></th><th width="193"></th><th></th></tr></thead><tbody><tr><td><strong>Параметр</strong></td><td><strong>Тип</strong></td><td><strong>Описание</strong></td></tr><tr><td>markCode</td><td>string</td><td>Код маркировки товара в формате, соответствующем требованиям ФНС России </td></tr><tr><td>quantity</td><td>number</td><td>Количество товара. <strong>Суммарно в чеке не может быть более 100 позиций.</strong></td></tr><tr><td>measure</td><td>number</td><td><p>Единицы измерения количества предмета расчета. Может принимать одно из значений: <br>0 - применяется для предметов расчета, которые могут быть реализованы поштучно или единицами;<br>10 - грамм;<br>11 - килограмм; <br>12 - тонна;<br>20 - сантиметр.</p><p>Если продается штучный товар, то measure всегда = 0. <br>Если на одну конкретную единицу товара одна маркировка, то указывается quantity = 1, а mark_quantity не включается в запрос.</p></td></tr><tr><td>markQuantity</td><td>array</td><td><p>Объем товаров в маркированной партии.</p><p>Если в упаковке с единой маркировкой, например, 10 штук товара и вы продаете из коробки 2 штуки, то указывается quantity = 1, а в mark_quantity в числителе numerator = 2, в знаменателе denominator = 10.</p><p>Пример:</p><p><code>"mark_quantity":{"numerator":2,"denominator":10}</code></p></td></tr></tbody></table>

{% hint style="info" %}
**Важное замечание**:\
\
Сумма заказа (sum) должна быть **больше или равна** price\*count (из **cashItems**).\
\
Если сумма заказа **больше**, то в чек добавится дополнительное наименование "Корректировка итога".\
\
Если сумма заказа **меньше** price\*count, то при переходе на оплату по сформированной ссылке / при инициации такого запроса к API, ответ от сервера будет выглядеть так:\
\
"Сумма позиций больше стоимости заказа".
{% endhint %}
