Integration Overview
| Category |
Service |
Purpose |
Priority |
| Auth |
Google OAuth |
Tourist sign-up |
P0 |
| Auth |
SendGrid/SES |
Email verification |
P0 |
| Payment |
Midtrans/Xendit |
IDR payment processing (PRIMARY for foreigners) |
P0 |
| Payment |
QRIS |
QR payments (IDR only) |
P0 |
| Comms |
Firebase FCM |
Push notifications |
P0 |
| Comms |
SendGrid/SES |
Email |
P1 |
| Maps |
Google Maps |
Zones, navigation |
P0 |
| AI |
OpenAI/Claude |
FAQ bot, translation |
P0 |
| AI |
Google Translate |
Multi-language |
P0 |
Email Communication
Use Cases
- Email Verification — Sign-up, login
- Order Notifications — Status updates at each stage
- Order Confirmation — Order details and tracking
- Status Updates — Check order status via email
Email Templates (Pre-approved)
Order Confirmed
✅ Order #{{order_id}} confirmed!
Service: {{service_type}}
Pickup: {{pickup_time}}
Address: {{pickup_address}}
Track your order: {{tracking_link}}
Pickup Scheduled
🚗 Your courier is on the way!
Courier: {{courier_name}}
ETA: {{eta_minutes}} minutes
Phone: {{courier_phone}}
Track live: {{tracking_link}}
Order Picked Up
📦 Laundry picked up!
Items: {{item_count}} items, {{weight}} kg
Estimated delivery: {{delivery_time}}
Track: {{tracking_link}}
Ready for Delivery
✨ Your laundry is ready!
Delivery scheduled: {{delivery_time}}
Courier: {{courier_name}}
Track: {{tracking_link}}
Delivered
🎉 Delivered!
Order #{{order_id}} completed.
Total: IDR {{amount}}
Rate your experience: {{rating_link}}
Delay Alert
⚠️ Delay Notice
Order #{{order_id}} is delayed.
Reason: {{delay_reason}}
New ETA: {{new_eta}}
We apologize for the inconvenience.
Questions? Reply to this email.
Provider Options
- SendGrid — Reliable, global delivery
- Amazon SES — Cost-effective at scale
- Mailgun — Developer-friendly
Payment Gateway (Midtrans/Xendit)
Payment Strategy
Primary Target Market: Foreign tourists and expats prefer card payments as their primary payment method. Card payment infrastructure is prioritized for optimal user experience for international customers.
Currency Compliance: All transactions are processed exclusively in IDR (Indonesian Rupiah) in compliance with Indonesian regulatory requirements. Only IDR is accepted as payment currency. Multi-currency processing is not supported due to Indonesian financial regulations mandating all domestic transactions be conducted in the national currency.
Supported Methods (Priority Order for Foreign Market)
| Method |
Type |
Priority |
Target Market |
Currency |
| Credit Card |
Visa, Mastercard, JCB, Amex |
P0 |
PRIMARY - Foreigners |
IDR only |
| Debit Card |
International & local bank cards |
P0 |
PRIMARY - Foreigners |
IDR only |
| QRIS |
QR code standard |
P1 |
Secondary - Local market |
IDR only |
| GoPay |
E-wallet |
P1 |
Secondary - Local market |
IDR only |
| OVO |
E-wallet |
P1 |
Secondary - Local market |
IDR only |
| Dana |
E-wallet |
P2 |
Secondary - Local market |
IDR only |
| ShopeePay |
E-wallet |
P2 |
Secondary - Local market |
IDR only |
| Bank Transfer |
VA (Virtual Account) |
P2 |
Secondary - Local market |
IDR only |
Note: All payment methods process transactions in IDR only, as mandated by Indonesian banking regulations.
Integration Flow (Card Payment Optimized)
1. Customer selects payment method (Card payment displayed as primary option)
2. Create payment request → Gateway (Card processing prioritized, IDR only)
3. Gateway returns secure card payment form/tokenization
4. Customer completes card payment in IDR (optimized checkout flow)
5. Real-time payment authorization (IDR transaction)
6. Webhook notification → Our server
7. Update order status
8. Send confirmation to customer
Card Payment Features (Priority)
- 3D Secure authentication for international cards
- Tokenization for saved cards (repeat customers)
- IDR processing only (mandatory compliance with Indonesian financial regulations)
- Real-time fraud detection
- PCI DSS compliance
- One-click payment for returning customers
- Apple Pay / Google Pay integration (IDR only)
- Transparent IDR pricing displayed to customers before payment
Webhook Events
payment.success — Payment completed (IDR)
payment.failed — Payment failed
payment.expired — Payment timeout
refund.success — Refund processed (IDR)
card.authorized — Card pre-authorization (IDR)
card.captured — Card payment captured (IDR)
Currency Policy (Indonesian Regulatory Compliance)
- All transactions processed exclusively in IDR (Indonesian Rupiah)
- Single currency support only — Indonesian financial regulations require all domestic transactions to be conducted in IDR
- No multi-currency options available due to regulatory restrictions
- All prices displayed in IDR at all times across the platform
- International cards accepted but all charges processed in IDR only
- Dynamic Currency Conversion (DCC) may be offered by card issuers at their discretion, but the platform processes and settles all transactions in IDR only
- Payment gateway configured for IDR-only processing in compliance with Bank Indonesia regulations
- All invoices, receipts, and financial records maintained in IDR
Google Maps Integration
Use Cases
- Zone Visualization — Display service coverage areas (Phase 1: Jimbaran & Uluwatu Area)
- Address Autocomplete — Pickup/delivery address input
- Courier Navigation — Turn-by-turn directions
- Live Tracking — Real-time courier location (v2)
- Zone Validation — Check if address is serviceable within primary coverage zones
APIs Required
| API |
Purpose |
Billing |
| Maps JavaScript |
Zone display, tracking |
Per load |
| Places |
Address autocomplete |
Per request |
| Geocoding |
Address → coordinates |
Per request |
| Directions |
Route calculation |
Per request |
| Distance Matrix |
ETA calculation |
Per element |
{
"type": "Feature",
"properties": {
"zone_id": "jimbaran",
"name": "Jimbaran & Uluwatu Area",
"delivery_fee": 0,
"active": true,
"phase": 1
},
"geometry": {
"type": "Polygon",
"coordinates": [[[lng, lat], ...]]
}
}
Push Notifications (Firebase FCM)
Notification Types
| Event |
Title |
Body |
| Order Confirmed |
"Order Confirmed" |
"Your lau |