---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.2
alternate:
  - https://yandex.ru/dev/direct/doc/dg-v4/en/reference/CreateInvoice.md
  - https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/CreateInvoice.md
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.ru/dev/direct/doc/dg-v4/ru/llms.txt

# CreateInvoice
Формирует счет на оплату одной или нескольких кампаний в формате HTML.
Для метода существует версия [CreateInvoice (Live)](https://yandex.ru/dev/direct/doc/dg-v4/live/CreateInvoice.html).

При вызове метода указывают одну или несколько кампаний и суммы к оплате, отражаемые в счете. Метод возвращает URL счета на оплату. Получить счет может пользователь, от лица которого вызван метод (пользователю необходимо авторизоваться в Яндексе).


{% note alert %}

Прямые рекламодатели могут формировать счет на оплату, только если кампания одобрена модератором (см. параметр кампании StatusModerate).

{% endnote %}


## Рекомендации и ограничения


{% note alert %}

Все кампании, указанные в одном вызове метода, должны быть одного типа. [Подробнее о типах кампаний...](https://yandex.ru/dev/direct/doc/dg-v4/dg/objects/campaign.html)

{% endnote %}


Рекомендуется формировать счета на оплату как можно меньшим количеством вызовов метода `CreateInvoice` в сутки. Данная рекомендация нацелена на повышение производительности API Яндекс Директа. С точки зрения производительности, лучше сформировать один счет на оплату для нескольких кампаний, чем вызывать метод несколько раз для формирования отдельных счетов на оплату.

Ниже перечислены ограничения на вызов метода:

- один пользователь может вызвать метод 1000 раз в сутки;
- для одной кампании возможно не более 30 финансовых операций в сутки, включая формирование счетов на оплату ([CreateInvoice](https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/CreateInvoice.md)), перевод средств ([TransferMoney](https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/TransferMoney.md)), оплату с отсрочкой ([PayCampaigns](https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/PayCampaigns.md));

Превышение указанных лимитов вызывает ошибку с кодом [56](https://yandex.ru/dev/direct/doc/dg-v4/ru/reference/ErrorCodes.md#ErrorCode56).


## Входные данные {#input}

Ниже показана структура входных данных в формате JSON.


{% note alert %}

В запрос необходимо включать параметры `finance_token` и `operation_num`. Подробнее см. [Финансовый токен](https://yandex.ru/dev/direct/doc/dg-v4/concepts/finance-token.html).

{% endnote %}


```javascript
{
   "method": "CreateInvoice",
   "finance_token": (string),
   "operation_num": (int),
   "param": {
      /* CreateInvoiceInfo */
      "Payments": [
         {  /* PayCampElement */
            "CampaignID": (int),
            "Sum": (float)
         }
         ...
      ]
   }
}
```

Ниже приведено описание параметров.


#|
||
**<sup >Параметр</sup>**
|
**<sup >Описание</sup>**
|
**<sup >Требуется</sup>**
||

||
**<sub >Объект CreateInvoiceInfo</sub>**
||
||
`Payments`
|
Массив объектов `PayCampElement`. Каждый объект указывает кампанию и сумму, отражаемую в счете на оплату.
|
Да
||

||
**<sub >Объект PayCampElement</sub>**
||
||
`CampaignID`
|
Идентификатор кампании.
|
Да
||
||
`Sum`
|
Сумма в условных единицах, отражаемая в счете на оплату.
|
Да
||
|#


## Результирующие данные {#output}

При успешном выполнении метод возвращает URL счета на оплату, как показано ниже. В противном случае возвращается сообщение об ошибке.

```javascript
{
   "data": "https://passport.yandex.ru/passport?mode=subscribe&from=balance&retpath=http%3A%2F%2Fbalance.yandex.ru%2Fpaypreview.xml%3Frequest_id%3D14062489%26ref_service_id%3D7%26ui_type%3Dstd"
}
```


## Примеры входных данных {#examples}

## Python

```python
{
   'Payments': [
      {'CampaignID': 3193279, 'Sum': 500.0}
      {'CampaignID': 3193244, 'Sum': 1200.0}
   ]
}
```

## PHP

```php
array(
   'Payments' => array(
      array('CampaignID' => 3193279,'Sum' =500.0)
      array('CampaignID' => 3193244,'Sum' =1200.0)
   )
)
```

## Perl

```perl
{
   'Payments' => [
      {'CampaignID' => 3193279, 'Sum' =500.0}
      {'CampaignID' => 3193279, 'Sum' =1200.0}
   ]
}
```

