У «Торгівлі з випискою рахунка» (ТВР) можна виписати рахунок у доларах, євро або іншій валюті, а оплату від покупця приймати в гривні — одразу або частинами. У таких продажах підприємці запитують фахівців Торгсофт, який курс використовувати для передоплати, що відбувається, якщо до наступного платежу курс змінився, чому борг у ТВР залишається у валюті рахунка, а чек ПРРО формується у гривні, звідки береться повідомлення «Сума часткової сплати … не може перевищувати загальну суму …» і чи потрібно для його усунення змінювати курс, суму платежу або саму накладну. Окремо потрібно розуміти, що валютний рахунок, фінансовий документ оплати та фіскальний чек — це пов'язані, але не тотожні документи.
Що таке валютний рахунок у ТВР
У вдосконаленому режимі ТВР Торгсофт дозволяє вести рахунки в різних валютах. Для рахунка можна зазначити:
-
валюту рахунка;
-
курс цієї валюти;
-
розрахунковий рахунок;
-
товари, кількість і ціни;
-
умови подальшої оплати та відвантаження.
Якщо валюта рахунка відрізняється від національної, у документі з'являється поле «Курс». Курс можна вказати вручну або підставити значення з довідника «Курс валюти».
Додатково в рахунку є параметр «Фіксувати курс для оплати». Якщо його увімкнути, під час подальшої оплати користувач не зможе змінювати курс, за яким програма розраховує еквівалент платежу. Це важливе налаштування для продажів, де між виставленням рахунка та остаточним розрахунком проходить кілька днів.
У ТВР потрібно розрізняти валюту обліку зобов'язання і валюту фактичного розрахунку. Сам факт, що рахунок у програмі виписаний, наприклад, у доларах, не означає, що в українському магазині потрібно прийняти від покупця долари та передати до ПРРО числове значення рахунка як гривні. Для звичайних розрахунків на території України законним платіжним засобом є гривня.
У валютному продажу одночасно існують три суми
Для правильної перевірки такого продажу корисно відокремити три рівні:
|
Що перевіряємо |
Приклад |
|
Сума рахунка у валюті ТВР |
1 000 USD |
|
Гривневий еквівалент конкретної оплати |
12 300 грн |
|
Сума конкретного фіскального чека |
12 300 грн |
Борг покупця у ТВР розраховується у валюті рахунка. Натомість конкретний гривневий платіж має свій гривневий еквівалент, який і потрібно правильно врахувати під час фіскалізації.
Довідка Торгсофт окремо передбачає, що передоплата за рахунком та оплата видаткової накладної можуть бути внесені в різних валютах. При цьому борг за рахунком, борг за видатковою накладною та розподіл передоплати обчислюються у валюті рахунка. Через перерахунок можуть виникати невеликі переплати, недоплати або різниця між боргом за рахунком і сумою боргів за його накладними. Для платежів у валюті, відмінній від валюти рахунка, така різниця сама по собі не означає неправильну роботу програми.

Як працює курс у валютному рахунку
Розглянемо рахунок на 1 000 USD.
При його створенні в Торгсофт встановлено курс: 1 USD = 41,00 грн.
Гривневий еквівалент усієї суми на цьому етапі становить: 1 000 × 41,00 = 41 000 грн.
Далі можливі два різні сценарії.
Якщо курс для оплати зафіксований
Якщо в рахунку увімкнено «Фіксувати курс для оплати», при внесенні платежу курс розрахунку еквівалента редагувати не можна.
Наприклад, покупець спочатку оплачує еквівалент 300 USD: 300 × 41,00 = 12 300 грн.
Залишок боргу: 700 USD.
Якщо друга оплата також розраховується за зафіксованим курсом 41,00: 700 × 41,00 = 28 700 грн.
Разом покупець сплатить: 12 300 + 28 700 = 41 000 грн.
Якщо курс для оплати не зафіксований
Якщо курс не фіксували, при наступній оплаті він може відрізнятися від того, що був на момент виписки рахунка.
Припустімо:
-
перша оплата 300 USD за курсом 41,00 — 12 300 грн;
-
залишок — 700 USD;
-
до другого платежу курс становить 42,00;
-
друга оплата — 29 400 грн.
У результаті покупець сплатив: 12 300 + 29 400 = 41 700 грн.
Це не означає, що після першої оплати потрібно заднім числом змінити її суму з 12 300 грн. У ТВР до другого платежу борг становив 700 USD, а гривневий еквівалент цього боргу змінився через інший курс.
Якщо перша оплата вже була фіскалізована, її чек також залишається на тій гривневій сумі, яка була зареєстрована під час першого розрахунку. Зміна курсу надалі не переписує вже зареєстрований у ДПС чек.
Який курс використовувати для платежу
Не варто орієнтуватися просто на «сьогоднішній курс» під час перевірки старого документа.
Для конкретної операції потрібно подивитися:
-
валюту рахунка;
-
курс, зазначений у рахунку;
-
чи увімкнено «Фіксувати курс для оплати»;
-
курс розрахунку еквівалента, який використовувався при конкретному платежі;
-
суму та валюту фінансового документа;
-
фактичну гривневу суму, отриману від покупця;
-
суму вже зареєстрованого фіскального чека.
Якщо підприємство використовує договірну валютну прив'язку, правило визначення гривневого еквівалента має відповідати умовам конкретного продажу. Саме тому в Торгсофт передбачена можливість як змінювати курс при оплаті, так і зафіксувати його в рахунку.
Як фіскалізується перша часткова оплата
Якщо покупець платить частинами готівкою або платіжною карткою, ДПС вимагає окремий фіскальний чек на кожну частину розрахунку. У ПРРО ДПС для цього передбачені умови:
-
«Передплата»;
-
«Чергова сплата»;
-
«Остаточний розрахунок».
Наприклад, за валютним рахунком на 1 000 USD покупець сплачує карткою перші 12 300 грн.
Якщо це перший частковий розрахунок, у ТВР формується чек передоплати на поточну суму платежу — 12 300 грн.
Наступна оплата, яка ще не закриває борг, оформлюється як «Чергова сплата», а платіж, яким борг закривається, — як «Остаточний розрахунок». Для чергової сплати ДПС передбачає відображення раніше отриманих оплат, поточної суми у гривневому виразі та фіскального номера першого чека передоплати.
Не потрібно вручну переводити одну одиницю товару в 0,3 одиниці
Для режиму ТВР довідка Торгсофт описує іншу логіку, ніж пропорційне зменшення фізичної кількості товару.
У чеках передоплати, чергової сплати та остаточного розрахунку зазначаються повна вартість і повна кількість товарів документа, а сума конкретного чека дорівнює сумі поточної оплати.
Тобто для товару в кількості 1 шт. не потрібно вручну вказувати 0,3 шт. лише через те, що покупець оплатив 30% вартості. Саме в цьому місці робочі матеріали до теми потрібно читати з урахуванням актуальної логіки ТВР.
ДПС зі свого боку вимагає, щоб чек передоплати ідентифікував предмет майбутнього продажу та показував фактично отриману суму, а остаточний розрахунок містив повну номенклатуру, ціну, кількість і враховував попередні платежі.
Який режим друку чека використовувати при оплаті частинами
У Налаштування → Параметри → Чек для ТВР є параметр «Друк чека накладної на ПРРО».

«На суму оплати»
Чек формується на суму, яку покупець фактично сплачує зараз. Якщо вона не закриває борг, це буде передоплата або чергова сплата.
Для звичайної схеми: аванс → друга оплата → остаточна оплата цей режим безпосередньо відповідає логіці окремої фіскалізації кожного карткового або готівкового платежу.
«На суму оплати та боргу»
У цьому режимі при неповній оплаті Торгсофт може сформувати чек, який завершує розрахунок з урахуванням боргу. Після такого чека наступний чек при подальшому внесенні оплати за тією самою накладною у логіці ТВР уже не формується.
Тому цей режим не варто автоматично застосовувати до схеми, де покупець пізніше ще вноситиме частини боргу готівкою або карткою: за чинним роз'ясненням ДПС кожен такий платіж є окремою розрахунковою операцією і потребує окремого чека.
«Запитати користувача»
Перед формуванням документа оператор обирає потрібний сценарій.
Такий варіант зручний, якщо в одному магазині є різні схеми:
-
звичайна передоплата;
-
продаж із залишком боргу;
-
частина платежів через IBAN;
-
карткова доплата при відвантаженні.
Але касир повинен розуміти, який платіж уже фіскалізовано і як буде сплачено залишок.

Що змінюється, якщо курс між платежами зріс
Повернемося до прикладу:
-
рахунок — 1 000 USD;
-
перша оплата — 300 USD × 41,00 = 12 300 грн;
-
залишок — 700 USD;
-
перед другою оплатою курс змінився до 42,00;
-
друга оплата за новим курсом — 29 400 грн.
Якщо перша оплата вже має фіскальний чек на 12 300 грн, цей чек залишається частиною історії розрахунку.
При остаточному розрахунку потрібно узгодити: попередня фіскалізована сума + поточна гривнева оплата + залишок боргу за валютним документом.
Саме на цьому етапі старі версії алгоритму могли отримувати різні гривневі бази для однієї операції.
Чому з'являється «Сума часткової сплати не може перевищувати загальну суму»
Повний текст має вигляд приблизно так:
Код помилки: 9 DocumentValidationError
Сума часткової сплати XXX.XX не може перевищувати загальну суму YYY.YY.
Цей конкретний випадок зафіксований у внутрішній історії розробки Торгсофт. 2 жовтня 2025 року було виправлено сценарій, який міг виникати при формуванні чека за документом не в національній валюті, якщо проведена гривнева оплата була більшою за розраховану гривневу суму документа.
Причинно це можна уявити так.
Припустімо, валютний документ має вартість: 100 USD.
Один етап алгоритму розрахував його гривневий еквівалент як: 100 × 41 = 4 100 грн.
А фактичний платіж після зміни курсу становить: 100 × 42 = 4 200 грн.
Якщо у фіскальному документі одночасно передати:
-
загальну суму — 4 100 грн;
-
часткову сплату — 4 200 грн,
валідація закономірно не пропустить документ: часткова сплата арифметично перевищує його загальну суму.
Проблема тут не в тому, що покупець не мав права заплатити гривневий еквівалент за новим курсом. Проблема — у тому, що в одному фіскальному документі використано несумісні гривневі значення.
Саме цей клас розбіжностей описаний і в робочих матеріалах до теми.
Чи потрібно вручну зменшувати платіж після такого повідомлення
Ні. Якщо покупець фактично сплатив 4 200 грн, не потрібно змінювати фінансовий документ на 4 100 грн лише для того, щоб ПРРО прийняв чек.
Так само не потрібно:
-
змінювати курс заднім числом;
-
зменшувати отриману суму;
-
додавати штучну знижку;
-
створювати товар або послугу на різницю;
-
вручну коригувати фіскальні таблиці бази.
Якщо сценарій відповідає відомому випадку з валютною накладною, насамперед потрібно перевірити версію Торгсофт і працювати на актуальному оновленні, оскільки ця причина вже виправлялася на рівні алгоритму формування чека.
Якщо те саме повідомлення відтворюється в актуальній версії, потрібно перевіряти документи конкретної операції.
Як перевірити валютну накладну після коду 9
Крок 1. Не формуйте чек повторно, доки не перевірено його статус
DocumentValidationError означає відмову валідації, але при будь-якій невизначеній ситуації спочатку перевірте Аналітику за програмним РРО.
Потрібно встановити:
-
чи має документ фіскальний номер;
-
чи справді його відхилено;
-
чи не зареєструвався чек, а відповідь лише не повернулася до робочого місця;
-
чи немає іншого чека за тією самою оплатою.
Не варто створювати дубль розрахункової операції.
Крок 2. Прочитайте повний текст після DocumentValidationError
Код 9 сам по собі не означає валютну розбіжність. Важлива саме фраза після нього.
Наприклад, це можуть бути різні ситуації: «Сума часткової сплати … не може перевищувати загальну суму …» або «Підсумки по формах оплати. Сума по рядках … не дорівнює загальній сумі …».
Для другого виду повідомлення в історії Торгсофт також є окремі виправлення, тому не потрібно застосовувати до всіх кодів 9 один спосіб виправлення.
Крок 3. Перевірте рахунок
У ТВР запишіть:
-
валюту;
-
суму;
-
курс;
-
гривневий еквівалент;
-
стан перемикача «Фіксувати курс для оплати».
Якщо рахунок виписували давно, ці дані важливіші за курс, який встановлено в програмі сьогодні.
Крок 4. Перевірте кожну попередню оплату
Для кожного платежу потрібно встановити:
-
дату;
-
валюту фінансового документа;
-
суму;
-
використаний курс;
-
гривневий еквівалент;
-
форму оплати;
-
чи друкувався ПРРО-чек;
-
фіскальний номер цього чека.
Зручно скласти таблицю:
|
Платіж |
Борг у валюті до платежу |
Курс |
Оплачено у гривні |
Фіскальний чек |
|
Передоплата |
1 000 USD |
41,00 |
12 300 грн |
є |
|
Чергова сплата |
700 USD |
41,50 |
8 300 грн |
є |
|
Поточна |
500 USD |
42,00 |
… |
не сформовано |
Тоді видно, чи на різних етапах справді використовувалися різні курси.
Крок 5. Перевірте поточний борг саме у валюті рахунка
Це принципова перевірка.
Не намагайтеся визначити залишок тільки так: первісний гривневий еквівалент мінус усі гривневі платежі. Якщо курс змінювався, такий розрахунок може дати неправильну картину.
У ТВР борг за рахунком та накладними розраховується у валюті рахунка. Саме від нього потрібно переходити до гривневого еквівалента поточного платежу.
Приклад зміни курсу при трьох платежах
Рахунок: 500 EUR.
Перша передоплата
Курс — 45,00.
Покупець оплачує еквівалент 100 EUR: 4 500 грн.
Борг: 400 EUR.
Друга оплата
Курс — 45,50.
Покупець оплачує еквівалент 150 EUR: 6 825 грн.
Борг: 250 EUR.
Остаточний розрахунок
Курс — 46,00.
Останні 250 EUR: 11 500 грн.
Загалом покупець заплатив: 4 500 + 6 825 + 11 500 = 22 825 грн. При цьому сам рахунок весь час становив 500 EUR.
Якби на першому етапі просто зафіксувати гривневий еквівалент 500 × 45 = 22 500 грн і надалі порівнювати всі платежі тільки з цією первісною гривневою цифрою, останні платежі могли б виглядати як «переплата» на 325 грн.
Для валютного рахунка це неправильний спосіб контролю. Потрібно врахувати, за яким правилом курс застосовувався до кожної частини зобов'язання.
А якщо після перерахунку залишилося 0,01–0,10 грн
При конвертації валюти можуть виникати дробові значення: 37,83 EUR × 45,71 = 1 729,8093 грн.
У фінансових та фіскальних документах потрібно отримати суму з точністю до копійки. Якщо різні частини розрахунку округлюються на різних етапах, з'являється невеликий залишок.
У ТВР довідка прямо передбачає можливість невеликих переплат і недоплат при оплаті у валюті, відмінній від валюти рахунка. Але це не означає, що ПРРО дозволить невідповідність у самому фіскальному документі.
Для чека повинні арифметично збігатися: товарні суми → загальний підсумок → суми за формами оплати.
Положення №13 вимагає зазначати у фіскальному чеку форму оплати, суму за цією формою та валюту операції. Тому навіть різницю в одну копійку не варто приховувати ручним додаванням умовного товару «Округлення».
Що робити, якщо передоплата більша за борг
Це потрібно відрізняти від DocumentValidationError.
У ТВР можлива нормальна бізнес-ситуація, коли внесена передоплата за рахунком перевищує його поточний борг.
Довідка Торгсофт передбачає окрему обробку такої переплати: при формуванні або оплаті накладної програма може запропонувати розподілити її на документ; якщо всю переплату не прив'язують до накладної, частина залишається як передоплата за рахунком.
Тобто потрібно розрізняти: реальну переплату покупця — у ТВР є більше коштів, ніж боргу і неправильне контрольне співвідношення ПРРО — у сформованому XML часткова сплата виявилася більшою за передану загальну суму документа. Це різні ситуації.
Що відбувається, якщо першу оплату внесли через IBAN
Окремо потрібно перевіряти спосіб отримання коштів, а не лише валюту.
За чинним роз'ясненням ДПС, якщо покупець перераховує гроші безпосередньо на поточний рахунок продавця за реквізитами IBAN, РРО/ПРРО може не застосовуватися для такого платежу. Якщо один платіж був через IBAN, а наступний — готівкою, ДПС вимагає чек на готівкову розрахункову операцію із врахуванням раніше отриманої суми.
Тому для валютного рахунка запитання «це перша чи друга оплата?» недостатньо.
Потрібно встановити:
-
IBAN;
-
платіжна картка;
-
готівка;
-
інша форма розрахунку.
Від цього залежить і необхідність фіскалізації конкретного етапу.
Чи можна після зміни курсу змінити першу передоплату
Якщо фіскальний чек ще не створювався і фінансовий документ можна коректно виправити за правилами обліку, ситуацію оцінюють за станом пов'язаних документів.
Але якщо чек передоплати вже зареєстрований ДПС, не потрібно видаляти фінансову оплату або змінювати її суму лише тому, що курс став іншим.
Фіскальний чек зафіксував конкретну гривневу суму конкретної розрахункової операції.
Якщо покупець відмовився від замовлення або потрібно скасувати вже фіскалізовану передоплату, використовується штатна операція повернення, а не локальне видалення платежу.
Чи потрібно змінювати старий курс після його зростання
Ні, якщо йдеться про спробу «підігнати» історичні документи під нову гривневу суму.
Курс у новій оплаті й курс, за яким була проведена попередня оплата, виконують різні функції.
Після першого платежу потрібно зберегти відповідність: фактична сума оплати ↔ фінансовий документ ↔ фіскальний чек.
Зміна курсу має впливати на той етап, для якого вона застосовується відповідно до умов рахунка, а не переписувати вже завершені розрахункові операції.
Які сценарії перевіряти в першу чергу
|
Ситуація |
Що перевірити |
|
Курс зафіксований у рахунку |
Чи всі оплати розраховуються за зафіксованою базою |
|
Курс змінюється між платежами |
Курс і гривневий еквівалент кожного платежу окремо |
|
Передоплата готівкою або карткою |
Окремий чек на кожну частину |
|
Передоплата через IBAN |
Чи взагалі виникала розрахункова операція для ПРРО |
|
У чеку часткова сплата > загальна сума |
Версію Торгсофт і гривневі еквіваленти документа та платежу |
|
Є різниця в одну або кілька копійок |
Порядок конвертації та округлення |
|
Переплачено сам рахунок |
Розподіл передоплати між накладними й залишок передоплати |
|
Перший чек уже фіскалізовано |
Не змінювати його заднім числом; врахувати у наступному розрахунку |
Що не потрібно робити при розбіжності
Не варто:
-
міняти старий курс лише для того, щоб зникло повідомлення ПРРО;
-
зменшувати фактично отриману від покупця суму у фінансовому документі;
-
змінювати кількість товару на дробову тільки через часткову оплату в ТВР;
-
видаляти вже фіскалізовану передоплату;
-
створювати довільний товар або послугу на 0,01 грн;
-
багаторазово повторювати відправлення того самого чека;
-
вручну редагувати фіскальні дані в базі;
-
оцінювати старий платіж за курсом, який встановлений у програмі зараз.
Спочатку потрібно відновити реальні курси, платежі та фіскальні документи конкретного замовлення.
Що підготувати для технічної підтримки
Для валютного випадку краще одразу передати дані, за якими можна відтворити весь розрахунок:
-
номер і дату рахунка;
-
валюту рахунка;
-
суму у валюті;
-
курс, встановлений при створенні рахунка;
-
чи ввімкнено «Фіксувати курс для оплати»;
-
номер і дату видаткової накладної;
-
усі платежі по порядку — дата, сума, валюта та курс;
-
гривневий еквівалент кожного платежу;
-
спосіб кожної оплати — готівка, картка, IBAN;
-
фіскальні номери вже сформованих чеків;
-
суму поточного боргу у валюті рахунка;
-
повний текст DocumentValidationError, а не лише код 9;
-
знімок екрана з повідомленням;
-
версію Торгсофт;
-
інформацію, чи змінювали після першої передоплати товари, ціни, кількість або знижки.
Не потрібно передавати пароль від КЕП або файл особистого ключа для перевірки арифметики валютного платежу.
Основне правило для валютної передоплати
У ТВР валюта рахунка, гривневий еквівалент платежу та сума фіскального чека виконують різні функції.
Борг ведеться у валюті рахунка. Кожна часткова оплата має конкретний курс та гривневий еквівалент. Якщо платіж фіскалізується, ПРРО повинен отримати узгоджені гривневі суми поточної операції та коректно врахувати попередні платежі.
Зміна курсу між передоплатою та остаточним розрахунком сама по собі не є підставою переписувати перший платіж. Розбіжність виникає тоді, коли в одному фіскальному документі змішуються суми, розраховані за різними гривневими базами. Саме тому при повідомленні «Сума часткової сплати не може перевищувати загальну суму» потрібно перевіряти не тільки суму чека, а весь ланцюжок: валютний рахунок → курс → фінансові документи оплат → борг у валюті рахунка → гривневі еквіваленти → попередні фіскальні чеки → поточний чек ПРРО.









Повернутися до попереднього кроку