Why a dollar-pegged coin still needs a bookkeeping rule
Circle says USDC is backed by highly liquid cash and cash-equivalent assets and can be redeemed 1:1 for US dollars [3]. It also publishes monthly reserve attestations by a Big Four accounting firm [3].
The first decision for your books is the point of recognition. One reasonable choice is the moment the payment settles on chain, because that is when you control the money. A pending transfer is not yet income for your purposes. A final, confirmed transfer to your address is. Write that rule down and apply it to every sale, then ask your accountant to confirm it fits.
The second decision is the unit of record. If you keep your books in dollars, each receipt needs a dollar value at the time it arrived. The IRS asks business taxpayers to keep records of the fair market value, measured in US dollars, of digital assets received as payment [1]. A timestamp plus a dollar value on every receipt covers that need, and it costs almost nothing to capture at the time.
Finally, give your stablecoin holdings their own asset account and tie each address to it, so the chart of accounts stays simple.
What the IRS says about digital assets and business income
The IRS states that for US tax purposes digital assets are treated as property, not currency, and it lists stablecoins among its examples of digital assets [1]. It also says income from digital assets is taxable [1]. That single framing drives most of what follows, including why record keeping is not optional for a business that accepts stablecoins.
The agency says that if you receive a digital asset in exchange for goods or services in a business context, the income is taxed as ordinary income or a loss [1]. For a sole proprietor selling to customers, it points to Schedule C [1]. Corporations and partnerships face a yes or no digital assets question on their returns, and receiving a digital asset as payment for goods or services is one of the cases that makes the answer yes [1].
On records, the IRS says to keep documentation of your receipts, sales and other dispositions of digital assets, plus the dollar fair market value of assets received as income or as payment in the ordinary course of a trade or business [1]. It also says you must report digital asset transactions whether or not they produce a taxable gain or loss [1]. That is the practical core of crypto payments accounting for a business.
Rules differ from place to place, so check the guidance that applies where you file, or ask an adviser who knows it.

Recording sales, fees and refunds as separate lines
A common mistake is booking only the net amount that arrived. If a contract takes a cut before you are paid, the cut is still a cost of the sale. Record the gross sale as revenue and the cut as an expense, so your margin is visible and your numbers match what the customer paid.
Refunds deserve their own line too. A refund is a new outgoing transfer, not a deletion of the original sale. Book it as a contra-revenue entry or in a refund account, dated when you sent it. That keeps the history honest and lets you see how many sales were reversed in a given month.
In SpendTheBits Arc Checkout, a sale is final on chain, and refunds are never automatic: the seller sends one from their own wallet, signed on their phone, up to the sale amount, and the SpendTheBits fee is not returned. That is a useful rule to mirror in your books, because the fee stays in your expense line even when the sale is reversed. Sales are paid into the seller's own address, and SpendTheBits never holds the money.
Network gas is a separate cost again. On Arc, gas is paid in USDC, so it can be recorded in the same unit as everything else. In our production test on 18 September 2026, a USDC send on Arc cost about 0.001 USDC in network fee. Whatever chain you use, give gas its own account so it does not hide inside the sale line.

Matching on-chain payments to invoices with memos
Reconciliation is the dull work that decides whether your books are trusted. A payment arrives, and you need to know which invoice it settles. On a blockchain the transfer carries an amount and an address, but nothing about your order unless you add it.
Arc documents one way to add that reference. Its docs describe a Memo contract that attaches application metadata, such as an invoice or order reference, to a contract call, and emits it as events so wallets, exchanges and indexers can reconcile onchain transfers against offchain records [2]. You can query Memo events by indexed fields such as memoId, sender and target [2]. That gives you a lookup key for each payment.
SpendTheBits uses this in bulk payouts: each payment can carry a short memo written on chain through Arc's memo contract, and memos are public and permanent. Because they are public, never put a customer name or a private note in one. A short invoice number is enough to match a line to your records.
Checkout takes a different route. Each checkout adds a few millionths of a dollar to the amount so a payment matches its order on its own. Both methods aim at the same thing, which is a payment that explains itself. You can read more in our guide to USDC payment memos on Arc.
Cost basis when you hold stablecoins as property
Because the IRS treats digital assets as property, disposing of one can create a capital gain or loss [1]. The IRS also says the basis of a digital asset is generally its cost in US dollars [1]. For a coin designed to track the dollar, any gain is likely to be small, but small is not zero, and the reporting duty applies either way.
To work out a gain or loss, the IRS lists the information you need: the type of asset, the date and time of the transaction, the number of units, the fair market value in US dollars, and the basis of what was sold or disposed of [1]. If you keep a timestamp and a dollar value on every receipt and every spend, you already hold most of it.
When you hold many lots acquired at different times, you also need a rule for which units count as disposed of first. Two common methods are first in first out and highest in first out. We compare them in our piece on FIFO versus HIFO. Pick a method, apply it the same way every year, and ask your adviser which one fits.
The IRS also says that paying a transfer fee with digital assets counts as a digital asset transaction [1]. By that reading, gas paid in a stablecoin is a small disposal that belongs in your record. That is one more reason to track gas on its own line instead of letting it vanish into a net figure.
Turning public records into journals with SpendTheBits Books
Much of this work is copying data from a block explorer into a spreadsheet. A better approach is to let software read the public ledger for you. SpendTheBits x402 Books shows a seller's sales, fees, refunds and net income for a period, and a buyer's purchases by agent and vendor, and exports a journal for QuickBooks, Xero or CSV. Books are built from public records only and cover mainnet; they are not tax advice.
That shape matches the structure above: gross sales, fees, refunds, and a net figure per period. You can import the journal into your accounting package and let your bookkeeper review it, instead of retyping rows. See how x402 income reaches the till books for the full picture.
For holdings and gains, CFO Books turns the public ledger into FIFO or HIFO cost-basis lots, realized and unrealized profit and loss, and a QuickBooks or Xero general-journal export. You can see the product on the Books page, and the practical steps are in our help article on exporting crypto transactions for taxes.
SpendTheBits is fully non-custodial. The seed phrase and private keys are generated and stored only on the user's device. The books are therefore a view of records anyone could read, not a statement from a company holding your funds. Check any export against your own wallet history before you file. Careful crypto payments accounting always ends with that last check.

In the app · 3 steps
Export USDC income for your accountant in SpendTheBits
Two screens produce the files bookkeeping needs. Neither is tax advice.
Read x402 Books
For agent income and spend, x402 Books shows sales, fees, refunds and net for a period, with a journal export.

Export the tax year
In Settings, Export transactions makes a tax CSV or a Koinly file for a year.

Export the day's sales
Checkout's Today's CSV gives a day of in-person sales.

Hold your own keys, keep the yield, skip the middleman.
SpendTheBits is a fully non-custodial wallet for 13 chains, free on iOS and Android.

