Wallet Process Steps
1. Wallet Initialization
Purpose: Set up a wallet for the user after KYC verification to enable financial transactions.
- User Action: Completes KYC by uploading identification, which is verified by a service like Trulioo.
- Technical Steps:
- Trigger Wallet Creation:
- Once KYC is approved, the app’s backend service initiates wallet setup by registering the user as a client in Fineract, assigning a unique identifier.
- Create Savings Account (Wallet):
- A savings account is linked to the client in Fineract, serving as the user’s wallet for storing funds.
- Store Mapping:
- The wallet’s identifier from Fineract is stored in the app’s database, tied to the user’s account for future reference.
- User Feedback:
- The app notifies the user that their wallet is ready, prompting them to add funds to begin trading.
2. Funding the Wallet (Deposit)
Purpose: Enable users to add money to their wallet using popular US payment methods.
- User Action:
- Selects "Add Funds" from the Wallet section and chooses a payment method—Stripe for cards, PayPal, or ACH via Plaid-linked bank accounts.
- Technical Steps:
- Payment Initiation:
- For Stripe, the app collects card details and processes the payment through a secure payment intent.
- For PayPal, a payment button facilitates the transaction, capturing funds via PayPal’s system.
- For ACH, Plaid links the user’s bank account, and a transfer is initiated through a provider like Dwolla or Stripe.
- Update Wallet:
- Upon successful payment, the backend updates the Fineract wallet by recording a deposit transaction with the amount and date.
- Sync Balance:
- The app queries Fineract to confirm the updated wallet balance, ensuring accuracy.
- User Feedback:
- The app confirms the deposit, displaying the new balance and indicating readiness to trade.
3. Using the Wallet (Stock Purchase)
Purpose: Deduct funds from the wallet to facilitate stock purchases.
- User Action:
- Navigates to the Stock Market section, selects a stock (e.g., AAPL), and initiates a buy order.
- Technical Steps:
- Check Balance:
- The backend verifies that the wallet has sufficient funds by querying Fineract’s balance data.
- Withdraw Funds:
- If funds are available, a withdrawal transaction is recorded in Fineract to cover the stock purchase cost.
- Execute Trade:
- The app interfaces with a trading API (e.g., Alpaca) to place the market order for the stock.
- Record Transaction:
- The purchase details are logged in the app’s database for tracking and compliance.
- User Feedback:
- The app notifies the user that the stock purchase is complete, updating their portfolio.
4. Viewing Wallet Details
Purpose: Allow users to monitor their wallet balance and transaction history.
- User Action:
- Opens the Wallet section to check their funds and past activity.
- Technical Steps:
- Fetch Balance:
- The app retrieves the current wallet balance from Fineract.
- Fetch History:
- A list of recent transactions (deposits, withdrawals) is pulled from Fineract’s transaction records.
- Display:
- The front-end presents the balance and transaction history in an accessible format, such as a list or summary.
- User Feedback:
- The user sees their available balance and a detailed log of wallet activity.
5. Withdrawing Funds
Purpose: Transfer money from the wallet back to the user’s bank or payment method.
- User Action:
- Selects "Withdraw Funds," enters an amount, and chooses a withdrawal method (e.g., ACH to a Plaid-linked bank).
- Technical Steps:
- Check Balance:
- The backend confirms sufficient funds are available in the Fineract wallet.
- Withdraw from Wallet:
- A withdrawal transaction is recorded in Fineract, reducing the wallet balance.
- Initiate Payout:
- The funds are transferred out using the chosen method—e.g., ACH via Plaid and Dwolla or Stripe’s payout system.
- Confirm:
- The app updates its records and notifies the user once the withdrawal is processed.
- User Feedback:
- The user receives confirmation that the withdrawal is underway, with an estimated arrival time (e.g., 1-3 days for ACH).
6. Ongoing Management
Purpose: Ensure wallet reliability, security, and regulatory compliance over time.
- Technical Steps:
- Balance Sync:
- A scheduled process periodically reconciles the Fineract balance with the app’s records to prevent discrepancies.
- AML Monitoring:
- Transactions are screened using a service like Chainalysis to detect suspicious activity, such as large or unusual transfers.
- Audit Logs:
- All wallet actions are archived securely (e.g., in AWS S3) for at least six years to meet SEC and FINRA requirements.
- User Feedback:
- The user is informed if any transaction requires review, maintaining transparency.