Guides 12 min read

OnlyFans Agency Contract Guide: Clauses That Protect Your Revenue and Your Creators

We lost a creator and $47K in trailing commissions because our contract lacked a survivorship clause. Here are the essential clauses every OnlyFans agency contract needs, the red flags to watch for in creator agreements, and how API-based reporting builds the transparency that keeps creators from leaving.

OFAPI Team ·

In our second year of operation, we lost a creator. That is not unusual — creators leave agencies for all kinds of reasons, and some churn is a normal part of this business. What was not normal, and what we did not see coming, was losing $47,000 in commissions that we had legitimately earned but had no contractual right to collect.

The creator left with three months of trailing commissions outstanding. Fans she had brought in during our management period were still active, still spending. A renewal event on a six-month PPV package triggered a week after her departure. None of it was ours to collect, because our contract said nothing about what happened to commissions earned during the management period but paid after the termination date.

We rebuilt our contract from scratch after that. We also talked to three other agency operators who had faced similar situations. The problems they described were variations on the same theme: contracts written for simplicity that turned out to have expensive gaps when tested.

This guide covers what we learned.

The Essential Clauses

Revenue Split with Explicit Definitions

The revenue split percentage is the most prominent term in any creator contract, but the percentage means nothing without a precise definition of what it applies to. Gross revenue? Net after platform fees? Net after chargebacks? Inclusive or exclusive of tips?

OnlyFans takes a 20% platform fee. Most agencies take their commission on net revenue — the amount the creator actually receives — which means the effective agency take on gross is lower than the stated percentage. A 20% agency commission on net is 16% of gross. A 20% commission on gross would be 25% of net. These are meaningfully different numbers and your contract should specify exactly which one applies.

Define each revenue type explicitly: subscription revenue, PPV revenue, tip revenue, and any custom content or DM revenue. We have seen disputes arise over whether custom content sold outside the platform counts as OF revenue or separate personal revenue. Your contract should answer that question before the situation arises.

Term Length and Renewal

Standard agency agreements run six to twelve months with automatic renewal unless either party gives notice. Twelve months is reasonable for a new creator where you are investing significantly in setup, content production, and audience building. Six months is more appropriate for established creators where the investment is lower.

The renewal notice period matters. If your contract renews automatically unless the creator gives 30 days notice, and the creator misses that window, you may have legal grounds to enforce the full next term — which creates exactly the kind of adversarial dynamic that destroys creator relationships. We now use automatic renewal with a 14-day notice window, which is short enough that creators do not feel trapped and long enough to give us time to prepare for a transition.

Termination Notice and Wind-Down Period

Termination clauses should specify the required notice period and define what happens during the wind-down. Our current contract requires 30 days written notice from either party, during which we continue full management and the revenue split applies normally.

The wind-down period protects both sides. The creator continues receiving full service while they transition or find alternative management. We continue earning commissions during a period when we may still be taking meaningful actions — running campaigns, following up on PPV, managing fan relationships — that will affect revenue.

Commission Survival — The Clause We Were Missing

This is the clause that cost us $47,000. Commission survival specifies that agency commissions apply to revenue earned during the management period regardless of when the revenue is actually paid or settled.

The OnlyFans payout model creates gaps between when value is created and when revenue is recognized. A subscription renewed on day 28 of a 30-day payout period will appear in the following period’s payout. PPV content purchased in the last week of a management period may not be fully processed until the following month. A creator you stop managing today will generate revenue from your efforts for weeks after your relationship ends.

A commission survival clause might read: “Agency commissions apply to all revenue generated from fans acquired, retained, or materially influenced during the management term, including revenue paid by the platform to Creator within 90 days following the termination of this agreement.”

Negotiate the post-termination window to match your typical revenue cycle. 60 to 90 days covers most normal payout delays.

Account Access and Credentials

Your contract should specify the conditions under which you have access to creator accounts, what access means (login credentials, linked management accounts, API access), and what happens to that access upon termination.

We now require that account access be maintained through our agency management system rather than through shared login credentials. This serves the creator’s security — they are not handing over their password — and gives us a clean, auditable record of account access that terminates automatically when management ends.

Include a clause requiring the creator to maintain their account in good standing during the management period. An account that gets flagged or suspended due to creator actions outside your control affects your revenue, and you should not be penalized for it.

IP Rights and Content Ownership

Clarify who owns the content created during the management period. For most agency arrangements, the creator retains full ownership of their content. But clarify the specifics: does content produced by the agency using agency resources (photographer, videographer, editor) have different ownership terms? What about content created based on agency scripts or strategies?

The simpler your content ownership terms, the fewer disputes you will have. Creator owns all content they appear in. Agency retains no content rights post-termination. That is a defensible default position.

Non-Compete and Non-Solicitation

Agency-side non-competes — provisions that prevent the agency from signing competing creators — are unusual and generally unenforceable. Do not include them.

Creator-side non-competes — provisions that prevent the creator from working with competing agencies — are more common but create the resentment that drives early termination. Our current contract has no non-compete for creators. We compete on service quality.

Non-solicitation is different and worth including: a clause that prevents either party from soliciting the other’s clients or employees during the management term and for a defined period after termination. This protects against a creator departing and then recruiting your chatters or against you pitching the creator’s personal contacts for other accounts you manage.

Red Flags in Creator Agreements

Some creators, particularly those who have previously been with larger agencies, arrive with their own contract templates or demands. These are the provisions that should give you pause.

Lock-in periods over 18 months. A two or three year management agreement sounds like security, but forced relationships almost always end badly. A creator locked into a contract they resent will find ways to underperform, create friction with chatters, or simply become uncooperative. Eighteen months is the outer boundary of a reasonable commitment.

Commission rates over 25% of net. This is market context, not a legal issue. Above 25% net, the creator’s take begins to feel punitive, especially for established creators with existing audiences. High commission rates accelerate the calculation that self-management becomes more attractive.

Indefinite IP clauses. Any clause that gives the agency perpetual rights to creator content, likeness, or brand elements should be rejected or significantly narrowed. The creator is the asset; the agency is the service provider.

Vague termination triggers. Clauses that allow either party to terminate “for cause” without defining what cause means create ambiguity that can be weaponized in disputes. Define specific, objective termination triggers.

How Transparent Data Reporting Reduces Churn

The contractual protections above matter, but the best version of this situation is one where you never need to enforce them. Most creator departures we have seen — both our own and those of other operators we have talked to — trace back to a trust breakdown. The creator does not feel like they know what is happening with their account, does not understand why revenue is what it is, and begins to wonder whether the agency is working as hard as it claims.

Automated, transparent reporting is one of the most effective tools for preventing that trust erosion. When a creator can see exactly what their revenue was, broken down by source, compared against the prior month, with clear explanations of what drove the change — they have less reason to develop a narrative that the agency is underperforming or concealing something.

Here is the automated creator report we send weekly, built directly from the API:

import requests
from datetime import datetime, timedelta

API_KEY = "your_api_key"
BASE_URL = "http://157.180.79.226:4024/api/v1"
headers = {"X-API-Key": API_KEY}

def generate_creator_report(creator_id: str, creator_name: str) -> str:
    """
    Generate a plain-text weekly performance report for a creator.
    Designed to be emailed or messaged directly — no jargon, clear numbers.
    """
    # Fetch overview statistics
    stats_resp = requests.get(
        f"{BASE_URL}/statistics/overview",
        headers=headers,
        params={"creatorId": creator_id, "period": "30d"}
    )
    stats_resp.raise_for_status()
    stats = stats_resp.json().get("stats", {})

    # Fetch payout data
    payout_resp = requests.get(
        f"{BASE_URL}/payouts/statistics",
        headers=headers,
        params={"creatorId": creator_id}
    )
    payout_resp.raise_for_status()
    payouts = payout_resp.json().get("payouts", {})

    # Fetch top fans
    fans_resp = requests.get(
        f"{BASE_URL}/stats/fans/top",
        headers=headers,
        params={"creatorId": creator_id, "limit": 5}
    )
    fans_resp.raise_for_status()
    top_fans = fans_resp.json().get("fans", [])

    total_revenue = float(stats.get("totalRevenue", 0))
    sub_revenue = float(stats.get("subscriptionRevenue", 0))
    ppv_revenue = float(stats.get("ppvRevenue", 0))
    tip_revenue = float(stats.get("tipRevenue", 0))
    total_fans = int(stats.get("totalFans", 0))
    new_fans = int(stats.get("newFans30d", 0))

    # Build commission line
    agency_rate = 0.20  # 20% of net
    agency_commission = total_revenue * agency_rate
    creator_earnings = total_revenue - agency_commission

    report_date = datetime.utcnow().strftime("%B %d, %Y")

    report = f"""
WEEKLY PERFORMANCE REPORT — {creator_name}
Generated: {report_date}
{'=' * 50}

REVENUE (Last 30 Days)
  Total Net Revenue:     ${total_revenue:>10,.2f}
  ├─ Subscriptions:      ${sub_revenue:>10,.2f}
  ├─ PPV Sales:          ${ppv_revenue:>10,.2f}
  └─ Tips:               ${tip_revenue:>10,.2f}

EARNINGS SPLIT
  Your Earnings (80%):   ${creator_earnings:>10,.2f}
  Agency Fee (20%):      ${agency_commission:>10,.2f}

FAN ACTIVITY
  Total Active Fans:     {total_fans:>10,}
  New Fans (30d):        {new_fans:>10,}

TOP 5 FANS THIS MONTH
"""
    for i, fan in enumerate(top_fans[:5], 1):
        username = fan.get("username", "anonymous")
        spend = float(fan.get("totalSpend", 0))
        report += f"  {i}. {username:<20} ${spend:,.2f}\n"

    next_payout = payouts.get("nextPayoutDate", "Next Monday")
    next_payout_amount = float(payouts.get("nextPayoutEstimate", 0))

    report += f"""
UPCOMING PAYOUT
  Estimated Amount:      ${next_payout_amount:>10,.2f}
  Expected Date:         {next_payout}

Questions? Reply directly to this message.
{'=' * 50}
"""
    return report.strip()

# Generate and send reports for all active creators
creator_roster = [
    {"id": "creator_001", "name": "Creator One"},
    {"id": "creator_002", "name": "Creator Two"},
    {"id": "creator_003", "name": "Creator Three"},
]

for creator in creator_roster:
    report = generate_creator_report(creator["id"], creator["name"])
    print(report)
    print("\n")
    # In production: send via email or DM
    # send_report(creator["email"], report)

The report does several things that matter for the relationship. It shows every revenue component transparently — there is no way to look at this and wonder whether PPV revenue is being counted. It shows the commission calculation explicitly, so there are no questions about what the agency is taking. It shows the creator’s own top fans, which creates a shared interest in retaining those fans.

We have found that creators who receive this report weekly ask fewer questions, raise fewer concerns, and stay on our roster longer. The correlation is not surprising: transparency creates trust, and trust is the foundation of a management relationship that survives the inevitable rough months.

The Practical Priority Order

If your current contract has none of the clauses above, build in this order: commission survival first, account access second, term and termination third, revenue definitions fourth. The commission survival clause is the one that creates acute financial exposure. The others are important but less likely to cause immediate loss.

If you are starting from scratch with a new creator, have an attorney review your template before you use it. The cost of a legal review — a few hundred dollars — is trivially small relative to the exposure from a gap like the one that cost us $47,000.


Contracts create the legal framework. Transparent reporting creates the trust that makes that framework less likely to be tested. Both are necessary; neither alone is sufficient.

For the reporting infrastructure that powers the creator report above, see our ARPU optimization guide and our post on building a custom CRM with the API.

Connect your creator accounts and start generating automated reports via OFAPI pricing, or review the payout and statistics endpoints in the API documentation.

Ready to automate your OnlyFans operations?

Get full API access and start building in minutes.