[{"data":1,"prerenderedAt":357},["ShallowReactive",2],{"help-article-invoice-440":3,"help-view-invoice":36},{"data":4},{"help":5},{"id":6,"name":7,"article":8},"20","Інвойс",{"id":9,"catalog":10,"category":11,"keywords":14,"title":24,"description":25,"body":26,"legacy":27,"created_by":28,"created_at":32,"updated_at":33,"edge_associated_articles":34},"440",{"id":6,"name":7},{"id":12,"name":13},"95","Інтеграції та API",[15,16,17,18,19,20,21,22,23],"webhooks","вебхуки","сповіщення про події","інтеграція","автоматизація","бета","джерело документа","рахунок виставлено","рахунок оплачено онлайн","Webhooks: миттєві сповіщення ваших систем про події (бета)","Функція в бета-режимі, вмикається в **Налаштування → Ранні функції** (у меню — «Експериментальні функції»). Докладніше — [Експериментальні функції](https://wiki.oneb.app/help/invoice/articles/435).\n\n**Webhook** — це «дзвінок» від OneB Invoice вашій системі: щойно сталася подія (створено рахунок, змінився статус, додано","Функція в бета-режимі, вмикається в **Налаштування → Ранні функції** (у меню — «Експериментальні функції»). Докладніше — [Експериментальні функції](https://wiki.oneb.app/help/invoice/articles/435).\n\n**Webhook** — це «дзвінок» від OneB Invoice вашій системі: щойно сталася подія (створено рахунок, змінився статус, додано клієнта), ваш сайт чи CRM дізнається про це відразу, без постійних опитувань. Як і публічне API, функція розрахована на роботу разом із розробником.\n\n**Де це в застосунку:** Налаштування → Webhooks.\n\n## Як створити вебхук\n\n1. Увімкніть **«Webhooks»** у **Налаштування → Ранні функції**.\n2. Відкрийте **Налаштування → Webhooks** і натисніть **«Створити вебхук»**.\n3. Заповніть форму:\n   * **URL** — адреса вашої системи, яку надасть розробник. Приймаються лише адреси на `https`.\n   * **Події** — позначте, про що повідомляти.\n   * **Заголовки** (необовʼязково) — до 10 власних службових заголовків запиту, якщо їх вимагає ваша система.\n   * **Опис** — для себе, щоб памʼятати призначення.\n4. Натисніть **«Створити»**. Одразу після цього система покаже **секрет підпису** — збережіть його, бо показується він один раз.\n\n![1.00](/img/s4/e665/e5a5a188e48919a59312070d696dc20e924e.png?s=e5846ec5fd6bba6c02d4c7bc095fcc92)\n\n## Які події можна отримувати\n\nЗараз доступні дев'ять подій, згрупованих за темами. У формі вони підписані англійською — нижче відповідність.\n\n**Документи**\n\n* *Invoice Created* — документ створено (у застосунку, через API або автоматично з Prom.ua).\n* *Invoice Updated* — документ оновлено.\n* *Invoice Status Changed* — змінився статус документа. У повідомленні передається і попередній статус.\n* *Invoice Deleted* — документ видалено (передається лише його ідентифікатор).\n\nУ кожному повідомленні про документ є його **джерело**: створено користувачем у застосунку, через API чи інтеграцією (наприклад, Prom.ua). Так ваша система може обробляти лише «свої» документи, а решту пропускати. Докладніше — у статті [Публічне API та API-ключі](https://wiki.oneb.app/help/invoice/articles/439).\n\n**Клієнти**\n\n* *Client Created*, *Client Updated*, *Client Deleted* — клієнта додано, змінено, видалено. Зручно для синхронізації бази з CRM.\n\n**Платежі**\n\n* *Payment Linked*, *Payment Unlinked* — платіж із OneB Finance привʼязано до документа або відвʼязано від нього.\n\n## Як зловити момент, коли рахунок виставили клієнту\n\nТиповий сценарій: ваша система створює рахунок як чернетку, а бухгалтер перевіряє його і натискає «Поділитись». Саме в цей момент документ переходить зі статусу «Чернетка» в «Очікує», і ви отримуєте подію *Invoice Status Changed* з попереднім статусом «Чернетка». Це і є сигнал «рахунок виставлено».\n\nПамʼятайте, що редагування вже виставленого документа повертає його в чернетку (див. [Статуси документів](https://wiki.oneb.app/help/invoice/articles/320)): ви отримаєте подію про перехід в «Чернетку», а після повторного «Поділитись» — знову про виставлення. Ваша система має бути готова до такого «кроку назад».\n\n## Як дізнатися, що рахунок оплачено\n\nБудь-який перехід рахунка в «Оплачено» породжує подію *Invoice Status Changed* з попереднім статусом «Очікує» — незалежно від того, як саме надійшла оплата:\n\n* **клієнт оплатив онлайн** через платіжний сервіс (plata by mono, LiqPay, Stripe, PayPal) — подія приходить одразу після підтвердження від сервісу;\n* **платіж підтягнувся з OneB Finance** або його привʼязали вручну — крім зміни статусу, ви отримаєте ще й *Payment Linked*;\n* **бухгалтер позначив оплату вручну** або статус змінила інша інтеграція.\n\nУ стрічці сповіщень і в історії статусів документа теж зʼявляється відповідний запис. Тож будувати логіку «гроші прийшли» можна на події зміни статусу; періодичну звірку через [публічне API](https://wiki.oneb.app/help/invoice/articles/439) варто лишити лише як страховку на випадок, якщо ваш сервер був недоступний довше, ніж тривають повторні спроби доставки.\n\nІнші випадки, коли статус змінюється сам, зібрані у статті [Чому статус документа змінився сам](https://wiki.oneb.app/help/invoice/articles/510).\n\n## Секрет і перевірка підпису\n\nРазом із кожним запитом ми надсилаємо **підпис** — контрольну суму тіла повідомлення, обчислену з вашим секретом. Ваша система має порахувати таку саму суму й порівняти.\n\nНавіщо це потрібно: адреса вашого обробника рано чи пізно стає відомою, і на неї може постукати хто завгодно, вдаючи OneB Invoice. Перевірка підпису — єдиний спосіб переконатися, що повідомлення справді від нас і його не змінили дорогою. Просити розробника «просто приймати все підряд» не варто: без перевірки чужий запит зможе, наприклад, позначити у вашій системі неоплачений рахунок як оплачений.\n\nСекрет показується один раз — при створенні вебхука. Якщо його втратили або є підозра, що він потрапив не в ті руки, натисніть **«Перегенерувати секрет»** у картці вебхука: система покаже нове значення, а старе одразу перестане діяти. Не забудьте оновити його у своїй системі, інакше вона почне відкидати наші запити.\n\nРазом із підписом у кожному повідомленні передається назва події та ідентифікатор вебхука — у тому самому форматі, що й в API, тож розробник може звірити, від якого саме вебхука прийшло повідомлення.\n\n## Журнал доставок\n\nУ картці вебхука є кнопка **«Доставки»** — стрічка того, що і з яким результатом ми надсилали. Для кожного запису видно:\n\n* **статус** — успіх, очікує, повтор або помилка;\n* **подію**;\n* **код відповіді** вашого сервера;\n* **дату** і **час доставки**;\n* **кількість спроб**;\n* ідентифікатор документа, якщо подія стосується документа.\n\nЦе перше місце, куди варто дивитись, коли «нічого не приходить»: якщо в журналі порожньо — подія не настала або вебхук вимкнено; якщо є записи з помилкою і кодом відповіді — проблема на боці вашої системи.\n\n**Ручної кнопки «надіслати ще раз» немає.** Повторні спроби виконуються автоматично (див. нижче), а щоб отримати подію ще раз, треба повторити саму дію — наприклад, ще раз змінити статус документа. Якщо потрібно просто дістати актуальні дані, простіше запитати їх через публічне API.\n\n## Що відбувається автоматично\n\n* Ми робимо **до 5 спроб доставки** з наростаючою паузою: приблизно **10 секунд, 1 хвилина, 5 хвилин, 30 хвилин і 2 години**. Після п'ятої невдалої спроби доставка позначається як помилка і більше не повторюється.\n* Успішною вважається будь-яка «зелена» відповідь вашого сервера. На відповідь дається **15 секунд** — довга обробка на вашому боці зчитається як невдача, тож правильно спершу швидко відповісти, а вже потім обробляти.\n* Перед кожною спробою адреса перевіряється заново: адреси у внутрішніх мережах відхиляються, а переадресації не виконуються — якщо ваш сервер відповідає редіректом, доставка вважається невдалою.\n\n## Обмеження й нюанси\n\nВебхуки — **рання (експериментальна) функція**: поки ви не увімкнете «Webhooks» у Налаштування → Ранні функції, пункту меню просто не буде. Доступ до вебхуків також входить не в кожен тарифний план — на пункті меню може зʼявитись іконка корони. Див. [Експериментальні функції](https://wiki.oneb.app/help/invoice/articles/435) і [Тарифний план і ліміти](https://wiki.oneb.app/help/invoice/articles/442).\n\nСтворювати, редагувати, вимикати й видаляти вебхуки, а також дивитись журнал доставок може лише користувач із правами адміністратора робочого простору. Див. [Користувачі й ролі робочого простору](https://wiki.oneb.app/help/invoice/articles/419).\n\nПриймаються **тільки адреси на `https`**. Адреси у локальній мережі, на `localhost` і в зарезервованих діапазонах відхиляються — тестувати треба на публічно доступному сервері.\n\nВебхук можна **тимчасово вимкнути**, не видаляючи: у картці є перемикач, і в списку такий вебхук позначається міткою «Вимкнено». Поки він вимкнений, події для нього не надсилаються і не накопичуються — пропущене потім не «дошлеться».\n\nПорядок доставки двох подій, що сталися майже одночасно (наприклад, «оновлено» і «змінився статус»), не гарантується. Розробникові варто орієнтуватись на дані всередині повідомлення, а не на черговість отримання.\n\n## Часті питання\n\n**Створив вебхук, але нічого не приходить.**\nПеревірте: чи увімкнений вебхук, чи позначені потрібні події, чи є записи в журналі доставок і який код відповіді повертає ваш сервер.\n\n**У журналі статус «повтор» — це погано?**\nНі, це означає, що спроба не вдалась і система спробує ще раз за розкладом. Тривожно, якщо дійшло до статусу «помилка».\n\n**Клієнт оплатив карткою онлайн — яка подія прийде?**\n*Invoice Status Changed* з попереднім статусом «Очікує» і новим «Оплачено», одразу після підтвердження від платіжного сервісу. Якщо оплата пройшла через OneB Finance, додатково прийде *Payment Linked*.\n\n**Я загубив секрет.**\nПерегенеруйте його в картці вебхука і одразу пропишіть нове значення у своїй системі.\n\n**Чи можна надіслати подію повторно вручну?**\nНі. Повтори лише автоматичні; щоб отримати подію знову, треба повторити саму дію.\n\n**Скільки вебхуків можна створити?**\nСкільки потрібно. Для різних систем краще робити окремі вебхуки — кожен зі своїм URL і власним набором подій.\n\n**Як дізнатися, що документ створила саме моя система, а не бухгалтер?**\nЗа джерелом документа у повідомленні: «API» для документів з API-ключа, «користувач» для створених у застосунку, назва інтеграції для решти.\n\n## Що може змінитися\n\nФункція в бета-режимі. Перелік подій і склад даних у повідомленнях можуть розширюватись, тож ваша система має спокійно ставитись до появи нових полів і нових типів подій, а не падати на них. Формат підпису і логіка повторних спроб можуть уточнюватись — стежте за оновленнями цієї статті й технічної документації API.\n\n## Дивіться також\n\n* [Публічне API та API-ключі (бета)](https://wiki.oneb.app/help/invoice/articles/439)\n* [Статуси документів](https://wiki.oneb.app/help/invoice/articles/320)\n* [Чому статус документа змінився сам](https://wiki.oneb.app/help/invoice/articles/510)\n* [Онлайн-оплати](https://wiki.oneb.app/help/invoice/articles/430)\n* [Експериментальні функції (ранні функції)](https://wiki.oneb.app/help/invoice/articles/435)\n* [Тарифний план і ліміти](https://wiki.oneb.app/help/invoice/articles/442)\n* [Користувачі й ролі робочого простору](https://wiki.oneb.app/help/invoice/articles/419)\n",false,{"id":29,"name":30,"photo_url":31},"37","Ярослав Плакида","https://account.oneb.app/uploads/usr/photo/1/JMQPpCmTUtL2j8Mecr5W3TbY5ZbyK4fw.jpeg?w=300&h=300&fit=crop&s=7712ff4ac866b4965be19403505c01c8",1783648192,1788705203,{"edges":35},[],{"data":37},{"help":38},{"id":6,"name":7,"language":39,"edge_categories":42,"edge_translations":355},{"id":40,"name":41},"uk","Українська",{"page_info":43,"edges":45},{"has_next_page":27,"end_cursor":44},"W1s0XSxbMiw1NV1d",[46,78,110,142,174,206,237,269,300,328,340],{"node":47},{"id":48,"name":49,"created_at":50,"articles_count":51,"edge_preview_articles":52},"54","Початок роботи",1698401262,14,{"edges":53},[54,58,62,66,70,74],{"node":55},{"id":56,"title":57},"548","Що відбувається з даними при видаленні",{"node":59},{"id":60,"title":61},"524","Історія змін документа і відновлення версії",{"node":63},{"id":64,"title":65},"509","Що OneB Invoice робить сам",{"node":67},{"id":68,"title":69},"506","Вхід у застосунок, зміна пошти й перемикання просторів",{"node":71},{"id":72,"title":73},"505","Робочий простір: що це, аліас і кілька просторів",{"node":75},{"id":76,"title":77},"455","Головна сторінка: швидкі дії, статистика і контроль оплат",{"node":79},{"id":80,"name":81,"created_at":82,"articles_count":83,"edge_preview_articles":84},"71","Документи",1730719366,7,{"edges":85},[86,90,94,98,102,106],{"node":87},{"id":88,"title":89},"529","Документ за QR-кодом",{"node":91},{"id":92,"title":93},"526","Редагування й копіювання рахунку",{"node":95},{"id":96,"title":97},"521","Додатки до договору",{"node":99},{"id":100,"title":101},"520","Зв'язки між документами: «в рамках», батьківський документ і копія",{"node":103},{"id":104,"title":105},"518","Публічна сторінка документа очима клієнта",{"node":107},{"id":108,"title":109},"517","Картка рахунку: що можна зробити після створення",{"node":111},{"id":112,"name":113,"created_at":114,"articles_count":115,"edge_preview_articles":116},"84","Покрокові інструкції",1783639591,52,{"edges":117},[118,122,126,130,134,138],{"node":119},{"id":120,"title":121},"560","Як додати печатку компанії на документи",{"node":123},{"id":124,"title":125},"556","Як імпортувати договір із Word (.docx) у шаблон",{"node":127},{"id":128,"title":129},"531","Публічний звіт для бухгалтера чи партнера",{"node":131},{"id":132,"title":133},"514","Сторони договору й заповнення даних контрагентом",{"node":135},{"id":136,"title":137},"513","Підпис «від руки» і «на папері»",{"node":139},{"id":140,"title":141},"512","Картка договору: вкладки Огляд, Специфікація, Повʼязані, Додатки, Історія",{"node":143},{"id":144,"name":145,"created_at":146,"articles_count":147,"edge_preview_articles":148},"85","Поняття й терміни",1783640071,8,{"edges":149},[150,154,158,162,166,170],{"node":151},{"id":152,"title":153},"545","SWIFT і SEPA реквізити",{"node":155},{"id":156,"title":157},"544","Бюджет проєкту (бета)",{"node":159},{"id":160,"title":161},"541","Учасники проєкту, задачі та ставки",{"node":163},{"id":164,"title":165},"511","Що означають сторінки помилок",{"node":167},{"id":168,"title":169},"508","Публічне посилання на документ: як працює і як захистити",{"node":171},{"id":172,"title":173},"417","Типи документів у OneB Invoice: що є що",{"node":175},{"id":176,"name":177,"created_at":178,"articles_count":179,"edge_preview_articles":180},"86","Огляди можливостей",1783640913,12,{"edges":181},[182,186,190,194,198,202],{"node":183},{"id":184,"title":185},"549","Журнали дня і тижня, звіт з обліку часу",{"node":187},{"id":188,"title":189},"547","Імпорт записів часу",{"node":191},{"id":192,"title":193},"540","Штрихкоди: сканування й пошук товару",{"node":195},{"id":196,"title":197},"536","Архів проєктів: куди подівся проєкт",{"node":199},{"id":200,"title":201},"523","Вибіркова аналітика: як побудувати власний звіт",{"node":203},{"id":204,"title":205},"454","Платежі: вхідні, вихідні та контроль оплат",{"node":207},{"id":208,"name":209,"created_at":210,"articles_count":147,"edge_preview_articles":211},"87","Сценарії використання",1783724309,{"edges":212},[213,217,221,225,229,233],{"node":214},{"id":215,"title":216},"546","Бухгалтер обслуговує кількох ФОП",{"node":218},{"id":219,"title":220},"542","Робота з іноземним замовником від А до Я",{"node":222},{"id":223,"title":224},"538","Файли проєкту",{"node":226},{"id":227,"title":228},"462","Погодинна робота: від обліку годин до рахунку й акта",{"node":230},{"id":231,"title":232},"461","Продаж товарів: від замовлення до видаткової накладної",{"node":234},{"id":235,"title":236},"460","Проєктна робота: кошторис, аванс, етапні акти і контроль бюджету",{"node":238},{"id":239,"name":240,"created_at":241,"articles_count":242,"edge_preview_articles":243},"93","Налаштування",1787996248,9,{"edges":244},[245,249,253,257,261,265],{"node":246},{"id":247,"title":248},"553","Доступ для служби підтримки: як дати боту тимчасовий доступ до свого простору",{"node":250},{"id":251,"title":252},"537","Додаткові поля у специфікації (колонки кошторису)",{"node":254},{"id":255,"title":256},"535","Категорії товарів",{"node":258},{"id":259,"title":260},"533","Валюти й курси",{"node":262},{"id":263,"title":264},"532","Загальні налаштування робочого простору",{"node":266},{"id":267,"title":268},"515","Формати дати, часу, чисел і валюти",{"node":270},{"id":271,"name":272,"created_at":273,"articles_count":83,"edge_preview_articles":274},"94","Кабінет клієнта та публічні сторінки",1787996251,{"edges":275},[276,280,284,288,292,296],{"node":277},{"id":278,"title":279},"543","Вітрина очима покупця",{"node":281},{"id":282,"title":283},"528","Кабінет у Telegram Mini App",{"node":285},{"id":286,"title":287},"527","Клієнт подає заявку з кабінету",{"node":289},{"id":290,"title":291},"525","Кабінет очима клієнта: головна, документи, деталі, профіль",{"node":293},{"id":294,"title":295},"522","Вхід клієнта в кабінет: посилання, код і Telegram",{"node":297},{"id":298,"title":299},"519","Кабінет клієнта: що це і як увімкнути",{"node":301},{"id":12,"name":13,"created_at":302,"articles_count":303,"edge_preview_articles":304},1787996254,6,{"edges":305},[306,310,314,318,320,324],{"node":307},{"id":308,"title":309},"534","Telegram-бот для клієнтів",{"node":311},{"id":312,"title":313},"448","Інтеграція зі School Today: рахунки за харчування учнів",{"node":315},{"id":316,"title":317},"447","Інтеграція з Prom.ua: рахунки із замовлень магазину",{"node":319},{"id":9,"title":24},{"node":321},{"id":322,"title":323},"439","Публічне API та API-ключі (бета)",{"node":325},{"id":326,"title":327},"281","Інтеграція OneB Invoice та OneB Finance",{"node":329},{"id":330,"name":331,"created_at":332,"articles_count":333,"edge_preview_articles":334},"58","Функціонал ",1707816481,1,{"edges":335},[336],{"node":337},{"id":338,"title":339},"402","Кабінет клієнта: що це, як увімкнути та як ним користуватися",{"node":341},{"id":342,"name":343,"created_at":344,"articles_count":345,"edge_preview_articles":346},"55","Зворотний зв'язок",1698401315,2,{"edges":347},[348,352],{"node":349},{"id":350,"title":351},"423","Часті питання: швидкі відповіді підтримки",{"node":353},{"id":354,"title":343},"133",{"edges":356},[],1791429733993]