On this page
- Record each payment when it lands: time, USDC amount, US dollar value, transaction signature, customer, fees.
- The IRS treats USDC as a digital asset: payment for goods or services is income at its fair market value in US dollars when received.
- Fianto exports payments, orders, subscriptions and customers as CSV. It does not calculate tax and cannot see refunds you send.
Before you start: this is not tax advice
Fianto does not calculate, collect or file tax. What it does is keep a record of every payment it saw settle, and let you download those records. The rest of this post is about what to keep, where each piece comes from, and the few places where you have to add something yourself.
What should you record for each USDC payment?
A USDC payment through Fianto is one Solana transaction from the customer's wallet to yours. Nobody holds the money in between, so there is no payout statement from a processor to reconcile against. Your record is the payment itself. For each one, keep:
| What to keep | Why | Where it comes from with Fianto |
|---|---|---|
| Date and time received | The IRS values income as of the date received | succeeded_ in the payments export, in UTC |
| Amount that reached your wallet | The USDC you actually received | net, in USDC with 6 decimals |
| Value in US dollars at receipt | US tax reporting is in US dollars | Not in the export. Record the value you use and where it came from |
| Transaction signature | Proves the transfer on chain; anyone can look it up | signature |
| Customer | Who paid, for your sales ledger | customer_, and customer_ if the customer typed one |
| What was sold | Matches the payment to a product or service | product_, merchant_, source |
| Fees | Shows what the customer paid on top of your price | fee and network_, both paid by the customer |
| Refunds | Money you sent back | Not in Fianto. Keep your own transaction signature |
Keep the receiving wallet's address with your records too. One wallet serves one Fianto merchant, and the wallet's on-chain history is an independent copy of the same transfers. If you ever changed your receiving wallet, keep both addresses: subscriptions that started before the change keep paying the old wallet.
How does the IRS treat USDC received as payment?
As of 14 October 2026, these are the IRS's own statements on the points that matter for record-keeping. Quotes are from irs.gov.
- Stablecoins are digital assets. The IRS defines a digital asset as "any digital representation of value recorded on a cryptographically secured, distributed ledger" and lists stablecoins among its examples.
- Payment is income at fair market value. Notice 2014-21 says a taxpayer "who receives virtual currency as payment for goods or services must, in computing gross income, include the fair market value of the virtual currency, measured in U.S. dollars, as of the date that the virtual currency was received."
- That value is also the basis. The same notice says the basis of virtual currency received for goods or services "is the fair market value of the virtual currency in U.S. dollars as of the date of receipt."
- Records must back the return. The IRS digital asset FAQ says the rules "require taxpayers to maintain records that are sufficient to establish the positions taken" on returns, and the digital assets page asks for records of receipts, sales, exchanges and other dispositions, and of fair market value in US dollars for assets received as income.
- Selling or exchanging is a separate event. The Form 1040 digital asset question asks whether you received digital assets as payment for property or services, and separately whether you sold, exchanged or otherwise disposed of them. The digital assets page says payments received by independent contractors are reported on Schedule C.
On the dollar value: Circle, which issues USDC, says USDC can be redeemed 1:1 for US dollars. The IRS still asks for fair market value, not face value, so record the value you use for each payment and its source, and apply the same method every time. Which value is right for your business is a question for your accountant.
Fianto writes nothing about other countries' rules here, because we have not checked them against primary sources. If you are outside the US, ask a local adviser.
What Fianto's dashboard and CSV exports give you
Each of the Payments, Orders, Subscriptions and Customers lists in the merchant dashboard has an export. You choose a date range of up to 366 days, an optional status filter, and the columns. A file holds up to 50,000 rows, and you can run 20 exports an hour. Ticking rows in a list exports just those rows. More on the reporting page and in the exports guide in the Fianto docs.
| Export | One row per | Useful columns for your books |
|---|---|---|
| Payments | Payment, one-off or subscription charge | gross, fee, network_, net, source, signature, succeeded_, status |
| Orders | One-off order | list_, discount, discount_, paid_, has_ |
| Subscriptions | Subscription | interval, status, current_, current_, ended_ |
| Customers | Paying wallet | wallet, first_, succeeded_, total_, total_ |
For a revenue ledger, the payments export is the one to start from: every renewal of a subscription is its own payment row, with source set to subscription, next to one-off payments marked one_. Filter it to the Succeeded status for money that arrived. A subscription creates no order, so the orders export holds one-off sales only.
Three things to know about the file
- Amounts are in USDC with 6 decimals, never in dollars.
- Dates and times in the file are UTC, whatever time zone the dashboard shows. The date range you pick is counted in the dashboard's time zone.
- Customer emails are what the customer typed, and are not verified. A customer is identified by the paying wallet.
The Overview shows revenue in US dollars, counted at 1 USDC = 1 USD. That is a fixed conversion for a quick view, not a market price, so do not treat it as the fair market value record.
Every payment, order and subscription in one dashboard, with CSV exports of up to 366 days.
See reportingGross, fee, network fee and net: which number reached you?
On every payment row, gross is what the customer paid, and it equals net plus fee plus network_. Only the net went to your wallet. The fee and the network fee went to Fianto's treasury in the same transaction, and the customer paid them on top of your price.
| Column | What it is | Who paid it | Where it went |
|---|---|---|---|
net | Your price, after any discount | The customer | Your wallet |
fee | Fianto's service fee. 0 during the beta | The customer | Fianto's treasury |
network_ | A flat fee on subscription charges, 0.01 USDC today on plans created since 6 October 2026; 0 on one-off payments | The customer | Fianto's treasury |
gross | The sum of the three | The customer | Split as above |
After the beta, the customer will pay a Fianto fee of about 0.1-0.5% on top of the price, and it will show in the fee column. The merchant still pays nothing. How much a USDC sale costs next to a card sale is worked through in USDC vs card fees.
If a coupon was used, net is already the discounted amount. The orders export adds list_ (the price before the discount), discount and discount_, so you can show both.
Refunds, network fees and rent
There is no refund button and no refund API. A refund is USDC you send back from your own wallet, and Fianto cannot see it: the original payment stays Succeeded in the dashboard and in the export. Record each refund yourself, with the date, the amount, the customer's wallet, your transaction signature and the payment it reverses. There are no chargebacks either; the differences are in chargebacks vs crypto refunds.
You will find no Solana costs to book from Fianto, because the merchant pays none. The customer pays the Solana network fee of each transaction it signs, under $0.01. On a subscription charge the customer also pays a flat 0.01 USDC network fee today, which shows in the exports as the network_fee column, not as a cost of yours. Subscription rent is paid by the customer in SOL: about 0.00197 SOL today for the subscription account, which the customer gets back by reclaiming it after the subscription ends, and about 0.00163 SOL today for a one-time wallet setup, not returned. One-off payments need no rent. The details are in account rent and reclaim.
Besides past-due subscriptions, Needs attention in the dashboard lists two cases worth a look at month end: orders that received a transfer that did not match (for example, paid twice) and failed payments where the money arrived anyway. If you returned that money, it stays listed, because Fianto cannot see the refund, so note it in your records.
A month-end routine for USDC revenue
- Export Payments for the month with the Succeeded status. Keep the default columns, which include the signature and the fees.
- Add a column for the US dollar value of each payment at its succeeded time, and note the source and method you used.
- List the refunds you sent from your wallet that month, each with its signature and the payment it reverses.
- Check Needs attention for unmatched transfers and failed payments where money landed, and note what you did about each.
- Compare the total of the net column with the USDC that arrived in your receiving wallet over the same dates.
- If you sold or exchanged any USDC that month, keep that record too: the IRS treats it as a separate event.
- Store the CSV files unedited, next to your working copy, and send both to your accountant.
A range can cover up to 366 days, so one export per dataset can cover a whole tax year. Monthly exports are easier to check against your wallet.