
This guide walks you through creating a functional peer-to-peer (P2P) payment application using Adalo’s no-code platform. You’ll build essential features—user authentication, payment flows, transaction history, and security controls—without writing code.
Understanding the Architecture
A production-minded P2P app breaks into three layers:
- Frontend UI — screens for onboarding, sending/receiving, balances, history.
- Data Model — Users, Transactions, Payment Methods, Security Logs (plus relationships).
- Payments — Stripe for cards (and, optionally, ACH via API integrations).
Using a no-code platform lets you assemble these with visual components while still integrating external services where needed.
Create the Project
Step 1: Create Your Adalo Account
- Visit Adalo.com and sign up.
- Verify your email.
- Create New App → Mobile App → name it (e.g., “PayFlow”).
- Choose Start from Scratch.
Step 2: Configure App Settings
- App name/description, icon (1024×1024), brand color, professional font (e.g., Inter/Roboto).
- Enable Require Login for protected screens.
Step 3: Environment & Policies
- Confirm HTTPS in production.
- Add Privacy Policy and Terms of Service URLs (required for stores).
- Review Adalo pricing for current plan details—avoid hardcoding plan names/fees in content.
Design the Core UX
Step 4: Welcome & Auth
- Welcome: logo, tagline, Sign Up / Log In buttons.
- Sign Up (Users form): full name, email, phone, password, ToS checkbox → route to verification/personalization.
- Log In: email/phone + password, “Forgot Password?”, go to dashboard on success.
Step 5: Dashboard
- Header (profile image, greeting, Settings).
- Balance card (current balance, Add Money, Cash Out).
- Quick actions: Send, Request, Scan QR.
- Recent Transactions list.
Step 6: Payment Screens
- Send Money: choose recipient (search users; optional device-contacts via supported component), amount input with quick chips, optional note, confirm.
- Confirm Payment: recipient, amount, note, payment method, PIN/biometric prompt → Confirm.
Build the Database
Step 7: Users (enhanced)
- Profile Photo (Image)
- First/Last Name (Text)
- Phone Number (Text)
- Date of Birth (Date)
- Wallet Balance (Number, default 0)
- Total Sent / Total Received (Numbers)
- 2FA Enabled (True/False)
- Biometric Enabled (True/False)
- Account Status (Text: “Active”, “Suspended”, “Pending”)
- Email Verified / Phone Verified / ID Verified (True/False)
Security tip: Do not store plaintext PINs. If you implement a PIN, store only a salted hash via a secure external function/service.
Step 8: Transactions
- Transaction ID (Text)
- Amount (Number)
- Type (Text: “Send”, “Request”, “Add Money”, “Cash Out”)
- Status (Text: “Pending”, “Completed”, “Failed”, “Cancelled”)
- Note (Text)
- Created Date / Completed Date (Date & Time)
- Transaction Fee (Number)
- Total Amount (Formula: Amount + Fee)
- External Payment ID (Text)
- Receipt URL (Text)
Step 9: Payment Methods
- Type (Text: “Bank Account”, “Debit Card”, “Credit Card”)
- Last Four (Text), Brand (Text), Expiry Month/Year (Numbers)
- Is Default (True/False)
- Stripe Payment Method ID (Text)
- Status (Text: “Active”, “Expired”, “Removed”)
- Added Date (Date & Time)
Step 10: Security Logs
- Event Type (Text: “Login”, “Failed Login”, “Password Change”, “2FA Change”, “Large Transaction”)
- IP Address (Text), Device Info (Text)
- Timestamp (Date & Time), Success (True/False)
Step 11: Relationships
- Transactions ↔ Users: Sender (many-to-one), Recipient (many-to-one)
- Transactions → Payment Method (many-to-one)
- Payment Methods ↔ Users: Owner (one-to-many)
- Security Logs ↔ Users: User (one-to-many)
(See Adalo Database basics.)
Implement Payments & Wallet Logic
Step 12: Install Stripe
Use Adalo’s Stripe components.
- Open the Adalo Marketplace → install Stripe.
- In Stripe, create an account → Developers → API keys.
- In Adalo → Settings → Integrations → Stripe → add test keys for development.
PCI & data handling: Stripe is PCI DSS Level 1. Your app should not collect or store raw card numbers.
Step 13: Add Money (Card → App Balance)
- Screen “Add Money” with amount input + quick chips.
- Payment method selector (user’s saved methods) + Stripe payment component.
- On success: create Transaction (“Add Money”, Completed), update Wallet Balance, notify, route to Dashboard.
Fees: In the U.S., online card transactions are typically ~2.9% + $0.30 per successful charge. Fees vary by region/method—confirm current rates on Stripe’s pricing page.
Step 14: Send Money (P2P Off-Ledger)
- Validate amount ≤ sender balance; show error if insufficient.
- Create Transaction (Pending).
- Update Sender (balance – amount; Total Sent + amount).
- Update Recipient (balance + amount; Total Received + amount).
- Mark Transaction Completed; set Completed Date; send push notification.
Step 15: Transaction History & Detail
- Screen “Transactions” with filters (All / Sent / Received / Date range).
- Query where Sender = Logged In User OR Recipient = Logged In User.
- Detail view: IDs, timestamps, counterparties, amount/fees, status, note, actions (Download Receipt, Get Help, Repeat).
Step 16: Request Money
- Create Request record (Recipient = Logged In User, Sender = selected user, Status = Pending).
- Notify the requested user.
- Receiver can Pay (process like Send) or Decline (Status → Cancelled).
Step 17: QR Code Payments (optional)
- “My QR Code” screen: generate code encoding your User ID or payment link.
- “Scan QR” screen: parse data, route to Send Money with prefilled recipient.
Notifications & Security
Step 18: Push Notifications
Use Adalo’s notification actions for:
- Incoming payments (You received $X from [Sender]).
- Completed sends (Payment sent successfully).
- Security events (new device login, password changes).
Step 19: Biometric & 2FA
- 2FA: implement via SMS/email OTP using Custom Actions with your provider.
- Biometrics: enable via supported components on native devices; prompt before sensitive actions (sending money, changing settings).
Step 20: PIN Protection
- “Create PIN” flow with a numeric keypad.
- Store only a salted hash (via secure external function); never plaintext.
- Require PIN for high-value transactions; lockout after failed attempts; log events.
Step 21: Limits & Verification
- App Settings collection for adjustable limits (e.g., daily send, per-tx, unverified caps).
- Before sending: compute today’s sent total; enforce limits.
- If ID Verified = False and amount exceeds threshold → prompt verification.
Step 22: ID Verification (KYC Intake)
- “Verify Identity” screen: explain requirements, collect ID front/back + selfie.
- Create a Verification Request for manual review or integrate a vendor via Custom Actions.
- On approval: set ID Verified = True.
Compliance: Requirements vary by jurisdiction. Treat this build as a custodial/off-ledger prototype and consult counsel/regulators as needed.
Step 23: Fraud Signals
- Track failed logins, rapid large sends, many new recipients, unusual geos.
- Maintain a Fraud Score; escalate controls (require 2FA, lower limits, freezes) at thresholds.
Testing & Performance
Step 24: Test Environment
- Seed test users (verified/unverified, varying balances).
- Use Stripe test cards (success/decline/insufficient funds): https://stripe.com/docs/testing
- Seed transactions, payment methods, and security logs.
Step 25: Core Flow Tests
- Registration, verification, PIN, biometrics.
- Add Money (success/decline), Send Money (success/insufficient/over-limit), Requests (approve/decline).
- Notifications and security events.
Step 26: Performance Checks
- Slow networks and offline states (cache limited data, cue clear states).
- Large histories (paginate; show 20, load more on scroll).
- Image compression and lean lists.
- Consider Optimize performance and External Collections for heavy queries.
Publishing
Step 27: Prepare Store Assets
- Icon (1024×1024), screenshots, short preview video (optional).
- Listing copy: clear features, security posture, and support channels.
- Legal pages: Privacy Policy, Terms, support contact.
Step 28: App-Store Submission
- Apple: Join the Apple Developer Program and follow Apple’s review/process docs. Review times vary; Apple does not guarantee timelines.
- Google Play: Create a developer account, complete listing and policies. Review times vary; may be several days or longer for new accounts.
In Adalo, use Publishing for iOS/Android builds and submission steps.
Cost & Resources
- Adalo: see current plans/limits — https://www.adalo.com/pricing
- Stripe fees: vary by region/method; in the U.S. online cards are typically ~2.9% + $0.30 — https://stripe.com/pricing
- Developer programs: Apple $99/year; Google Play $25 one-time.
Additional Resources
- Adalo Help Center: https://help.adalo.com/
- Adalo Marketplace: https://www.adalo.com/marketplace
- External Collections: https://help.adalo.com/integrations/external-collections-with-apis
- Custom Actions: https://help.adalo.com/integrations/custom-actions
- Optimize Performance: https://help.adalo.com/performance/optimize-app-performance
- Stripe Security & PCI: https://stripe.com/docs/security/stripe
- Stripe Testing: https://stripe.com/docs/testing
- CFPB: https://www.consumerfinance.gov/about-us/newsroom/cfpb-finalizes-rule-on-federal-oversight-of-popular-digital-payment-apps-to-protect-personal-data-reduce-fraud-and-stop-illegal-debanking/
Note: This Cash App–style build is a custodial/off-ledger prototype using Adalo’s UI and database with card payments via Stripe. For ACH, KYC, fraud screening, and payouts, integrate third-party services through Custom Actions (e.g., Stripe APIs, Plaid) and handle payouts server-side via Stripe Connect. Real-time streaming, robust offline sync, and very large ledgers require external services and thorough performance testing on real devices prior to publish.










