Settlement Architecture
Bebop uses separate contract systems for each API:RFQ API
The RFQ API can use the router or the settlement contract. The route and integration determine the contract:
An EVM one-to-one quote can target either contract. Always use
approvalTarget, settlementAddress, and tx.to from the quote response.
Aggregation API
The Aggregation API uses a two-contract architecture:These are two distinct contracts. Takers must approve the balance manager, not the settlement contract. The quote response handles this for you via the
approvalTarget field - see Token Approvals for the full flow.Chain-Specific Addresses
The addresses above apply to all supported EVM chains except zkSync Era (chain ID 324), which uses different contract addresses. Always use the values from the quote response rather than hardcoding. See Supported Chains for the full list of networks.How Settlement Works
RFQ and Aggregation transactions
For EVM, a quote includes the complete settlement transaction intx. For Solana, an RFQ quote includes solana_tx and blockhash.
You sign and broadcast the returned transaction. The applicable settlement program checks the trade terms and transfers the tokens atomically.
If any condition fails, the entire transaction reverts - no partial state changes, no stuck funds, the contracts enforce the same guarantees and Bebop never takes custody of your tokens.
Approvals
Token approvals target theapprovalTarget address from the quote response. The general pattern is the same across both APIs - see Token Approvals for the full check-and-approve flow.
For direct EVM trades, call ERC-20
approve() before you broadcast the settlement transaction.