Платіжна інфраструктура без vendor lock-in
Multi-provider stack для українських ФОП-3 SaaS. WayForPay для підписок, NovaPay для повернень з нативною Нова Пошта інтеграцією, LiqPay + Monobank як fallback. Stripe залишається в репо для Y2 EU expansion.
Архітектура provider-agnostic — переключення між провайдерами через один env var. PCI DSS Level 1, 3-D Secure 2.0, ПРРО integration з коробки.
Чому не Stripe як primary?
Stripe — це industry standard для SaaS на Заході, але для українського ФОП-3 він не є практичним вибором у V1. Stripe не приймає прямо UA ФОП реєстрацію — потрібно або EU LLC (Estonia OÜ ~€600 + щорічні витрати, Польща sp. z o.o. ~₴80k setup), або Stripe Atlas (US Delaware LLC, $500 setup + щорічна звітність до IRS).
До того ж UAH-recurring через Stripe має 1.5-2% FX losses при кожній conversion в USD. Для $49/міс плану це ~$0.70-1.00 втрати на місяць на клієнта — гроші які краще лишити у клієнта або в продукті.
WayForPay приймає українського ФОП-3 за 1-3 робочі дні KYC, нативно charges в UAH без FX, і має автоматичну ПРРО integration. NovaPay додає нативний refund-flow тісно інтегрований з Нова Пошта shipping. Ці два мають все що треба для UA-first launch.
Stripe не "відкинутий" — він активний у кодовій базі як третій провайдер. Коли матимемо EU LLC або Stripe Atlas (Y2 — після PMF в UA), активуємо одним env-флагом. Дивись ADR-039 для повної декомпозиції.
П'ять провайдерів — одна абстракція
Кожен провайдер закриває специфічний use case. Маршрутизація відбувається на orchestrator
layer через SubscriptionProvider interface +
multi-provider refund-providers.ts switch.
WayForPay
live (post-KYC)Recurring tokenized charges, ПРРО integration, monthly/annual plans, dunning + payment retries.
- • Subscription Cloud (recurring без manual tokenization)
- • Card + Apple Pay + Google Pay
- • 3-D Secure 2.0 обовʼязковий
- • ПРРО intgration на KYC — фіскальні чеки автоматично
- • PCI DSS Level 1
- • EU expansion path через Flitt rebrand
NovaPay
live (post-KYC)Refund API з нативним Нова Пошта tie-in: 'посилка повернена в магазин → авто-refund клієнту'. One-off add-on покупки.
- • Refund + void API
- • Hosted checkout for one-off покупок
- • Webhooks для recurring reconciliation
- • Apple Pay + Google Pay
- • PCI DSS compliant
- • Нова Пошта shipping integration — moat
LiqPay
live (multi-provider switch)Найперевіреніший UA gateway (PrivatBank). Використовуємо для refund execution для замовлень оплачених через LiqPay.
- • Refund API (sha1 signature)
- • Multi-currency: UAH, USD, EUR
- • Apple Pay + Google Pay
- • Reverse-payment flow для refunds
Monobank Acquiring
deferred (P2)Найдешевший UA acquirer (1.4-2.5%). Recurring обмежений — використаємо для одноразових платежів коли buyer-funnel стабілізується.
- • Invoice cancel/refund API
- • X-Token авторизація
- • Найдешевша комісія на UA market
- • Recurring потребує окремого банкера-договору
Stripe
deferred (Y2 EU)Третій провайдер у репо. Активується коли буде EU LLC або Stripe Atlas + EU/US customer volume виправдовує вартість.
- • Subscription + Tax + Billing Portal
- • Best-in-class dev DX
- • Multi-currency native
- • Activate via BILLING_PROVIDER=stripe
ФОП-3 + ПРРО — без ручної звітності
Українські SaaS на ФОП-3 (спрощена система 5% від обороту) при продажу послуг резидентам України зобов'язані використовувати програмну РРО — реєстратор розрахункових операцій. Це фіскальний чек, який автоматично йде у податкову при кожній транзакції.
- ✓ Автоматичне формування ПРРО чека на кожну успішну транзакцію
- ✓ Емейл клієнту з фіскальним чеком (юридично закриваючий документ)
- ✓ Передача чека в податкову через API кабінету платника
- ✓ Розрахунок єдиного податку (5%) автоматично з вхідного обороту
- ✓ Активувати ПРРО integration під час WayForPay KYC (~10 хв розмови)
- ✓ Подати квартальну ФОП-3 декларацію — наш Tax Auto-Pilot агент генерує
- ✓ Тримати ФОП-3 ліміт у межах ~₴8.3M/рік оборот (~$200k)
- ✓ При наближенні до ліміту — переходити на ТОВ (плануй заздалегідь)
Якщо плануєш scale > $200k ARR — починай реєстрацію ТОВ паралельно з launch. Y1 mantra $30k MRR = $360k ARR перевищує ФОП-3 ліміт через ~6 місяців. Це не блокер для launch, але враховуй у роадмепі.
Що під капотом
SubscriptionProvider interface
interface SubscriptionProvider {
id: 'wayforpay' | 'novapay' | 'stripe';
isConfigured(): boolean;
createCheckout(args): Promise<{ url }>;
createPortal(args): Promise<
| { kind: 'hosted'; url }
| { kind: 'unsupported'; reason }
>;
}
Кожен провайдер реалізує цей інтерфейс. Реєстр у billing/provider.ts,
вибір через BILLING_PROVIDER env var. Unsupported portal
(WayForPay/NovaPay не мають hosted billing portal) — UI fallback на /dashboard/settings.
Refund execution (multi-provider)
type RefundProviderId =
| 'wayforpay' | 'novapay'
| 'liqpay' | 'monobank'
| 'stripe' | 'manual';
executePaymentRefund(provider, {
paymentIntentId,
amountUah,
reason,
idempotencyKey,
}) => Promise<RefundResult>
Маршрутизація на провайдера яким було сплачено замовлення. Idempotency через
refund-log id — replay-safe. Failures повертають
structured result (succeeded/failed/manual_required), ніколи не кидають.
Webhook signature verification
- WayForPay: HMAC-MD5 на
merchantSecretKey - NovaPay: ApiKey header + signed payload
- LiqPay: sha1(secret + data + secret) base64
- Monobank: X-Token header + body match
- Stripe: Stripe-Signature header + secret
Кожен webhook route окремий — /webhooks/<provider>.
Signatures верифікуються до того як зворушити DB.
Outcome billing meters
- $0.50 / closed_deal
- $0.10 / ttn_generated
- 1-2% / ad_budget_managed
- $1.00 / return_resolved
- $2.00 / recovered_oos_sale
Метрики emitt-ються з agent runtime → aggregate в billing-meters
→ щотижневі invoice items в WayForPay. Failures у retry sweep cron. Operator
бачить usage в real-time у dashboard.
Кодова база відкрита на GitHub — apps/orchestrator/src/billing/.
Що далі
FAQ — Платежі
-
Чому ви не використовуєте Stripe як primary, як усі західні SaaS?
Stripe для UA ФОП-3 потребує або EU LLC (Estonia OÜ / Польща sp. z o.o.), або Stripe Atlas (US LLC). Обидва шляхи коштують грошей і часу, який ми зараз вкладаємо в продукт. WayForPay приймає українського ФОП-3, інтегрується з ПРРО для автоматичних чеків і має нативний UAH recurring без FX-обмінів. Stripe залишається в кодовій базі — активуємо при Y2 EU expansion.
-
Чи безпечно платити через WayForPay?
WayForPay має сертифікацію PCI DSS Level 1 (найвищий рівень для платіжних провайдерів). Дані картки ніколи не торкаються наших серверів — ви вводите їх на hosted checkout WayForPay; ми отримуємо лише tokenized identifier для recurring charges. 3-D Secure 2.0 обовʼязковий. Те саме для NovaPay, LiqPay, Monobank.
-
Як автоматизуються повернення (refunds)?
NovaPay — стратегічний провайдер для refunds через нативну інтеграцію з Нова Пошта. Сценарій: клієнт повертає посилку → AI агент розпізнає подію через KeyCRM + NovaPay → автоматичний refund → push клієнту. Цей цикл неможливо повторити з WayForPay/LiqPay/Stripe — лише NovaPay має доступ до shipping events. Для замовлень оплачених через інших провайдерів, refund виконується через відповідного провайдера (WayForPay refund API, LiqPay action=refund тощо).
-
Що з ПРРО (програмною РРО) і фіскальними чеками?
WayForPay має нативну інтеграцію з ПРРО (Кабінет платника податків) — кожна підписка автоматично виставляє фіскальний чек клієнту по email. Активується під час KYC. Для ФОП-3 на спрощеній системі (5%) це обовʼязково при продажу послуг резидентам України. Ми передаємо метадані замовлення (категорія послуги, ставка ПДВ "без ПДВ для ФОП-3"), решта — у WayForPay automation.
-
Чи можу я платити криптою / Apple Pay / Google Pay?
Apple Pay + Google Pay — так, через WayForPay native wallet support. Криптовалюти — ні у V1; розглянемо в Y2 коли буде регуляторна ясність по NBU directive щодо віртуальних активів.
-
А якщо WayForPay тимчасово недоступний?
Архітектура provider-agnostic (див. ADR-039) — ми можемо emergency-switch на Stripe за один env var (BILLING_PROVIDER=stripe), якщо WayForPay має extended outage. Існуючі підписки залишаються в WayForPay; нові signups йдуть через Stripe до відновлення. Це задокументовано у production-deploy runbook.
-
Скільки відсотків бере WayForPay? Це вплине на мою ціну?
WayForPay комісія ~2.7-3% від суми + ПРРО fee (~₴1-2 на чек). Ці витрати ми покриваємо з marketplace margin, ваша ціна на Unitelia не змінюється від цього. Для порівняння: Stripe для UA ФОП — 2.9% + $0.30 fixed fee на транзакцію, що для $49/міс плану становить ~$1.72 vs WayForPay ~$1.32-1.47. Дешевше для маленьких сум.
-
Виставляєте акти, рахунки, ПДВ-накладні?
Підписки на ФОП-3 — ми ФОП-3 на спрощеній системі (5%), без ПДВ. WayForPay автоматично формує фіскальний чек через ПРРО — він юридично є закриваючим документом для більшості випадків. Якщо ваша бухгалтерія потребує акт виконаних робіт у форматі docx — пишіть на m.nazar77@gmail.com, виставимо вручну. Юр.особам з ПДВ (рідкісне для UA SMB) — окремий шлях, на старті не оптимізовано.
Питання по платіжній архітектурі?
30-хвилинне демо — покажу WayForPay sandbox checkout, NovaPay refund flow, ПРРО receipt sample. Якщо ти оцінюєш Unitelia з технічної сторони — це найшвидший спосіб переконатись що ми не handwave.