ГлавБух
ОфертаКонфиденциальностьПомощь

Для разработчиков

ГлавБух принимает данные из любой системы через публичный API: детерминированный импорт операций, чтение журнала и документов, вебхуки о событиях. Ключи выпускаются в кабинете: Настройки → «API и интеграции» (нужен аккаунт — вход/регистрация).

Формат импорта: glavbuh-import/v1

JSON-файл с операциями и контрольными суммами. Схема glavbuh-import/v1 — постоянный синоним papacore-export/v1: принимаются оба значения, файл разбирается детерминированно (без ИИ). Суммы — целые в минорных единицах валюты дела (тиыны/копейки), externalId — ключ идемпотентности: повторный импорт той же записи — no-op. Контрольные суммы totals пересчитываются; расхождение = отказ файла целиком.

{
  "schema": "glavbuh-import/v1",
  "source": { "system": "my-crm", "exportedAt": "2026-07-17T03:00:00Z" },
  "period": { "from": "2026-07-01", "to": "2026-07-31" },
  "externalCaseRef": "shop-42",
  "entries": [
    {
      "externalId": "op-1001",
      "date": "2026-07-03",
      "amountTiyn": 12500000,
      "direction": "IN",
      "party": "ТОО Ромашка",
      "partyBin": "111222333444",
      "purpose": "Оплата по счёту №14",
      "categories": ["продажи"]
    }
  ],
  "totals": { "entriesCount": 1, "sumInTiyn": 12500000, "sumOutTiyn": 0 }
}

Дело указывается параметром ?caseId= или полем externalCaseRef — оно сматчится с реквизитом дела meta.externalCaseRef (задаётся при настройке обмена). Необязательный блок payroll (начисления зарплаты) — как в экспорте PapaCore.

Импорт

curl -X POST "https://glavbuh.vercel.app/api/v1/import?caseId=ВАШ_CASE_ID" \
  -H "Authorization: Bearer gbk_ВАШ_КЛЮЧ" \
  -H "Content-Type: application/json" \
  --data-binary @export.glavbuh.json

Ответ: { "accepted": true, "counts": { "inserted": 1, "skippedDuplicates": 0, ... } } или { "accepted": false, "reasons": [...] }. Файл сохраняется как источник — каждая операция в журнале ведёт к нему (трассировка).

Чтение

curl "https://glavbuh.vercel.app/api/v1/facts?caseId=ВАШ_CASE_ID&from=2026-07-01&to=2026-07-31" \
  -H "Authorization: Bearer gbk_ВАШ_КЛЮЧ"

GET /api/v1/facts?caseId=&from=&to=&limit=&offset= — журнал (по умолчанию подтверждённые; суммы — строки в минорных единицах). GET /api/v1/documents?caseId= — метаданные сгенерированных документов. Нужен ключ со scope read.

Webhooks

События: document.generated, facts.confirmed, deadline.upcoming. Настраиваются там же, в «API и интеграции». Тело — JSON { event, createdAt, data }; подпись — HMAC-SHA256 от точных байтов тела в заголовке X-Glavbuh-Signature: sha256=<hex>. Доставка — до 3 попыток с бэкоффом; лог последних доставок виден в настройках.

// Node.js: проверка подписи вебхука
const crypto = require("node:crypto");
const expected = "sha256=" + crypto.createHmac("sha256", SECRET).update(rawBody, "utf8").digest("hex");
const ok = crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(req.headers["x-glavbuh-signature"]));

Лимиты

  • импорт — 20 запросов в минуту на ключ, файл до 15 МБ;
  • чтение — 60 запросов в минуту на ключ, страницы до 500 фактов;
  • ключ можно отозвать в любой момент — он гаснет немедленно.

Нужна готовая интеграция?

Готовые коннекторы подключаем по спросу. Напиши, какая интеграция нужна — это честный счётчик: что наберёт голосов, то и сделаем первым.

ГлавБух готовит расчёты и документы; ответственность за сдачу отчётности и подпись (ЭЦП) — на налогоплательщике или управляющем.

© ГлавБух · @glavbuh_kz_bot