Negative Customer Balances
How does Cybrid handle a customer who owes money after a return?
Overview
When a deposit is returned after the customer has already spent the funds, the customer's fiat account goes negative. That negative balance is the customer's debt to you, and Cybrid keeps it: the balance stays negative until the customer repays.
Your reserve account covers the shortfall at the same time, so customer funds on the Platform remain fully backed. Coverage is recorded alongside the debt rather than replacing it, which means you keep a per-customer record of who owes what and for how long.
When funds later arrive in the account, the balance rises toward zero and your reserve is repaid automatically. Cybrid creates both the coverage and the repayment; you do not initiate either.
This applies to fiat accountsLoss coverage operates on customer and bank
fiataccounts. Trading and crypto accounts are not covered.
Understand the lifecycle
Consider a bank holding a $500 reserve, and a customer who deposits $100, spends $60, and then has the $100 deposit returned. The customer is left owing $60. Later they repay it.
| Event | Customer platform_available | Reserve platform_available | Transfer created |
|---|---|---|---|
| Deposit $100 | $100 | $500 | funding |
| Spend $60 | $40 | $500 | book |
| Return $100 | -$60 | $500 | funding_return |
| Cybrid covers the loss | -$60 | $440 | loss_coverage |
| Customer repays $60 | $0 | $440 | funding |
| Cybrid repays your reserve | $0 | $500 | loss_reclaim |
No cash moves when the loss is covered or reclaimed — the money left the Platform when the return was paid. Coverage and reclaim reclassify who is carrying the shortfall.
Review loss transfers
Two transfer types record the lifecycle. The Platform creates both; you cannot create either one, and neither can be returned.
| Transfer type | Source account | Destination account | Meaning |
|---|---|---|---|
loss_coverage | Your reserve account | The customer's fiat account | Your reserve has absorbed the shortfall |
loss_reclaim | The customer's fiat account | Your reserve account | The customer repaid; your reserve is made whole |
A reclaim can never exceed what was covered, so a customer who repays more than they owed keeps the surplus as a positive balance.
Partial movements are normal. A customer who repays half their debt produces a loss_reclaim for half the covered amount, leaving the rest of the position open.
loss_recoverytransfersBefore loss coverage, a
loss_recoverytransfer returned the customer's balance to zero immediately. Historicalloss_recoverytransfers remain in your transfer list, but the Platform no longer creates them.
Detect a negative balance
Negative balances always originate from a return, so drive detection from returns and from the coverage transfers themselves rather than scanning your accounts for negative balances.
Subscribe to webhooks
Subscribe to transfer.completed events, then retrieve the transfer using the event's object_guid and branch on transfer_type:
funding_returnorinstant_funding_return— a deposit was returned. Thereturn_codefield tells you why.loss_coverage— a negative position was opened and covered from your reserve.loss_reclaim— a customer repaid and your reserve was made whole.
For subscription setup and signature verification, see Webhooks.
List returns and loss transfers
To reconcile, list the relevant transfer types:
GET /api/transfers?transfer_type=funding_return,instant_funding_return
Authorization: Bearer YOUR_TOKENGET /api/transfers?transfer_type=loss_coverage,loss_reclaim
Authorization: Bearer YOUR_TOKENAdd customer_guid or account_guid to narrow the listing to a single customer or account.
Size the debt
Once you know which customers are affected, retrieve their fiat account. The negative platform_available balance is the outstanding debt:
GET /api/accounts/{account_guid}
Authorization: Bearer YOUR_TOKEN{
"guid": "account_guid",
"type": "fiat",
"asset": "USD",
"state": "created",
"customer_guid": "customer_guid",
"platform_balance": -6000,
"platform_available": -6000,
"bank_guid": "bank_guid"
}Understand the customer freeze
A deposit return that leaves the customer with a negative balance freezes the customer: their state becomes frozen and they cannot initiate trades or transfers on the Platform. Funds can still arrive in the account — see Collect the debt. Repaying the debt does not unfreeze the customer.
Contact Cybrid to unfreeze a customerThe Cybrid team unfreezes customers; there is no public API for it.
PATCH /api/customers/{customer_guid}accepts onlystate: unverified, which invalidates the customer's compliance decisions and requires them to re-verify — it does not unfreeze them.
Coverage and reclaim continue to run while the customer is frozen. The customer can also still repay by pushing funds to their deposit bank account, but you cannot move funds to them with a book transfer until they are unfrozen. See Collect the debt.
Collect the debt
Repayment is arithmetic: any credit to the customer's fiat account raises the balance toward zero, and the loss_reclaim follows automatically. There is no separate collection API, and partial repayments are fine.
Because a negative balance freezes the customer, have them repay by pushing funds themselves. That path works while they are frozen; a book transfer does not.
Have the customer push funds to their deposit bank account
The customer sends funds from their own bank to their Cybrid deposit bank account — ACH push, wire, RTP, or FedNow for USD accounts, or EFT for CAD accounts. The deposit credits their fiat account on arrival, whatever the customer's state.
Book funds from your own fiat account
If you collect from the customer outside the Platform, move the equivalent amount from your bank's fiat account to the customer's fiat account with a book transfer.
Book transfers require an unfrozen customerA book transfer into a frozen customer's account fails with
frozen_customer(HTTP 422). Contact the Cybrid team to unfreeze the customer before using this path.
Book transfers cannot draw on the reserve accountYour reserve account cannot be the source of a book transfer. Fund the customer from your bank's
fiataccount.
Monitor your reserve exposure
Coverage draws on your reserve without a balance check. Every loss for an asset nets against that asset's reserve, so the reserve carries your aggregate covered-loss exposure for that asset. Its balance also moves when you top up, so a drawdown tracks outstanding exposure only between top-ups. A negative reserve is the unambiguous signal: covered losses have exceeded everything you have funded.
A negative reserve balance is your outstanding debt to Cybrid, collected under your commercial agreement. Monitor the reserve's platform_available balance and restore it as described in Maintain your reserve balance.
Related resources
Updated about 2 hours ago

