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 accounts

Loss coverage operates on customer and bank fiat accounts. 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.

EventCustomer platform_availableReserve platform_availableTransfer created
Deposit $100$100$500funding
Spend $60$40$500book
Return $100-$60$500funding_return
Cybrid covers the loss-$60$440loss_coverage
Customer repays $60$0$440funding
Cybrid repays your reserve$0$500loss_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 typeSource accountDestination accountMeaning
loss_coverageYour reserve accountThe customer's fiat accountYour reserve has absorbed the shortfall
loss_reclaimThe customer's fiat accountYour reserve accountThe 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_recovery transfers

Before loss coverage, a loss_recovery transfer returned the customer's balance to zero immediately. Historical loss_recovery transfers 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_return or instant_funding_return — a deposit was returned. The return_code field 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_TOKEN
GET /api/transfers?transfer_type=loss_coverage,loss_reclaim
Authorization: Bearer YOUR_TOKEN

Add 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 customer

The Cybrid team unfreezes customers; there is no public API for it. PATCH /api/customers/{customer_guid} accepts only state: 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 customer

A 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 account

Your reserve account cannot be the source of a book transfer. Fund the customer from your bank's fiat account.

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


Did this page help you?