Book Transfers
How do I execute a book transfer?
Learn how to execute fiat and crypto book transfers
Book transfers provide a zero-cost method to move funds between accounts on the Cybrid Platform. The following transfer directions are supported:
- bank -> customer
- customer -> bank
- customer -> customer
All transfers must be like for like. You can transfer:
- fiat -> fiat
- crypto -> crypto
The source and destination accounts must share the same asset type (e.g., USD -> USD, USDC -> USDC).
Pre-funded bank accountsBook transfers can move funds between a partner's pre-funded bank accounts and customer accounts. For more information about pre-funding, contact partner support.
Side displayBook transfers are always recorded as
depositat the API and raw data level. In the Cybrid portal or custom UIs, the transaction side may appear aswithdrawalordepositdepending on the viewer's perspective (e.g., customer vs. bank). This is a display convention, not a data inconsistency. To always showdeposit, display the API'ssidevalue directly in your frontend logic.
Fiat book transfer
This example transfers $1 USD from a fiat funding bank account to a fiat funding customer account.
- Create a quote using
POST /api/quotes:- Set
product_typeto"book_transfer" - Set
assetto"USD" - Omit
side-- all book transfers default to"deposit" - Set
deliver_amountto100(amount in cents)
- Set
{
"product_type": "book_transfer",
"asset": "USD",
"deliver_amount": 100
}
deliver_amountvsreceive_amount
deliver_amountfixes what you send; fees come out of what the recipient gets.receive_amountfixes what the recipient gets; you pay fees on top. See Create and execute a trade for the canonical explanation.
- Create a transfer using
POST /api/transfers:- Set
transfer_typeto"book" - Set
quote_guidto the quote GUID from step 1 - Set
source_account_guidto the bank account anddestination_account_guidto the customer account - Provide
source_participantsanddestination_participants
- Set
{
"transfer_type": "book",
"quote_guid": "<quote_guid>",
"source_account_guid": "<bank account_guid>",
"destination_account_guid": "<customer account_guid>",
"source_participants": [
{
"type": "bank",
"amount": 100,
"guid": "<bank_guid>"
}
],
"destination_participants": [
{
"type": "customer",
"amount": 100,
"guid": "<customer_guid>"
}
]
}- Once the transfer executes, the transferred amount is immediately reflected in the
platform_availablebalance of both the bank and customer accounts.
Crypto book transfer
This example transfers 1 USDC (Ethereum) from a crypto trading bank account to a crypto trading customer account.
- Create a quote using
POST /api/quotes:- Set
product_typeto"book_transfer" - Set
assetto"USDC" - Omit
side-- all book transfers default to"deposit" - Set
deliver_amountto1000000(1 USDC in base units)
- Set
{
"product_type": "book_transfer",
"asset": "USDC",
"deliver_amount": 1000000
}- Create a transfer using
POST /api/transfers:- Set
transfer_typeto"book" - Set
quote_guidto the quote GUID from step 1 - Set
source_account_guidto the bank account anddestination_account_guidto the customer account - Provide
source_participantsanddestination_participants
- Set
{
"transfer_type": "book",
"quote_guid": "<quote_guid>",
"source_account_guid": "<bank account_guid>",
"destination_account_guid": "<customer account_guid>",
"source_participants": [
{
"type": "bank",
"amount": 1000000,
"guid": "<bank_guid>"
}
],
"destination_participants": [
{
"type": "customer",
"amount": 1000000,
"guid": "<customer_guid>"
}
]
}- Once the transfer executes, the transferred amount is immediately reflected in the
platform_availablebalance of both the bank and customer accounts.
Monitor the transfer
Book transfers settle almost instantly, but all transfers are asynchronous. Confirm the transfer
reaches completed before relying on the funds.
Poll GET /api/transfers/{transfer_guid} to check the state, or register for
webhooks to receive automatic notifications on state
changes.
Sandbox state testingThe
expected_statefield is available only in sandbox to force specific transfer outcomes. Add"expected_state": "pending"to the transfer request body to exercise state handling. See Sandbox transfers for more.
Updated 11 days ago
