Skip to content

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.