1. Support Center
  2. Getting Ready for Trading

How do I fund an account with fiat?

Learn how to create a transfer on the Cybrid Platform to fund a customer account with fiat currency.

Choosing your funding method

There's two different ways to fund an account with fiat currency:

  1. Initiating a funding transfer from a customer's Plaid connected bank account
  2. Initiating a book transfer from the bank-level pre-funded fiat account

Method #1 - Funding from Plaid connected account

Creating the quote and transfer

Funding an account involves creating a quote, via the POST /api/quotes endpoint, then executing a transfer against that quote via the POST /api/transfers endpoint. If you head over to the /api/quotes endpoint in our Swagger docs, the process would look similar below.

Create a funding quote by executing a POST on /api/quotes:

{
"product_type": "funding",
"customer_guid": "your-customer-guid",
"asset": "USD",
"side": "deposit",
"receive_amount": 10000
}

Important:  Be careful when entering the receive_amount, as it is in the base units of the currency. In the above example, the base unit of USD is cents, so the value above of 10,000, equates to 10,000 cents, or $100.00 USD. You can always call the /api/assets endpoint to get the number of base decimals in a currency.

In our example the asset is USD, and you'll set the side to deposit, and the receive_amount to the desired amount. One you've executed the call and have your quote GUID, you can proceed to the transfers API.

You'll want to keep the customer's external_bank_account_guid handy in order to create a transfer. You can retrieve the GUID for an external account by calling the GET /api/external_bank_accounts endpoint, with the bank GUID and customer GUID.

Create a transfer by executing a POST on /api/transfers endpoint with a transfer_type of funding, and the quote GUID and external_bank_account GUID. It will look like this:

Important: If you're using the Plaid Connect method for connecting end-customer bank accounts to the Cybrid platform, you'll be limited to $100.00 funding transfers in the Sandbox. You can, however, do an unlimited number of $100.00 fundings.

{
"quote_guid": "your-quote-guid",
"transfer_type": "funding",
"external_bank_account_guid": "your-account-string",
"expected_error": "pending"
}

Note:  The expected_error is available in the sandbox environment to simulate various transfer states. This is helpful in testing success/failure scenarios. The expected_error key can be removed completely for normal operation, or the key can include one of the following: pending, in_progress, completed, failed, cancelled, manual_intervention, or reversed.

Monitoring for the transfer to be complete

After successfully creating a transfer, you will need to monitor for the transfer to be completed. Fiat transfers typically take T+1 (1 business day) to complete. This means if you request a transfer at 4pm on a Monday, it could be up to 4pm on Tuesday before the transfer has completed. This is due to the EFT or ACH processing time incurred as the money is moved between banks.

You can monitor for the transfer state by querying the GET /api/transfers/{transfer_guid} endpoint with the GUID you received from the POST call. Shortly after the transfer is created the state will be pending, but will eventually change to completed when we successfully confirm the correct amount of money has been transferred to the customers fiat account on the Cybrid Platform.

Method #2 - Funding via book transfer

Funding via a book transfer is similar to funding from a Plaid connected account, however the settlement time is significantly reduced as the funds are being settled on the internal Cybrid ledger.

Creating the quote and transfer

Funding an account via book transfer involves creating a quote, via the POST /api/quotes endpoint, then executing a transfer against that quote via the POST /api/transfers endpoint. If you head over to the /api/quotes endpoint in our Swagger docs, the process would look similar below.

Create a book transfer quote by executing a POST on /api/quotes:

{
"product_type": "book_transfer",
"customer_guid": "your-customer-guid",
"asset": "USD",
"side": "deposit",
"receive_amount": 10000
}

In our example the asset is USD, and you'll set the side to deposit, and the receive_amount to the desired amount. One you've executed the call and have your quote GUID, you can proceed to the transfers API.

You'll want to keep the customer's external_bank_account_guid handy in order to create a transfer. You can retrieve the GUID for an external account by calling the GET /api/external_bank_accounts endpoint, with the bank GUID and customer GUID.

Create a transfer by executing a POST on /api/transfers endpoint with a transfer_type of funding, and the quote GUID and external_bank_account GUID.  It will look like this:

{
"quote_guid": "your-quote-guid",
"transfer_type": "funding",
"external_bank_account_guid": "your-account-string",
"expected_error": "pending"
}