Перейти к основному содержимому

API выставления счетов

Создание ссылки без перенаправления на оплату

  • Метод: POST
  • Адрес: https://services.robokassa.ru/InvoiceServiceWebApi/api/CreateInvoice

Запрос представляет собой JWT-строку, которая передается в теле HTTP-запроса. Передавайте заголовок Content-Type: application/json. Тело запроса должно быть JSON-строкой: JWT необходимо заключить в двойные кавычки.

Параметры запроса

  • Header
  • Payload
  • Signature

Заголовок состоит из двух параметров в формате JSON.

{
"typ": "JWT",
"alg": "MD5"
}

Вместо MD5 можно использовать любой из алгоритмов: MD5, RIPEMD160, SHA1 (или HS1), SHA256 (или HS256), SHA384 (или HS384), SHA512 (или HS512).

Если параметр alg не передан, используется метод, указанный в настройках магазина.

Полученный JSON преобразуется в Base64Url. Пример результата:

eyJ0eXAiOiJKV1QiLCJhbGciOiJNRDUifQ

Payload

Полезная нагрузка содержит основной запрос в формате JSON.

{
"MerchantLogin": "robo-demo-test",
"InvoiceType": "OneTime",
"Culture": "ru",
"InvId": null,
"OutSum": 1,
"Description": "as",
"MerchantComments": "no comment",
"UserFields": {
"shp_info": "test"
},
"InvoiceItems": [
{
"Name": "Тест1",
"Quantity": 1,
"Cost": 0.5,
"Tax": "vat20",
"PaymentMethod": "full_payment",
"PaymentObject": "commodity"
},
{
"Name": "Тест2",
"Quantity": 1,
"Cost": 0.5,
"Tax": "vat0",
"PaymentMethod": "full_prepayment",
"PaymentObject": "commodity",
"NomenclatureCode": "IYVITCUR%XE^$X%C^T&VITC^RX&%ERC^TIRX%&ERCUITRXE&ZX%R^CTIR^XUE%ZN1m9E+1¦?5O?6¦?168"
}
],
"SuccessUrl2Data": {
"Url": "https://robokassa.com/",
"Method": "GET"
},
"FailUrl2Data": {
"Url": "https://www.google.com/",
"Method": "POST"
}
}

Используется стандартный набор параметров скрипта и фискализации с рядом отличий.

Полученный JSON также необходимо преобразовать в Base64Url. Пример результата:

ewogICAiTWVyY2hhbnRMb2dpbiI6InJvYm8tZGVtby10ZXN0IiwKICAgIkludm9pY2VUeXBlIjoiT25lVGltZSIsCiAgICJDdWx0dXJlIjoicnUiLAogICAiSW52SWQiOjgwMCwKICAgIk91dFN1bSI6MSwKICAgIkRlc2NyaXB0aW9uIjoiYXMiLAogICAiTWVyY2hhbnRDb21tZW50cyI6Im5vIGNvbW1lbnQiLAogICAiSW52b2ljZUl0ZW1zIjpbCiAgICAgIHsKICAgICAgICAgIk5hbWUiOiLQotC10YHRgjEiLAogICAgICAgICAiUXVhbnRpdHkiOjEsCiAgICAgICAgICJDb3N0IjowLjUsCiAgICAgICAgICJUYXgiOiJ2YXQyMCIsCiAgICAgICAgICJQYXltZW50TWV0aG9kIjoiZnVsbF9wYXltZW50IiwKICAgICAgICAgIlBheW1lbnRPYmplY3QiOiJjb21tb2RpdHkiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAgIk5hbWUiOiLQotC10YHRgjIiLAogICAgICAgICAiUXVhbnRpdHkiOjEsCiAgICAgICAgICJDb3N0IjowLjUsCiAgICAgICAgICJUYXgiOiJ2YXQwIiwKICAgICAgICAgIlBheW1lbnRNZXRob2QiOiJmdWxsX3ByZXBheW1lbnQiLAogICAgICAgICAiUGF5bWVudE9iamVjdCI6ImNvbW1vZGl0eSIsCiAgICAgICAgICJOb21lbmNsYXR1cmVDb2RlIjoiSVlWSVRDVVIlWEVeJFglQ15UJlZJVENeUlgmJUVSQ15USVJYJSZFUkNVSVRSWEUmWlglUl5DVElSXlhVRSVaTjFtOUUrMcKmPzVPPzbCpj8xNjgiCiAgICAgIH0KICAgXQp9

Описание параметров Payload

ПараметрЗначение
MerchantLoginОбязательный. Логин магазина.
InvoiceTypeОбязательный для CreateInvoice. Тип ссылки: одноразовая (OneTime) или многоразовая (Reusable).
OutSumОбязательный. Сумма счёта.
CultureНеобязательный. Язык (ru или en).
InvIdНеобязательный. Номер счета в магазине.
DescriptionНеобязательный. Название товара или услуги.
MerchantCommentsНеобязательный. Внутренний комментарий для сотрудников. Отображается в личном кабинете в разделе «Выставление счетов».
UserFieldsНеобязательный. Пользовательские параметры в формате ключ: значение.
InvoiceItemsНеобязательный. Номенклатура для фискализации (структура аналогична Receipt). Если параметр не передан, в чеке будет указано значение «Свободная продажа», что не соответствует требованиям налогового законодательства, может привести к штрафам, а на ряде решений по фискализации чек не будет сформирован.
SuccessUrl2Data/FailUrl2DataНеобязательные. Настройки дополнительных redirect-URL c указанием метода.

Пример массива InvoiceItems:

[
{
"Name": "Услуга",
"Quantity": 1,
"Cost": 100,
"Tax": "vat20",
"PaymentMethod": "full_payment",
"PaymentObject": "service"
}
]

Signature

Подпись используется для проверки подлинности токена. Она формируется из заголовка и полезной нагрузки.

  1. Соберите строку Header.Payload, где используются результаты, полученные на предыдущих шагах.

    eyJ0eXAiOiJKV1QiLCJhbGciOiJNRDUifQ.ewogICAiTWVyY2hhbnRMb2dpbiI6InJvYm8tZGVtby10ZXN0IiwKICAgIkludm9pY2VUeXBlIjoiT25lVGltZSIsCiAgICJDdWx0dXJlIjoicnUiLAogICAiSW52SWQiOjgwMCwKICAgIk91dFN1bSI6MSwKICAgIkRlc2NyaXB0aW9uIjoiYXMiLAogICAiTWVyY2hhbnRDb21tZW50cyI6Im5vIGNvbW1lbnQiLAogICAiSW52b2ljZUl0ZW1zIjpbCiAgICAgIHsKICAgICAgICAgIk5hbWUiOiLQotC10YHRgjEiLAogICAgICAgICAiUXVhbnRpdHkiOjEsCiAgICAgICAgICJDb3N0IjowLjUsCiAgICAgICAgICJUYXgiOiJ2YXQyMCIsCiAgICAgICAgICJQYXltZW50TWV0aG9kIjoiZnVsbF9wYXltZW50IiwKICAgICAgICAgIlBheW1lbnRPYmplY3QiOiJjb21tb2RpdHkiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAgIk5hbWUiOiLQotC10YHRgjIiLAogICAgICAgICAiUXVhbnRpdHkiOjEsCiAgICAgICAgICJDb3N0IjowLjUsCiAgICAgICAgICJUYXgiOiJ2YXQwIiwKICAgICAgICAgIlBheW1lbnRNZXRob2QiOiJmdWxsX3ByZXBheW1lbnQiLAogICAgICAgICAiUGF5bWVudE9iamVjdCI6ImNvbW1vZGl0eSIsCiAgICAgICAgICJOb21lbmNsYXR1cmVDb2RlIjoiSVlWSVRDVVIlWEVeJFglQ15UJlZJVENeUlgmJUVSQ15USVJYJSZFUkNVSVRSWEUmWlglUl5DVElSXlhVRSVaTjFtOUUrMcKmPzVPPzbCpj8xNjgiCiAgICAgIH0KICAgXQp9
  2. Закодируйте строку с помощью HMAC и выбранного алгоритма. В качестве секретного ключа используйте идентификатор магазина и пароль №1 в формате robo-demo-test:pass1. Представьте результат в Base64.

    IzOJPWjDkzajNttt8dFQFg
  3. Соберите окончательный токен, соединив три части через точку.

    eyJ0eXAiOiJKV1QiLCJhbGciOiJNRDUifQ.ewogICAiTWVyY2hhbnRMb2dpbiI6InJvYm8tZGVtby10ZXN0IiwKICAgIkludm9pY2VUeXBlIjoiT25lVGltZSIsCiAgICJDdWx0dXJlIjoicnUiLAogICAiSW52SWQiOjgwMCwKICAgIk91dFN1bSI6MSwKICAgIkRlc2NyaXB0aW9uIjoiYXMiLAogICAiTWVyY2hhbnRDb21tZW50cyI6Im5vIGNvbW1lbnQiLAogICAiSW52b2ljZUl0ZW1zIjpbCiAgICAgIHsKICAgICAgICAgIk5hbWUiOiLQotC10YHRgjEiLAogICAgICAgICAiUXVhbnRpdHkiOjEsCiAgICAgICAgICJDb3N0IjowLjUsCiAgICAgICAgICJUYXgiOiJ2YXQyMCIsCiAgICAgICAgICJQYXltZW50TWV0aG9kIjoiZnVsbF9wYXltZW50IiwKICAgICAgICAgIlBheW1lbnRPYmplY3QiOiJjb21tb2RpdHkiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAgIk5hbWUiOiLQotC10YHRgjIiLAogICAgICAgICAiUXVhbnRpdHkiOjEsCiAgICAgICAgICJDb3N0IjowLjUsCiAgICAgICAgICJUYXgiOiJ2YXQwIiwKICAgICAgICAgIlBheW1lbnRNZXRob2QiOiJmdWxsX3ByZXBheW1lbnQiLAogICAgICAgICAiUGF5bWVudE9iamVjdCI6ImNvbW1vZGl0eSIsCiAgICAgICAgICJOb21lbmNsYXR1cmVDb2RlIjoiSVlWSVRDVVIlWEVeJFglQ15UJlZJVENeUlgmJUVSQ15USVJYJSZFUkNVSVRSWEUmWlglUl5DVElSXlhVRSVaTjFtOUUrMcKmPzVPPzbCpj8xNjgiCiAgICAgIH0KICAgXQp9.IzOJPWjDkzajNttt8dFQFg

Отправьте полученную строку в теле POST-запроса. В ответе вернется ссылка на оплату.

Ответ на создание счета

При успешной обработке Invoice API возвращает HTTP 200 и JSON:

{
"id": "01234567-89ab-4cde-8f01-23456789abcd",
"invId": 1234567890,
"url": "https://auth.robokassa.ru/merchant/Invoice/AbCdEfGhIjKlMnOpQrStUv",
"isSuccess": true
}

Прикладная ошибка также может вернуться с HTTP 200. Проверяйте поле isSuccess, а не только HTTP-статус:

{
"isSuccess": false,
"message": "Некорректно составлен запрос"
}

Деактивация созданного счета или ссылки

  • Метод: POST
  • Адрес: https://services.robokassa.ru/InvoiceServiceWebApi/api/DeactivateInvoice

Используется та же структура и алгоритм формирования токена, что при создании ссылки. В Payload необходимо передать идентификатор магазина и один из идентификаторов счета.

{
"MerchantLogin": "robo-demo-test",
"InvId": 851
}

Идентификаторы счета

ПараметрЗначение
EncodedIdПоследняя часть ссылки счета, например 6hucaX7-BkKNi4lyi-Iu2g в ссылке https://auth.robokassa.ru/merchant/Invoice/6hucaX7-BkKNi4lyi-Iu2g.
IdИдентификатор счета, возвращается в ответе на создание счета.
InvIdНомер счета, указанный продавцом при создании ссылки. Если не был передан, генерируется автоматически и доступен в ответе на создание счета и в разделе «Выставление счетов».

Ответ на деактивацию

При успешной деактивации Invoice API возвращает HTTP 200:

{
"isSuccess": true
}

При ошибке ответ также может иметь HTTP 200 и содержать isSuccess: false и поле message.

Запрос статуса созданного счета или ссылки

  • Метод: POST
  • Адрес: https://services.robokassa.ru/InvoiceServiceWebApi/api/GetInvoiceInformationList

Структура токена совпадает с запросом на создание ссылки. В Payload передайте набор параметров:

В этом методе используется параметр InvoiceTypes (множественное число) — он отличается от InvoiceType, который передается при создании ссылки через CreateInvoice.

{
"MerchantLogin": "robo-demo-test",
"CurrentPage": 1,
"PageSize": 10,
"InvoiceStatuses": [
"paid",
"expired",
"notpaid"
],
"Keywords": "Продажа курсов",
"DateFrom": "2025-03-28T08:36:02.651371+00:00",
"DateTo": "2025-03-28T08:36:02.651371+00:00",
"IsAscending": true,
"InvoiceTypes": [
"onetime",
"reusable"
],
"PaymentAliases": [
"Qiwi"
],
"SumFrom": 1.5,
"SumTo": 10000
}

Описание параметров

ПараметрЗначение
CurrentPageОбязательный. Номер текущей страницы (от 1).
PageSizeОбязательный. Количество записей в ответе.
InvoiceStatusesОбязательный. Статус счета. Возможные значения: Paid — оплаченные, Expired — просроченные, Notpaid — неоплаченные.
KeywordsНеобязательный. Строка ключевых слов для поиска по сумме, идентификатору, описанию или email.
DateFromОбязательный. Нижняя граница фильтра по дате создания счета в формате ISO 8601 (YYYY-MM-DDThh:mm:ss.ffffff±hh:mm).
DateToОбязательный. Верхняя граница фильтра по дате создания счета.
IsAscendingНеобязательный. Флаг сортировки по возрастанию.
InvoiceTypesОбязательный. Тип ссылки: одноразовая (OneTime) или многоразовая (Reusable).
PaymentAliasesНеобязательный. Список псевдонимов способов оплаты.
SumFromНеобязательный. Минимальная сумма счета.
SumToНеобязательный. Максимальная сумма счета.

Ответ со списком счетов

При успешной обработке Invoice API возвращает HTTP 200. Список находится в invoiceInformationList, общее количество записей — в total:

{
"invoiceInformationList": [
{
"id": "01234567-89ab-4cde-8f01-23456789abcd",
"invId": 1234567890,
"invoiceType": "OneTime",
"created": "2026-07-23T09:54:27.010856+00:00",
"modified": "2026-07-23T09:56:54.907627+00:00",
"culture": "ru",
"outSum": 1,
"expirationDate": "2026-07-23T09:56:54.907627+00:00",
"description": "Проверка Invoice API",
"invoiceItems": [],
"isCustomerNotificationEmailSent": false,
"invoiceStatus": "Expired",
"invoicePaymentUrl": "https://auth.robokassa.ru/merchant/Invoice/AbCdEfGhIjKlMnOpQrStUv",
"shortInvoicePaymentUrl": "https://auth.robokassa.ru/Merchant/Invoice/AbCdEfGhIjKlMnOpQrStUv",
"aliases": [],
"userFields": {},
"payments": [],
"isWithoutFreeSale": false
}
],
"total": 1,
"isSuccess": true
}

При прикладной ошибке ответ также может иметь HTTP 200. В этом случае isSuccess имеет значение false, а описание ошибки находится в message.