Complete solution for Part 1 of the Stripe Solutions Architect interview - building an on-demand delivery service with Stripe Connect.
- part1-solution.md - Complete written solution with detailed explanations
- demo-code.js - Working Node.js demo you can run live
- visual-diagram.md - ASCII diagrams for presentation
- presentation-guide.md - 15-minute presentation script with timing
- quick-reference.md - Cheat sheet for quick lookup
- package.json - Node.js dependencies
- Go to https://dashboard.stripe.com/register
- Create a test account (no activation needed)
- Navigate to Developers → API Keys
- Copy your Secret Key (starts with
sk_test_) - Go to Connect in dashboard and click "Get started"
- Click "Save and exit" to skip the guide
cd stripe
npm installEdit demo-code.js and replace the API key:
const stripe = require('stripe')('sk_test_YOUR_SECRET_KEY_HERE');npm run demoYou should see output showing:
- Restaurant account creation
- Courier account creation
- Payment collection
- Funds routing
-
Open these files:
visual-diagram.md- For showing architecturedemo-code.js- For walking through code- Stripe Dashboard (test mode)
- Stripe API docs (have tabs ready)
-
Follow this structure:
- Use
presentation-guide.mdfor timing and talking points - Reference
quick-reference.mdfor API calls - Show
visual-diagram.mdfor architecture diagrams
- Use
-
Be ready to:
- Run the demo live
- Show created accounts in Stripe Dashboard
- Explain your decision-making process
- Discuss edge cases and alternatives
- Full control over onboarding UX
- Collect specific business information
- Handle compliance directly
- Maintain brand consistency
- Automatic fund routing to restaurant
- Platform collects application fee easily
- Central dispute management
- Full transaction visibility
- Flexible courier payment timing
- Can transfer after delivery confirmation
- Different amounts to different parties
- Easy to implement complex fee structures
Customer ($50)
↓
Platform (Destination Charge)
↓
├─→ Restaurant ($40 - fees) [automatic via transfer_data]
├─→ Courier ($10) [manual via Transfer API]
└─→ Platform keeps ($4) [via application_fee_amount]
- Success: 4242 4242 4242 4242
- Decline: 4000 0000 0000 0002
- Requires SCA: 4000 0025 0000 3155
- Routing: 110000000
- Account: 000123456789 (success)
Keep these open during the interview:
Q: Why not Standard accounts? A: Less control over UX, redirects to Stripe, harder to customize for our specific needs.
Q: What about Direct charges? A: Connected account would be liable for disputes. Destination charges give platform more control.
Q: How do you handle refunds?
A: Use reverse_transfer: true to reverse the restaurant transfer, and refund_application_fee to refund platform fee.
Q: What about taxes?
A: Enable automatic_tax on PaymentIntent. Stripe handles 1099 reporting for connected accounts.
Q: Payout timing? A: Default 2-day rolling. Configurable per account. Instant payouts available for additional fee.
Q: International support? A: Connect supports 40+ countries. Need to handle multiple currencies and local payment methods.
- Show architecture (visual-diagram.md)
- Explain onboarding (walk through account creation code)
- Demonstrate payment (show PaymentIntent creation)
- Show funds routing (explain transfer to courier)
- Discuss edge cases (refunds, disputes, failures)
- Open for questions
- Stripe test account created
- Connect enabled in dashboard
- API keys copied
- Demo code tested and working
- All files reviewed
- Presentation guide read through
- Stripe docs tabs open
- Screen sharing tested
- Confident and ready!
- Start with the "why" - Explain your architectural decisions
- Use diagrams - Visual aids help communicate complex flows
- Think like a SA - Consider stakeholders, edge cases, scalability
- Be conversational - This is a discussion, not a lecture
- Ask clarifying questions - Shows you think critically
- Mention production considerations - Webhooks, monitoring, error handling
- Stay calm - You know this material!
If you have questions about the solution:
- Review
part1-solution.mdfor detailed explanations - Check
quick-reference.mdfor API call syntax - Consult Stripe docs for official documentation
Good luck with your interview! 🚀