[{"data":1,"prerenderedAt":227},["ShallowReactive",2],{"help-article-finance-558":3,"help-view-finance":37},{"data":4},{"help":5},{"id":6,"name":7,"article":8},"8","Фінанси",{"id":9,"catalog":10,"category":11,"keywords":14,"title":25,"description":26,"body":27,"legacy":28,"created_by":29,"created_at":33,"updated_at":34,"edge_associated_articles":35},"558",{"id":6,"name":7},{"id":12,"name":13},"16","Про інтеграцію, імпорт і розширення ",[15,16,17,18,19,20,21,22,23,24],"API","API-ключ","REST API","інтеграція","автоматизація","X-Api-Key","платежі через API","статті через API","контрагенти через API","розробникам","Публічне API та API-ключі OneB Finance","Якщо у вас є власний сайт, CRM, облікова система чи скрипт, який збирає дані з кількох сервісів, їх можна зʼєднати з OneB Finance через **публічне API**. Так платежі з вашої системи потраплятимуть у Finance без ручного імпорту, а довідники контрагентів і статей можна тримати узгодженими автоматично. Для доступу потрібе","Якщо у вас є власний сайт, CRM, облікова система чи скрипт, який збирає дані з кількох сервісів, їх можна зʼєднати з OneB Finance через **публічне API**. Так платежі з вашої системи потраплятимуть у Finance без ручного імпорту, а довідники контрагентів і статей можна тримати узгодженими автоматично. Для доступу потрібен **API-ключ**, який ви створюєте самі в застосунку і передаєте розробникові.\n\n**Де це в застосунку:** Налаштування → API-ключі. Пункт бачить лише адміністратор робочого простору.\n\n## Кому це потрібно\n\nСтаття для тих, хто працює з розробником або технічним партнером: ключ створюєте ви, а використовує його ваша система. Якщо вам достатньо готових інтеграцій — синхронізації з банками, імпорту виписок чи звʼязки з OneB Invoice — API не знадобиться.\n\n## Як створити API-ключ\n\n1. Відкрийте **Налаштування → API-ключі** і натисніть **«Створити ключ»**.\n2. Вкажіть назву ключа (наприклад, «Інтеграція з CRM») і, за бажанням, **дату закінчення дії** — після неї ключ перестане працювати сам.\n3. Збережіть значення ключа в надійному місці: **повністю воно показується один раз**. Ключ починається з `fin_sk_`. Потім у списку видно лише його початок.\n\nУ списку для кожного ключа видно назву, початок ключа, дати створення, спливання і останнього використання, а також лічильники запитів і помилок. Ключ можна **перегенерувати** (старе значення одразу перестає працювати) або **видалити**.\n\n## Що саме може ключ\n\n**Ключ працює лише в одному робочому просторі** — тому, в якому його створили. Якщо у вас кілька просторів, для кожного потрібен свій ключ.\n\nКлюч дає доступ до даних усього робочого простору: він бачить усі рахунки й платежі, а не лише ті, що доступні окремому користувачу. Тому створюйте окремий ключ на кожну інтеграцію з упізнаваною назвою — так видно, хто чим користується, і непотрібний ключ можна прибрати, не ламаючи решту.\n\nЧерез API доступні:\n\n* **рахунки** — перелік активних рахунків із поточним балансом;\n\n* **платежі** — перелік по рахунку за період, створення, редагування й видалення;\n\n* **контрагенти** — перелік із пошуком, картка, створення й редагування;\n\n* **статті доходів і витрат** — перелік і створення нової статті, зокрема вкладеної;\n\n* **проєкти** — перелік;\n\n* **самі API-ключі** — перелік, створення, видалення, перевипуск.\n\nПлатіж, створений через API, зʼявляється в застосунку як звичайний: з датою в минулому чи сьогодні — у проведених, з майбутньою датою — у запланованих. За бажанням його можна одразу покласти у «Вхідні» на підтвердження. Стаття, створена через API, одразу видима в довідниках і формах застосунку; іконку й колір їй можна призначити пізніше в застосунку.\n\n## Документація для розробника\n\nБазовий шлях усіх запитів — `/api/v1` на адресі API-сервера OneB Finance (та сама адреса, куди застосунок надсилає свої запити; якщо не впевнені, уточніть у підтримки). Формат запитів і відповідей — JSON, успішна відповідь завжди має вигляд `{\"data\": …}`.\n\nКлюч передається в кожному запиті одним із заголовків:\n\n```\nX-Api-Key: fin_sk_…\n```\n\nабо\n\n```\nAuthorization: Bearer fin_sk_…\n```\n\nУсі ідентифікатори записів — стабільні текстові коди (uuid). Їх варто зберігати у своїй системі як є. Дати платежів передаються як unix-час у секундах.\n\n### Перелік запитів\n\n| Запит                            | Що робить                                | Параметри та поля                                                                                                                                                                                                                                                                |\n| -------------------------------- | ---------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `GET /accounts`                  | Активні рахунки                          | Відповідь: `id`, `name`, `code`, `currency`, `is_active`, `balance`                                                                                                                                                                                                              |\n| `GET /accounts/{id}/payments`    | Платежі рахунку, від новіших до старіших | `date_from`, `date_to` (unix-час), `limit` (до 100, типово 50), `offset`                                                                                                                                                                                                         |\n| `POST /payments`                 | Створити платіж                          | Обовʼязково: `account_id`, `direction` (`1` — надходження, `-1` — витрата), `amount` (додатне число), `currency` (код, напр. `UAH`), `paid_at`. Необовʼязково: `category_id`, `contractor_id`, `project_id`, `comment`, `tags` (масив рядків), `state` (`processed` або `inbox`) |\n| `PUT /payments/{id}`             | Змінити платіж                           | Ті самі поля, усі необовʼязкові; передаються лише ті, що змінюються                                                                                                                                                                                                              |\n| `DELETE /payments/{id}`          | Видалити платіж                          | —                                                                                                                                                                                                                                                                                |\n| `GET /contractors`               | Перелік контрагентів                     | `search` (за назвою, повною назвою чи кодом), `limit` (до 100)                                                                                                                                                                                                                   |\n| `GET /contractors/{id}`          | Картка контрагента                       | —                                                                                                                                                                                                                                                                                |\n| `POST /contractors`              | Створити контрагента                     | Обовʼязково: `name`. Необовʼязково: `full_name`, `code` (ЄДРПОУ / РНОКПП), `phone_number`, `address`, `notes`                                                                                                                                                                    |\n| `PUT /contractors/{id}`          | Змінити контрагента                      | Ті самі поля, усі необовʼязкові                                                                                                                                                                                                                                                  |\n| `GET /categories`                | Активні статті доходів і витрат          | `type` — `income` або `expense`; без нього — усі. Відповідь: `id`, `name`, `type`, `parent_id`                                                                                                                                                                                   |\n| `POST /categories`               | Створити статтю                          | Обовʼязково: `name`, `type` (`income` або `expense`). Необовʼязково: `parent_id` — ідентифікатор батьківської статті того самого типу                                                                                                                                            |\n| `GET /projects`                  | Перелік проєктів                         | Відповідь: `id`, `name`, `archived_at`                                                                                                                                                                                                                                           |\n| `GET /api-keys`                  | Перелік ключів простору                  | —                                                                                                                                                                                                                                                                                |\n| `POST /api-keys`                 | Створити ключ                            | `name`, необовʼязково `expires_at`. Повне значення ключа є лише у цій відповіді                                                                                                                                                                                                  |\n| `DELETE /api-keys/{id}`          | Видалити ключ                            | Ключ не може видалити сам себе                                                                                                                                                                                                                                                   |\n| `POST /api-keys/{id}/regenerate` | Перевипустити ключ                       | Ключ не може перевипустити сам себе                                                                                                                                                                                                                                              |\n\n### Приклад: створити вкладену статтю витрат\n\n```\nPOST /api/v1/categories\nX-Api-Key: fin_sk_…\nContent-Type: application/json\n\n{\"name\": \"Реклама в Google\", \"type\": \"expense\", \"parent_id\": \"6f1c…-uuid-батьківської-статті\"}\n```\n\nВідповідь `201 Created`:\n\n```\n{\"data\": {\"id\": \"b8a3…\", \"name\": \"Реклама в Google\", \"type\": \"expense\", \"parent_id\": \"6f1c…\"}}\n```\n\n### Як API повідомляє про помилки\n\n* `401` — ключ не передано, він недійсний, видалений або прострочений.\n\n* `404` — запис не знайдено або він належить іншому робочому простору. Тіло: `{\"error\": \"…\"}`. Так само відповідає створення статті, якщо батьківської статті з таким `parent_id` у вашому просторі немає.\n\n* `422` — дані не пройшли перевірку: бракує обовʼязкового поля, невідома валюта, платіж в іншій валюті без курсу, або батьківська стаття має інший тип (дохідну статтю не можна вкласти у витратну). Тіло містить `message` і `errors` з поясненням по полях.\n\n* `429` — перевищено ліміт запитів: для одного ключа діє **100 запитів на хвилину**. Розробникові варто передбачити повтор через паузу.\n\n## Обмеження й нюанси\n\n* Створювати, перевипускати й видаляти ключі може лише адміністратор робочого простору.\n\n* Повне значення ключа показується **лише один раз** — при створенні або перевипуску. Якщо його втратили, ключ не «підглянути»: треба перегенерувати або створити новий.\n\n* Ключ дає доступ до даних усього робочого простору. **Не публікуйте його** і не надсилайте у відкритих каналах.\n\n* Через API статтю можна лише створити. Перейменувати, перемістити, вимкнути чи обʼєднати статті — у застосунку, в довіднику статей.\n\n* Перелік статей віддає лише активні статті; технічна стаття переказів між рахунками в ньому не показується, і платежі на неї через API не створюються.\n\n## Часті питання\n\n**Я загубив ключ. Де його подивитись?**\nНіде. У списку видно лише початок ключа. Натисніть «Перегенерувати» — отримаєте нове значення, але стару інтеграцію доведеться оновити.\n\n**Чи можна обмежити ключ лише читанням?**\nОкремого перемикача «тільки читання» немає. Якщо інтеграції потрібно лише читати дані, домовтесь із розробником, що вона не викликає запити на створення й зміну.\n\n**Платіж створився, але я не бачу його в проведених.**\nПеревірте дату: платіж із майбутньою датою потрапляє в заплановані. Якщо при створенні передали `state: inbox`, платіж чекає на підтвердження у «Вхідних».\n\n**Розробник каже, що стаття не створюється з помилкою 422.**\nНайчастіше — батьківська стаття іншого типу: під дохідну статтю можна вкласти лише дохідну, під витратну — лише витратну. Другий типовий випадок — не передано `type`.\n\n**Чи є документація з прикладами на самому сервері?**\nОкремої сторінки з автоматичною документацією поки немає — перелік запитів у цій статті повний і підтримується актуальним.\n\n## Дивіться також\n\n* [Публічне API та API-ключі OneB Invoice](https://wiki.oneb.app/1b/articles/439) — як влаштоване API сусіднього застосунку\n\n* [Як підключити NovaPay для синхронізації в OneB Finance](https://wiki.oneb.app/1b/articles/497) — приклад готової інтеграції без API-ключа\n\n",false,{"id":30,"name":31,"photo_url":32},"25","OneB CFO","https://account.oneb.app/uploads/usr/photo/1/7grm0_MoP8Kr6Yr8I6ZA-axQBXFgAiEy.jpeg?w=300&h=300&fit=crop&s=2085037897e7ef0c0c901a0844b95391",1789014945,1789565970,{"edges":36},[],{"data":38},{"help":39},{"id":6,"name":7,"language":40,"edge_categories":43,"edge_translations":225},{"id":41,"name":42},"uk","Українська",{"page_info":44,"edges":46},{"has_next_page":28,"end_cursor":45},"W1s0XSxbOTk5LDE4XV0=",[47,77,109,121,153,181,196,211],{"node":48},{"id":49,"name":50,"created_at":51,"articles_count":52,"edge_preview_articles":53},"7","Початок роботи",1672934143,6,{"edges":54},[55,59,63,67,70,73],{"node":56},{"id":57,"title":58},"493","Платники податків: профілі",{"node":60},{"id":61,"title":62},"371","Як працює Звіт про інвестиції власника?",{"node":64},{"id":65,"title":66},"231","Початок роботи з OneB Finance",{"node":68},{"id":6,"title":69},"Як працювати з різними валютами? ",{"node":71},{"id":49,"title":72},"Відмінність між операцією і платежем в OneB Finance",{"node":74},{"id":75,"title":76},"5","Хто використовує OneB Finance?",{"node":78},{"id":79,"name":80,"created_at":81,"articles_count":82,"edge_preview_articles":83},"88","Огляди можливостей",1784962578,8,{"edges":84},[85,89,93,97,101,105],{"node":86},{"id":87,"title":88},"559","Налаштування сторінки «Платежі»: панель рахунків і призначення платежу",{"node":90},{"id":91,"title":92},"555","Публічні посилання на звіти",{"node":94},{"id":95,"title":96},"552","Податки: своя стаття сплати, ставка у звіті й «Виставити до сплати»",{"node":98},{"id":99,"title":100},"551","Сплата ПДВ, зниклі платежі та імпорт УкрСиб: як усе працює тепер",{"node":102},{"id":103,"title":104},"504","Пошук дублів платежів",{"node":106},{"id":107,"title":108},"495","Журнал рахунку: повна історія платежів",{"node":110},{"id":111,"name":112,"created_at":113,"articles_count":114,"edge_preview_articles":115},"96","Що нового",1788208440,1,{"edges":116},[117],{"node":118},{"id":119,"title":120},"550","Що нового у Фінансах: серпень 2026",{"node":122},{"id":123,"name":124,"created_at":125,"articles_count":126,"edge_preview_articles":127},"15","Основний функціонал",1673113815,39,{"edges":128},[129,133,137,141,145,149],{"node":130},{"id":131,"title":132},"503","Тип рахунку",{"node":134},{"id":135,"title":136},"496","Запуск правила з переглядом: застосування до наявних платежів",{"node":138},{"id":139,"title":140},"492","Налаштування податків",{"node":142},{"id":143,"title":144},"489","Правила: ставка податку та розділення платежу на частки",{"node":146},{"id":147,"title":148},"482","Зведений акт звірки (звіт)",{"node":150},{"id":151,"title":152},"481","Операції з підрядом (рознесення операцій)",{"node":154},{"id":12,"name":13,"created_at":155,"articles_count":156,"edge_preview_articles":157},1673113826,7,{"edges":158},[159,161,165,169,173,177],{"node":160},{"id":9,"title":25},{"node":162},{"id":163,"title":164},"497","Як підключити NovaPay для синхронізації в OneB Finance",{"node":166},{"id":167,"title":168},"395","API-ключі: програмний доступ до фінансових даних",{"node":170},{"id":171,"title":172},"264","Імпорт: як він працює?",{"node":174},{"id":175,"title":176},"122","Експорт ",{"node":178},{"id":179,"title":180},"20","Чи можна підключити власні розширення?",{"node":182},{"id":183,"name":184,"created_at":185,"articles_count":186,"edge_preview_articles":187},"17","Рішення бізнес-задач",1673113833,2,{"edges":188},[189,193],{"node":190},{"id":191,"title":192},"204","Як вести облік зарплатні? ",{"node":194},{"id":12,"title":195},"Як нарахувати зарплату співробітнику?",{"node":197},{"id":198,"name":199,"created_at":200,"articles_count":186,"edge_preview_articles":201},"33","Підтримка",1682518882,{"edges":202},[203,207],{"node":204},{"id":205,"title":206},"81","Що робити, якщо з'явилася помилка?",{"node":208},{"id":209,"title":210},"62","Зворотний зв'язок",{"node":212},{"id":213,"name":214,"created_at":215,"articles_count":186,"edge_preview_articles":216},"18","Система 1B",1673113840,{"edges":217},[218,222],{"node":219},{"id":220,"title":221},"23","Безпека ",{"node":223},{"id":213,"title":224},"Про платформу OneB",{"edges":226},[],1791429733995]