Use case matrix
| Scenario | Accounts | Trading | Funding | Market Data | Documents | Webhooks |
|---|---|---|---|---|---|---|
| Embedded brokerage app | ✅ | ✅ | ✅ | ✅ | ||
| Advisor-managed accounts | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Robo-advisor / automated investing | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Challenger bank with investing | ✅ | ✅ | ✅ | ✅ | ✅ | |
| Employee investment benefits | ✅ | ✅ | ✅ | ✅ | ✅ |
1. Embedded brokerage app
Scenario: You’re building a consumer fintech app and want to add an “Invest” tab that lets users open a brokerage account, fund it, and trade stocks and ETFs. What you’ll build:- Collect KYC data and open a brokerage account —
POST /v1/accounts - Link the user’s external bank account via ACH —
POST /v1/accounts/{accountId}/ach-relationships - Initiate an initial cash deposit —
POST /v1/accounts/{accountId}/funding/deposits - Display a stock or ETF search using reference data —
POST /v1/marketdata/reference/symbol-details - Place a market or limit order —
POST /v1/accounts/{accountId}/orders - Display the portfolio — balances and open positions —
GET /v1/accounts/{accountId}/balances+GET /v1/accounts/{accountId}/positions
account_type: "individual"investment_profileagreements
symbolasset_class(equityoretf)order_typesidequantityornotionalclient_order_id
2. Advisor-managed accounts
Scenario: You operate a wealth management platform where registered advisors manage portfolios on behalf of clients. What you’ll build:- Open a client account with advisor metadata —
POST /v1/accounts - Fund the client account via ACH —
POST /v1/accounts/{accountId}/funding/deposits - Place and manage orders on the client’s behalf —
POST /v1/accounts/{accountId}/orders - Modify or cancel working orders —
PATCH/DELETE /v1/accounts/{accountId}/orders/{orderId} - Monitor portfolio value across all client accounts —
GET /v1/accounts/{accountId}/balances+GET /v1/accounts/{accountId}/positions - Receive real-time fill confirmations via webhook —
POST /v1/webhooks
discretionary_account: true(grants the advisor full trading authority)registered_rep_code(associates with a registered representative)advisor_code(associates with a specific advisor)
- Use
client_order_idon every order to prevent duplicate submissions. Orders supportmarket limitstop- and
stop_limittypes for equities and ETFs
3. Robo-advisor / automated investing
Scenario: You’re building an automated investing product where users define goals and risk tolerance and your system manages their portfolio using rules-based logic. What you’ll build:- Open an account capturing detailed suitability data —
POST /v1/accounts - Enable automatic dividend reinvestment —
dividend_reinvestment: trueon account creation - Fund accounts on a recurring schedule via ACH —
POST /v1/accounts/{accountId}/funding/deposits - Submit dollar-based orders to implement your allocation model —
POST /v1/accounts/{accountId}/orderswithnotional - Rebalance by cancelling and replacing working orders —
DELETE+POST /v1/accounts/{accountId}/orders - React to order fill events to trigger the next rebalancing step —
POST /v1/webhooks(subscribe to order events)
investment_profile.risk_tolerance(conservativemoderateaggressive)investment_profile.investment_objective(e.g.growthincomecapital_preservation)investment_profile.time_horizon(shortaveragelong)dividend_reinvestment(auto-reinvests dividends into the same security)
- Use
notional(dollar amount) instead ofquantity(share count) for dollar-cost averaging. Supportsgtc(good-till-cancelled) time-in-force for limit-based allocation strategies
4. Challenger bank with investing
Scenario: You run a challenger bank and want to offer integrated stock and ETF trading alongside your existing deposit accounts. What you’ll build:- Open a brokerage account tied to your existing user record —
POST /v1/accountswithcorr_metadata - Link your bank’s account as the funding source —
POST /v1/accounts/{accountId}/ach-relationships - Power market data widgets — quotes, logos, news —
GET /v1/marketdata/real-time/{symbol},/logos/{symbol},/news/{symbol} - Let users place orders from within your banking UI —
POST /v1/accounts/{accountId}/orders - Sync order and funding status back to your core system —
POST /v1/webhooks - Retrieve execution reports for internal reconciliation —
GET /v1/accounts/{accountId}/orders/{orderId}/executions
corr_metadata— a freeform string (up to 255 chars) for storing your internal user or account ID alongside the Buildmarkets account. Makes it easy to look up the Buildmarkets account from your system without maintaining a separate mapping table
- Real-time prices
- company profiles
- stock logos
- and news feeds are all available at the partner level — no account context required. Ideal for powering discovery and watchlist UIs
5. Employee investment benefits
Scenario: You’re an HR or benefits platform and want to offer employees a brokerage account as a workplace benefit, funded via payroll integration. What you’ll build:- Open accounts with employer and employee metadata —
POST /v1/accountswithcorr_metadata,registered_rep_code - Set up ACH relationships linked to employee bank accounts —
POST /v1/accounts/{accountId}/ach-relationships - Initiate recurring payroll-linked deposits —
POST /v1/accounts/{accountId}/funding/deposits - Offer a curated investment menu using sector and security reference data —
GET /v1/marketdata/reference/sectors,POST /v1/marketdata/reference/sector-symbols - Deliver tax documents and statements to employees by email —
POST /v1/documents/email - Retrieve year-end documents including W-9s —
POST /v1/documents/w9,POST /v1/documents/list
- Use the equity security master (
POST /v1/marketdata/reference/equity-security-master) and sector-symbols (POST /v1/marketdata/reference/sector-symbols) to build a curated fund menu scoped to specific industries or sectors rather than exposing the entire universe of tradable securities
Common integration patterns
Webhooks over polling
“For operational state changes — account KYC approval, order fills, deposit settlements — use webhooks rather than polling.” Configure a webhook endpoint viaPOST /v1/webhooks and subscribe to the specific event types you need. Polling is acceptable for UI-driven reads like balances and positions. See Webhooks Overview for the full event catalog and delivery guarantees.
Idempotency with client_order_id
Pass a client_order_id on every POST /v1/accounts/{accountId}/orders request. If a network timeout forces a retry, Buildmarkets returns the existing order rather than creating a duplicate. A reliable scheme: {your-user-id}-{symbol}-{side}-{date}-{sequence}.
Handling pending states
| Resource | Pending state | Active state |
|---|---|---|
| Account | SUBMITTED → APPROVAL_PENDING | ACTIVE |
| ACH relationship | PENDING | APPROVED |
| Deposit / withdrawal | PENDING | SETTLED |
corr_metadata for cross-system linking
“The corr_metadata field on an account is your bridge between Buildmarkets and your internal data model.” Store your internal user ID, account reference, or any structured string there at account creation. This eliminates the need for a separate ID-mapping database and makes cross-system lookups straightforward.
Next steps
- Getting Started — Make your first API call end-to-end
- Account Opening — Full field reference for
POST /v1/accounts - Placing Orders — Order types, time-in-force, and idempotency
- Webhooks Overview — Event catalog and delivery configuration