TL;DR

  • The headline Upwork fee is 0% to 15% per contract after the May 1, 2025 change. That is not the real cost of running an agency.
  • When you add Connects burn, wasted proposal labor, withdrawal fees, and the client-side contract initiation fee, the true agency tax is typically 22% to 34% of gross contract revenue.
  • The single biggest hidden cost is Connects spent on jobs that never reply. A 6% reply rate means you pay for 17 proposals to get 1 conversation (we covered this math in our cost-per-hire calculator piece).
  • Agencies with a tight bidding filter pay 30–40% less "real Upwork tax" than agencies that spray 50 proposals a week.
  • Use the calculator below to model your own number. Most agencies are shocked by the gap between their reported service fee and what actually lands in their bank account.

On May 1, 2025, Upwork quietly replaced the flat 10% freelancer service fee with a variable 0%–15% fee set per contract. That was not the interesting change.

The interesting change is that the same update exposed how little agencies actually understood about their own Upwork cost structure. When I started asking agency owners in our GigRadar data set "what percent of your gross revenue goes to Upwork?", almost all of them answered "ten percent" without pausing.

The real answer, once you model it honestly, is closer to a third.

This piece shows you the math, gives you the exact current fee table, and ends with a calculator that spits out your true Upwork tax in about thirty seconds.

The fee everyone talks about (and why it's misleading)

Every Upwork fees article on Google opens with the service fee table. Here is that table, current as of April 2026, pulled directly from Upwork's own help center.

Contract typeFreelancer service feeSet how?
Standard marketplace contract (post May 1, 2025)0% – 15% per contractVariable, locked at contract start
Standard marketplace contract (started before May 1, 2025)Flat 10%Grandfathered
Enterprise client contractTypically 10% (custom)Set when the Enterprise client signed up
Direct Contracts (client you brought)Reduced (lower than marketplace)Fixed for Direct Contracts only
Any Hire contract0%Client paid conversion fee or knew you off-platform
Upwork Payroll placement0% (third-party staffing firm instead)Not on Upwork payroll rails

Notice the word "variable". Upwork does not publish the formula.

The help center says the fee is set based on "factors that help support a balanced and competitive environment across different types of work" and then stops explaining. Readers on the r/Upwork subreddit reaction threads to the change reported seeing 15% on most new contracts in high-supply categories (general VA, generic content writing, basic WordPress), and closer to 5%–10% in scarcer categories (senior engineering, medical writing, regulated industries).

Watch out

The variable fee is locked the moment a proposal is sent. Agencies rushing to send 40 proposals a day are locking themselves into whatever rate the algorithm served that day, with zero negotiation.

The real upwork fees calculator: model your true tax in 30 seconds

Before we go deeper into the math, run your own numbers. Plug in your current monthly revenue, Connect spending, and bidding habits. The calculator computes what you actually pay Upwork as a percentage of gross contract revenue, including the costs nobody else counts.

Interactive Tool

Your true Upwork tax, calculated live

Every field is editable. The verdict updates as you type. Numbers never leave your browser.

Where the money actually goes: the five line items Upwork does not add up for you

The headline service fee is only one of five costs Upwork extracts from an active agency. Individually they look small, but stacked they routinely double the number you think you are paying.

1. The service fee (the number on the invoice)

This is the one every article explains: 0% to 15%, variable, set per contract, locked at proposal time.

For most agencies we see in GigRadar's data, the average clocks between 11% and 13.5% right now, so call it 12% as a planning number.

2. Connects: the cost nobody counts correctly

Per Upwork's own Connects article, extras cost $0.15 each in 10-pack minimums, Basic plans include 10 free per month, and Freelancer Plus at $19.99/month includes 100.

An average proposal today costs between 6 and 16 Connects depending on bid boost level and job category. If you haven't nailed your bid letter yet, the proposal template teardown is the fastest way to stop burning Connects on replies that never come.

$180/mo
average Connects spend for a mid-size agency sending 120 proposals per month at 10 Connects each. That is the equivalent of another 0.9% service fee on a $20K month.

3. Proposal labor: the cost that never shows up in accounting

If a bidder spends 12 minutes on a proposal (reading the brief, customising the first line, referencing a case study), 120 proposals per month is 24 hours of labor. At a blended $25/hr cost for a bidder (VA or junior PM salary allocated to bidding), that is another $600 a month.

Nobody records this as "Upwork cost", but it is.

4. Withdrawal fees: the boring line you forgot

Per Upwork's payments and fees page, here is the actual current withdrawal menu.

MethodFeeSpeed
US direct deposit (ACH)Free1–3 business days
Local bank transfer (non-US)$0.991–3 business days
Instant Pay (US debit card)$2Minutes
PayPal$1Up to 24 hours
Payoneer$2Up to 24 hours
Wire transfer$501–7 business days

Wire transfer is the trap. Non-US agencies that withdraw weekly via wire are quietly paying $200/month for nothing, and switching to local bank transfer drops the same volume under $5.

5. Client-side fees the agency thinks it doesn't pay

Upwork also charges your client a 5% marketplace fee plus a contract initiation fee up to $4.95 per new contract. Technically the client pays, but in practice that money comes out of the pool the client was willing to spend on your services.

A client with a $10K budget sends you a $9,500 offer because Upwork already took their cut.

What the real agency tax adds up to (with a worked example)

Let's model a realistic GigRadar customer: a 6-person design agency doing $20K/month in Upwork contracts, sending 120 proposals per month via a junior bidder, with a typical 12% variable service fee, Payoneer withdrawals weekly.

Line itemMonthly cost% of gross
Service fee (12% on $20K)$2,40012.0%
Connects (120 × 10 = 1,200 used, 1,100 paid × $0.15)$1650.8%
Freelancer Plus subscription$200.1%
Proposal labor (24 hrs × $25/hr bidder)$6003.0%
Withdrawal fees (4 × $2 Payoneer)$80.0%
Total real Upwork tax$3,19316.0%

16% is the floor. That agency thinks it pays 12%, actually pays 16%, and it is one of the better-run ones.

Plug a spray-and-pray agency into the same formula (250 proposals/month, 15 connects average, 15 minutes each) and the number lands between 24% and 31% before you touch the client-side fees.

Pro Tip

When I review an agency's P&L in a GigRadar audit, the first question I ask is "what is your labor cost per proposal?". 80% cannot answer. The 20% who can are also the ones with double-digit close rates.

How to cut your real Upwork fee by half

You cannot renegotiate the service fee. Everything else is a lever.

Lever 1: Proposal volume, not quality

The single biggest cost for a leaky agency is proposal labor on jobs that never reply. Cutting proposals by 40% while keeping the same close rate drops labor cost by 40% and Connects cost by 40% simultaneously.

Lever 2: Pre-bid filters

Bid only on payment-verified clients with budgets over a threshold tied to your minimum contract size. This one filter usually removes 30% to 60% of the jobs a bidder was going to apply to.

Same revenue, much cheaper. If your profile itself is blocking you from even getting through the filter, see our walkthrough on profile optimization for PVR and JSS before you touch bid volume.

Lever 3: Never wire-transfer withdrawals

If your country supports local bank transfer or Payoneer, switch immediately. Weekly wires cost $2,400/year. Weekly Payoneer costs $96/year. This is free money.

Lever 4: Rebalance into direct contracts

When a client from Upwork becomes long-term, move the relationship to Direct Contracts at a reduced fee (and 0% if both of you hold Freelancer Plus). Upwork still takes a cut, but a meaningfully smaller one.

Lever 5: Timebox the bidder

Cap proposal writing at 10 minutes each. Anything requiring more research goes into a "worth the deeper dive" queue reviewed once per week.

This alone removes the single worst cost overrun we see in agency pipelines. Teams that want the timebox enforced automatically usually end up running some form of Upwork automation on top of it.

1
Week 1: measure the baseline

Run the calculator above with your real numbers. Write the true-tax % on a sticky note.

2
Week 2: tighten the filter

Cap bidding at payment-verified, budget above your minimum contract, and the 3 categories that matched your past closed deals.

3
Week 3: switch withdrawal rails

Move from wire or PayPal to local bank or Payoneer. Takes 5 minutes in settings. Saves hundreds per year.

4
Week 4: remeasure

Re-run the calculator. Expect the real tax to drop by 4–8 percentage points without touching the service fee at all.

GigRadar

Free for Upwork agencies

We model the real Upwork tax for 3,000+ agencies

GigRadar runs on aggregate contract data. We know exactly which filters cut your real fee in half and which niches charge the 15% ceiling.

Get Your Free Agency Audit →

What about Connects refunds and the stuff Upwork doesn't advertise

A few edge cases worth knowing that the fee articles on Google never mention.

Connects get refunded on removed jobs. If a job is taken down by Upwork for policy reasons before you hear back, your Connects come back. If the client just never responds, they do not. This is a big deal for "job ghosting" math.

Refunded contracts refund the service fee. Per the help center, if you refund $100 to a client at a 10% fee, Upwork refunds the $10 service fee. This sounds obvious but is worth modeling if you have a high dispute rate.

Enterprise clients pay a different fee. Most Enterprise relationships are at a fixed 10%. If your highest-billing client happens to be an Enterprise account, your blended service fee is already lower than your dashboard suggests.

Upwork Payroll is 0% service fee. If a client uses Upwork Payroll for a long-term engagement, the contract moves to a third-party staffing firm and Upwork stops charging a service fee on that stream. Virtually no agencies use this because it requires the client to opt in.

The benchmark that matters: net take-home per proposal

Forget the service fee percentage. The only Upwork metric that actually correlates with agency profitability in our dataset is net take-home per proposal sent. That is total closed revenue minus all real Upwork costs, divided by proposals sent in the same period.

Agency archetypeMonthly proposalsReal Upwork taxNet take-home per proposal
Spray and pray250+28%–34%$40–$70
Average GigRadar user100–15014%–18%$120–$180
Top quartile filtered bidder50–8010%–13%$240–$400

The top quartile agencies send fewer proposals than the spray and pray crowd and take home 5x to 8x more per proposal sent. This is not about being smarter. It is about accounting for costs the average agency doesn't count.

The uncomfortable conclusion

Upwork did not get more expensive in May 2025. It just stopped letting agencies tell themselves a simple story about a flat 10% fee.

The variable fee forced the conversation that should have been happening all along: your real fee was never 10%, it was whatever you were willing to pay in Connects, labor, and unanswered proposals.

The agencies that survive the next Upwork fee change will be the ones that already model their true tax every month. Run the calculator above, write the number down, and revisit it in 30 days after cutting your filters.

That number is the only Upwork fees metric worth tracking.