Платежная инфраструктура без vendor lock-in
Multi-provider stack для украинских ФОП-3 SaaS. WayForPay для подписок и разовых покупок, LiqPay + Monobank для возвратов. Stripe остается в репо для Y2 EU expansion.
Provider-agnostic архитектура — переключение между провайдерами через одну env переменную. 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 потери при каждой конверсии в USD. Для плана $49/месяц это ~$0.70-1.00 потерь в месяц на клиента — деньги, которые лучше оставить клиенту или в продукте.
WayForPay принимает украинского ФОП-3 за 1-3 рабочих дня KYC, нативно начисляет в UAH без FX, и имеет автоматическую ПРРО интеграцию. LiqPay, Monobank как fallback refund-providers для надежности. Этого достаточно для UA-first launch.
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 обязательный
- • ПРРО integration на KYC — fiscal receipts автоматически
- • 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 ограничен — используем для one-off платежей когда 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% от оборота) при продаже услуг резидентам Украины обязаны использовать программную РРО — регистратор расчетных операций. Это fiscal receipt, который автоматически отправляется в налоговую при каждой транзакции.
- ✓ Автоматическое формирование ПРРО чека на каждую успешную транзакцию
- ✓ Email клиенту с fiscal receipt (юридически закрывающий документ)
- ✓ Передача чека в налоговую через API cabinet
- ✓ Расчет единого налога (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, но учитывай в roadmap.
Что под капотом
SubscriptionProvider interface
interface SubscriptionProvider {
id: 'demo' | 'wayforpay' | 'stripe';
isConfigured(): boolean;
createCheckout(args): Promise<{ url }>;
createPortal(args): Promise<
| { kind: 'hosted'; url }
| { kind: 'unsupported'; reason }
>;
} Каждый провайдер реализует этот interface. Registry в <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), никогда не throws.
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 верифицируются до touching 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
Метрики emitted из 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 маршрутизируются к провайдеру, которым была изначально оплачена подписка. Сценарий: клиент возвращает посылку → AI агент распознает событие через KeyCRM → выполняет refund через соответствующего провайдера (WayForPay refund API, LiqPay action=refund, Monobank API). Для заказов оплаченных через WayForPay — refund через WayForPay. Для других — через LiqPay или Monobank. Все провайдеры PCI DSS compliant и поддерживают ПРРО интеграцию.
-
Что с ПРРО (программной РРО) и fiscal receipts?
WayForPay имеет нативную интеграцию с ПРРО (Cabinet of Taxpayer) — каждая подписка автоматически выставляет fiscal receipt клиенту по email. Активируется во время KYC. Для ФОП-3 на упрощенной системе (5%) это обязательно при продаже услуг резидентам Украины. Мы передаем metadata заказа (категория услуги, ставка VAT "VAT-exempt для ФОП-3"), остальное — в WayForPay automation.
-
Могу ли я платить крипто / Apple Pay / Google Pay?
Apple Pay + Google Pay — да, через WayForPay native wallet support. Криптовалюты — нет в V1; рассмотрим в Y2 когда будет регуляторная ясность по NBU directive касательно virtual assets.
-
А если WayForPay временно недоступен?
Архитектура provider-agnostic (см. ADR-039) — мы можем emergency-switch на Stripe одной env переменной (BILLING_PROVIDER=stripe), если WayForPay имеет extended outage. Существующие подписки остаются в WayForPay; новые signups идут через Stripe до recovery. Это документировано в 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. Дешевле для маленьких сумм.
-
Выставляете акты, счета, VAT invoices?
Подписки на ФОП-3 — мы ФОП-3 на упрощенной системе (5%), без VAT. WayForPay автоматически формирует fiscal receipt через ПРРО — он юридически является закрывающим документом для большинства случаев. Если ваша бухгалтерия требует service agreement в docx формате — пишите на m.nazar77@gmail.com, выставим вручную. Для legal entities с VAT (редко для UA SMB) — отдельный путь, не оптимизировано при launch.
Вопросы о платежной архитектуре?
30-минутное демо — покажу WayForPay sandbox checkout, LiqPay refund flow, ПРРО receipt sample. Если ты оцениваешь Unitelia с технической стороны — это самый быстрый способ убедиться что мы не handwave.