- Incoming — assets are pulled into a Buildmarkets account from the delivering firm.
- Full — the whole account moves, and the account at the delivering firm is closed.
ACATS transfers are only supported on self-directed accounts. Initiating a transfer on a managed account returns
400 ACAT_NOT_ALLOWED_FOR_MANAGED.Endpoints
Transfer lifecycle
There are no webhook events for ACATS transfers. Poll
GET /v1/accounts/{accountId}/acats/{acatId} to track progress.
1. Choose the delivering firm
The transfer needs the delivering firm’s DTC/NSCC participant number.GET /v1/acats/brokers returns common firms so you can build a picker in your UI.
2. Initiate the transfer
POST /v1/accounts/{accountId}/acats/incoming
201 Created):
3. Track the transfer
List every incoming transfer on an account:id:
201 response above.
Testing in sandbox
In sandbox, a transfer’s status advances automatically based on how long ago it was created, so you can build and test your polling loop without waiting on real settlement:
Sandbox transfers always settle. To test your handling of
rejected, simulate that state in your own code.
Common errors
Next steps
- Deposits & Withdrawals → — Move cash in and out of the account
- Positions & Portfolio → — View the positions once a transfer settles