Платіжна інфраструктура без vendor lock-in
Multi-provider stack для українських ФОП-3 SaaS. WayForPay для підписок і разових покупок, LiqPay + Monobank для повернень. 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. Для повернень використовуємо LiqPay refund API (action=refund) та Monobank як fallback. Це дає нам повну можливість обробляти повернення для замовлень, оплачених через будь-який провайдер.
Stripe не "відкинутий" — він активний у кодовій базі як третій провайдер. Коли матимемо EU LLC або Stripe Atlas (Y2 — після PMF в UA), активуємо одним env-флагом. Дивись ADR-039 для повної декомпозиції.
П'ять провайдерів — одна абстракція
Кожен провайдер закриває специфічний use case. Маршрутизація відбувається на orchestrator layer через <code class="font-mono text-primary-500">SubscriptionProvider</code> interface + multi-provider <code class="font-mono text-primary-500">refund-providers.ts</code> 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
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: 'demo' | 'wayforpay' | 'stripe';
isConfigured(): boolean;
createCheckout(args): Promise<{ url }>;
createPortal(args): Promise<
| { kind: 'hosted'; url }
| { kind: 'unsupported'; reason }
>;
} Кожен провайдер реалізує цей інтерфейс. Реєстр у <code class="font-mono">billing/provider.ts</code>, вибір через <code class="font-mono">BILLING_PROVIDER</code> env var. Unsupported portal (WayForPay не має hosted billing portal) — UI fallback на /dashboard/settings.
Refund execution (multi-provider)
type RefundProviderId =
| 'liqpay' | 'monobank'
| 'stripe' | 'manual';
executePaymentRefund(provider, {
paymentIntentId,
amountUah,
reason,
idempotencyKey,
}) => Promise<RefundResult> Маршрутизація на провайдера яким було сплачено замовлення. Idempotency через <code class="font-mono">refund-log id</code> — replay-safe. Failures повертають structured result (succeeded/failed/manual_required), ніколи не кидають.
Webhook signature verification
- WayForPay: HMAC-MD5 на
merchantSecretKey - LiqPay: sha1(secret + data + secret) base64
- Monobank: X-Token header + body match
- Stripe: Stripe-Signature header + secret
Кожен webhook route окремий — <code class="font-mono">/webhooks/<provider></code>. 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 в <code class="font-mono">billing-meters</code> → щотижневі 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 обовʼязковий. Те саме для LiqPay, Monobank та інших провайдерів.
-
Як автоматизуються повернення (refunds)?
Refunds виконуються через провайдера, яким було сплачено оригінальне замовлення. Якщо замовлення оплачено WayForPay — refund йде в WayForPay refund API. Якщо LiqPay — до LiqPay action=refund тощо. Це забезпечує прямі грошові потоки без посередників. AI агент розпізнає повернення через KeyCRM або Нова Пошта event (зміна статусу ТТН) → запускає return workflow → автоматично скеровує refund до вірного провайдера. Ніякої переплати, ніякого friction.
-
Що з ПРРО (програмною РРО) і фіскальними чеками?
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, LiqPay refund flow, ПРРО receipt sample. Якщо ти оцінюєш Unitelia з технічної сторони — це найшвидший спосіб переконатись що ми не handwave.