← Документация / Руководства
Признание выручки (МСФО (IFRS) 15 / ASC 606)
Отложенная выручка, равномерное признание, графики по этапам и проценту готовности, обязательства по возврату, подписки.
Отложенное по каждой строке признание выручки и плановое признание: договорные обязательства, методы по степени готовности (over-time), распределение цены сделки, резервы на возврат, подписки и изменения договоров. Поведение по умолчанию остается прежним: простая строка счета-фактуры по-прежнему признает выручку в полной сумме в момент выписки (в определенный момент времени), что соответствует стандартам 606/15 для отдельного исполнения обязанности, выполненного при поставке. Все описанное ниже применяется по выбору для каждой отдельной строки счета-фактуры.
Программное обеспечение поддерживает требования стандартов 606/15, однако именно отчитывающаяся организация несет ответственность за соблюдение (или несоблюдение) этих требований. Выбор правильного метода для каждого обязательства, оценка цен обособленной продажи и уровней возврата, а также суждение о том, являются ли оставшиеся товары или услуги обособленными при изменении договора, остаются на усмотрение бухгалтера компании, подающей отчетность.
Счета
Три счета плана счетов обеспечивают движение по проводкам, настроенные как ключи правил проводок (с возможностью переопределения для каждой компании через ledger/posting-rules/update): revenue.deferredIncome → 4910 "Ateinančių laikotarpių pajamos" (договорное обязательство), revenue.refundLiability → 4450 "Grąžinimo įsipareigojimai pirkėjams", revenue.contractAsset → 2910 "Sukauptos pajamos". Существующие компании получают счета путем повторного применения шаблона плана счетов (ledger/accounts/apply-template).
Обязательства к исполнению в строках счетов-фактур
Строки в sales/invoices/create|update принимают параметр recognition: { method, startDate, endDate, milestones }, где method принимает одно из следующих значений:
| Метод | Поведение при выписке | Признание |
|---|---|---|
point_in_time (по умолчанию) |
Кредит по выручке в полной сумме | в момент выписки, без изменений |
ratable (startDate..endDate) |
Кредит по отложенным доходам | ежемесячный график с взвешиванием по дням за период оказания услуг |
milestone (milestones[], проценты в сумме дают 100) |
Кредит по отложенным доходам | один транш за каждый этап, признается при наступлении события |
percent_complete |
Кредит по отложенным доходам | на основе кумулятивных отчетов о прогрессе |
Дебиторская задолженность и НДС остаются без изменений: при выписке формируется проводка Дт 2410 на брутто-сумму, Кт 4492 на сумму НДС, а чистая сумма распределяется между выручкой (для строк с признанием в момент времени) и счетом 4910 (для строк с отложенным признанием). Графики сохраняются в валюте учета компании по курсу на дату выписки - sales/recognition-schedules/list (sales:read) отображает каждый транш со статусом pending | recognized | cancelled.
Распределение цены сделки. Если строк больше одной, указание standaloneSellingPrice для каждой строки распределяет чистую сумму счета-фактуры между обязательствами пропорционально (МСФО (IFRS) 15, п. 76–80); именно распределенная сумма, а не цена строки, определяет разделение на выручку / отложенные доходы и графики. НДС остается привязанным к строкам счета-фактуры в исходном виде.
Движок признания
Признание выручки создает проводку Дт 4910 / Кт выручка (счет услуг/товаров и центр затрат из исходной строки) в виде единого бухгалтерского документа за один запуск, который фиксируется в sales/recognition/runs/list.
POST /v1/sales/recognition/compute(sales:read){ asOfDate? }- предварительный просмотр (тест-драйв) подлежащих к признанию равномерных траншей.POST /v1/sales/recognition/run(sales:write){ asOfDate?, postingDate?, scheduleIds? }- проведение подлежащих к признанию равномерных траншей либо конкретных траншей, указанных вscheduleIds(для любого метода).POST /v1/sales/recognition/progress(sales:write){ invoiceLineId, percentComplete, date? }- для строк с признанием по проценту готовности: отчет о кумулятивном прогрессе; вновь заработанная дельта проводится немедленно, регресс отклоняется.POST /v1/sales/recognition/summary(sales:read) - сумма признанного на текущую дату, остаток, количество ожидающих траншей и дата следующего признания по каждой строке, а также итоги по компании.
Три события запускают признание без необходимости опроса системы: закрытие периода (ledger/periods/lock) сначала признает все суммы, подлежащие к признанию до конца периода включительно, с датой проводки на конец периода; выписка акта оказания услуг / передачи (sales/acts/issue) признает связанные с актом ожидающие транши по этапам на дату акта; а таймер срока графика настраивается на дату следующего равномерного транша и выполняет проводку по компании при ее наступлении (закрытый период повторно обрабатывается позже). Этапы намеренно привязаны к событиям - expectedDate этапа является плановой информацией и сама по себе никогда не запускает признание.
Переменное возмещение - обязательство по возврату
Параметр refundEstimatePercent в строке кредитует соответствующую долю чистой (распределенной) суммы на счет 4450 вместо выручки или отложенного дохода в момент выписки - ожидаемые возвраты исключаются из цены сделки (МСФО (IFRS) 15, п. 55). Состояние по каждому счету-фактуре хранится в sales/refund-liability/list (оценка, погашено, фактически урегулированные возвраты, остаток).
Фактические операции: кредитовое авизо (credit note) к счету-фактуре дебетует счет 4450 в пределах оставшегося обязательства до того, как затрагивать выручку. sales/refund-liability/true-up (sales:write) { invoiceId, estimatedTotal, date? } пересчитывает оценку и отражает дельту по выручке в любую сторону (но не ниже уже погашенной суммы). Возвраты от платежных провайдеров (PSP), сопоставленные со счетом-фактурой, фиксируются на обязательстве и инициируют вебхук refund_liability.actual - они не проводятся напрямую по счету 4450, так как уменьшение выручки и исходящего НДС требует кредитового авизо в качестве первичного документа по НДС.
Подписки - от соглашений к счетам-фактурам
Задайте для соглашения параметры billingPeriod (monthly | quarterly | annual), после чего agreements/generate-invoice (agreements:write) создаст черновик счета-фактуры за следующий неоплаченный период: строки формируются на основе позиций соглашения (или значения value в виде одной строки за период), каждая с равномерным признанием за период оказания услуг. agreements/billing/run { asOfDate? } обрабатывает все активные соглашения, генерирует счета за все наступившие периоды и переводит в статус истекших соглашения, по которым полностью завершено выставление счетов после их даты окончания. Финальные короткие периоды рассчитываются пропорционально дням; параметр autoRenew продлевает срок действия на его собственную длину и продолжает выставление счетов. Сгенерированные счета содержат поле agreementId (доступна фильтрация в sales/invoices/list).
Изменения договоров
POST /v1/sales/recognition/modify (sales:write) { invoiceLineId, approach, date?, newEndDate?, newMilestones? }:
prospective- отменить ожидающий график и перераспределить непризнанный остаток по новым условиям начиная с даты изменения (оставшиеся товары или услуги являются обособленными: МСФО (IFRS) 15, п. 20(a), 21(a)). Для равномерных строк указываетсяnewEndDate; для строк с этапами указываютсяnewMilestones(проценты от оставшейся суммы).cumulative_catch_up(только для равномерных строк) - пересчитать выручку так, как если бы новые условия применялись с самого начала, и немедленно отразить разницу в любую сторону (для единого частично исполненного обязательства: п. 21(b)); остаток перераспределяется.
Снижение цен отражается через кредитовые авизо: кредитовое авизо к счету-фактуре с ожидающими графиками сначала дебетует отложенные доходы и сокращает график с его конца, затем уменьшает обязательство по возврату и только после этого - выручку. Увеличение цен оформляется дополнительными счетами-фактурами с собственным признанием - по своей сути является перспективным изменением.
Ограничения
- Графики и проводки признания фиксируются в валюте учета (EUR) по курсу на дату выписки; отложенные остатки не переоцениваются в связи с изменением валютных курсов после выписки.
- Счет договорного актива (2910) присутствует в плане счетов и в качестве ключа проводок, но автоматический поток невыставленной выручки по нему пока не работает - признание выручки до выставления счета выполняется вручную через бухгалтерскую справку.
- Для распределения требуется наличие цены обособленной продажи либо для всех строк счета-фактуры, либо ни для одной; остаточный метод (п. 79(c)) не реализован.
- Обязательства по возврату отслеживаются без учета НДС (net of VAT) на уровне счета-фактуры; соответствующий актив в отношении права на возврат товаров (п. B25) не моделируется.
- Кумулятивный метод пересчета применяется к равномерным строкам; перепланирование этапов возможно только перспективным методом; строки с признанием по проценту готовности корректируются через отчеты о прогрессе, а не через метод
modify. - Существенные компоненты финансирования (п. 60–65), неденежное возмещение и вознаграждение, подлежащее выплате покупателю, находятся за рамками текущей реализации.
- Автоматический запуск графиков выполняется в день их наступления; проводки пересчета задним числом в закрытые периоды отклоняются - откройте период или используйте открытую дату проводки.
FAQ
Пакет признания выручки автоматизирует требования стандартов IFRS 15 и ASC 606. Ниже приведены ответы на часто задаваемые вопросы по настройке и работе с функционалом.
Как переключить существующую компанию на новые счета?
Выполните повторное применение шаблона плана счетов с помощью эндпоинта ledger/accounts/apply-template. Это добавит счета 4910, 4450 и 2910 в план счетов компании без изменения существующих проводок.
Можно ли комбинировать разные методы признания в одном счете-фактуре?
Да. Каждая строка счета-фактуры может использовать собственный метод признания (например, одна строка - point_in_time, а другая - ratable). Для распределения общей суммы счета необходимо указать цену обособленной продажи (standaloneSellingPrice) для всех строк или не указывать ни для одной.
Как система обрабатывает закрытые периоды при запуске признания?
Система проверяет дату проводки. Если период закрыт, проведение проводок задним числом отклоняется. В таком случае необходимо временно открыть период для внесения корректировок или использовать более позднюю дату открытого периода.