Skip to content

Wallet

Creator wallet balances, transaction history, affiliate earnings view, payout requests, and dashboard KPI summaries used for creator analytics.


Wallet resource

Current wallet responses include:

FieldTypeNotes
availableintegerFunds ready for payout.
holdintegerFunds currently on hold.
pendingintegerFunds currently in payout processing.
totalintegerAggregate wallet total.
referral_revenueintegerAffiliate revenue amount.
cashout_availablebooleanWhether available is positive.
transactionspaginated collectionWallet transaction list excluding RELEASE_PENDING.

GET /api/dashboard/summary

Pre-aggregated dashboard KPIs for the authenticated creator (content counts, link clicks, unlocks, product revenue totals, top-performing products, wallet buckets).

  • Auth required: Yes
  • Roles: Authenticated creator with a wallet
  • Content type: none

Response shape notes

The payload extends the historical single-account shape with:

FieldTypeNotes
currency_unifiedbooleanFor one account, always true.
accountsarrayOne object per creator in the summary (single-account: one element) with user_id, email, display_name, currency_id, currency_code, and wallet_balance.
wallet_balanceobject or nullTop-level aggregate wallet buckets when every account shares the same currency_id; otherwise null (use per-account accounts[].wallet_balance).
total_content_itemsintegerCount of qualifying products with complete media.
total_link_clicksintegerSum of short-link views.
total_unlocksintegerSum of product unlocks.
total_product_revenueintegerSum of total_earnings (minor units).
overall_conversion_ratenumberDerived from totals.
top_performingarrayUp to five products ranked by conversion with revenue and thumbnail metadata.

Clients that need full wallet transaction history for charts should still call GET /api/wallet with the relevant bearer token per account.


POST /api/dashboard/summary/aggregate

Same KPI aggregation as GET /api/dashboard/summary, but merged across multiple creator accounts.

  • Auth required: Yes (primary account’s api token in Authorization)
  • Roles: Authenticated creator with a wallet on every resolved account
  • Content type: application/json

Request body

FieldTypeRequiredNotes
additional_tokensstring[]NoDeprecated for masters. Ignored when the bearer is a master account; aggregation uses persisted links from account_group_members instead. For standalone accounts, ignored (only the bearer is aggregated). Child accounts must not send this field → 403.

The primary user is always included from the bearer token. Master accounts automatically include every persisted linked child from GET /api/user/linked-accounts / login account_group.linked_accounts.

Important semantics

  • Trust model: Combined metrics for multiple creators are allowed only when the backend recognizes a master → child link (or the caller is aggregating only themselves). Holding another user’s token in additional_tokens does not grant access.
  • Currency: If combined accounts use different currency_id values, currency_unified is false and root wallet_balance is null; use each accounts[].wallet_balance and interpret total_product_revenue with care across currencies.

Error examples

Child sent additional_tokens:

json
{
  "success": false,
  "errors_message": "Child accounts cannot aggregate other accounts.",
  "data": null
}

GET /api/wallet

Return wallet balances and creator wallet transactions.

  • Auth required: Yes
  • Roles: Authenticated creator with wallet

Query parameters

ParameterTypeRequired
pageintegerNo
limitintegerNo

Success response example

json
{
  "success": true,
  "errors_message": null,
  "data": {
    "available": 15000,
    "hold": 3000,
    "pending": 5000,
    "total": 23000,
    "referral_revenue": 2500,
    "cashout_available": true,
    "transactions": {
      "data": [
        {
          "id": 1,
          "amount": 550,
          "type": "affiliate_earning",
          "created_at": "2026-04-20 10:15:00",
          "title": "Money for a photo"
        }
      ]
    }
  }
}

GET /api/wallet/affiliate

Return affiliate-only revenue and affiliate wallet transactions.

  • Auth required: Yes
  • Roles: Authenticated creator with wallet

Query parameters

ParameterTypeRequired
pageintegerNo
limitintegerNo

Success response example

json
{
  "success": true,
  "errors_message": null,
  "data": {
    "referral_revenue": 2500,
    "transactions": {
      "data": [
        {
          "id": 33,
          "amount": 220,
          "type": "affiliate_earning",
          "created_at": "2026-04-20 10:15:00",
          "title": "Referral revenue"
        }
      ]
    }
  }
}

POST /api/wallet/cashout

Create a payout request for the creator's full currently available balance.

  • Auth required: Yes
  • Roles: Authenticated creator with wallet
  • Content type: no body required

Request body

No request body is currently required.

Success response example

json
{
  "success": true,
  "errors_message": null,
  "data": "Cashout created successfully"
}

Error example

json
{
  "success": false,
  "errors_message": "No available funds",
  "data": null
}

Side effects

  • backend creates payout state from current wallet
  • current implementation uses the wallet service and does not ask the API client for a payout amount

Transaction behavior

Current public wallet responses expose transaction items with:

FieldType
idinteger
amountinteger
typestring
created_atstring
titlestring or null

Do not assume every internal payout/admin transaction type is exposed publicly.


Fangate backend developer documentation