Crypto accounting and tax reports, ready for QuickBooks
Every sale, conversion, fee and payout, valued in your currency at the moment it happened. Export the file your accounting software imports, hand the full ledger to your accountant — and on the 1st of every month, last month's report is frozen and waiting for you.
QuickBooks · Xero · Zoho Books · Odoo · Alegra · 31 reporting currencies · Monthly report on the 1st
Key takeaways
- Valued when it happened. The invoice price first, then what a conversion actually returned, then stablecoin parity — expressed in your currency with the European Central Bank rate for that day.
- Import it, don't retype it. QuickBooks Online and Alegra get a
Date, Description, AmountCSV; Xero, Zoho Books and Odoo get an OFX they upload as-is. - Both legs of every conversion. Converting a coin into USDC shows as money out and money in, so your accountant sees the disposal.
- A month-end report that never changes. Frozen on the 1st with a CSV statement and a JSON summary, and an email telling you it is ready.
- It reconciles. The statement's balance for any period equals the Net on your Reports page for the same period.
Accepting crypto takes a minute. Booking it can take a weekend.
Your wallet shows token amounts and transaction hashes. Your accountant needs something else entirely: what each payment was worth in your currency on the day it arrived, which movements were sales, which were fees, and which were you moving your own money. Rebuilding that from a block explorer at quarter-end means looking up historical prices line by line, guessing which transfer was which, and hoping the totals land somewhere near the number on your dashboard.
So crypto ends up as the awkward line in the books — the one that gets estimated, deferred to year-end, or quietly left out of the conversation with the accountant. That is usually when merchants decide accepting it was more trouble than it was worth.
Why tax season makes it worse
Most tax authorities expect income recorded at its value in your currency when you received it, not when you finally look at it. Converting a coin into a stablecoin can itself be a taxable event in many jurisdictions. And the fees you paid are expenses you want on the books. Miss any of the three and you either overpay or end up holding a number you cannot support if anyone asks where it came from.
One ledger for everything that moved
Payzum already knows what every payment was for — the invoice, the order, the terminal that rang it up. The accounting export keeps that context and adds the one thing your wallet can't: the value in your currency.
Sales
Every paid invoice — from your checkout, payment links, plugins or the POS. Partially paid and overpaid invoices are valued on what actually arrived, and in-person sales keep the terminal and the cashier.
Conversions
When a payment is auto-converted into a stablecoin, the asset that left and the stablecoin that arrived are both recorded, with the executed rate, the swap fee and the network fee.
Fees
Payzum's fee on each payment, booked as its own line — an expense your accountant can see instead of a gap between what the customer paid and what you received.
Payouts
Settlements to your own wallet and mass payouts to your recipients, each with the destination address, so money leaving is never confused with money lost.
Thirty-six columns, so nobody has to ask "what was this?"
The full ledger (CSV or JSON) carries every line with both of its sides — the crypto that moved and the fiat value it represents — plus enough references to trace it back to the invoice, the order and the transaction on-chain.
What happened
line_idline_typeevent_atstatusdescriptionYour references
invoice_idorder_idprice_amountprice_currencyThe crypto side
chaintoken_symboltoken_standardtoken_contractamountThe fiat side
fiat_valuefiat_currencyvaluation_methodfx_ratefx_dateConversions & fees
counter_token_symbolcounter_amountexecuted_rateswap_feenetwork_feepayment_feePoint of sale & proof
pos_terminal_labelpos_cashier_nametx_hashescounterparty_addressEvery line valued in your currency, at the moment it happened
Pick a reporting currency in Settings — USD by default, or EUR, GBP, CAD, MXN, BRL, AUD, JPY and 23 more. Nothing is converted; it only changes how your reports are valued. Then each line takes the first value that applies:
-
1
The price you charged
invoice_rateInvoice 25.00 USD, get paid in full, and the sale is worth exactly 25.00 USD — no market price second-guessing what you actually sold for. Partial and overpaid invoices are prorated on what arrived.
-
2
What the conversion returned
swap_executionWhen a payment is swapped into a stablecoin, the stablecoins you actually received set the value.
-
3
Dollar stablecoins at parity
stablecoin_parityOne USDC or USDT is valued at one dollar.
-
€
In your currency, at that day's reference rate
The value is expressed in your reporting currency with the European Central Bank reference rate for the date of the event — or the nearest earlier date within seven days. The method, the rate and the rate date are written on every line, so each number can be traced.
When there is no honest number, we don't invent one
If a line cannot be valued — today that mostly means a payout in a non-stablecoin asset, or no published rate within seven days — the Reports page tells you how many there are, the full ledger still lists them, and they are left out of the statement files. No accounting tool can import an entry without an amount, and a made-up one is worse than a visible gap.
Files your accounting software already understands
Tell the Reports page which tool you use and it hands you the matching file: a statement of the movements on a crypto clearing account, which is the shape every one of these tools imports.
| Your software | What Payzum gives you | How it goes in |
|---|---|---|
| QuickBooks Online | CSV · Date, Description, Amount · dd/mm/yyyy |
Transactions → Bank transactions → Upload from file, against your crypto clearing account |
| Xero | OFX statement | Upload as-is — no column mapping |
| Zoho Books | OFX statement | Upload as-is — no column mapping |
| Odoo | OFX statement | Upload as-is — no column mapping |
| Alegra | CSV · dd/mm/yyyy | Map the columns on Alegra's upload screen |
| Anything else | CSV · Date, Description, Amount · ISO dates |
A plain statement any spreadsheet or ledger can read |
| Your accountant | Full ledger · CSV or JSON | Every line with its crypto side, fiat side and references |
One readable line per movement
Sales come in as money in, fees and payouts as money out, and a conversion as a pair that nets to zero. Every description says what moved, on which chain, for which invoice or order — and ends with a stable reference back to the full ledger.
- In OFX that reference is the transaction ID, so re-importing an overlapping month doesn't duplicate anything
- Amounts in two decimals, no currency symbols or thousands separators to trip the importer
- QuickBooks caps one upload at about 1,000 transactions — export month by month if you are busier than that
Your month, closed for you on the 1st
A report that never changes after it is published
At 05:00 UTC on the first day of every month, Payzum freezes the month that just ended: the full accounting statement as CSV and a settlement summary as JSON. Once published, a monthly report is write-once — a fixed anchor for closing the books and for anyone who asks, months later, what September looked like.
Then we email the account owner a link to download both files from the Reports page. Months with no activity are skipped, so the email only shows up when there is something to book.
- Gross sales, conversions, fees, payouts and net — per chain and token
- The same totals in your reporting currency
- Gross sales per POS terminal, for businesses with more than one till
- A count of any lines that could not be valued, so nothing hides
Closing your books with crypto for the first time?
Bring last quarter's questions — what your accountant asked for, what took longest — and we will show you what the export looks like for your payments and which file your software should take.
No commitment · Bring your accountant if you like
From payment to books in four steps
Three of them happen once. After that, the work is downloading a file.
Set your reporting currency
Settings → Reporting currency. USD unless you choose otherwise; your funds stay in the assets you were paid in.
Get paid as usual
Checkout, payment links, plugins, the POS. Each finished sale, conversion, fee and payout becomes a line on its own.
Open Reports
Pick a month or a custom range of up to a year, choose what to include, and choose your accounting software.
Import and hand off
Upload the statement against your crypto clearing account and send the full ledger to your accountant.
Or pull it straight into your own systems
The same export is a REST endpoint, so your ERP or a nightly job can fetch it with the merchant's API key.
/v1/export/accounting
A from and to date (UTC, up to 366 days) and a type filter: everything, sales, conversions, fees or payouts.
csv · json · bankcsv · ofx
The statement CSV comes in 3-column or 4-column (credit/debit) shape, with ISO, dd/mm/yyyy or mm/dd/yyyy dates.
/v1/export/reports
List the frozen monthly reports and download any month's statement or summary.
Full parameters and examples: the accounting export guide.
What crypto accounting looks like in practice
Different businesses, same question at the end of the month: what did we actually make, in our own currency?
Quarter-end without a block explorer
Orders paid through your checkout or plugin arrive in the ledger with their order IDs, so the crypto revenue in your books matches the orders in your store, line for line.
Every till and every cashier in one file
Sales from the Payzum POS carry the terminal and the cashier who took them, and the monthly summary totals gross sales per terminal — the view a multi-location owner wants at close.
Invoiced in dollars, paid in USDC
A 2,000.00 USD invoice paid in full is booked at 2,000.00 — the price you agreed with the client — and converted to your own currency at that day's reference rate.
Conversions your accountant can see
If you convert what you receive into stablecoins, each swap shows both legs with its executed rate and fees — exactly the detail a capital-gains question depends on.
Money out, with the address it went to
Affiliates, sellers or creators paid through mass payouts appear as outflows with each recipient address, next to the sales that funded them.
A file, not a wallet login
Your client downloads one statement and one ledger. You get every movement with its source, its fiat value and the method behind it — no screenshots of a wallet app.
Payzum provides records, not tax or legal advice. How crypto income, conversions and fees are taxed depends on where you operate — confirm the treatment with your accountant.
Payzum reports vs rebuilding it from your wallet
| Closing a month of crypto sales | Payzum accounting reports | Spreadsheet from wallet history | Generic wallet-import tax tool |
|---|---|---|---|
| Which transfers were sales | Known — every line is tied to its invoice or order | Worked out by hand | Usually labelled by you |
| Value in your currency | Invoice price, swap proceeds or parity, plus the ECB rate for the day | Historical prices looked up line by line | Market price at the timestamp |
| Fees | Separate expense lines | Easy to miss | Depends on the source data |
| Conversions | Both legs, executed rate and swap fees | Two unrelated transfers | Matched if both sides were imported |
| Into QuickBooks or Xero | Statement CSV or OFX, ready to upload | Build the file yourself | Varies by tool |
| Month-end | Frozen report on the 1st, with an email | Whenever someone gets to it | On demand |
The questions accountants ask first
"Does Payzum convert my crypto into my currency?"
No. The reporting currency only decides how lines are valued. Your funds stay in the assets you were paid in, in your own wallets — Payzum payments are non-custodial end to end.
"Is it a live sync with QuickBooks?"
Not today: it is a file you upload. That also means nothing writes to your books without you seeing it first, and the same file is your audit trail.
"Will the numbers move if I export again next year?"
Monthly reports are frozen when they are published and never regenerated. An export you run today is built from the same ledger, so it reconciles against the Net on your Reports page.
"Is this tax advice?"
No. Payzum gives you the records — values, fees, conversions, references. How they are treated is your accountant's call, and depends on your jurisdiction.
Crypto accounting and tax reports: frequently asked questions
What does the Payzum accounting export include?
Every finished event on your merchant account: sales (paid, partially paid or overpaid invoices, including point-of-sale sales), conversions of what you received into stablecoins, Payzum fees, and payouts and mass payouts. Each line carries the crypto amount, token and chain, the transaction hashes, the invoice and order IDs, and its value in your reporting currency.
How does Payzum value crypto payments in my currency?
The first method that applies wins: the fiat price on the invoice you issued (prorated if the invoice was partially paid or overpaid), then the stablecoins a conversion actually returned, then one-to-one parity for dollar stablecoins. The value is then expressed in your reporting currency with the European Central Bank reference rate for the date of the event, or the nearest earlier date within seven days. The method, rate and rate date are written on every line.
Can I import Payzum transactions into QuickBooks?
Yes. Choose QuickBooks Online on the Reports page and Payzum produces a bank-statement CSV with the
columns Date, Description and Amount and dd/mm/yyyy dates.
Upload it in QuickBooks under Transactions → Bank transactions → Upload from file, against a crypto
clearing account. QuickBooks caps one upload at about 1,000 transactions, so export month by month if
a period is larger. It is a file you upload, not an automatic sync.
Does it work with Xero, Zoho Books, Odoo or Alegra?
Yes. Xero, Zoho Books and Odoo get an OFX statement that they import as-is, without mapping columns. Alegra gets a CSV with dd/mm/yyyy dates that you map on its upload screen. Any other tool gets a plain Date, Description, Amount CSV with ISO dates, and your accountant can always take the full 36-column ledger as CSV or JSON.
When do I get the monthly report?
At 05:00 UTC on the 1st of every month Payzum freezes the previous calendar month: the full accounting statement as CSV and a settlement summary as JSON. A published monthly report never changes. The account owner receives an email with a link to download both files from the Reports page. Months without any activity are skipped.
Are conversions to stablecoins included?
Yes, as two entries: the asset that left and the stablecoin that arrived, for the same value. In many jurisdictions swapping one crypto asset for another is a taxable disposal, so your accountant needs to see both legs. The full ledger also records the executed rate and the swap and network fees of each conversion.
Is the export enough to file my taxes?
It gives you and your accountant the records most tax filings start from: what each payment was worth in your currency when it arrived, which movements were fees, and every conversion. How crypto income, conversions and fees are taxed depends on your jurisdiction, so the treatment is your accountant's call. Payzum provides records, not tax advice.
Hand your accountant a file, not a wallet
Twenty minutes on how you take crypto today, what your accountant keeps asking for, and which export fits. If you don't accept crypto yet, we will show you what your books would look like when you do.
Non-custodial · Valued in your currency · Monthly report on the 1st
More on running your business on Payzum: the crypto POS for in-person sales, crypto mass payouts, integrating Payzum into your checkout, guides by business type on the blog, and the accounting export documentation.