Overview
Expensify supports various payment methods for sending and receiving money, including direct bank transfers, debit cards, and the Expensify Wallet. This guide covers the core payment operations.Payment Flow
The payment system in Expensify follows a robust pattern with optimistic updates, ensuring a smooth user experience even during network delays.Optimistic Updates Pattern
All payment operations use Onyx optimistic updates:- Optimistic Data - Updates UI immediately
- Success Data - Confirms the operation succeeded
- Failure Data - Reverts changes if the operation fails
Payment Methods
Available Payment Types
Expensify supports multiple payment methods:Payment Method Selection
Choosing the appropriate payment method based on context:Sending Payments
Payment Confirmation
Before sending a payment, users can select their preferred payment method through a confirmation flow.Paying Money Requests
Handle payment of expense reports and money requests.Invoice Payments
Handle invoice-specific payment parameters.Receiving Payments
Setting Up for Receiving Payments
To receive payments, users must:- Complete KYC verification
- Connect a bank account
- Activate the Expensify Wallet
Payment Receipt Confirmation
When a payment is received, the system automatically updates the relevant records:Payment Status
Report Status After Payment
After a payment is processed, reports transition through different states:Checking Payment Availability
Payment Verification
Magic Code Validation
Some payment operations require validation codes for security:Payment Errors
Error Handling
Robust error handling ensures users are informed of payment failures:Common Error Scenarios
- Insufficient funds - Not enough balance in wallet or account
- Invalid payment method - Payment method expired or invalid
- Network errors - Temporary connectivity issues
- Validation errors - Incorrect validation codes
- Policy restrictions - Payment disabled by policy settings
Payment History
Track payment history through transaction records:Best Practices
Payment Processing
Payment Processing
- Always use optimistic updates for instant UI feedback
- Implement proper error handling and rollback logic
- Validate payment methods before processing
- Log payment operations for audit trails
Security
Security
- Use validation codes for sensitive operations
- Never store card details in client-side storage
- Implement rate limiting for payment attempts
- Monitor for suspicious payment patterns
User Experience
User Experience
- Show clear payment confirmation screens
- Display payment status updates in real-time
- Provide helpful error messages
- Allow easy payment method switching
Related Resources
Reimbursements
Learn about expense reimbursement workflows
Invoices
Managing invoice payments
Bank Accounts
Connecting accounts for payments
Wallet
Managing your Expensify Wallet
