List Earnings
List the creator's transactions over a date range, each with the fan who paid, so revenue can be reconciled row by row. Proxies Fanvue's GET /v1/insights/earnings.
Money is in USD cents. gross is pre-fee, net is the creator's cut after Fanvue's fees, and currency only records what the fan originally paid in: both amounts are already converted. Refunds and chargebacks come back as their own rows with negative amounts and a reversedTransactionOrderId pointing at the transaction they reverse, so the original row is never rewritten.
user is null on rows no fan paid for, which is the normal case for referral, affiliate and giveaway.
Authorization
default Get your API Key from OnlyFansAPI Console - https://app.onlyfansapi.com/api-keys
In: header
Path Parameters
The Fanvue Account ID
Query Parameters
Opaque pagination cursor from a previous response's nextCursor.
Number of transactions to return (1 - 50). Default = 20
Only include transactions on or after this ISO 8601 datetime.
Only include transactions before this ISO 8601 datetime (non-inclusive).
Restrict to these earning sources: all, affiliate, appStore, checkoutLink, fanExperience, mediaLink, message, post, referral, renewal, subscription, tip, giveaway, refund, chargeback. Default = all. Note that every recurring charge after the first bills as renewal, whether it started as a subscription, a checkout link or a fan experience; an app store charge is the one exception and stays appStore.
Return only these transaction order ids (max 100), to re-check known transactions for a status change. Combines with the other filters and still paginates.
Response Body
application/json
curl -X GET "https://app.onlyfansapi.com/api/fanvue/fanvue_acct_XXXXXXXXXXXXXXX/insights/earnings?cursor=eyJ2IjoxfQ&size=20&startDate=2026-01-01T00%3A00%3A00Z&endDate=2026-09-01T00%3A00%3A00Z&source=tip%2Cmessage&transactionOrderIds=FV-ORDER-123"{
"data": {
"data": [
{
"date": "2026-09-22T10:29:07.224Z",
"gross": 399,
"net": 339,
"currency": null,
"source": "subscription",
"transactionOrderId": "FVE-20260922-41280",
"transactionOrderStatus": "pendingBalance",
"user": {
"uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"handle": "sarah-jones",
"displayName": "Sarah Jones",
"nickname": null,
"isTopSpender": false
}
},
{
"date": "2026-09-21T14:02:55.118Z",
"gross": -399,
"net": -339,
"currency": null,
"source": "refund",
"transactionOrderId": "FVE-20260921-40118",
"transactionOrderStatus": "availableForPayout",
"reversedTransactionOrderId": "FVE-20260921-40117",
"user": {
"uuid": "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
"handle": "mike-smith",
"displayName": "Mike Smith",
"nickname": null,
"isTopSpender": false
}
}
],
"nextCursor": null
},
"_meta": {
"_credits": {
"used": 1,
"balance": 10055811,
"note": "Always"
},
"_cache": {
"is_cached": false,
"note": "Cache disabled for this endpoint"
},
"_rate_limits": {
"limit_minute": 5000,
"limit_day": null,
"remaining_minute": 4999,
"remaining_day": null,
"notice": "We have decided to remove our daily rate limits. Please remove any references to these in your integrations."
}
}
}