Wealth2B API Introduction
Wealth2B offers an API platform that enables fintechs and neobanks to launch investment products in the U.S. Our infrastructure abstracts operational and regulatory complexity from the broker, offering interest-bearing accounts, real-time trading, and automated portfolio allocation.
Need Help?
Ask our AI Assistant about the documentation
Documented Environment
Complete staging environment with Swagger documentation for testing and integration.
Secure Authentication
JWT-based authentication with API key and secret for secure access to all endpoints.
Real-time Data
WebSocket connections for live market data and webhook events for system updates.
🌍 Documented Environment
Base URL (staging)
Swagger URL (staging)
🔐 Authentication
Login Process
Requires apiKey and apiSecret. Returns a JWT (access_token).
Returns user information if the token is valid.
Important
All endpoints require Bearer Token (JWT) in the Authorization header.
Functional Workflows
Category | Workflow | Description |
---|---|---|
👤 Onboarding | People registration | Create people (/people), open investment account (/accounts), upload KYC documents, store KYC information. |
Identity verification | Use /people/{peopleId}/kyc or /people/{peopleId}/kyc-raw for external verification data. | |
💸 Funding | ACH / WIRE funding | Add bank account (/bank-accounts), then create transfer (/money-movements). |
Instant funding | Create simulated funding via POST /money-movements. | |
Internal transfers | Move funds between accounts via /internal-transfers. | |
📈 Trading | Market data lookup | List assets (/market-data/assets), get details (/market-data/assets/{symbol}), fetch latest prices (/market-data/latest-prices), fetch historical data (/market-data/historical). |
Real-time streaming | Generate WebSocket token (/market-data/generate-websocket-token) and connect to wss://api.staging.wealth2b.com/market-data. | |
Place order | Submit orders (/trading/orders). | |
Manage orders | Get order details (/trading/orders/orders/{id}), cancel active order (/trading/orders/accounts/{accountId}/orders/{id}/cancel). | |
Positions | Get all positions (/trading/positions), by ID (/trading/positions/{id}), by account (/trading/positions/accounts/{accountId}), by symbol (/trading/positions/accounts/{accountId}/{symbol}), close position (/trading/positions/accounts/{accountId}/positions/{symbol}/close). | |
🤖 Robo Advisor | Funds | Retrieve all available funds with details and weights (/robo-advisor/funds). Retrieve a single fund by ID (/robo-advisor/funds/{id}). |
Portfolios | Retrieve all portfolios (/robo-advisor/portfolios), get by ID (/robo-advisor/portfolios/{id}), flatten portfolio (/robo-advisor/portfolios/{id}/flatten), generate projections (/robo-advisor/projections). | |
Association / Plan | Link account to portfolio (/robo-advisor/associations), end association (/robo-advisor/associations/{id}/end), get active plan (/robo-advisor/accounts/{accountId}/plan), get plan history (/robo-advisor/accounts/{accountId}/plan/history). | |
🛠 Accounts | Open/close account | Create (/accounts), close (/accounts/{id}/close). |
📄 Reports | Transactions | Search movements (/money-movements/search), list settlements (/settlements/search). |
Settlement management | Confirm settlement (/settlements/{id}/confirm). | |
Documents | Upload person documents (/people/documents), download (/people/documents/{id}/download). |
🗺 Functional Relationships Map
👤 Account Opening - People and Investment Accounts
The account opening flow follows this sequence:
Create Person
Submit initial data using /people.
POST /peopleUpload KYC Data
Provide supporting documentation. Optionally use /people/{peopleId}/kyc or /people/{peopleId}/kyc-raw to store verification data.
Approval Process
Person is reviewed and approved for account opening.
AutomaticCreate Accounts
Create one or multiple accounts for the approved person.
POST /accounts1. Create Person
POST /people2. Upload Document
POST /people/documents (multipart/form-data)3. Create Investment Account
POST /accounts💸 Funding - ACH or WIRE Transfer
Create Bank Account
Add bank account information for the user.
POST /bank-accountsCreate Money Movement (Deposit)
Initiate the transfer from the bank account to the investment account.
POST /money-movements💰 Settlements - Instant Funding Batches
View Settlement Detail
Get detailed information about a specific settlement.
GET /settlements/{settlementId}Confirm Settlement
Confirm and finalize a settlement batch.
POST /settlements/{settlementId}/confirm🛒 Trading - Market Orders
Place Market Order
Submit a new trading order.
POST /trading/ordersView Order Details
Get detailed information about an order.
GET /trading/orders/orders/{id}Cancel Pending Order
Cancel an active order.
POST /trading/orders/accounts/{accountId}/orders/{id}/cancel🤖 Robo Advisor - Automated Portfolio Management
The Robo Advisor module provides endpoints to define, query, and link automated investment portfolios to customer accounts.
1. Funds
Retrieve all funds with details and weights.
2. Portfolios
List, retrieve and flatten portfolios; generate growth projections.
3. Associations
Create and end account-portfolio associations.
4. Account Plans
Retrieve active investment plan and full history.
🧩 Services and Endpoints (by domain)
Auth
People
Accounts
Bank Accounts
Supported paymentType: ACH, WIRE (BIC/ABA), TRAVEL_RULE.
Money Movements
Internal Transfers
Market Data
Trading
Robo Advisor
Settlements
File
📦 API Response Behavior
Wealth2B follows standard REST conventions.
✅ Successful Responses
❌ Error Responses
All services return a consistent ErrorResponseDto structure with status, payload, and meta.
📡 Real-Time Market Data
Wealth2B provides real-time price updates via WebSocket.
Generate Token
Generate a WebSocket token for authentication.
POST /market-data/generate-websocket-tokenConnect to WebSocket
Connect to the real-time data stream.
Subscribe
emit "subscribe" with a list of symbols
Unsubscribe
emit "unsubscribe"
Events Received
Webhook Events
Webhook payloads have the following structure:
{ "timestamp": "2025-01-01T00:00:00.000Z", "data": { /* Event-specific data */ }, "id": "event-uuid", "type": "event_type" }
Event categories include:
NTA Events (Net Trading Asset)
fund movements such as instant funding or deposits.
Trading Events
order lifecycle updates.
Settlement Events
confirmations, reconciliations.
Account Status Events
changes in investment account states.
People Status Events
KYC/approval status updates.
Money Movement Status Events
deposit/withdrawal lifecycle.
Webhook Events & Payloads Specification
This document describes all the event types that your webhook endpoint may receive. Each event contains only the essential information for processing.
🏷️ Common Structure
{ "timestamp": "2025-01-01T00:00:00.000Z", "data": { /* Event-specific data */ }, "id": "event-uuid", "type": "event_type" }
📊 1️⃣ NTA Events (Net Trading Asset)
Fund movements such as instant funding or deposits.
Example: Instant Funding
{ "timestamp": "2025-06-27T05:06:15.552Z", "data": { "accountId": "7a5cc3d6-f831-46b9-88bc-7512386217a6", "amount": 11.25, "status": "executed", "entryType": "MEM" }, "id": "08aab21a-4c38-49f6-80f6-2f4a0dc1d966", "type": "nta" }
Fields:
💹 2️⃣ Trading Order Events
Related to full or partial order execution.
Example: Order Filled
{ "timestamp": "2025-01-01T00:00:00.000Z", "data": { "accountId": "account-uuid", "symbol": "AAPL", "orderId": "order-uuid", "status": "filled", "filledQty": "100", "filledPrice": "150.75", "side": "buy" }, "id": "event-uuid", "type": "trade" }
Fields:
👤 3️⃣ Account Status Events
Changes in the status of an account.
Example: Account Approved
{ "timestamp": "2025-01-01T00:00:00.000Z", "data": { "accountId": "account-uuid", "statusFrom": "PENDING", "statusTo": "OPEN" }, "id": "event-uuid", "type": "account_status" }
Fields:
🧑💼 4️⃣ People Status Events
Changes in the status of a person.
Example: Person Approved
{ "timestamp": "2025-01-01T00:00:00.000Z", "data": { "peopleId": "people-uuid", "statusFrom": "PENDING", "statusTo": "APPROVED" }, "id": "event-uuid", "type": "people_status" }
Fields:
🏦 5️⃣ Money Movement Status Events
Represent changes in the status of money movements.
Example: Money Movement Completed
{ "timestamp": "2025-01-01T00:00:00.000Z", "data": { "accountId": "account-uuid", "moneyMovementId": "money-movement-uuid", "statusFrom": "APPROVED", "statusTo": "SUCCESSFUL" }, "id": "event-uuid", "type": "money_movement_status" }
Fields:
🏦 6️⃣ Settlement Status Change Events
Represent changes in the status of settlements.
Example: Pending confirmation Settlement event (sent every business day at 6:00 PM GMT-3)
{ "timestamp": "2025-07-30T05:51:00.041Z", "data": { "settlementId": "9e2f6117-51d3-48b9-945d-419f9c733c3c", "statusFrom": "open", "statusTo": "pending_confirmation", "amount": 3596.5 }, "id": "363e1709-4f2f-49bf-bb1f-2ed28f08d4e0", "type": "settlement_status_changed" }