ACAT API
Can a user submit multiple ACATS at once?
Incoming ACATS to Alpaca, a user can submit multiple ACATS requests provided that they are either coming from different contra brokers or coming from the same contra broker but for different account numbers.
Outgoing ACATS sent by Alpaca, we only allow one outgoing ACATS per account at a time. We also do not support both incoming and outgoing ACATS to be processed in parallel.
What are the eligibility criteria for a user to submit an incoming ACATS request to Alpaca?
- The user’s account must be in a KYC approved state meaning the account status is one of the following; ACTIVE, APPROVED, or ACCOUNT_UPDATED.
- The assets scoped for the transfer must be supported for ACATS transfer by Alpaca. See supported assets in the question below
- The user’s name, tax ID number, and account types must match between the contra broker and Alpaca.
What are the eligibility criteria for a user to have an outgoing ACATS transfer successfully processed and sent by Alpaca?
- The account cannot be enrolled in our High Yield cash program. If the account is already enrolled then our team will disable it in order to process the ACATS request.
- If the user is requesting a full transfer then fractional shares and any ACATS unsupported assets cannot be transferred. Any fractional shares or unsupported assets held by the user will be liquidated before being sent out in the ACATS transfer.
- The account cannot have any pending debit interest unpaid. If there is an unpaid debit balance then our team may hold funds to cover any pending interest charges before sending out the funds in the ACATS transfer.
What kind of assets are supported for ACATS transfers?
We support transferring in all US securities that are tradable on Alpaca’s platform as well as cash. Unsupported assets include: Options (supported for outgoing but not for incoming ACATS at this time) Crypto Fixed income Mutual funds Bonds Derivatives (futures or event contracts) Annuities Certificates of deposits (CDs) OTC Stocks CVRs Warrants Other assets that haven't been identified as transferable assets
What if a user’s outside account has unsupported assets?
The user should either liquidate the unsupported assets from their outside account and then request a full transfer or request a partial transfer and only request the transfer with the supported assets. If the user initiates a request for an account holding unsupported assets, the transfer will be rejected.
What account types are supported for ACATS?
For incoming and outgoing ACATS transfers, we support transferring into and out of individual, roth IRA, traditional IRA, entity, and custodial accounts. We also support transferring a joint account into an individual account held at Alpaca or the opposite of transferring an individual account’s assets into an external joint account held at another brokerage. Note this is the only case where the account types are not required to match.
Is there any tax implication if a user transfers their outside IRA account to their IRA at Alpaca via ACATS?
No this is considered an IRA Transfer which is a nontaxable event.
What’s a DTC number?
A DTC number is the unique 4 digit number assigned to each clearing broker by DTCC. This number is used to facilitate transfers by identifying which broker the assets should be sent to or requested from. You can find your brokerage’s DTC number by looking it up on their FAQ page or contacting them directly.
What is Alpaca’s DTC number?
Alpaca’s DTC number is 3021.
Is cost basis data transferred along with the positions for incoming ACATS to Alpaca?
Cost basis data will be added to the positions when it is provided by the contra broker. The contra broker has up to 15 calendar days to send the cost basis information after the transfer is settled. If we don’t get this information, you need to ask the other brokerage to send this information to us to remedy this issue. In general the flow for cost basis will follow this flow:
How long does it take for an ACATS transfer to process?
It can take anywhere from 5-7 business days for assets to settle but cost basis data can arrive later.
Is an ACATS transfer considered final after the assets have settled and cost basis data has arrived?
The transfer is considered final after assets have settled and cost basis data has arrived but please note that residual transfers can continue to come into Alpaca but these would be recorded as separate, distinct ACATS transfers. This can happen for example in the event of the outside account being credited dividends after the funds have already been sent out by the contra broker.
Can I track the transfer?
Yes, we provide both a GET ACAT Transfer endpoint for pulling the status, along with the transfer details, at any given moment in time as well as an SSE endpoint for pulling real time updates to the ACATS transfer throughout its lifecycle.
What happens if a transfer is rejected?
We provide both the rejection reason, originating from DTCC, and a freeform rejection message field that our team may use to send a custom message with the details of the reason for rejection. We encourage you to build rejection flows into your UX wherever possible. For in depth guidance on what each rejection reason means and what action is needed from you refer to the question below.
What are some of the most common reasons for an ACATS transfer to be rejected?
An account transfer can be rejected for a number of reasons, including the following:
- The account number was entered incorrectly.
- Account information such as name, SSN/Tax ID, or account type does not match between brokers
- The outside account contains unsupported assets. We provide an asset level breakdown for each ACATS transfer which includes the status of each asset via API. This endpoint can be used to easily identify which assets are unsupported so you can guide your user to resubmit the transfer request but excluding these assets.
- You haven't met the margin balance requirements. Your account will need to support the margin balances and positions you transfer in to avoid any margin calls or account deficits.
Do I need to submit a new transfer request if the transfer was rejected?
Yes, if a transfer is rejected that is considered a final state so the user must resubmit a new request if they still wish to transfer their account.
What action should I take when a transfer is rejected?
A breakdown of rejection reasons, what it means, and what action you can take is documented here:
Rejection Code | What It Means | Action Required |
|---|---|---|
SS_TAX_ID_MISMATCH | The SSN or TIN provided doesn't match the delivering firm's records | Verify correct SSN/TIN with customer; Customer should ensure tax ID is accurate and matching and both firms and resubmit with accurate tax ID |
ACCOUNT_TITLE_MISMATCH | Account owner name or registration type doesn't match (e.g., individual vs. IRA) | Confirm exact account title with delivering firm; ensure name spelling and account type match exactly; resubmit |
DOCUMENTATION_NEEDED | Delivering firm requires additional paperwork (authorization forms, legal docs, etc.). This is sometimes used as a general rejection reason, so the comments provided would provide more insight into what is needed for a successful transfer. | Contact delivering firm to identify required documents; obtain and submit necessary paperwork; resubmit. If no documentation needed, work with firm to understand what is needed to resubmit |
ACCOUNT_FLAT | Account is empty or already closed—no assets to transfer; or non transferable assets in the account (e.g only fractional shares) | Verify account status with customer; confirm assets exist, and are transferable before resubmitting; may need to cancel transfer. |
INVALID_ACCOUNT_NUMBER | Account number doesn't exist, is incorrect, or improperly formatted | Double-check account number with customer and delivering firm; verify format requirements; resubmit with correct number |
DUPLICATE | Another transfer request already in process or recently completed | Check for existing transfer; cancel duplicate or wait for original to complete; Confirm with client if duplicate may be going to another firm; submit new request only if original was cancelled |
ACCOUNT_IN_DISTRIBUTION_OR_TRANSFER | Account involved in another transfer (ACAT or ACH), estate distribution, or legal proceeding | Wait for current process to complete; Customer to confirm with delivering firm on timing; submit new request once account is available |
CLIENT_RESCINDED | Customer contacted delivering firm and cancelled the transfer | Confirm customer intent; if transfer still desired, obtain fresh authorization and submit entirely new request; Customer needs to confirm with delivering firm they are authorizing the transfer request again |
MISSING_AUTHORIZATION_SIGNATURE | Required customer signature missing from authorization form. This is sometimes used as a general rejection reason, so the comments provided would provide more insight into what is needed for a successful transfer. | Obtain a properly signed authorization form from the customer; submit a new transfer request with complete documentation. If no signature is needed, work with firm to understand what is needed to resubmit |
ACCOUNT_VIOLATES_CREDIT_POLICY_OF_RECEIVING_FIRM | The account doesn't meet Alpaca's margin, risk, or account type requirements. Assets in the transfer may be unsupported by Alpaca | Review Alpaca's account policies; may need to adjust account type, close margin positions, non-transferrable assets, or transfer to different account structure |
UNRECOGNIZED_FOR_RESIDUAL_CREDIT_BALANCE | Cannot process remaining cash balance in transfer | Contact Alpaca operations for clarification; may need to handle cash separately or adjust transfer type |
PARTIAL_TRANSFER_DELIVERER_INITIATED_REJECT | Alpaca doesn't accept this deliverer-initiated partial transfer | Coordinate with delivering firm; may need to initiate as receiving-firm partial transfer instead |
FAIL_REVERSAL_REJECT | Rejecting correction of previously failed transfer | Contact Alpaca operations to determine next steps; may need to submit fresh transfer request |
RECLAIM_REJECT | Rejecting request to return assets to delivering firm | Contact Alpaca operations to determine next steps |
MUTUAL_FUND_CLEANUP | Rejecting mutual fund residual/cleanup transaction | Alpaca may not support certain mutual funds; verify fund eligibility |
INVALID_PARTICIPANT | Broker DTCC number is invalid or incorrectly formatted | Verify correct DTCC participant number for delivering firm; ensure firm is DTCC/ACATs eligible, and that the customer is not using same broker for both sides; resubmit with correct number |
Updated about 3 hours ago