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.
1099 income tracking tools for gig workers
The right tool depends on how many platforms and currencies you deal with:
| Tool | Best for | Price | Trade-off |
|---|---|---|---|
| Spreadsheet | Under 30 transactions/month, full control | Free | Manual entry; multi-currency is painful |
| Tally Assistant | Importing CSVs from Upwork, PayPal, Stripe, and Wise | Free plan (100 transactions/month, 5 clients); Pro $12/month | Fewer invoice templates than dedicated invoicing tools |
| QuickBooks Self-Employed | Simple US tax tracking with Schedule C | $15+/month | US-only; limited multi-currency |
| FreshBooks | Invoice-focused freelancers | From $9.50/month | Manual entry; no universal CSV parsing |
| Wave | Free manual accounting | Free; Pro $16–19/month | Bank feeds and OCR moved to Pro in June 2026 |
The key for gig workers is separating gross income from platform fees and handling multi-currency. A tool that imports the platform CSV directly saves the most time; a spreadsheet works if you have one platform and one currency. For the full recordkeeping system, see how to keep records of freelance payments.
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 100 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.
Related Feature
Universal CSV Import
If you've ever downloaded a CSV from your bank only to spend 30 minutes reformatting columns before you can even start categorizing transactions — that's the problem we solved. Download the statement from ANY bank or payment platform (Stripe, PayPal, Wise, Revolut, and 200+ more), upload it as-is, and the AI detects the date order, delimiter, decimal separator, and currency column automatically. No reformatting, no template setup, no manual mapping.
Related Articles
Multi-Currency Bookkeeping for Freelancers: How to Not Lose Money on Exchange Rates
Freelancers lose 3-5% of every international payment to hidden currency conversion fees. Here's how multi-currency bookkeeping actually works — which tools do it right, and how to stop leaking money on exchange rates.
PayPal Multi-Currency Reconciliation: How Freelancers Fix Mismatched Transactions (2026)
Match PayPal's currency conversions to what actually hits your bank. A step-by-step reconciliation guide for freelancers with international clients.
Tally Assistant