The funding process can vary depending on your setup and region and we support many cases, but everyone can do the same in the sandbox environment.
In the sandbox environment, Transfer API simulates deposits and withdrawals to/from an account. The target account is immediately credited or debited upon such a request. Once an account is credited, the account can start trading with the Orders API.
ACH (US Domestic)
For US ACH, you will need to use Plaid to obtain the user’s bank account information. You then pass the information to Alpaca using ACH API to create a Bank Link object. Once a Bank Link between a user and their bank account is established, then you can initiate both deposit and withdrawal transactions using the Transfers API.
Beginning June 1, 2022, we will begin charging for outgoing wires, both domestic and international. To help you provide the optimal customer experience we support two different flows for handling the fees:
- The end user pays the fee for every outgoing wire transfer that they initiate. The
fee_payment_methodfield will be equal to user in this case. It’s important to note that the fee stated in your contract with Alpaca will automatically be deducted from the amount entered via the Transfers API so we strongly recommend adding a notice to your UI stating that the end user will incur a fee and they should incorporate that fee into their withdrawal request.
- You will also have the option to pay the fee on behalf of your user for any given transfer. When creating the transfer, you will have to set the
fee_payment_methodfield to invoice. The fee stated in your contract will not be deducted from the amount entered via the Transfers API but you will be charged this fee in your next monthly invoice.
Wire (US Domestic)
You can initiate a withdrawal transaction with wire transfer using the Transfers API. You need to create a bank object before that. For US domestic wire transactions, we will need ABA/routing number and the account number. You can supply additional text in each transaction.
In order for us to receive the deposits and book automatically, we need an “FFC” instruction in each incoming wire transaction. Please contact us for more details.
International Wire (SWIFT)
Alpaca supports international wire transfers and the API endpoint is the same as the US domestic case. You need to provide the SWIFT code and account number of the beneficiary, as well as the address and name of the receiving bank.
The FFC instructions above work for international wires too.
If you wish and are eligible, you can send customer deposits in a bulk to your firm account first and reconcile later using the Journals API.
We need to review the entire flow first to allow you to do so, and also you may need a local license to implement this process. Please check your counsel for the local requirements.
In an effort to fight the criminal financial transactions, FinCEN enacted the Travel Rule that applies to fund transfers of more than $3,000. FAFT further adopted this from FinCEN to set the global standard, to regulate globally distributed crypto exchanges (virtual asset service providers; VASP) and many countries are due to implement this locally too.
Under this rule, financial institutions that transmit the funds are required to submit the following information to the recipient financial institutions (financial institutions here include banks and nonbanks; essentially any party that initiates the transfers).
- The name of the transmittor,
- The account number of the transmittor, if used,
- The address of the transmittor,
- The identity of the transmittor’s financial institution,
- The amount of the transmittal order,
- The execution date of the transmittal order, and
- The identity of the recipient’s financial institution
- The purpose of this requirement is for the investigators to track the flow of funds in case they need to. Failure to do so could cause a civil enforcement.
When you use Journal API to bundle a bulk of transfers for the end-users, you will need to tell about the breakdown and each transmitter information using the optional fields of the POST request.
Alpaca retains the collected information for at least five years. If the journal activities are used as part of the money transfer (other than cash movement within Alpaca), and if the journal requests don’t contain the transmitter information, we may contact you.
Instant Deposit (Beta)
As international money transfers can take days usually, under certain conditions, Alpaca supports instant deposit for better user experience. Please contact us for more details.
We support the post-trade settlement process (higher requirements and restrictions apply). Please contact us for more details.
Updated 24 days ago