Upwork Income Tracking: How to Track Freelance Earnings from Upwork (2026)
Upwork Income Tracking: How to Track Freelance Earnings from Upwork (2026)
Transparency: I built Tally Assistant, which auto-parses Upwork CSVs. This guide covers the manual approach, spreadsheet templates, and AI tools.
Quick Answer
Download your Upwork Transaction History CSV (Reports → Transaction History → Download CSV). That file contains every payment, fee, and withdrawal. Upload it to your bookkeeping tool, separate the Upwork service fee from your net earnings, and convert any non-USD payments to your base currency. This takes 10-15 minutes/month manually, or 30 seconds with AI CSV import.
The Upwork Earnings Puzzle
Upwork freelancers have a unique tracking challenge. You don't just receive "a payment." You receive:
- Gross client payment — what the client paid (e.g., $1,000)
- Upwork service fee — 10% of the first $500, then 5% (e.g., $75)
- Net to you — what actually arrives ($925)
- Payment method fee — another ~$1-3 if withdrawing to PayPal or bank
- Currency conversion — if the client pays in EUR/GBP and you withdraw in USD
Your bookkeeping needs to record: $1,000 income, $75 expense (platform fees), $925 net. Most freelancers record only the $925 — which understates revenue AND misses a tax-deductible expense (Upwork fees are deductible).
Step 1: Export Your Upwork CSV
Upwork → Reports → Transaction History
Select your date range (monthly is ideal), then:
- Download CSV — includes Date, Description, Amount, Type, Reference ID
- The CSV shows every transaction: client payments, Upwork fees, withdrawals, refunds
Important: The "Download CSV" from the main Reports page is the right one. Do NOT use the "Earnings" CSV from the Certificate of Earnings page — it summarizes differently and may omit fee details.
Step 2: Understand the CSV Columns
| Column | What It Means |
|---|---|
| Date | Transaction date |
| Description | "Hourly payment from [Client Name]" or "Fixed-price payment" or "Service fee" |
| Amount | Positive = received, negative = fee/withdrawal |
| Type | "Hourly", "Fixed Price", "Service Fee", "Withdrawal" |
| Reference ID | Unique transaction identifier |
Step 3: Separate Income from Fees
This is the step most Upwork freelancers skip — and it costs them at tax time.
Example: One Month on Upwork
| Date | Description | Amount | Type |
|---|---|---|---|
| Jun 1 | Hourly — Client A | $500 | Income |
| Jun 1 | Service Fee — Client A | -$50 | Fee |
| Jun 5 | Fixed Price — Client B | $800 | Income |
| Jun 5 | Service Fee — Client B | -$48 | Fee |
| Jun 10 | Withdrawal to Bank | -$1,202 | Transfer |
| Jun 15 | Hourly — Client C (UK) | £600 | Income |
| Jun 15 | Service Fee — Client C | -£36 | Fee |
What to Record in Your Books
| Transaction | Category | Amount |
|---|---|---|
| Client A — Hourly | Project Income | $500 |
| Upwork Fee — Client A | Platform Fees | $50 |
| Client B — Fixed Price | Project Income | $800 |
| Upwork Fee — Client B | Platform Fees | $48 |
| Client C — Hourly | Project Income | £600 (≈$750) |
| Upwork Fee — Client C | Platform Fees | £36 (≈$45) |
Gross income: $500 + $800 + $750 = $2,050 Upwork fees: $50 + $48 + $45 = $143 (deductible business expense!) Net to bank: $2,050 - $143 = $1,907
If you only record the withdrawal ($1,907), you miss $143 in deductible fees.
Step 4: Handle Multi-Currency Upwork Payments
Upwork lets clients pay in their local currency. You withdraw in yours. This creates three issues:
Issue 1: The CSV Shows Mixed Currencies
Your CSV might have rows in USD, EUR, GBP, AUD — all in the same file. Most bookkeeping tools will misread the amounts.
Manual fix: Separate by currency in Google Sheets. Create a separate tab for each currency, then convert non-USD amounts using the day's exchange rate.
AI fix: Upload the CSV to a tool that auto-detects currency columns and converts at daily rates.
Issue 2: Upwork's Exchange Rate vs Market Rate
When a client pays in EUR and you withdraw in USD, Upwork applies their exchange rate — which includes a ~2-3% margin. Your EUR invoice says €800, but $952 lands in your account, not $980 (the market rate).
Fix: Record the USD amount you actually received. The ~$28 gap is effectively a currency conversion cost. You can track it as "Currency Exchange Loss" or accept the net USD as the true income amount.
Issue 3: Cross-Border Withdrawal Fees
Withdrawing to a non-US bank, PayPal, or Wise may trigger additional fees ($1-5 per withdrawal). These are separate from Upwork's service fee.
Fix: Record each withdrawal fee as "Bank & Transfer Fees" — also a deductible expense.
Step 5: Monthly Reconciliation Routine
On the 1st of each month:
- Download Upwork CSV (Reports → Transaction History → Download CSV)
- Upload to your bookkeeping tool or open in Google Sheets
- Verify gross vs net: Sum of all income minus all fees = amount withdrawn to your bank
- Check categories: Client payments → Income. Upwork fees → Platform Fees. Withdrawal fees → Bank Fees.
- Convert foreign currencies to your base currency at the day's rate
- Save the CSV as supporting documentation
This takes 10-15 minutes/month with a spreadsheet, 30 seconds with AI CSV import.
What About the Other Freelance Platforms?
The same approach works for Fiverr, Toptal, and Freelancer.com. The principle is universal:
- Download the platform's transaction CSV
- Separate gross earnings from platform fees
- Categorize fees as deductible business expenses
- Handle multi-currency conversions
- Reconcile withdrawals against bank deposits
Most platforms take 10-20% in fees. For a freelancer earning $5,000/month, that's $500-1,000 in fees — all tax-deductible, but only if you record them.
Bottom Line
Tracking Upwork income correctly takes 2 extra steps: separating fees from earnings, and handling multi-currency. Skip these steps and you're overpaying taxes by $100-200/year in missed fee deductions alone.
Quick fix: Upload your Upwork CSV to Tally Assistant — AI auto-detects the format, separates fees, categorizes income, and handles currency conversion. Free plan covers up to 50 transactions/month.
Frequently Asked Questions
Do I need to track Upwork fees separately from my income?
Yes — and it matters for taxes. Record the gross client payment as income and Upwork service fees as a deductible expense (Platform Fees category). If you only record the net deposit, you miss a tax-deductible expense and understate your true revenue.
What if a client pays me in a different currency on Upwork?
Record the transaction in the currency you received (e.g., EUR), then convert to your base currency at the daily exchange rate. Upwork applies its own conversion rate with a ~2-3% margin — record the net USD you actually received as the true income amount.
Tally Assistant