How does a crypto OTC desk keep its books?
In this article

    A crypto OTC desk keeps three records for every trade: a trade record that says what was agreed, a movement record for each leg that says what actually moved, and an inventory record that carries the quantity held and its cost. It reconciles the three against its wallets, its custodians and its bank accounts every day, so that the general ledger is a summary of facts already proven rather than a place where problems are discovered at month-end.

    This article is written for the founder, operations lead or finance lead of a small desk or brokerage, and for the accountant who knows double-entry bookkeeping well but has never booked a digital asset. It covers what happens around the trade: the records, the entries, the costing, the daily routine and the month-end pack. It is general information, not accounting or tax advice. Accounting standards, tax rules and client-asset rules differ from one country to the next, and a desk's own auditor or adviser decides how they apply to it.

    One term first. An over-the-counter (OTC) desk trades directly with a counterparty at a negotiated price, away from an exchange order book. Nothing about that changes the logic of bookkeeping. What changes is the evidence: one side of each trade settles in a bank account, the other on a public ledger or inside a custodian, and the books have to tie to both.

    $22,500trading result on a principal sale of 25 BTC in the worked day
    14.9998 BTCclosing inventory, after a network fee paid in the asset
    $23,260.40result for the day, equal to the change in net assets

    Illustrative worked day of three trades, detailed further down: weighted average cost, prices and quantities chosen for readable arithmetic.

    What records does a crypto OTC desk have to keep?

    A crypto OTC desk has to keep a trade record, a movement record for each leg of each trade, an inventory record with cost, and a client record that separates what belongs to clients from what belongs to the desk. Each record has one source of truth outside the accounting system, and each is reconciled to that source on a fixed rhythm.

    Related readHow is a crypto OTC trade taxed in the United States?19 min

    The trade record is the commercial fact: who agreed what, with whom, at what price, at what time, and in what capacity. The movement record is the physical fact: a bank credit or debit, an onchain transfer with its transaction identifier, or a book transfer inside a custodian. A trade normally has two movements, one per leg, and it can have more when a leg is delivered in parts. The inventory record is the accounting fact that results from the first two: how many units of each asset the desk holds, where they are, and what they cost.

    Keeping the three apart is the whole point. A trade that exists with no movement is an unsettled position: a receivable or a payable. A movement that exists with no trade is either a transfer between the desk's own wallets, a fee, a client deposit, or an error. A desk that books straight from bank and wallet statements to the ledger, with no trade record in between, cannot tell those cases apart.

    Record What it holds Source of truth Reconciled
    Trade record Trade ID, date and time, counterparty, capacity, asset, quantity, price, notional, fees, who introduced it Signed confirmation or recorded quote and acceptance Daily, against confirmations
    Movement record One line per leg: trade ID, direction, asset, quantity, account or wallet, bank reference or transaction identifier, network fee Bank statement, public ledger, custodian statement Daily
    Inventory record Quantity per asset and per location, cost of each holding, costing method Sum of booked movements, proven by wallet and custodian balances Daily for quantity, at least monthly for value
    Client record Balance owed to or held for each client, per asset Client agreements, segregated accounts and wallets Daily

    How do principal and agent bookkeeping differ?

    A principal desk buys the asset onto its own balance sheet and sells it from there, so it carries inventory and books a trading result; an agent desk arranges a trade between two other parties, never owns the asset, and books only a fee. The capacity is set by the contract with the client, not by how the desk describes itself.

    In plain words, here is what a principal desk's journal does. When it buys, inventory goes up by the quantity bought at the price paid, and cash goes down, or a payable to the seller goes up until the cash is sent. When it sells, cash or a receivable goes up by the sale proceeds, inventory goes down by the cost of the units sold, and the difference between proceeds and cost is the trading result. The desk's income is that difference.

    Related readHow is a sale of locked or vesting tokens priced and settled OTC?23 min

    An agent desk's journal is shorter. When the trade it arranged completes, it records a fee receivable from whoever owes the fee and fee income of the same amount. No inventory moves, because the desk never held the asset. If client money or client assets pass through an account the desk controls on the way from one party to the other, the desk records the amount received and, at the same moment, an equal liability to the client. That amount is never income and never inventory.

    Point Principal desk Agent desk
    Who owns the asset between the two sides The desk The clients, never the desk
    What the desk earns The difference between sale proceeds and cost A fee, usually a percentage of the notional
    Inventory in the books Yes, with a cost None
    Price risk between the two sides Carried by the desk Carried by the clients
    Client assets passing through Not applicable to the desk's own trades Booked as held for clients, with an equal liability

    Many small desks do both, depending on the trade, and some run a matched-principal model in which they buy from one client only when a sale to another is already agreed. A matched-principal trade is still booked as two principal trades: the desk owned the asset, even if only for minutes, and the gap between the two prices is a trading result, not a fee.

    How is the inventory costed, and which accounting standard decides?

    A desk's inventory is costed with one stated method, most often weighted average cost, first in first out or specific identification, and the applicable accounting standard then decides whether the holding is carried at cost or remeasured at fair value. The costing method and the measurement basis are two separate choices, and both are written into the desk's accounting policy.

    The three costing methods answer one question: when the desk sells 25 units, which cost leaves the books? Weighted average cost recomputes one average after every purchase and applies it to every sale. First in, first out (FIFO) assumes the oldest units are sold first, so it needs the inventory record kept as a list of lots with their dates and costs. Specific identification matches each sale to the exact lot delivered, which requires wallet-level tracking. The method does not change the total profit over the life of the inventory, only the period in which it appears. Tax rules in a given country may impose or restrict the method for tax purposes, which is why some desks keep one costing run for the accounts and another for tax.

    Related readHow large OTC desks settle trades without going first19 min

    On measurement, two reference points can be named from the standard-setters' own texts. Under US GAAP, the Financial Accounting Standards Board issued Accounting Standards Update 2023-08 in December 2023. It requires crypto assets within its scope to be measured at fair value each reporting period, with the gains and losses from remeasurement included in net income. The scope has six conditions: the asset meets the definition of an intangible asset, gives the holder no enforceable rights to or claims on underlying goods, services or other assets, is created or resides on a distributed ledger based on blockchain or similar technology, is secured through cryptography, is fungible, and was not created or issued by the reporting entity or its related parties. The update is effective for fiscal years beginning after December 15, 2024. It also requires disclosure of the cost basis of each significant holding and of the method used to determine it, so a desk reporting at fair value still needs its cost records.

    Under IFRS there is no dedicated standard. The IFRS Interpretations Committee published an agenda decision in June 2019 on holdings of cryptocurrencies. It concluded that such a holding is not cash and not a financial asset; that IAS 2 Inventories applies when the holding is held for sale in the ordinary course of business, and IAS 38 Intangible Assets applies otherwise; and that an entity acting as a broker-trader may measure its holdings at fair value less costs to sell, as IAS 2 allows for commodity broker-traders. That decision addressed cryptocurrencies with specific characteristics. A token that gives a claim on an issuer, as many stablecoins do, has to be analysed on its own terms under either framework.

    Related readHow OTC traders protect themselves from counterparty risk18 min

    For the bookkeeper, the practical consequence is the same in both worlds. The inventory record carries quantity and cost for every holding, every day. If the standard calls for fair value, a separate remeasurement entry adjusts the carrying amount to the price at the reporting date, from a documented price source taken at a documented time, and the cost record stays intact underneath.

    How are client assets kept separate from the desk's own?

    Client assets are kept in accounts and wallets that hold nothing else, and are booked with an equal liability to the client, so that they never appear as the desk's inventory or the desk's cash. The separation has to exist twice: physically, in where the assets sit, and in the ledger, in how they are labelled.

    A client who sends cash before a trade, or leaves purchased assets with the desk after one, has not paid the desk anything. The desk holds property for that client. The client record lists, for each client and each asset, what is held, and its total has to equal the balance of the segregated bank account or wallet every day. A shortfall of any size is a serious matter and is escalated the day it is found, not netted against the desk's own funds.

    Whether a desk is allowed to hold client assets at all, and under which conditions, depends on its licence and its country. Some desks never take custody: the client sends each leg from its own account or custodian, and the client record stays empty.

    What does one day of trading look like in the books?

    One day of three trades produces, for a desk that acts as principal on two and as agent on one, about ten journal lines, a closing inventory with its cost, and a result that ties exactly to the change in net assets. The figures below are illustrative: prices and quantities were chosen to keep the arithmetic readable, and the desk uses weighted average cost.

    Related readHow should a crypto OTC desk set up multisig?19 min

    The desk opens the day with $2,000,000 in its bank account and 20 bitcoin (BTC) carried at a cost of $60,000 each, or $1,200,000. Opening net assets are therefore $3,200,000.

    Trade 1 is a principal purchase of 20 BTC from a client at $61,000, for $1,220,000. The desk now holds 40 BTC at a total cost of $2,420,000, and the weighted average cost becomes $60,500 per unit.

    Trade 2 is a principal sale of 25 BTC to another client at $61,400, for $1,535,000. The cost leaving inventory is 25 units at $60,500, or $1,512,500, so the trading result is $22,500. Delivering the 25 BTC costs a network fee of 0.0002 BTC, paid from the desk's wallet in the asset itself; at the average cost that fee is $12.10. This trade was brought by an introducer who earns 0.05% of the notional, or $767.50, payable at month-end.

    Trade 3 is an agency trade. The desk arranges the sale of 10 BTC at $61,600 between two clients who settle directly with each other. The notional is $616,000 and the desk's fee is 0.25% of it, or $1,540, received the same day. No inventory moves.

    Event Debit Credit Amount
    Trade 1: buy 20 BTC at $61,000 Inventory Bank $1,220,000.00
    Trade 2: sell 25 BTC at $61,400 Bank Sales proceeds $1,535,000.00
    Trade 2: cost of 25 BTC at $60,500 Cost of assets sold Inventory $1,512,500.00
    Trade 2: network fee, 0.0002 BTC Network costs Inventory $12.10
    Trade 2: introducer fee, 0.05% Introducer fees Payable to introducer $767.50
    Trade 3: agency fee, 0.25% of $616,000 Bank Fee income $1,540.00

    Each purchase or sale would first pass through a payable or receivable if the cash moved after the trade was agreed; they are shown straight to bank here because every leg settled the same day.

    At the close, the inventory record shows 14.9998 BTC at a cost of $907,487.90: the 15 BTC left after the sale, less the 0.0002 BTC spent on the network fee. The bank account shows $2,316,540. The amount owed to the introducer is $767.50.

    Related readHow to agree a reference price and lock it before settling20 min
    Line Amount
    Trading result on trade 2 $22,500.00
    Fee income on trade 3 $1,540.00
    Network costs −$12.10
    Introducer fee −$767.50
    Result for the day, at cost $23,260.40

    The proof is on the balance sheet. Closing net assets are $2,316,540 in cash plus $907,487.90 of inventory, less the $767.50 payable, or $3,223,260.40. That is $23,260.40 more than the opening $3,200,000, the same figure as the result. A day does not close until those two numbers agree to the cent.

    If the desk reports at fair value and the reference price at the close is $61,500, the 14.9998 BTC are worth $922,487.70. The remeasurement entry debits inventory and credits a fair value gain for the $14,999.80 difference to cost. Had the desk used FIFO instead of weighted average, trade 2 would have taken out the 20 opening units at $60,000 and 5 units at $61,000, a cost of $1,505,000, giving a trading result of $30,000 and leaving 15 units at $61,000. Same trades, same cash, different split between the day's result and the cost carried forward.

    What is the daily reconciliation routine?

    The daily reconciliation routine compares the desk's own records with outside evidence in a fixed order: trades to confirmations, movements to bank and ledger evidence, quantities to wallets and custodians, then cost and result. It is done after a cut-off time that never changes, by someone who did not execute the trades where the team is large enough to allow it.

    End-of-day reconciliationFigures from the worked day above
    1. Fix the cut-offChoose one time and one time zone, and take every balance at that moment. Digital asset markets do not close, so the desk's day ends when its policy says it does.
    2. Match trades to confirmationsEvery trade in the trade record has a confirmation from the counterparty with the same quantity, price and capacity. Three trades, three confirmations.
    3. Match movements to tradesEvery bank line and every wallet or custodian transfer is attached to a trade ID, or classified as an internal transfer, a fee or a client movement. Nothing stays unexplained overnight without an owner.
    4. Prove the quantitiesFor each asset, the inventory record equals the sum of the desk's wallet and custodian balances. Here the wallets must show 14.9998 BTC, not 15.
    5. Prove the cashThe ledger's bank balance equals the bank statement, $2,316,540, after listing any transfer sent but not yet credited.
    6. Prove the client recordThe total owed to clients, per asset, equals the segregated accounts and wallets.
    7. Roll the cost and the resultOpening cost plus purchases, less cost of sales and fees paid in the asset, equals closing cost: $907,487.90. The day's result equals the change in net assets: $23,260.40.
    8. Log the breaksEach difference is recorded with its amount, its cause if known, an owner and a date, and the log is signed off.

    Which breaks does the reconciliation catch?

    The daily reconciliation catches three breaks more often than any others: a transfer sent but not booked, a fee taken in the asset, and a rounding difference. Each has a recognisable signature, which is how a reviewer tells them apart in minutes rather than hours.

    Related readHow to avoid getting scammed in a large P2P crypto deal17 min

    A transfer sent but not booked shows as a wallet balance lower than the inventory record by a round, trade-sized quantity. The cause is usually timing: operations delivered the asset before the trade or the movement was entered. The opposite case, a movement booked but not yet sent, shows the wallet higher than the record. Both are closed by matching the transaction identifier to its trade ID.

    A fee taken in the asset shows as a small shortfall with no round shape. In the worked day, a bookkeeper who entered the sale of 25 BTC and nothing else would hold 15 BTC in the record against 14.9998 BTC in the wallet. The 0.0002 BTC is the network fee. The same pattern appears when a counterparty or a venue deducts its fee from the quantity delivered. The entry reduces inventory by the missing quantity at cost and charges it to the relevant expense.

    A rounding difference shows as a few cents of value, or a few units at the last decimal place, with no missing movement behind it. Bitcoin is divisible to eight decimal places and some tokens to eighteen, while accounting systems and spreadsheets often keep fewer, and an average cost with repeating decimals is already a rounded number. The remedy is a written rule: store quantities at the asset's full precision, compute cost from totals rather than from a rounded unit cost, and post differences below a stated threshold to a rounding account that is reviewed monthly. A rounding account that only grows in one direction is not rounding and needs a second look.

    Related readHow to handle a large stablecoin for crypto OTC swap18 min

    How are fees and network costs booked?

    Fees and network costs are booked by what they are paid for: a cost of buying an asset can be added to its cost, a cost of selling or moving it is an expense of the period, and a fee charged to a client is income. The desk writes the rule once in its policy and applies it the same way every day.

    Network fees, the charges paid to the network that processes an onchain transfer, are the item most often missed, because no invoice ever arrives. They are visible only in the transaction itself. They are also frequently paid in a different asset from the one transferred: moving a token on a network usually costs a small amount of that network's native asset. A desk that settles in several tokens therefore holds small working balances of native assets purely to pay fees. Those balances are inventory too, with their own cost and their own line in the reconciliation, and they run down in small steps that each need an entry.

    Where is an introducer's fee booked?

    An introducer's fee is booked as a cost of the trade it relates to, accrued on trade date as an amount payable to the introducer, and cleared when it is paid. It is tagged with the trade ID so that the result per trade can be read net of it.

    In the worked day, the introducer earned 0.05% of the $1,535,000 notional on trade 2. The entry on trade date debits introducer fees and credits a payable for $767.50, and the payment at month-end debits the payable and credits bank. The agreement with the introducer states the basis of the fee, whether notional or the desk's own margin, the currency or asset in which it is paid, and when it falls due. The file holds the agreement and the invoice or statement behind each payment. If the client pays the introducer directly, nothing passes through the desk's result at all.

    Related readHow to handle a partial settlement if one side comes up short21 min

    Where the fee is not a cost of the desk but a share of a single payment made by the client, for example a client paying one amount that is owed partly to an agent desk and partly to the introducer, a payment router is one way to divide it. Shaka is such a router: each party's share is set as a percentage and can be signed before the client pays, the client pays once, and every party is paid at the same moment, with the record of who received what available onchain. It divides one payment and never holds the funds; it does not exchange the two assets of a trade and is not a settlement or custody service. In the books, each party then records only its own share, and the desk has no payable to accrue.

    What goes in the month-end pack?

    The month-end pack is the set of schedules that proves every balance sheet line connected to trading, built from the daily reconciliations rather than rebuilt from scratch. A desk that reconciles daily assembles it in a day; a desk that does not spends the first week of each month looking for breaks.

    • A trade blotter for the month: every trade with its ID, capacity, counterparty, quantity, price, notional and result or fee.
    • An inventory roll-forward per asset: opening quantity and cost, purchases, sales at cost, fees paid in the asset, closing quantity and cost.
    • A valuation schedule: closing quantity, the price used, its source and the time it was taken, and the resulting remeasurement entry where fair value applies.
    • Wallet and custodian reconciliations at the month-end cut-off, with statements and the list of the desk's addresses.
    • Bank reconciliations for every account, the desk's own and the segregated ones.
    • The client record, per client and per asset, agreed to the segregated accounts and wallets.
    • Unsettled trades: receivables from and payables to counterparties, with their age.
    • Fee and introducer accruals, each tied to a trade ID.
    • The break log: every difference raised during the month, how it was closed, and those still open.

    What will an auditor or a regulator ask for?

    An auditor or a regulator will ask a crypto OTC desk to show that the assets exist, that the desk controls them, that client assets are complete and separate, that trades were recorded at the agreed terms, and that the valuation is supported. The questions are the familiar ones of any audit; only the evidence is specific.

    Existence and control are usually the first requests. Existence is shown by reconciling the list of the desk's addresses to the public ledger at the reporting date, and by custodian statements or confirmations. Control is a separate matter from existence, since anyone can read a balance on a public ledger: the reviewer will want evidence that the desk can actually move the assets, for instance by signing a message with the relevant key or sending a small agreed transfer, together with a description of who holds signing authority and how it is approved.

    Completeness and accuracy rest on the three records. A reviewer picks trades from the blotter and follows each to its confirmation, its two movements and its inventory entry, then goes the other way, from bank lines and wallet transfers back to trades. Valuation rests on the price source and cut-off written in the policy and applied without exception. Client assets rest on the daily client reconciliation and the proof that segregated accounts held nothing else.

    Beyond the accounts, a regulated desk can expect requests for its customer due diligence files and its record-retention arrangements, whose scope depends on the country and the licence. A desk that has kept one trade ID running through the confirmation, the movements, the ledger entries and the client file can answer most of these requests from the records it already produces every day.

    Kooky
    Written by
    Kooky

    25+ years shipping on the web, onchain since Bitcoin's early days. Kooky built Shaka so that everyone who closes a deal together gets paid together, the day it closes.

    The story behind Shaka