---
title: "Payout due"
method: POST
path: "payout.due"
tags: ["Webhook Events"]
---

# Payout due

`POST payout.due` (webhook)

A billing window became due, as the Due tab shows it (windows with nothing to pay are left out). Reported in a morning pass at around 06:40 in the campaign's zone, once the window's views have closed (views count by UTC day, so a period's views close at the end of the UTC day its last instant falls on): the morning after the close, or, east of about UTC+6:40, where they close later in the morning, right after the close. A window that becomes due again (after a withdrawal or a reinstatement) comes with a higher `generation`. Windows already due when you subscribed are not reported; `GET /payouts/due` lists them.

## Headers

- `webhook-id` string, required
- `webhook-timestamp` string, required
- `webhook-signature` string, required

## Payload

- PayoutDueWebhookEvent: A billing window became due, as the Due tab shows it (windows with nothing to pay are left out). Reported in a morning pass at around 06:40 in the campaign's zone, once the window's views have closed (views count by UTC day, so a period's views close at the end of the UTC day its last instant falls on): the morning after the close, or, east of about UTC+6:40, where they close later in the morning, right after the close. A window that becomes due again (after a withdrawal or a reinstatement) comes with a higher `generation`. Windows already due when you subscribed are not reported; `GET /payouts/due` lists them.
  - `id` string, required: Event id; the `webhook-id` header. The same on every retry: dedupe on it.
  - `type` 'payout.due', required
  - `timestamp` string, date-time, required: When the change happened
  - `organizationId` string, required
  - `actor` WebhookActor, required: Who caused the event: a member (`user`), an API key (`apiKeyId`), a creator, or viral.app itself (`system`); `surface` says where the change entered. Skip events your own API key caused to avoid loops.
    - `type` 'user' | 'api_key' | 'creator' | 'system', required
    - `surface` 'ui' | 'api' | 'copilot' | 'system', required
    - `userId` string, nullable, required
    - `apiKeyId` string, nullable, required
    - `impersonated` boolean, required
  - `data` object, required
    - `window` WebhookPayoutWindow, required
      - `id` string, required
      - `campaignId` string, required
      - `campaignName` string, required
      - `creatorId` string, required
      - `creatorUserId` string, required
      - `creatorName` string, nullable, required
      - `billingPeriodStart` string, date-time, required
      - `billingPeriodEnd` string, date-time, 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.
      - `startsAt` string, date-time, required: The instant the period starts: its first day's midnight in `timeZone`, with that zone's offset.
      - `endsAt` string, date-time, required: The instant the period ends: the midnight after its last day in `timeZone` (exclusive).
      - `currency` 'USD' | 'EUR' | 'CHF' | 'GBP' | 'CNY' | 'JPY' | 'KRW' | 'THB' | 'IDR' | 'VND' | 'RUB', required
      - `endedEarly` boolean, required
      - `startedMidPeriod` boolean, required
      - `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, required
        - `count` integer, required
        - `amount` integer, required
        - `coveredAmount` integer, required
        - `calculatedAmount` integer, required
    - `generation` integer, required

## Acknowledgement `200`

Any 2xx within 15 seconds acknowledges the event. Anything else, a timeout or a redirect is retried (10 attempts over about 3 days); 410 disables the endpoint.

---

[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)
