Reconciling crypto payments when exchange fees create a shortfall
The short answer: you reconcile the payment by recording the gross crypto amount received at the time of invoice settlement, then separately recording the exchange fee as a business expense or cost of conversion. The shortfall is not a payment error - it is a cost of converting crypto to fiat. Your books should show the full invoice value in crypto, then the fee as a deduction when you sell.
Why the shortfall happens
When a customer pays a crypto invoice, they send the exact invoice amount (or close to it). You receive that full amount in your wallet. The shortfall appears only after you move the crypto to an exchange and sell it. The exchange deducts a trading fee, a withdrawal fee, or both. The fiat that lands in your bank account is therefore less than the fiat value of the invoice at the time of the sale.
This is not the same as a customer underpaying. The customer paid correctly. The shortfall is a conversion cost.
The Two-Ledger Approach
You need two records: one for the crypto receipt, one for the fiat conversion.
Step 1: Record the Crypto Receipt
When the customer's payment confirms on-chain (or via Lightning), record:
- Invoice amount in crypto (e.g., 0.1 BTC)
- Exchange rate at time of receipt (from your price feed or oracle)
- Fiat equivalent at that moment (e.g., $6,000)
This is your revenue. The customer has settled the invoice. Your accounting system should show this as income, denominated in fiat at the rate you locked at invoice creation or at the time of confirmation - choose one and apply it consistently.
Step 2: Record the Exchange Fee Separately
When you transfer crypto to an exchange and sell it, the exchange will show:
- Gross sale amount in crypto (the same 0.1 BTC)
- Trading fee (e.g., 0.001 BTC)
- Net fiat received after fee
Record the fee as an expense. The category might be "exchange fees," "trading costs," or "cost of conversion." Do not adjust the original invoice amount downward. The fee is a separate line item.
Step 3: Reconcile the Difference
Your bank deposit will be lower than the fiat value you originally booked as revenue. The difference should equal the exchange fee plus any spread between the exchange rate at receipt and the rate at sale.
Example:
- Invoice: 0.1 BTC at $60,000 = $6,000 revenue
- Sale: 0.1 BTC sold at $59,500 = $5,950 gross
- Exchange fee: 0.1% = $5.95
- Net deposit: $5,944.05
- Shortfall from original revenue: $55.95
That $55.95 is composed of: - $50.00 from exchange rate movement (price dropped between receipt and sale) - $5.95 from the exchange fee
Record both. The exchange rate movement is a gain or loss on conversion, not a shortfall from the customer.
Common Mistakes
Adjusting the Invoice
Some businesses reduce the recorded invoice amount to match what landed in the bank. This is incorrect. It misstates revenue and hides the cost of conversion. If you do this, your profit margins look better than they are, and you lose visibility into exchange costs.
Treating fees as customer underpayment
If a customer sends exactly 0.1 BTC and you record only what arrives after exchange fees, your system will show a discrepancy. The customer's payment matches the invoice. The shortfall is your cost, not theirs.
Ignoring Timing Differences
The exchange rate at the moment you sell is almost never the same as the rate at the moment the customer paid. This is not a reconciliation error. It is a normal consequence of holding crypto for any period before conversion. Some businesses treat this as a separate gain/loss account. That is a clean approach.
Practical Reconciliation Workflow
-
Capture the invoice amount in your payment processor or accounting system when the transaction confirms. Use the exchange rate from that moment.
-
Export exchange trade history regularly. Most exchanges provide a CSV of trades with fees listed per transaction.
-
Match each sale to the corresponding invoice by transaction hash or by the deposit address used. If you sweep multiple payments into one exchange deposit, you may need to allocate fees proportionally.
-
Record the fee as an expense in the same accounting period as the sale. Do not wait until the end of the month.
-
Check the net deposit against the gross sale minus fees. If they match, the reconciliation is complete. If not, look for withdrawal fees or network fees that the exchange charged to send fiat to your bank.
Withdrawal Fees
Some exchanges charge a flat fee to withdraw fiat to your bank account. This is separate from the trading fee. It should be recorded as a bank or withdrawal fee, not as part of the exchange trading cost. If your exchange charges $25 per withdrawal, that $25 is not a crypto shortfall - it is a banking cost.
When to Use a Third-Party Reconciliation Tool
If you process more than a few dozen crypto payments per month, manual reconciliation becomes tedious and error-prone. Tools that import exchange trade data and match it to invoice records can save time. Some accounting platforms now have crypto-specific modules that handle the two-ledger approach automatically. Evaluate whether the cost of the tool is lower than the time you spend on manual reconciliation.
The Bottom Line
The shortfall is not a mystery. It is the sum of exchange fees, withdrawal fees, and exchange rate movement between receipt and sale. Record the full invoice value as revenue. Record fees as expenses. Reconcile the difference by checking that the net deposit equals gross sale minus all fees. If your numbers balance, the customer paid correctly. The shortfall is the cost of doing business in crypto.
Not financial advice. unidexai.xyz publishes market data and general information about digital assets. Crypto assets are volatile and you can lose everything you put in. Nothing here is a recommendation to buy, sell or hold, and we make no price predictions.
Prices are sourced from third parties and may be delayed or wrong. Verify anything you intend to act on against a primary source.