OnlyFans Transactions API
ofapis does not expose OnlyFans' internal statements or payout ledger as a single endpoint — that data lives behind the creator's financial dashboard and isn't surfaced verbatim. What the onlyfans transactions api gives you instead is the raw material to reconstruct a payment history yourself: the notifications activity feed and the monetary fields attached to every message. Both are plain Bearer-authed reads over the linked account.
Where transaction signals come from
- Notifications feed — a reverse-chronological stream of typed events (subscribes, renewals, tips, comments). Filter with
?type=. - Chat messages — each message carries
price(cents),isFree,isTip,isOpened, andcanPurchase, plus thefromUserwho paid.
Endpoints
GET /api/public/v1/notifications?type=&limit=
GET /api/public/v1/chats/{chatId}/messages?limit=
# account-scoped (agencies)
GET /api/public/v1/accounts/{accountId}/notifications
GET /api/public/v1/accounts/{accountId}/chats/{chatId}/messages
Example
curl "https://api.ofapis.com/api/public/v1/notifications?type=tips&limit=50" \
-H "Authorization: Bearer ofapis_sk_..."
The payload is forwarded from OnlyFans as-is. Omit type to pull every event kind, or pass one to narrow the feed to a single category before you page.
Building a transaction log
Poll the notifications feed on a schedule and append new events to your own store, keyed by event id so re-reads de-duplicate. For PPV detail — which fan unlocked which priced message and for how much — read the conversation's messages and record any where price > 0 and isOpened is true. Together the two reads reconstruct a per-fan, per-event ledger you fully control.
Use cases
- Reconciliation. Diff your reconstructed log against your own CRM to flag missed renewals or tips that never got a thank-you DM.
- Fan lifetime value. Attribute every priced message and tip to
fromUser.idand roll it up per fan to rank whales for a CRM. - Webhook-driven accounting. Rather than poll, subscribe to webhooks and write each event straight into a spreadsheet or ledger as it fires.
Gotchas
- Not an official statement. These are activity and message-level amounts, not OnlyFans' net payout figures — they exclude the platform cut, refunds, and chargebacks. Treat the log as gross signal, not accounting truth.
- Billing. One successful call is one credit — each notifications page and each message page. Failed calls (expired session, upstream error) are free.
- Pagination. The feed and message lists page with
limitand a cursor (nextOffset/nextMessageId); walk them untilhasMoreis false. A busy account is many credits, so cache locally and pull deltas. - Rate limits follow your plan's requests-per-minute. Pace the polling loop. See pricing.
FAQ
Is there a single transactions endpoint that returns my full payout history?
No. ofapis does not mirror OnlyFans' statements or payout ledger. You reconstruct a history from the notifications feed and per-message price / isTip fields, which this page describes.
Are the amounts net or gross?
Gross. The price on a message is the list amount in cents; notification events are activity records. Neither deducts OnlyFans' platform fee, refunds, or chargebacks, so they overstate net earnings.
How do I attribute a payment to a specific fan?
Every message exposes fromUser, and tip and subscribe notifications carry the acting user. Key your ledger on that user id to roll payments up per fan.
Does reading transaction data cost credits?
Yes — one credit per successful call, whether it's a notifications page or a message page. Only successful calls are billed.
Get a free token · Notifications API · API reference
Related: Tips API