Payout balance, eligibility and status
API reference

Payout balance, eligibility and status

Everything a "Pay out" button needs in one call: balances, the minimum, the payout method and whether a payout request would be accepted right now.

View as MarkdownUpdated Oct 30, 2026
GET/api/external/payouts/summaryNew

Everything a "Pay out" button needs in one call: balances, the minimum, the payout method and whether a payout request would be accepted right now.

It returns the balance per bucket and per side, the minimum, the default payout method (masked), the open request, whether a payout is being sent, the upcoming releases, and whether a payout request would be accepted right now.

All money is integer cents. The balance is everything the account owns — its creator side (own sales), agency side (income from managed creators and AI personas), referral commission and partner shares — the same totals as the creator's Payouts page.

ineligibleReasons lists every gate that fails, in the order POST /payouts/requests checks them, with the same codes it answers with: kyc_required, payouts_disabled, consumer_account, no_method, masspay_not_activated, below_minimum, request_open, in_flight.

Authentication

Send the creator's API key as a bearer token: Authorization: Bearer dpfn_…. See Authentication & API keys.

An agency's own key can call this for a creator it manages by adding X-Dropfans-Account: <account id> (needs canViewStats). See Agencies.

Responses

200The summary. Money in cents.
NameTypeDescription
accountIdstringThe account this describes.
currencystringAlways "USD".
One of: USD
pendingCentsintegerInteger **cents**. Money the account owns (all sides) still inside the chargeback hold window; not payable yet.
availableCentsintegerInteger cents. Money the account owns (all sides) that cleared the hold and is not in a payout yet. Can be negative (a refund of money already paid out is netted against future earnings).
processingCentsintegerInteger cents. Money the account owns (all sides) inside a payout that is being sent.
paidOutCentsintegerInteger cents. Lifetime money the account owns (all sides) already paid out.
sidesobjectThe same four buckets per side, integer cents.
Show child attributes
creatorPayoutBucketsOwn sales.
Show child attributes
pendingCentsintegerInteger **cents**. Money still inside the chargeback hold window; not payable yet.
availableCentsintegerInteger cents. Money that cleared the hold and is not in a payout yet. Can be negative (a refund of money already paid out is netted against future earnings).
processingCentsintegerInteger cents. Money inside a payout that is being sent.
paidOutCentsintegerInteger cents. Lifetime money already paid out.
agencyPayoutBucketsIncome from managed creators / AI personas.
Show child attributes
pendingCentsintegerInteger **cents**. Money still inside the chargeback hold window; not payable yet.
availableCentsintegerInteger cents. Money that cleared the hold and is not in a payout yet. Can be negative (a refund of money already paid out is netted against future earnings).
processingCentsintegerInteger cents. Money inside a payout that is being sent.
paidOutCentsintegerInteger cents. Lifetime money already paid out.
affiliatePayoutBucketsReferral commission.
Show child attributes
pendingCentsintegerInteger **cents**. Money still inside the chargeback hold window; not payable yet.
availableCentsintegerInteger cents. Money that cleared the hold and is not in a payout yet. Can be negative (a refund of money already paid out is netted against future earnings).
processingCentsintegerInteger cents. Money inside a payout that is being sent.
paidOutCentsintegerInteger cents. Lifetime money already paid out.
sharePayoutBucketsPartner shares of other accounts’ sales.
Show child attributes
pendingCentsintegerInteger **cents**. Money still inside the chargeback hold window; not payable yet.
availableCentsintegerInteger cents. Money that cleared the hold and is not in a payout yet. Can be negative (a refund of money already paid out is netted against future earnings).
processingCentsintegerInteger cents. Money inside a payout that is being sent.
paidOutCentsintegerInteger cents. Lifetime money already paid out.
requestableCentsintegerInteger cents a payout request would ask for right now: the available balance of every side that has money and no open request.
minimumPayoutCentsintegerInteger cents. The available balance must reach this before a payout can be requested. 0 = no minimum.
payoutsEnabledbooleanFalse when Dropfans has paused payouts for the account.
kycVerifiedbooleanTrue once the account passed the ID check.
defaultMethodPayoutMethodSummary | nullWhere payouts go, masked. Null when no method is set up (the creator adds one in the dashboard).
Show child attributes
idstringPayout method id.
typestringProvider method type.
One of: PAXUM_P2P, MASSPAY, BANK_SWIFT
isDefaultbooleanTrue for the method payouts go to.
nicknamestring | nullThe creator’s own label for it.
labelstringDisplay label, masked (see Payout.method.label).
holderTypestring | nullWhether it was set up for the person or the company.
One of: INDIVIDUAL, BUSINESS
createdAtstringWhen the method was added.
Format: date-time
paxumobject | nullPAXUM_P2P only.
Show child attributes
emailstring | nullMasked Paxum e-mail, e.g. "j***@example.com".
lookupStatusstring | nullWhether the e-mail is a live Paxum account: active, inactive, not_found, unconfigured.
verificationStatusstring | nullPaxum identity match against the ID check: PENDING, COMPLETED, MISMATCH, UNAVAILABLE.
masspayobject | nullMASSPAY (payout wallet) only.
Show child attributes
countrystring | nullISO 3166-1 alpha-3 country.
currencystring | nullPayout currency (ISO 4217), when chosen.
payerNamestring | nullPayout option name, when chosen.
activatedbooleanTrue once the payee finished the wallet activation. Payout requests to a wallet need it.
bankobject | nullBANK_SWIFT only.
Show child attributes
last4string | nullLast 4 characters of the account number. The full IBAN / SWIFT is never returned.
countrystring | nullBank country (ISO alpha-2).
bankNamestring | nullBank name.
openRequestPayout | nullThe newest open payout request (requested, approved or processing), or null.
Show child attributes
idstringId of the row. Unique across the three kinds — use it with GET /api/external/payouts/{id}.
kindstringpayout: sent by Dropfans (Paxum, MassPay wallet load, or settled by an admin). manual: paid outside the platform and recorded by an admin. request: a payout request the account made that has not been fulfilled into a payout yet.
One of: payout, manual, request
statusstringRequests: requested → approved → (processing for Paxum, from the moment they are made) → paid, or rejected / cancelled. Payouts: pending (in a batch, not sent yet) → processing (sent) → paid or failed; cancelled when an attempt was dropped. Manual payouts are always paid.
One of: requested, approved, pending, processing, paid, failed, cancelled, rejected
amountCentsintegerInteger **cents**. What is paid out (negative only on a reversal row).
currencystringAlways "USD".
One of: USD
sidestringWhich balance it draws from: creator (own sales), agency (income from managed creators / AI personas), affiliate (referral commission), share (partner shares of other accounts’ sales), or combined (several sides in one transfer — see sides).
sidesobjectThe amount split by side, integer cents. Adds up to amountCents.
Show child attributes
creatorCentsintegerCreator side, cents.
agencyCentsintegerAgency side, cents.
affiliateCentsintegerReferral commission, cents.
shareCentsintegerPartner shares, cents.
methodobject | nullThe destination frozen when the payout or request was made, masked. Null for manual payouts.
Show child attributes
typestringProvider method type.
One of: PAXUM_P2P, MASSPAY, BANK_SWIFT
labelstringDisplay label — the creator’s nickname, or e.g. "Paxum · j***@example.com", "Payout wallet · SWE", "Bank transfer · ••••1234". Never a full e-mail, IBAN or token.
notestring | nullRequests: the note sent with the request. Manual payouts: the note the admin recorded for the payee. Otherwise null.
failureMessagestring | nullWhy a failed payout failed, as reported by the provider. Null unless status is failed.
invoiceNumberinteger | nullPayout invoice number once the invoice exists. The invoice itself is in the dashboard.
requestIdstring | nullkind payout / manual: the request this payout fulfilled, if any.
payoutIdstring | nullkind request: the payout or manual payout that fulfilled it, if any.
createdAtstringWhen the payout was created or the request made. The list is ordered by this.
Format: date-time
initiatedAtstring | nullWhen the payout was sent to the provider.
Format: date-time
paidAtstring | nullWhen it was paid. Null unless status is paid (requests carry it on the fulfilling payout instead).
Format: date-time
failedAtstring | nullWhen it failed. Null unless status is failed.
Format: date-time
reversedAtstring | nullSet on a paid wallet load that was sent back (spendback): the money is available again. Its negative twin has reversalOfId. Both are hidden from GET /payouts unless includeReversed=true.
Format: date-time
reversalOfIdstring | nullSet on the negative row that reverses the payout with this id.
inFlightbooleanTrue while a payout is pending or processing.
upcomingobject[]Creator-side earnings and partner shares still on hold, by the UTC day they become available. Soonest first.
Show child attributes
availableOnstringYYYY-MM-DD (UTC).
Format: date
amountCentsintegerInteger cents released that day.
eligiblebooleanTrue when POST /api/external/payouts/requests would be accepted now.
ineligibleReasonsstring[]Every reason it would be refused, in the order the request checks them. Empty when eligible.
Example response
{
  "accountId": "clx2f8a1b0001qw3k",
  "currency": "USD",
  "pendingCents": 12050,
  "availableCents": 34210,
  "processingCents": 0,
  "paidOutCents": 187500,
  "sides": {
    "creator": {
      "pendingCents": 12050,
      "availableCents": 34210,
      "processingCents": 0,
      "paidOutCents": 175500
    },
    "agency": {
      "pendingCents": 0,
      "availableCents": 0,
      "processingCents": 0,
      "paidOutCents": 12000
    },
    "affiliate": {
      "pendingCents": 0,
      "availableCents": 0,
      "processingCents": 0,
      "paidOutCents": 0
    },
    "share": {
      "pendingCents": 0,
      "availableCents": 0,
      "processingCents": 0,
      "paidOutCents": 0
    }
  },
  "requestableCents": 34210,
  "minimumPayoutCents": 2000,
  "payoutsEnabled": true,
  "kycVerified": true,
  "defaultMethod": {
    "id": "clxpm0001method",
    "type": "MASSPAY",
    "isDefault": true,
    "nickname": null,
    "label": "Payout wallet · SWE",
    "holderType": "INDIVIDUAL",
    "createdAt": "2026-09-02T10:00:00.000Z",
    "paxum": null,
    "masspay": {
      "country": "SWE",
      "currency": null,
      "payerName": null,
      "activated": true
    },
    "bank": null
  },
  "openRequest": null,
  "inFlight": false,
  "upcoming": [
    {
      "availableOn": "2026-11-04",
      "amountCents": 4500
    }
  ],
  "eligible": true,
  "ineligibleReasons": []
}

Errors

StatusBodyWhen
401{"error":"Unauthorized","code":"unauthorized"}Missing or invalid API key.
400{"error":"X-Dropfans-Account must be an account id (from GET /api/external/agency/creators), not a username.","code":"invalid_account_header"}`X-Dropfans-Account` is not an account id.
403{"error":"This key cannot act for that account.","code":"account_not_managed"}`X-Dropfans-Account` names an account this key cannot act for: not an agency’s own key, no ACCEPTED management, or the agency or account is suspended, banned or deleted (an unknown id gets the same answer).
403{"error":"The agency does not have permission for this on that account.","code":"permission_denied","permission":"canViewStats"}With `X-Dropfans-Account`: the agency lacks `canViewStats` on that account.

Rate limiting

Every response carries the X-RateLimit-Tier header and, on limited tiers, the per-minute and per-day trios — read X-RateLimit-Remaining and X-RateLimit-Reset instead of hardcoding limits. Details in Rate limits.

Code samples

curl "https://www.dropfans.io/api/external/payouts/summary" \
  -H "Authorization: Bearer $DROPFANS_API_KEY"

Notes

requestableCents is what a request would ask for: the available balance of every side that has money and no open request. The minimum is checked against the combined availableCents. A negative availableCents (a refund of money already paid out) is netted against future earnings.

Questions? [email protected]