EnvioPlata
US-to-Latin America Money Transfers
A seamless remittance platform enabling the Hispanic community in the US to send money home with transparent fees, real-time exchange rates, and Apple Pay support.
How It Works
Enter Amount
Real-time exchange rate from Wise API, transparent fee breakdown
Add Recipient
Country-specific bank fields with validation
Pay Instantly
Apple Pay, credit/debit cards via Stripe
Money Arrives
Wise handles the international transfer
16 Countries Supported
Each country has specific bank field requirements handled dynamically by our validation system.
Technical Architecture
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ iOS App (SwiftUI) โ
โ โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโ โ
โ โ TransferView โ โ PaymentManagerโ โ APIService โ โ
โ โ ViewModel โ โ (Stripe SDK) โ โ (REST Client) โ โ
โ โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Node.js Backend (Express) โ
โ โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโ โ
โ โ server.js โ โ wise.js โ โ bank-fields.js โ โ
โ โ (Routes) โ โ (Transfers) โ โ (Validation) โ โ
โ โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ
โผ โผ
โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ
โ Stripe API โ โ Wise API โ
โ (Payments) โ โ (Transfers) โ
โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโStripe Integration
- Apple Pay support
- PaymentSheet for cards
- Webhook-driven flow
- Transfer metadata
Wise Integration
- Real-time quotes
- Recipient creation
- Transfer execution
- Status tracking
Transparent Fee Structure
Example: $100 to Colombia
Why This Pricing?
Technical Stack
- Swift 5.9
- SwiftUI
- Stripe SDK
- Apple Pay
- Node.js
- Express
- Zod Validation
- Webhooks
- Stripe Connect
- PaymentSheet
- PaymentIntent
- Webhook Events
- Wise API
- Quote API
- Recipient API
- Transfer API
Technical Challenges Solved
Country-Specific Bank Fields
Each country requires different bank details (CLABE for Mexico, NIT for Colombia, etc.)
Dynamic form generation based on country selection with Zod validation schemas per country
Nested vs Flat Data Transform
iOS sends flat keys (address.city), Wise expects nested objects ({address: {city}})
transformBankDetails() function converts formats and auto-injects legalType
Payment โ Transfer Flow
Need to wait for Stripe payment confirmation before creating Wise transfer
Webhook-driven architecture: payment_intent.succeeded triggers transfer creation
Real-Time Rate Display
Exchange rates change frequently, users need current rates while entering amount
0.5s debounced rate fetching with loading states and cached quotes
Building a fintech product?
We specialize in payment integrations, money transfer systems, and financial applications. Stripe, Wise, banking APIsโwe've done it all.