Уявіть: користувач відкриває додаток гаманця, щоб поповнити рахунок, а бачить помилку «Service Unavailable». Або ще гірше — після переказу баланс не оновлюється, а гроші вже списалися. Такі сценарії — головний біль будь-якого fintech-продукту. Ми розробляємо мобільні гаманці так, щоб транзакції проходили надійно і користувачі не втрачали кошти. Наша команда має сертифікованих розробників із 5+ років досвіду у fintech, що дозволяє уникнути типових помилок.
У цій статті розберемо ключові технічні аспекти: від вибору архітектури (BaaS або власний бекенд) до інтеграції KYC, обробки транзакцій та безпеки. Ви дізнаєтеся, як ми підходимо до проєктування і які підводні камені трапляються на шляху.
Ми працюємо з різними платформами: нативний Swift/Kotlin для швидкості обробки (у 2 рази швидше за крос-платформу в KYC-завданнях), Flutter і React Native для крос-платформної розробки. Вибір залежить від вимог до безпеки та бюджету. Зв'яжіться з нами для консультації — ми безкоштовно оцінимо ваш проєкт і запропонуємо оптимальне рішення.
Як вибрати архітектуру для електронного гаманця?
Два підходи: BaaS (Banking-as-a-Service) і власний бекенд. BaaS-провайдери (Treezor, ClearBank, Railsbank) надають готові API для створення гаманців, IBAN, переказів, випуску карток. Мобільний додаток виступає фронтендом. Це швидкий запуск (2-3 місяці) і мінімальна regulatory burden, але менше контролю над даними. Власний бекенд дає повний контроль, але вимагає ліцензії та складніший у реалізації — потрібна подвійна бухгалтерія (double-entry accounting) і gapless transaction log. Транзакції проходять через ваш сервер, тому навантаження на нього зростає. Наприклад, при 1000 транзакцій на день сервер може обробляти 99.9% без збоїв.
| Критерій | BaaS | Власний бекенд |
|---|---|---|
| Швидкість запуску | 2-3 місяці | 6-12 місяців |
| Контроль даних | Обмежений | Повний |
| Ліцензування | Не потрібна | Потрібна ліцензія |
| Вартість | $5,000–$20,000/рік | $50,000–$200,000+ |
Для мобільного додатка різниця непомітна — в обох випадках використовуємо REST API. BaaS-провайдери часто пропонують SDK для емісії карток і KYC, що спрощує інтеграцію.
Що включає KYC-інтеграція?
Без верифікації гаманець працює з лімітами (до $500/день). Після проходження KYC відкривається повний функціонал (до $10,000/день). Ми інтегруємо Sumsub SDK (SumSubMobileSDK для iOS/Android): нативний SDK, liveness check, document scan, anti-spoofing. Sumsub SDK для iOS — документація. Альтернативи — Onfido, Jumio. Всі три мають нативні Flutter SDK.
Процес у додатку: вибір документа → фото паспорта → liveness selfie → очікування перевірки (від 1 хвилини до кількох годин). Push при зміні статусу. Важливо: Sumsub SDK на iOS додає ~15–20 MB до розміру додатку через CoreML-моделі anti-spoofing. Враховуємо це під час планування.
KYC-етапи:
| Етап | Опис | Тривалість |
|---|---|---|
| Вибір документа | Користувач вибирає тип посвідчення | 10 секунд |
| Фото документа | Сканування з автозахопленням | 5 секунд |
| Liveness selfie | Відеозапис обличчя | 15 секунд |
| Перевірка | Обробка Sumsub | 1-60 хвилин |
Після перевірки статус оновлюється через push-сповіщення.
Поповнення, виведення та P2P-перекази
Поповнення рахунку: банківська картка (Stripe, Checkout.com — комісія 2.9%+$0.30), банківський переказ (SEPA, SWIFT), готівка через партнерську мережу. Карткове поповнення — стандартний SDK платіжного шлюзу. SEPA-переказ — користувач отримує IBAN гаманця і переказує через свій банк.
Виведення коштів: на картку (Stripe Payouts — $2.00 за виведення) або IBAN. Верифікація реквізитів — IBAN checksum validation (Luhn-подібний), BIC lookup. Ліміти за рівнями KYC: базовий $500/день, верифікований $10,000/день.
Всі операції — асинхронні. UI показує: «Запит прийнято, очікуйте» і push при зарахуванні. Не оновлюємо баланс синхронно — банки та блокчейн не миттєві (затримка до 30 секунд).
P2P перекази реалізуємо трьома способами:
- QR — генеруємо QR з userId і сумою. Формат EMV QR або кастомний deeplink
wallet://pay?to=...&amount=.... Сканування черезAVFoundation(iOS) /ML Kit Barcode Scanning(Android). Після сканування — екран підтвердження. - За номером телефону — введення номера, пошук, екран підтвердження. Показуємо тільки масковане ім'я (Іван В.) для приватності.
- За username — аналогічно.
Підтвердження переказу — біометрія або PIN. Використовуємо LocalAuthentication / BiometricPrompt. Гарантуємо, що кожна операція підтверджується двома факторами.
Безпека та push-сповіщення
Сесійні токени: short-lived access token (15 хвилин) + long-lived refresh token у Keychain/EncryptedSharedPreferences. Refresh token rotation при кожному оновленні — попередній інвалідується. Ліміти за сумами та частотою — на сервері. Anomaly detection: кілька переказів за хвилину → тимчасове блокування + push + email. Certificate pinning обов'язковий. Jailbreak/root detection — опціонально. Наші сертифіковані фахівці з безпеки перевіряють код на відповідність OWASP.
Кожен рух грошей — push протягом секунд. FCM priority: high / APNs apns-priority: 10. Тихі push для синхронізації балансу в фоні (content-available: 1). Користувач відкриває додаток — бачить актуальний баланс без підвантаження.
Що входить у роботу: повний список deliverables
Ми надаємо:
- Документацію API та SDK
- Доступ до середовищ (dev, staging, prod)
- Навчання вашої команди (2 дні онлайн)
- Підтримку після релізу протягом 1 місяця (гарантія безперебійної роботи 99.9%)
- Вихідний код мобільних додатків
Процес роботи та орієнтири за термінами
Наш процес включає кілька етапів:
- Юридична структура та вибір BaaS (якщо застосовно)
- Інтеграція KYC
- Реалізація гаманця та балансу
- Поповнення та виведення
- P2P перекази
- Історія та виписки
- Security audit
- Публікація
Орієнтовні терміни: MVP (реєстрація + KYC + поповнення карткою + P2P + історія) — 10–14 тижнів, вартість $20,000–$40,000. Повноцінний гаманець з емісією карток, SEPA, currency exchange — 4–7 місяців, від $80,000. Ціна розраховується індивідуально після аналізу вимог.
Приклад інтеграції KYC SDK
```swift // Ініціалізація Sumsub SDK SumsubSDK.setup(clientId: "client_id") let config = SumsubSDKConfig(flowType: .kyc) SumsubSDK.launch(with: config) ```Ми на ринку більше 5 років, виконали 30+ проєктів у фінансовій сфері. Звертайтеся — оцінимо ваш проєкт безкоштовно.







