Prerequisites: API credentials from the sandbox environment. A terminal or API client (cURL, Postman, or similar).
Step 1 — Create an investment account
When a user in your app is ready to invest, create anindividual account on their behalf. This collects identity, contact information, regulatory disclosures, and agreements.
status: "ACTIVE". Store the id — you’ll need it for every subsequent call.
See Accounts for details on account types, required fields, and lifecycle states.
Step 2 — Upload KYC documents
Identity verification requires supporting documents. Upload a government-issued ID (passport, driver’s license).approved:
Step 3 — Link a bank account via Plaid
Before the user can deposit funds, they need to link a bank account. This is a two-step flow using Plaid Link.3a. Create a Plaid Link token
Generate a token your frontend uses to launch the Plaid Link widget:3b. Exchange the public token
After the user completes Plaid Link, your frontend receives apublic_token. Send it to Bluum to finalize the connection:
item.itemId and item.accounts[0].accountId — you’ll need them for deposits and withdrawals.
Step 4 — Deposit funds
Fund the account via ACH using the linked bank account:pending → processing → received → completed.
You can also use manual_bank_transfer as the method — the response includes bank details and a reference code your user provides to their bank. See Deposits & Withdrawals for all funding methods.
Step 5 — Place a buy order
Once the deposit iscompleted and the wallet is funded, the user can trade.
Market buy — by quantity
Buy 10 shares of AAPL at the current market price:Market buy — by dollar amount (fractional shares)
Invest exactly $1,000 worth of GOOGL:Response
accepted → filled (or partially_filled, canceled, rejected).
Check order status:
Step 6 — Check positions
After an order fills, view the account’s holdings:Step 7 — Withdraw funds
Sell positions first, then withdraw proceeds to the linked bank account:pending → processing → submitted → completed.
Summary
| Step | Endpoint | What it does |
|---|---|---|
| 1 | POST /accounts | Create investment account with identity, contact, disclosures |
| 2 | POST /documents/accounts/{id}/upload | Upload KYC documents for verification |
| 3a | POST /accounts/{id}/funding-sources/plaid/link-token | Get Plaid Link token for bank connection UI |
| 3b | POST /accounts/{id}/funding-sources/plaid/connect | Exchange Plaid public token to finalize connection |
| 4 | POST /accounts/{id}/deposits | Deposit funds via ACH or manual bank transfer |
| 5 | POST /trading/accounts/{id}/orders | Place a buy order |
| 6 | GET /trading/accounts/{id}/positions | View current holdings |
| 7 | POST /accounts/{id}/withdrawals | Withdraw proceeds to linked bank account |
Next steps
- Platform Concepts — Understand the data model in depth
- Webhooks — Set up real-time event notifications
- Going Live — Production readiness checklist