Оплаты · Валюты · Сверка
Валютный счёт и частичные оплаты: отделите долг, курс и комиссию
Клиент полностью оплатил счёт в EUR, а итог в USD после удержаний оказался меньше справочной оценки. Это не обязательно недоплата: восстановим обе валюты и каждый этап движения средств.
Проверяйте долг и поступление в своих валютах
Счёт выставлен в EUR, клиент оплачивает его частями, а платёжный провайдер отражает результат в USD после конвертации и удержаний. Сравнение одного банковского числа с суммой счёта не показывает, остался ли долг. Сначала нужно связать исходные оплаты, затем отдельно объяснить пересчёт и комиссии.
В документации Stripe различаются валюта платёжного средства клиента, валюта списания и валюта расчётов получателя. Они не обязаны совпадать. Stripe: currency presentment and settlement.
Ниже рассмотрен оригинальный упрощённый сценарий: валюта счёта совпадает с валютой подтверждённого списания у клиента. Возможная третья валюта его карты и удержания банка-эмитента не включены. Это операционная сверка, а не инструкция по бухгалтерским проводкам или определению юридического момента погашения.
Соберите четыре отдельные суммы
У счёта нужны исходная валюта и непогашенный остаток. У каждой применённой оплаты — сумма, которая по проверенному основанию покрывает именно этот счёт в его валюте. У конвертации — исходное количество денег, направление курса и сумма в валюте результата до удержаний. У удержаний — свои суммы, валюты и источники.
Затем показывается чистое изменение баланса получателя на выбранном этапе. Оно может относиться к балансу провайдера, а не к уже полученной банковской выплате. Дата доступности средств и факт их перевода на банковский счёт остаются отдельными событиями.
Операционный порядок сверки оплат требует устойчивых ссылок и подтверждённых результатов. Здесь к нему добавляется проверка размерностей: нельзя вычесть USD из EUR и назвать полученное число долгом клиента.
Учебный счёт и первая частичная оплата
Все суммы, курсы и комиссии вымышлены и не относятся к текущему предложению провайдера. Счёт составляет 1 000 EUR. Налоги, возвраты, споры и предыдущие корректировки исключены. По заданным условиям комиссию принимает на себя продавец; долг уменьшается на подтверждённую применённую сумму EUR.
Первая оплата — 400 EUR. Её связь со счётом и результат подтверждены. Остаток клиента равен 1 000 − 400 = 600 EUR. Это основная проверка в валюте обязательства.
Провайдер пересчитал 400 EUR по условному курсу 1,15 USD за один EUR. Сумма до удержаний: 400 × 1,15 = 460 USD. Подтверждённая комиссия этой операции равна 10 USD. Чистое изменение баланса провайдера: 460 − 10 = 450 USD.
Итак, одновременно верны три разных числа: 400 EUR применены к счёту, 450 USD отражены чистыми после удержания, 600 EUR остаются непогашенными. Расчёт «1 000 − 450 = 550» смешивает валюты и не имеет смысла как остаток этого счёта.
Вторая оплата закрывает исходную сумму
Позже подтверждены ещё 600 EUR по тому же счёту. Условный курс этой операции — 1,08 USD/EUR. Пересчёт даёт 600 × 1,08 = 648 USD. Комиссия составляет восемь USD, чистое изменение баланса — 648 − 8 = 640 USD.
В исходной валюте счёт закрыт: 1 000 − 400 − 600 = 0 EUR. До удержаний получено 460 + 648 = 1 108 USD. Всего комиссий — 10 + 8 = 18 USD. Чистый итог двух операций: 450 + 640 = 1 090 USD, что также равно 1 108 − 18.
Эти равенства относятся к выбранным подтверждённым событиям. В реальном процессе отдельно проверяют, какая сумма действительно погасила клиентское обязательство по условиям расчёта. Если удержание должно было нести другое лицо или часть исходной оплаты не подтверждена, нельзя автоматически применить модель продавца из примера.
Восстановите отклонение от справочной оценки
Предположим, для первоначального внутреннего планового обзора счёт оценили по условной базе 1,10 USD/EUR: 1 000 × 1,10 = 1 100 USD. Это сохранённая справочная оценка, не обещанный курс будущей сделки и не утверждение о бухгалтерской стоимости требования.
По первой оплате отличие пересчёта от этой базы равно 400 × (1,15 − 1,10) = +20 USD. По второй — 600 × (1,08 − 1,10) = −12 USD. Вместе изменение суммы до комиссий составляет +8 USD.
Получается объяснимый мост: 1 100 справочной оценки + 8 изменения пересчёта − 18 комиссий = 1 090 чистого результата. Разница с первоначальными 1 100 составляет минус десять USD, хотя долг клиента уже равен нулю EUR.
Не создавайте из этих десяти новый счёт клиенту. Они не доказывают недоплату: в данном сценарии разницу полностью объясняют пересчёт и расходы продавца. Бухгалтерская классификация курсовых разниц, переоценка на отчётные даты и налоги определяются отдельно ответственным специалистом.
Средний курс требует весов и подписи
Для двух подтверждённых конвертаций общий курс до комиссий можно восстановить как 1 108 USD / 1 000 EUR = 1,108 USD/EUR. Это среднее, взвешенное исходными суммами 400 и 600, а не числом операций.
Простое среднее двух курсов равно (1,15 + 1,08) / 2 = 1,115. Умножение его на 1 000 дало бы 1 115 USD, на семь больше фактических 1 108. Платежи разного размера не должны получать одинаковый вес без причины.
Если разделить чистые 1 090 на 1 000, получится 1,09 USD/EUR после удержаний. Это другой показатель: в него вошли комиссии. Его нельзя подписать как исходный курс конвертации провайдера или использовать для восстановления курса каждой отдельной оплаты.
Сохраните направление котировки. Здесь сумму EUR умножают на USD/EUR, чтобы получить USD. Обратный курс задаётся иначе. Число без пары валют, направления и этапа расчёта недостаточно для проверки.
Используйте данные источника, а не догадку по остатку
Stripe описывает в Balance Transaction сумму операции, комиссию и net как разность amount и fee. Поле exchange_rate при применимости объясняет переход между исходной валютой и валютой записи баланса. Stripe API: Balance Transaction.
Для своего процесса найдите соответствующие записи провайдера и связь с исходной оплатой. Не переносите названия полей на другое подключение без проверки. Комиссия может отражаться отдельной записью или уже входить в показанный чистый результат; повторный вычет искажает сверку.
Если известны только чистые 450 USD, но нет исходной суммы, комиссии или курса, нельзя однозначно восстановить все остальные величины. Несколько сочетаний дают одинаковый итог. Оставьте вопрос открытым и запросите нужный источник, вместо подстановки сегодняшнего справочного курса.
Размерность технической суммы также проверяется отдельно. API могут использовать минимальные денежные единицы, и правила зависят от валюты. Не применяйте универсальное деление на 100 ко всем валютам только потому, что оно подходит двум валютам учебного примера.
Баланс провайдера ещё не означает банковское поступление
В Stripe поля status и available_on относятся к доступности чистых средств в Stripe balance. Они не являются подтверждением поступления на банковский счёт. Stripe: поля доступности balance transaction.
Поэтому рядом с валютной сверкой сохраняйте нужную стадию: результат оплаты, изменение баланса провайдера, доступность для выплаты, сама выплата и банковское подтверждение. Одно движение при переходе между этими стадиями не становится новой оплатой клиента.
Если несколько операций вошли в общую выплату, свяжите её состав с исходными строками. Положительный общий итог не исключает пропуск одной операции и лишнюю другую. Обзор денежных дат помогает отдельно проверить, когда сумма пригодна для следующего обязательства.
Данные и приёмочный чек-лист
Сохраните счёт, валюту обязательства, применённые исходные суммы, ссылки на оплаты и результаты их подтверждения. У конвертации нужны пара валют, направление, курс, сумма до удержаний и источник. У комиссии — сумма, валюта и способ отражения; у чистого результата — стадия доступности.
- Первая оплата оставляет 600 EUR, а не 550 смешанных единиц.
- Первая конвертация даёт 460 USD до комиссии и 450 после неё.
- Вторая даёт 648 и 640 USD соответственно.
- Суммы 400 + 600 закрывают 1 000 EUR по принятому основанию.
- Валовой итог 1 108 минус комиссии 18 равен чистым 1 090 USD.
- Мост 1 100 + 8 − 18 объясняет разницу без выдуманной недоплаты.
- Взвешенный курс 1,108 не подменяется простым средним 1,115 или чистым отношением 1,09.
- Неизвестные исходные поля остаются ограничением сверки.
- Доступность у провайдера и банковское поступление проверяются отдельно.
Для SABSUS обсудите исходные поля через платежи, финансы и заказы. Мультивалютность, детализацию конвертаций и комиссии выбранного подключения необходимо подтвердить в конфигурации. Наличие финансового модуля не подтверждает эти возможности автоматически.
Короткие ответы
Меньший чистый USD-итог означает долг клиента?
Не сам по себе. Сначала проверьте применённую сумму в валюте обязательства, затем курс и распределение удержаний по подтверждённым условиям.
Можно восстановить курс из net и суммы счёта?
Такое отношение включает удержания и может смешивать несколько оплат. Для курса конкретной конвертации нужны её исходные данные.
Нулевой долг означает доступные деньги на банковском счёте?
Нет. Погашение обязательства и дальнейшие стадии движения средств имеют разные подтверждения и даты.