Главная›Документы›API

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 или использовать для генерации клиента.

Быстрый старт

  1. Попросите владельца аккаунта создать ключ (права «Чтение» достаточно для выгрузки, для записи платежей нужны «Чтение и запись») и передать его вам.
  2. Проверьте подключение:
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. Бухгалтерия забирает готовые документы и возвращает оплаты.

  1. Справочники. Один раз: GET /organizations (сопоставьте организации по ИНН) и GET /tenants (контрагенты по ИНН и КПП). Новых контрагентов из 1С можно создать через POST /tenants.
  2. Выгрузка документов. По расписанию: GET /invoices?exported=0. Каждый счёт содержит продавца, покупателя, позиции, НДС, договор, а также данные акта (act.number, act.date) и ссылки на PDF счёта и акта.
  3. Создание в 1С. По каждому счёту создайте «Счёт на оплату покупателю» и «Реализацию (акт)» с видом операции «Услуги». Позиции — из lines.
  4. Отметка передачи. POST /invoices/{id}/exchange с status=exported и идентификатором документа в 1С. Отмеченные счета больше не приходят в выборке exported=0. При ошибке — status=error и message.
  5. Оплаты обратно. Поступления из банковской выписки 1С отправляйте через POST /payments: платёж сам закроет начисления плательщика. Повторная отправка с тем же external_id безопасна — дубль не создастся.

Идентификация и нумерация

Пример для 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).

Методы

GET/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"
    }
}
GET/organizationsчтение

Наши организации

Юридические лица арендодателя с реквизитами и расчётными счетами. Нужны, чтобы сопоставить организации с 1С по ИНН.

Пример ответа
{
    "data": [
        {
            "id": 1,
            "name": "ООО «Мастер Аренда»",
            "inn": "7701234567",
            "kpp": "770101001",
            "is_vat_payer": false,
            "bank_accounts": []
        }
    ]
}
GET/marketsчтение

Рынки

Список рынков (площадок).

Пример ответа
{
    "data": [
        {
            "id": 1,
            "name": "Центральный рынок",
            "address": "г. Москва",
            "is_active": true
        }
    ]
}
GET/tenantsчтение

Контрагенты (арендаторы)

Контрагенты с реквизитами и банковскими счетами. Контрагента однозначно определяет ИНН.

ПараметрОписаниеПример
innФильтр по ИНН7712345678
updated_sinceСозданы не раньше даты (ГГГГ-ММ-ДД)2026-10-01
active1 — только активные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": []
        }
    ]
}
POST/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"
    }
}
GET/contractsчтение

Договоры

Договоры аренды и субаренды с объектами и условиями.

ПараметрОписаниеПример
tenant_innИНН арендатора7712345678
statusactive или closedactive
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
                }
            ]
        }
    ]
}
GET/invoicesчтение

Счета и акты

Счета на оплату вместе с актами. Акт создаётся вместе со счётом: у каждого счёта есть поле act (номер и дата) и ссылки на PDF обоих документов. Для обмена используйте exported=0 — «ещё не передано в 1С».

ПараметрОписаниеПример
periodПериод ГГГГ-ММ2026-10
fromДата счёта от2026-10-01
toДата счёта до2026-10-31
tenant_innИНН покупателя7712345678
numberНомер счётаСЧ-001500
statusdraft или sentsent
exported0 — не переданные в 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
            }
        }
    ]
}
GET/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
        }
    }
}
POST/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
        }
    }
}
GET/chargesчтение

Начисления

Начисления по договорам за месяц с оплаченной суммой и долгом.

ПараметрОписаниеПример
periodПериод ГГГГ-ММ2026-10
statusunpaid, partial или paidunpaid
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"
        }
    ]
}
GET/paymentsчтение

Платежи

Журнал платежей: приход и расход, с распределением по начислениям.

ПараметрОписаниеПример
fromДата платежа от2026-10-01
toДата платежа до2026-10-31
directionincome или expenseincome
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
                }
            ]
        }
    ]
}
POST/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
            }
        ]
    }
}
POST/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С».