---
title: "List due creator payouts"
method: GET
path: "/payouts/due"
tags: ["Payouts"]
---

# List due creator payouts

`GET /payouts/due`

## Request

- Base URL: `https://viral.app/api/v1`
- URL: `https://viral.app/api/v1/payouts/due`
- Auth: API key in header `x-api-key`

Returns completed billing periods that have no recorded payouts yet. Uses campaign billing anchors and creator assignment windows to surface only fully finished periods.

## Query parameters

- `page` number: Page number (1-based index)
- `perPage` number: Number of items per page (1-100)
- `sortCol` string: Sort column
- `sortDir` 'asc' | 'desc': Sort direction
- `campaignIds` string[]
- `creatorIds` string[]
- `includeEmpty` boolean: Include zero-amount payouts in the results. They are excluded by default.
- `mode` 'data' | 'count' | 'totals'
- `referenceDate` string, date-time

## Response `200`

OK

- object
  - `page` integer, required
  - `perPage` integer, required
  - `total` integer, required
  - `data` object[], required
    - `id` string, required
    - `campaignId` string, required: Campaign ID with orgcamp_ prefix
    - `campaignName` string, required
    - `creatorId` string, required: Organization creator ID with orgcre_ prefix
    - `creatorUserId` string, required
    - `creatorName` string, nullable, required
    - `creatorEmail` string, required
    - `creatorImage` string, nullable, required
    - `accounts` object[]
      - `id` string, required
      - `platform` 'facebook' | 'instagram' | 'tiktok' | 'youtube' | 'snapchat', required
      - `platformAccountId` string, required
      - `isCompetitor` boolean
      - `username` string, nullable, required
      - `displayName` string, nullable
      - `analyticsDataRefreshedAt` string, nullable
    - `isMarketplaceCreator` boolean
    - `campaignStatus` 'upcoming' | 'active' | 'closing' | 'ended': Campaign lifecycle status derived from validity window. upcoming: validFrom in the future; active: started with no end date; closing: started and has an end date in the present/future; ended: end date is in the past.
    - `campaignValidFrom` string, nullable
    - `campaignValidUntil` string, nullable
    - `billingPeriodStart` string, date-time, required
    - `billingPeriodEnd` string, date-time, required
    - `interval` 'day' | 'week' | 'month', required
    - `intervalCount` integer, required
    - `billingAnchor` 'fixed' | 'rolling', required
    - `timeZone` string, required: IANA time zone the campaign's periods and dates follow (a period ends at midnight in this zone). Views are still counted per UTC day.
    - `currency` 'USD' | 'EUR' | 'CHF' | 'GBP' | 'CNY' | 'JPY' | 'KRW' | 'THB' | 'IDR' | 'VND' | 'RUB', required
    - `endedEarly` boolean
    - `startedMidPeriod` boolean
    - `canPayAndEnd` boolean
    - `manualPaidInPeriod` object, nullable
      - `amount` integer, required
      - `precision` integer, required
      - `currency` 'USD' | 'EUR' | 'CHF' | 'GBP' | 'CNY' | 'JPY' | 'KRW' | 'THB' | 'IDR' | 'VND' | 'RUB', required
      - `count` integer, required
      - `lastPaidAt` string, required
    - `warnings` union[]
      - union
        - object
          - `type` 'data_sync_pending', required
          - `severity` 'warning', required: `warning`: the payout's amount may be off: short of what the creator earned or, on a payout that counts creatives, counting one video twice.
          - `accounts` object[], required
            - `id` string, required: Organization account ID with orgacc_ prefix. Not the same as platform account ID.
            - `platform` 'facebook' | 'instagram' | 'tiktok' | 'youtube' | 'snapchat', required: Social media platform (facebook, instagram, tiktok, youtube, snapchat)
            - `platformAccountId` string, required: Native platform account id
            - `username` string, nullable, required
            - `maxVideos` integer, required
            - `lastSyncedAt` string, nullable, required
            - `refreshRequestedAt` string, nullable, required
          - `nextSyncAt` string, nullable, required
        - object
          - `type` 'limit_sync_pending', required
          - `severity` 'note', required: `note`: information next to a warning. It never means the amount is short, so it needs no action before paying.
          - `accounts` object[], required
            - `id` string, required: Organization account ID with orgacc_ prefix. Not the same as platform account ID.
            - `platform` 'facebook' | 'instagram' | 'tiktok' | 'youtube' | 'snapchat', required: Social media platform (facebook, instagram, tiktok, youtube, snapchat)
            - `platformAccountId` string, required: Native platform account id
            - `username` string, nullable, required
            - `maxVideos` integer, required
            - `lastSyncedAt` string, nullable, required
            - `refreshRequestedAt` string, nullable, required
          - `nextSyncAt` string, nullable, required
        - object
          - `type` 'account_sync_error', required
          - `severity` 'warning', required: `warning`: the payout's amount may be off: short of what the creator earned or, on a payout that counts creatives, counting one video twice.
          - `accounts` object[], required
            - `id` string, required: Organization account ID with orgacc_ prefix. Not the same as platform account ID.
            - `platform` 'facebook' | 'instagram' | 'tiktok' | 'youtube' | 'snapchat', required: Social media platform (facebook, instagram, tiktok, youtube, snapchat)
            - `platformAccountId` string, required: Native platform account id
            - `username` string, nullable, required
            - `maxVideos` integer, required
            - `lastSyncedAt` string, nullable, required
            - `refreshRequestedAt` string, nullable, required
            - `errorCode` 'NOT_FOUND' | 'INVALID_DATA' | 'PRIVATE_CONTENT' | 'RESTRICTED' | 'UNSUPPORTED_CONTENT' | 'APPLE_REQUIRED_AGREEMENT' | 'APPLE_INVALID_VENDOR' | 'APPLE_INVALID_CREDENTIALS', required
            - `errorLastSeenAt` string, nullable, required
        - object
          - `type` 'tracking_limit_exceeded', required
          - `severity` 'warning', required: `warning`: the payout's amount may be off: short of what the creator earned or, on a payout that counts creatives, counting one video twice.
          - `accounts` object[], required
            - `id` string, required: Organization account ID with orgacc_ prefix. Not the same as platform account ID.
            - `platform` 'facebook' | 'instagram' | 'tiktok' | 'youtube' | 'snapchat', required: Social media platform (facebook, instagram, tiktok, youtube, snapchat)
            - `platformAccountId` string, required: Native platform account id
            - `username` string, nullable, required
            - `maxVideos` integer, required
            - `lastSyncedAt` string, nullable, required
            - `staleVideoCount` integer, required
            - `stillBeyondLimitCount` integer, required
            - `suggestedMaxVideos` integer, nullable, required
            - `videos` object[], required
              - …
        - object
          - `type` 'individual_tracking_only', required
          - `accounts` object[], required
            - `id` string, required: Organization account ID with orgacc_ prefix. Not the same as platform account ID.
            - `platform` 'facebook' | 'instagram' | 'tiktok' | 'youtube' | 'snapchat', required: Social media platform (facebook, instagram, tiktok, youtube, snapchat)
            - `platformAccountId` string, required: Native platform account id
            - `username` string, nullable, required
            - `maxVideos` integer, required
            - `individualVideoCount` integer, required
          - `severity` 'warning', required: `warning`: the payout's amount may be off: short of what the creator earned or, on a payout that counts creatives, counting one video twice.
        - object
          - `type` 'tracking_paused', required
          - `accounts` object[], required
            - `id` string, required: Organization account ID with orgacc_ prefix. Not the same as platform account ID.
            - `platform` 'facebook' | 'instagram' | 'tiktok' | 'youtube' | 'snapchat', required: Social media platform (facebook, instagram, tiktok, youtube, snapchat)
            - `platformAccountId` string, required: Native platform account id
            - `username` string, nullable, required
            - `maxVideos` integer, required
            - `individualVideoCount` integer, required
            - `lastSyncedAt` string, required
          - `severity` 'warning', required: `warning`: the payout's amount may be off: short of what the creator earned or, on a payout that counts creatives, counting one video twice.
        - object
          - `type` 'copy_check_pending', required
          - `severity` 'warning', required: `warning`: the payout's amount may be off: short of what the creator earned or, on a payout that counts creatives, counting one video twice.
          - `accounts` object[], required
            - `id` string, required: Organization account ID with orgacc_ prefix. Not the same as platform account ID.
            - `platform` 'facebook' | 'instagram' | 'tiktok' | 'youtube' | 'snapchat', required: Social media platform (facebook, instagram, tiktok, youtube, snapchat)
            - `platformAccountId` string, required: Native platform account id
            - `username` string, nullable, required
            - `uncheckedVideoCount` integer, required
          - `videoCount` integer, required
          - `check` object, nullable, required
            - `status` 'running' | 'finished' | 'failed', required
            - `requestedAt` string, required
            - `finishedAt` string, nullable, required
        - object
          - `type` 'creative_review_pending', required
          - `severity` 'warning', required: `warning`: the payout's amount may be off: short of what the creator earned or, on a payout that counts creatives, counting one video twice.
          - `creativeCount` integer, required
          - `filter` object, required
            - `publishedFrom` string, required
            - `publishedTo` string, required
            - `accountIds` string[], required
    - `viewsOpenUntil` string, date-time, nullable: Outside UTC, until this instant the views of the UTC day the period ends on still count: `POST /payouts/initiate` then needs `acknowledgeOpenViews`. Null once they closed (always for UTC). Due rows only.
    - `startsAt` string, date-time: The exact instant the period starts: midnight of its first day in the campaign's time zone, with that zone's offset.
    - `endsAt` string, date-time: The exact instant the period ends (exclusive): midnight after its last day in the campaign's time zone.
    - `payoutAmount` integer, nullable, required
    - `payoutPrecision` integer, nullable, required
    - `payoutCurrency` 'USD' | 'EUR' | 'CHF' | 'GBP' | 'CNY' | 'JPY' | 'KRW' | 'THB' | 'IDR' | 'VND' | 'RUB', nullable, required
    - `partialsPaid` object, nullable
      - `count` integer, required
      - `amount` integer, required
      - `coveredAmount` integer, required
      - `calculatedAmount` integer, required
  - `totalsByCurrency` object[]
    - `currency` string, required
    - `amount` number, required
  - `distinctCreatorCount` integer

## Other responses

- `400`: 400
- `401`: 401
- `402`: 402
- `404`: 404
- `408`: 408
- `429`: 429
- `500`: 500

---

[API](https://skmtc.dev/viral/apis/viral-app-api.md) · [All operations](https://skmtc.dev/viral/apis/viral-app-api/llms.txt) · [OpenAPI document](https://skmtc.dev/viral/apis/viral-app-api/revisions/31e97fa79ef1?raw)
