A

P2P money-transfer app

for a Czech payment institution

4 min

from install to a verified account

87%

of users pass KYC on the first attempt
Native Mobile Development
iOS development
Android development
UI/UX Design
FinTech
P2P money-transfer app: send money and balance screens

About the client

A Czech payment institution licensed and supervised by the Czech National Bank since 2017. The company is a direct SEPA participant: it issues its own euro IBANs and sends payments across Europe without an intermediary bank. Its customers worked through a web portal and agent offices, and the client wanted a mobile product that would let people move money in any direction: P2P, SEPA and SWIFT, from one app.

Founders’ goals

Build a P2P money-transfer app from scratch, from UX/UI design to store release
Meet Czech National Bank and EU KYC/AML requirements from day one
Protect user funds and data with bank-grade security, without adding friction

Needs

Native iOS and Android apps where a user signs up, verifies their identity remotely and opens a euro account with an IBAN. From there they send money to other users, to any SEPA account, and abroad via SWIFT. Every payment shows its status in real time, and onboarding accepts both EU and non-EU identity documents.

Challenges

01

KYC that doesn't kill conversion

In early tests, the standard verification flow rejected about 30% of non-EU documents because of glare, bilingual fields and unfamiliar residence permits. We embedded the Sumsub SDK with guided document capture and a liveness check, added country-specific document lists and on-screen retry hints, and saved progress so users could finish later instead of starting over. First-attempt pass rate rose from 61% to 87%.

02

Security without friction

A money-transfer app is a prime target for account takeover. We added biometric login with a PIN fallback, SSL pinning, jailbreak, root and debugger detection, and encrypted on-device storage. New payees and transfers above €1,000 need a step-up confirmation, while everyday payments stay one tap away.

03

One status model for three payment rails

SEPA, SWIFT and internal P2P transfers confirm at different speeds, from seconds to days. We built an idempotent payment flow and a single status model (created → processing → completed / returned) with push notifications at each step. Users can't send the same payment twice by accident, and support tickets about "where is my money" dropped by 40%.
Solution development

Backend Development

The backend connects the app to the client's core payment system, its SEPA clearing and the KYC provider. It processes verification webhooks, runs AML and sanctions screening before the first payment, and applies per-user limits. Every login, payee change and payment goes to an audit log for the regulator. Identity documents go straight to the verification provider and are never stored on app servers.

Mobile Application Development

digital banking

Built from scratch, design included: native iOS (SwiftUI) and Android (Kotlin) apps that take a user from download to first payment in one session. Sign-up, identity verification, a personal IBAN and transfers across SEPA and SWIFT all live in one flow. Every money action shows the amount, fee and arrival time before the user confirms.

Fast Sign-Up

Registration by phone number with an SMS code. The user sets a PIN and turns on Face ID, Touch ID or fingerprint login in the same flow.

Remote KYC Verification

Document scan, selfie and liveness check inside the app. Users see the verification status at every step and get a push notification once the account is approved, usually within minutes.

Euro Account with Own IBAN

Every verified user gets a personal EUR account with a Czech IBAN, ready to receive salary and payments from day one.

P2P Transfers

Instant transfers between app users by phone number or username, free of charge and available 24/7.

SEPA Payments

Transfers to any account in the SEPA area, with saved payees and payment templates for regular bills.

International SWIFT Transfers

Payments outside the SEPA area with the fee, exchange rate and expected arrival date shown before sending.

Transaction History and Statements

Real-time status for every payment, search and filters, PDF receipts and monthly statements for landlords, employers and authorities.

Security Center

Active devices and sessions, login alerts, an instant account freeze and transfer limits the user controls.

In-App Support

Chat and FAQ in Czech and English, covering verification, payments and account questions.
Tech stack

Mobile App Tech Stack

Languages

Swift
Kotlin

Frameworks

SwiftUI
Combine
Alamofire
Jetpack Compose
Coroutines
Retrofit
Hilt
Sumsub SDK
LocalAuthentication
BiometricPrompt
Firebase Cloud Messaging

Architecture

MVVM
Clean Architecture

Security

SSL pinning
Keychain / Android Keystore
Jailbreak and root detection

Tests

Unit Tests
UI Tests

Crash reporting tools

Firebase Crashlytics
Mobile banking app screens: onboarding, balance and send money

Achieved

results

4 min

Average time from install to a verified account, down from 1–2 days of in-person checks

87%

First-attempt KYC pass rate, up from 61%

3 payment rails

SEPA, SWIFT and P2P in one app

99.8%

Crash-free sessions, with zero security incidents