API MasterRent
REST API для обмена данными с 1С Бухгалтерией и другими учётными системами: счета и акты, платежи, контрагенты, договоры, начисления.
Обзор
API работает по HTTPS, принимает и отдаёт JSON в кодировке UTF-8. Базовый адрес: https://masterrent.pro/api/v1. Каждый запрос выполняется от имени одного аккаунта (компании) — по ключу доступа, который владелец создаёт в разделе Настройки → API и обмен с 1С.
Машиночитаемое описание (OpenAPI 3): /api/v1/openapi.json — его можно загрузить в Postman, Swagger UI или использовать для генерации клиента.
Быстрый старт
- Попросите владельца аккаунта создать ключ (права «Чтение» достаточно для выгрузки, для записи платежей нужны «Чтение и запись») и передать его вам.
- Проверьте подключение:
curl https://masterrent.pro/api/v1/ping \
-H "Authorization: Bearer mrk_ваш_ключ"
Ответ содержит название компании, статус подписки и права ключа. Дальше — выгрузка счетов: GET /invoices?exported=0.
Авторизация
Передавайте ключ в заголовке Authorization: Bearer <ключ> (или в заголовке X-Api-Key). Ключ начинается с mrk_. Не передавайте ключ в адресе запроса. Ключ можно отозвать в любой момент — запросы с ним сразу перестанут приниматься.
GET-методы и проверка платежа. «Чтение и запись» — дополнительно создание платежей и контрагентов, отметка результата обмена. При истёкшей подписке запись недоступна (ответ 402), чтение работает.Рекомендуемая схема обмена с 1С
Источник начислений, счетов и актов — MasterRent. Бухгалтерия забирает готовые документы и возвращает оплаты.
- Справочники. Один раз:
GET /organizations(сопоставьте организации по ИНН) иGET /tenants(контрагенты по ИНН и КПП). Новых контрагентов из 1С можно создать черезPOST /tenants. - Выгрузка документов. По расписанию:
GET /invoices?exported=0. Каждый счёт содержит продавца, покупателя, позиции, НДС, договор, а также данные акта (act.number,act.date) и ссылки на PDF счёта и акта. - Создание в 1С. По каждому счёту создайте «Счёт на оплату покупателю» и «Реализацию (акт)» с видом операции «Услуги». Позиции — из
lines. - Отметка передачи.
POST /invoices/{id}/exchangeсstatus=exportedи идентификатором документа в 1С. Отмеченные счета больше не приходят в выборкеexported=0. При ошибке —status=errorиmessage. - Оплаты обратно. Поступления из банковской выписки 1С отправляйте через
POST /payments: платёж сам закроет начисления плательщика. Повторная отправка с тем жеexternal_idбезопасна — дубль не создастся.
Идентификация и нумерация
- Контрагенты определяются по ИНН (при нескольких с одним ИНН — по КПП). Платёж с неизвестным ИНН будет отклонён с кодом
tenant_not_found. - Номера документов задаются в MasterRent: Настройки → Системные настройки → Нумерация документов. Для счетов, актов, договоров и платежей можно указать префикс и номер, с которого продолжать — так нумерация согласуется с 1С. В API всегда приходит итоговый номер документа (
number). - Идемпотентность. Платёж однозначно определяется парой «источник +
external_id» — используйте уникальный идентификатор документа из 1С (GUID или номер+дата). - Деньги — числа с точностью до копеек, валюта — рубли. Даты —
ГГГГ-ММ-ДД, периоды —ГГГГ-ММ.
Пример для 1С (встроенный язык)
Получение неотправленных счетов, отметка о передаче и отправка платежа. Адрес и ключ вынесите в константы.
Функция ВызватьAPI(Метод, Путь, ТелоJSON = Неопределено) Экспорт
Заголовки = Новый Соответствие;
Заголовки.Вставить("Authorization", "Bearer " + КлючAPI());
Заголовки.Вставить("Content-Type", "application/json; charset=utf-8");
Соединение = Новый HTTPСоединение("masterrent.pro", 443, , , , 60, Новый ЗащищенноеСоединениеOpenSSL);
Запрос = Новый HTTPЗапрос("/api/v1" + Путь, Заголовки);
Если ТелоJSON <> Неопределено Тогда
Запрос.УстановитьТелоИзСтроки(ТелоJSON, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
КонецЕсли;
Ответ = ?(Метод = "GET", Соединение.Получить(Запрос), Соединение.ОтправитьДляОбработки(Запрос));
Если Ответ.КодСостояния >= 400 Тогда
ВызватьИсключение "MasterRent API: " + Ответ.КодСостояния + " " + Ответ.ПолучитьТелоКакСтроку("UTF-8");
КонецЕсли;
Чтение = Новый ЧтениеJSON;
Чтение.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку("UTF-8"));
Возврат ПрочитатьJSON(Чтение, Истина);
КонецФункции
Процедура ЗагрузитьСчета() Экспорт
Данные = ВызватьAPI("GET", "/invoices?exported=0&per_page=100");
Для Каждого Счет Из Данные["data"] Цикл
// Покупатель по ИНН и КПП: Счет["buyer"]["inn"], Счет["buyer"]["kpp"]
// Позиции: Счет["lines"] (description, quantity, unit, price, amount)
// Номер и дата: Счет["number"], Счет["date"]; акт: Счет["act"]["number"]
НовыйДокумент = СоздатьСчетИАктВ1С(Счет); // ваша реализация
Результат = Новый Соответствие;
Результат.Вставить("status", "exported");
Результат.Вставить("external_id", Строка(НовыйДокумент.УникальныйИдентификатор()));
Результат.Вставить("external_number", НовыйДокумент.Номер);
ВызватьAPI("POST", "/invoices/" + Формат(Счет["id"], "ЧГ=0") + "/exchange", ЗаписатьВJSON(Результат));
КонецЦикла;
КонецПроцедуры
Процедура ОтправитьПлатеж(ПоступлениеНаРС) Экспорт
Платеж = Новый Соответствие;
Платеж.Вставить("external_id", Строка(ПоступлениеНаРС.УникальныйИдентификатор()));
Платеж.Вставить("date", Формат(ПоступлениеНаРС.Дата, "ДФ=yyyy-MM-dd"));
Платеж.Вставить("amount", ПоступлениеНаРС.СуммаДокумента);
Платеж.Вставить("inn", ПоступлениеНаРС.Контрагент.ИНН);
Платеж.Вставить("number", ПоступлениеНаРС.Номер);
Платеж.Вставить("purpose", ПоступлениеНаРС.НазначениеПлатежа);
ВызватьAPI("POST", "/payments", ЗаписатьВJSON(Платеж));
КонецПроцедуры
ЗаписатьВJSON — сериализация соответствия в строку JSON (ЗаписьJSON + ЗаписатьJSON). Вариант без программирования: выгружайте файлы вручную в «Настройки → API и обмен с 1С» (CSV, XML, JSON).Формат ответов и ошибки
Успешный ответ: {"data": …, "meta": {…}}. Списки содержат meta.page, meta.per_page, meta.total; параметры page и per_page (до 200).
Ошибка: {"error": {"code": "…", "message": "…"}} с HTTP-статусом:
| Статус | Когда |
|---|---|
400 | Тело запроса не является корректным JSON |
401 | Нет ключа или он недействителен / отозван |
402 | Подписка истекла (запись недоступна) |
403 | Ключ только для чтения или аккаунт заблокирован |
404 | Метод или запись не найдены |
409 | Неоднозначность (например, несколько контрагентов с одним ИНН) |
422 | Ошибка в данных: неверная сумма, дата, неизвестный ИНН и т. п. — понятное описание в message |
429 | Превышен лимит запросов |
Лимиты
Не более 120 запросов в минуту на один ключ. Для массовой выгрузки используйте per_page=200 и фильтры (period, from/to, exported=0).
Методы
/pingчтениеПроверка ключа
Возвращает название компании, статус подписки и права ключа. С него удобно начинать подключение.
{
"data": {
"ok": true,
"company": "ООО «Рынок»",
"subscription": "active",
"paid_until": "2027-01-31",
"scope": "write",
"key_name": "Обмен с 1С",
"server_time": "2026-10-18T12:00:00+03:00"
}
}
/organizationsчтениеНаши организации
Юридические лица арендодателя с реквизитами и расчётными счетами. Нужны, чтобы сопоставить организации с 1С по ИНН.
{
"data": [
{
"id": 1,
"name": "ООО «Мастер Аренда»",
"inn": "7701234567",
"kpp": "770101001",
"is_vat_payer": false,
"bank_accounts": []
}
]
}
/marketsчтениеРынки
Список рынков (площадок).
{
"data": [
{
"id": 1,
"name": "Центральный рынок",
"address": "г. Москва",
"is_active": true
}
]
}
/tenantsчтениеКонтрагенты (арендаторы)
Контрагенты с реквизитами и банковскими счетами. Контрагента однозначно определяет ИНН.
| Параметр | Описание | Пример |
|---|---|---|
inn | Фильтр по ИНН | 7712345678 |
updated_since | Созданы не раньше даты (ГГГГ-ММ-ДД) | 2026-10-01 |
active | 1 — только активные | 1 |
page | Номер страницы (по умолчанию 1) | 1 |
per_page | Записей на странице, до 200 (по умолчанию 50) | 50 |
{
"data": [
{
"id": 5,
"type": "legal_entity",
"name": "ООО «Вектор»",
"inn": "7712345678",
"kpp": "771201001",
"email": "buh@vector.ru",
"bank_accounts": []
}
]
}
/tenantsзаписьСоздать или обновить контрагента
Ищет контрагента по ИНН. Если найден — дополняет заполненные поля, если нет — создаёт. Для нового контрагента обязательны inn и name; если у аккаунта несколько рынков — ещё market_id.
{
"inn": "7712345678",
"kpp": "771201001",
"name": "ООО «Вектор»",
"email": "buh@vector.ru",
"phone": "+79990001122",
"legal_address": "г. Москва, ул. Тестовая, 1",
"market_id": 1
} {
"data": {
"id": 5,
"type": "legal_entity",
"name": "ООО «Вектор»",
"inn": "7712345678"
}
}
/contractsчтениеДоговоры
Договоры аренды и субаренды с объектами и условиями.
| Параметр | Описание | Пример |
|---|---|---|
tenant_inn | ИНН арендатора | 7712345678 |
status | active или closed | active |
number | Номер договора | D-001 |
page | Номер страницы (по умолчанию 1) | 1 |
per_page | Записей на странице, до 200 (по умолчанию 50) | 50 |
{
"data": [
{
"id": 1,
"number": "D-001",
"type": "rent",
"status": "active",
"start_date": "2026-08-01",
"end_date": null,
"tenant": {
"id": 5,
"inn": "7712345678",
"name": "ООО «Вектор»"
},
"rent_amount": 15000.0,
"objects": [
{
"number": "12",
"area": 24.0,
"rent_amount": 15000.0
}
]
}
]
}
/invoicesчтениеСчета и акты
Счета на оплату вместе с актами. Акт создаётся вместе со счётом: у каждого счёта есть поле act (номер и дата) и ссылки на PDF обоих документов. Для обмена используйте exported=0 — «ещё не передано в 1С».
| Параметр | Описание | Пример |
|---|---|---|
period | Период ГГГГ-ММ | 2026-10 |
from | Дата счёта от | 2026-10-01 |
to | Дата счёта до | 2026-10-31 |
tenant_inn | ИНН покупателя | 7712345678 |
number | Номер счёта | СЧ-001500 |
status | draft или sent | sent |
exported | 0 — не переданные в 1С, 1 — переданные | 0 |
page | Номер страницы (по умолчанию 1) | 1 |
per_page | Записей на странице, до 200 (по умолчанию 50) | 50 |
{
"data": [
{
"id": 1,
"number": "СЧ-001500",
"date": "2026-10-18",
"period": "2026-10",
"status": "sent",
"total": 15000.0,
"vat": {
"rate": null,
"amount": null,
"included_in_price": null
},
"contract": {
"id": 1,
"number": "D-001",
"date": "2026-08-01",
"type": "rent"
},
"seller": {
"id": 1,
"name": "ООО «Мастер Аренда»",
"inn": "7701234567",
"kpp": "770101001",
"bank_accounts": [
{
"bank_name": "АО «Банк»",
"bik": "044525000",
"account": "40702810000000000001"
}
]
},
"buyer": {
"id": 5,
"type": "legal_entity",
"name": "ООО «Вектор»",
"inn": "7712345678",
"kpp": "771201001"
},
"lines": [
{
"kind": "rent",
"description": "Аренда по договору № D-001 за октябрь 2026",
"quantity": 1.0,
"unit": "усл.",
"price": 15000.0,
"amount": 15000.0
}
],
"act": {
"number": "АКТ-77",
"date": "2026-10-18"
},
"pdf": {
"invoice": "https://masterrent.pro/admin/invoice_pdf?k=1&t=…&type=invoice",
"act": "https://masterrent.pro/admin/invoice_pdf?k=1&t=…&type=act"
},
"exchange": {
"status": "pending",
"external_id": null,
"external_number": null,
"message": null,
"updated_at": null
}
}
]
}
/invoices/{id}чтениеОдин счёт
Счёт с позициями, продавцом, покупателем, актом и ссылками на PDF. {id} — поле id из списка.
{
"data": {
"id": 1,
"number": "СЧ-001500",
"date": "2026-10-18",
"period": "2026-10",
"status": "sent",
"total": 15000.0,
"vat": {
"rate": null,
"amount": null,
"included_in_price": null
},
"contract": {
"id": 1,
"number": "D-001",
"date": "2026-08-01",
"type": "rent"
},
"seller": {
"id": 1,
"name": "ООО «Мастер Аренда»",
"inn": "7701234567",
"kpp": "770101001",
"bank_accounts": [
{
"bank_name": "АО «Банк»",
"bik": "044525000",
"account": "40702810000000000001"
}
]
},
"buyer": {
"id": 5,
"type": "legal_entity",
"name": "ООО «Вектор»",
"inn": "7712345678",
"kpp": "771201001"
},
"lines": [
{
"kind": "rent",
"description": "Аренда по договору № D-001 за октябрь 2026",
"quantity": 1.0,
"unit": "усл.",
"price": 15000.0,
"amount": 15000.0
}
],
"act": {
"number": "АКТ-77",
"date": "2026-10-18"
},
"pdf": {
"invoice": "https://masterrent.pro/admin/invoice_pdf?k=1&t=…&type=invoice",
"act": "https://masterrent.pro/admin/invoice_pdf?k=1&t=…&type=act"
},
"exchange": {
"status": "pending",
"external_id": null,
"external_number": null,
"message": null,
"updated_at": null
}
}
}
/invoices/{id}/exchangeзаписьОтметить результат обмена
После того как счёт (и акт) загружены в 1С, отметьте это: status = exported, external_id — идентификатор документа в 1С. При ошибке передайте status = error и message. Отмеченные счета больше не попадают в выборку exported=0.
{
"status": "exported",
"external_id": "8f3c0d9e-0000-0000-0000-000000000001",
"external_number": "ЦБ-0001234",
"message": ""
} {
"data": {
"id": 1,
"number": "СЧ-001500",
"date": "2026-10-18",
"period": "2026-10",
"status": "sent",
"total": 15000.0,
"vat": {
"rate": null,
"amount": null,
"included_in_price": null
},
"contract": {
"id": 1,
"number": "D-001",
"date": "2026-08-01",
"type": "rent"
},
"seller": {
"id": 1,
"name": "ООО «Мастер Аренда»",
"inn": "7701234567",
"kpp": "770101001",
"bank_accounts": [
{
"bank_name": "АО «Банк»",
"bik": "044525000",
"account": "40702810000000000001"
}
]
},
"buyer": {
"id": 5,
"type": "legal_entity",
"name": "ООО «Вектор»",
"inn": "7712345678",
"kpp": "771201001"
},
"lines": [
{
"kind": "rent",
"description": "Аренда по договору № D-001 за октябрь 2026",
"quantity": 1.0,
"unit": "усл.",
"price": 15000.0,
"amount": 15000.0
}
],
"act": {
"number": "АКТ-77",
"date": "2026-10-18"
},
"pdf": {
"invoice": "https://masterrent.pro/admin/invoice_pdf?k=1&t=…&type=invoice",
"act": "https://masterrent.pro/admin/invoice_pdf?k=1&t=…&type=act"
},
"exchange": {
"status": "pending",
"external_id": null,
"external_number": null,
"message": null,
"updated_at": null
}
}
}
/chargesчтениеНачисления
Начисления по договорам за месяц с оплаченной суммой и долгом.
| Параметр | Описание | Пример |
|---|---|---|
period | Период ГГГГ-ММ | 2026-10 |
status | unpaid, partial или paid | unpaid |
tenant_inn | ИНН арендатора | 7712345678 |
page | Номер страницы (по умолчанию 1) | 1 |
per_page | Записей на странице, до 200 (по умолчанию 50) | 50 |
{
"data": [
{
"id": 11,
"period": "2026-10",
"contract": {
"id": 1,
"number": "D-001"
},
"tenant_inn": "7712345678",
"total_amount": 15000.0,
"paid_amount": 0.0,
"debt": 15000.0,
"status": "unpaid"
}
]
}
/paymentsчтениеПлатежи
Журнал платежей: приход и расход, с распределением по начислениям.
| Параметр | Описание | Пример |
|---|---|---|
from | Дата платежа от | 2026-10-01 |
to | Дата платежа до | 2026-10-31 |
direction | income или expense | income |
tenant_inn | ИНН плательщика | 7712345678 |
page | Номер страницы (по умолчанию 1) | 1 |
per_page | Записей на странице, до 200 (по умолчанию 50) | 50 |
{
"data": [
{
"id": 30,
"number": "1С-0000123",
"date": "2026-10-05",
"direction": "income",
"method": "bank",
"amount": 15000.0,
"tenant": {
"id": 5,
"inn": "7712345678",
"name": "ООО «Вектор»"
},
"allocations": [
{
"charge_id": 11,
"period": "2026-10",
"amount": 15000.0
}
]
}
]
}
/paymentsзаписьПередать входящий платёж из 1С
Создаёт входящий платёж и закрывает им начисления плательщика. Повторная отправка с тем же external_id не создаёт дубль. Плательщик ищется по ИНН (его нужно предварительно создать через POST /tenants). Если передан invoice_number — платёж закрывает начисления именно этого счёта; иначе contract_number; иначе долги плательщика по порядку от самых старых. Остаток сверх долга записывается как аванс.
{
"external_id": "ПП-2026-10-0456",
"date": "2026-10-05",
"amount": 15000,
"inn": "7712345678",
"kpp": "771201001",
"number": "456",
"invoice_number": "1500",
"purpose": "Оплата по счёту СЧ-001500",
"method": "bank",
"organization_inn": "7701234567",
"bank_account": "40702810000000000001"
} {
"data": {
"id": 30,
"number": "1С-456",
"date": "2026-10-05",
"amount": 15000.0,
"allocations": [
{
"charge_id": 11,
"period": "2026-10",
"amount": 15000.0
}
]
}
}
/payments/checkчтениеПроверить платёж без записи
То же, что POST /payments, но ничего не создаёт: возвращает, кому и какие начисления платёж закроет. Подходит для предпросмотра.
{
"external_id": "ПП-2026-10-0456",
"date": "2026-10-05",
"amount": 15000,
"inn": "7712345678"
} {
"data": {
"plan": {
"tenant_id": 5,
"allocations": [
{
"charge_id": 11,
"period": "2026-10",
"amount": 15000.0
}
],
"advance": 0
}
}
}
Поддержка
Вопросы по подключению: info@masterrent.pro. Приложите описание запроса и время обращения — журнал обращений по API доступен владельцу в разделе «Настройки → API и обмен с 1С».