Reserve Account
How does the reserve account work?
Overview
The reserve account acts as a liquidity buffer. Cybrid uses it to restore customer accounts when deposits are returned.
When a deposit returns (e.g., ACH return), the customer's balance may go negative. Cybrid automatically uses your reserve funds to bring the balance back to zero.
Calculate reserve requirements
When Cybrid originates ACH deposits, the counterparty bank (the source of the funds) has 2 business days to request an administrative return. This is typically type R01, which denotes an NSF or insufficient funds error.
Counterparty banks may send the funds, then realize insufficient funds existed in the customer's account and issue a return. R01 returns are not the only type—counterparty banks can also issue various other returns within the 2-day administrative window.
When a counterparty bank issues an ACH return, our bank must respond immediately and return the funds to the counterparty bank. This creates situations where the funds could have already been used on the Cybrid Platform to make a payment or swap for a digital asset, but our bank must send the funds back. Cybrid incurs a loss.
The reserve fund limits Cybrid's liability against ACH return losses. It is essential when partners want to remove the standard 2 business day hold that Cybrid places on ACH deposits.
Extended risk from unauthorized returns
In addition to the 2-business-day administrative return window, ACH deposits are subject to unauthorized debit returns for a longer period. For consumer accounts, a counterparty bank may submit an unauthorized return (most commonly R10 – Unauthorized Debit) up to 60 calendar days after the consumer receives the bank statement on which the transaction appears.
These returns are initiated due to customer disputes, fraud claims, or authorization issues and can occur well after funds have settled and been made available on the Cybrid Platform. If the funds have already been used for payments, swaps, or digital asset purchases, Cybrid remains obligated to return the funds when the unauthorized return is received.
As a result, ACH deposits carry ongoing exposure beyond the initial hold period. The reserve fund is required to limit Cybrid’s financial exposure to losses arising from both short-term administrative returns and delayed unauthorized returns, particularly when partners request faster access to ACH funds or removal of the standard hold.
Retrieve reserve account details
When you list platform accounts or retrieve your reserve account, you see the following fields:
| Field | Description |
|---|---|
guid | Unique identifier for the reserve account |
type | reserve |
asset | The fiat currency code (e.g., USD) |
state | Account state (typically created) |
platform_balance | Current balance in base units (e.g., cents for USD) |
platform_available | Available balance for operations |
To retrieve your reserve account:
GET /api/accounts?type=reserve
Authorization: Bearer YOUR_TOKEN{
"total": 1,
"page": 0,
"per_page": 10,
"objects": [
{
"guid": "account_guid",
"type": "reserve",
"asset": "USD",
"state": "created",
"platform_balance": 500000,
"platform_available": 500000,
"bank_guid": "bank_guid"
}
]
}Manage your reserve account
Each production bank on the Cybrid Platform has an associated reserve account that can hold fiat funds.
Cybrid's compliance team assesses your risk profile, overall transaction flow or projections, and determines the amount of reserve you must hold on the Cybrid Platform.
Cybrid automatically creates the reserve account when you create your production bank. If you do not have a reserve account, contact the Cybrid team and the account will be created for you.
Withdraw from reserve account
You cannot withdraw funds from the reserve account via the public API. Book transfers with the reserve account as the source will fail.
This restriction ensures the reserve maintains sufficient funds to cover potential customer losses. Only Cybrid can withdraw funds from the reserve account during loss recovery.
Review loss recovery transfers
When a loss occurs on the Cybrid Platform due to a transfer return, Cybrid recovers the lost funds using your reserve account.
When Cybrid uses your reserve to cover a returned deposit, a loss recovery transfer appears in your transfer list with the following characteristics:
| Field | Value |
|---|---|
transfer_type | loss_recovery |
source_account | Your reserve account |
destination_account | The affected customer's fiat account |
The platform creates these transfers automatically—you do not initiate them. You can review loss recoveries by querying the List Transfers endpoint:
GET /api/transfers?transfer_type=loss_recovery
Authorization: Bearer YOUR_TOKENTrack loss recovery
When Cybrid processes a return for a customer, Cybrid attempts to recover funds the customer may have, such as from the fiat balance or crypto holdings from an associated crypto purchase.
Cybrid can recover most or all of the returned funds when the customer has sufficient assets. However, a negative difference may remain after selling assets if the customer lacks sufficient funds.
In these situations, a customer's account will have a negative balance.
Cybrid processes loss recoveries on a bi-monthly basis, typically around the 1st of the month and the 15th of the month. This gives you time to work directly with customers to recover funds before Cybrid pulls funds from your reserve account.
If Cybrid pulls funds from your reserve account as part of a loss recovery, support or an automated message in Slack will notify you.
Maintain your reserve balance
You must maintain at least 70% of your reserve balance. When the reserve drops below 70%, Cybrid automatically enables a 2-business-day hold on ACH deposits until you restore the minimum reserve level.
If your reserve drops below this threshold, the support team will notify you to top up the reserve account. After you fund your reserve account back to the minimum reserve level, contact the Cybrid team so the 2-business-day hold on ACH deposits can be removed.
Minimum reserve levelThe minimum reserve level for all partners:
$5,000 USD + (5% - 15%) of 2-day Volume*.*Or projected volume, based on partner risk profile and transaction sizes.
Operational recommendations
- Monitor your reserve balance: Regularly check
platform_availableto ensure adequate funds - Top up proactively: Transfer funds from your fiat account to the reserve before it runs low
- Review loss recovery transfers: Track these transfers to understand your loss exposure from returned deposits
Fund your reserve account
To fund your reserve account, retrieve your deposit bank account details and initiate an external transfer.
Step 1: Retrieve your deposit bank account details
First, list deposit bank accounts for your reserve account to find the associated deposit bank account:
GET /api/deposit_bank_accounts?bank_guid={bank_guid}
Authorization: Bearer YOUR_TOKEN{
"total": 1,
"page": 0,
"per_page": 10,
"objects": [
{
"created_at": "datetime",
"updated_at": "datetime",
"guid": "deposit_bank_account_guid",
"type": "main",
"bank_guid": "bank_guid",
"customer_guid": null,
"account_guid": "account_guid",
"asset": "USD",
"state": "created",
"unique_memo_id": "unique_memo_id",
"labels": null
}
]
}Then retrieve the full details including routing information using the deposit bank account GUID:
GET /api/deposit_bank_accounts/{deposit_bank_account_guid}
Authorization: Bearer YOUR_TOKEN{
"created_at": "datetime",
"updated_at": "datetime",
"guid": "deposit_bank_account_guid",
"type": "main",
"bank_guid": "bank_guid",
"customer_guid": null,
"account_guid": "account_guid",
"asset": "USD",
"state": "created",
"unique_memo_id": "unique_memo_id",
"counterparty_name": "counterparty_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
}Step 2: Initiate an external transfer
Initiate an ACH push, Wire, or RTP/FedNow transfer to the deposit bank account using your online banking or other method outside of the Cybrid platform.
Monitor the transfer until it completes:
GET /api/transfers?transfer_type=funding&side=deposit
Authorization: Bearer YOUR_TOKENCreate a deposit bank account for existing reserve accounts
If you have a reserve account that was created before February 2026, you must manually create a deposit bank account for it before you can receive external funds.
Step 1: Create the deposit bank account
POST /api/deposit_bank_accounts
Content-Type: application/json
Authorization: Bearer YOUR_TOKEN
{
"type": "main",
"account_guid": "{reserve_account_guid}"
}{
"created_at": "datetime",
"updated_at": "datetime",
"guid": "deposit_bank_account_guid",
"type": "main",
"bank_guid": "bank_guid",
"customer_guid": null,
"account_guid": "account_guid",
"asset": "USD",
"state": "storing",
"unique_memo_id": "unique_memo_id",
"labels": null
}Step 2: Monitor the deposit bank account state
The deposit bank account state will transition from storing to created. Monitor the state:
GET /api/deposit_bank_accounts/{deposit_bank_account_guid}
Authorization: Bearer YOUR_TOKENOnce the state is created, you can proceed to fund your reserve account following the steps
above.
Related resources
Updated 5 days ago
