Deposit Bank Accounts

What are deposit bank accounts for and how do I use them?

Deposit bank accounts are routable bank accounts that allow third-party Wire, ACH push, or RTP/FedNow transfers on and off the platform. The account includes complete routing details and beneficial owner information.

Deposit bank accounts can be created for either a bank or a customer; as a result, each deposit bank account is either linked to a bank-level or a customer platform fiat account. Funds deposited or withdrawn from a deposit bank account are reflected in the platform_balance and platform_available values of the linked fiat platform account. Deposit bank accounts do not hold funds directly.

A few things to keep in mind:

  • Deposit bank accounts do not hold funds directly.
  • Currently, the deposit bank accounts can only be created for US banks.
  • Only one deposit bank account can be created for each platform fiat account. In other words, if a bank or a customer has multiple fiat accounts, a unique deposit bank account can be created for each individual fiat account.
  • Transfers into a deposit bank account are never initiated by the Cybrid platform; they are always initiated externally.

Deposit Bank Account Types

There are two types of deposit bank accounts. A main account, and a sub_account.

Main

Main accounts have a unique account_number, and can accept deposits as well as initiate withdrawals. Because there is a unique account number, a main account has an opening fee and a monthly maintenance fee:

  • One-time $1.00 fee to create
  • Recurring $0.50 fee to maintain / per month

When processing a withdrawal transfer from a main account, the recipient will see the main account's holder (counterparty) information, such as the legal name and address, on the transfer if the send_as_deposit_bank_account_guid is set.

To create a Main account, set the type to main, such as the following API request:

POST /api/deposit_bank_accounts

{
  "type": "main",
  "customer_guid": "customer_guid",
  "account_guid": "customer_fiat_account_guid"
}
{
  "created_at": "datetime",
  "updated_at": "datetime",
  "guid": "deposit_bank_account_guid",
  "type": "main",
  "bank_guid": "bank_guid",
  "customer_guid": "customer_guid",
  "account_guid": "customer_fiat_account_guid",
  "asset": "USD",
  "state": "created",
  "unique_memo_id": "unique_memo_id",
  "counterparty_name": "customer_legal_name",
  "counterparty_address": {
    "street": "1 Main St.",
    "street2": null,
    "city": "Los Angeles",
    "subdivision": "CA",
    "postal_code": "12345",
    "country_code": "US"
  },
  "account_details": [
    {
      "account_number": "111222333"
    }
  ],
  "routing_details": [
    {
      "routing_number": "021000021",
      "routing_number_type": "ABA"
    }
  ],
  "labels": null
}

Sub-Account

Sub-accounts are used when you want to allow your customers to receive wires directly into their fiat account without needing to generate a unique deposit bank account for each (i.e., a main account). There are no fees for sub-accounts.

💡

Only a customer can have sub_account type deposit bank accounts.

A sub-account inherits the account_number and routing_number from the main account. When depositing funds (e.g. using a Wire transfer) to a sub-account, the customer must include the unique_memo_id and the platform will automatically reconcile the deposit into the customer's fiat account instead of the bank's fiat account. If the customer forgets to include the unique_memo_id, or if they use an incorrect memo, the deposit will still complete successfully, but the funds will reflect on the partner (bank-level) fiat account instead. You will then need to initiate a book transfer to transfer the funds to the customer's fiat account.

To create a sub-account, set the type to sub_account and set the parent_deposit_bank_account_guid to your partner (bank-level) deposit bank account (of type main) or the same customer deposit bank account (of type main), such as the following API request:

POST /api/deposit_bank_accounts

{
  "type": "sub_account",
  "customer_guid": "customer_guid",
  "account_guid": "customer_fiat_account_guid",
  "parent_deposit_bank_account_guid": "main_deposit_bank_account_guid"
}
{
  "created_at": "datetime",
  "updated_at": "2024-08-16T14:33:01.953969Z",
  "guid": "deposit_bank_account_guid",
  "type": "sub_account",
  "bank_guid": "bank_guid",
  "customer_guid": "customer_guid",
  "account_guid": "customer_fiat_account_guid",
  "asset": "USD",
  "state": "created",
  "unique_memo_id": "unique_memo_id",
  "counterparty_name": "customer_legal_name",
  "counterparty_address": {
    "street": "1 Main St.",
    "street2": null,
    "city": "Los Angeles",
    "subdivision": "CA",
    "postal_code": "12345",
    "country_code": "US"
  },
  "account_details": [
    {
      "account_number": "111222333"
    }
  ],
  "routing_details": [
    {
      "routing_number": "021000021",
      "routing_number_type": "ABA"
    }
  ],
  "parent_deposit_bank_account_guid": "parent_deposit_bank_account_guid",
  "labels": null
}

Beneficiary Information

For type main deposit bank accounts, the platform uses the PII data collected during KYC for the beneficiary information on the account, which is displayed in counter_party_name and counter_party_address.

For type sub_account deposit bank accounts, the beneficiary information is the information associated with the parent main account.

Send as a Deposit Bank Account

As briefly mentioned above, the only way for a customer to set their name and address as the sender information (as opposed to partner information) on a withdrawal fiat transfer is if they open a main deposit bank account and then use that account's unique Identifier in the send_as_deposit_bank_account_guid, similar to the following API request:

POST api/transfers

{
	"quote_guid": "quote_guid",
	"transfer_type": "funding",
	"customer_guid": "customer_guid",
	"external_bank_account_guid": "customer_external_bank_account_guid",
	"payment_rail": "rtp",
	"source_participants": [
		{
			"type": "customer",
			"amount": 5000,
			"guid": "customer_guid"
		}
	],
	"destination_participants": [
		{
			"type": "customer",
			"amount": 5000,
			"guid": "customer_guid"
		}
  ],
  "send_as_deposit_bank_account_guid": "main_customer_deposit_bank_account"
}