---
title: "Admin Execute Stripe Payouts"
method: POST
path: "/v1/admin/payouts/{period}/execute-stripe"
---

# Admin Execute Stripe Payouts

`POST /v1/admin/payouts/{period}/execute-stripe`

## Request

- Base URL: `https://api.storyflo.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.storyflo.com/v1/admin/payouts/{period}/execute-stripe`
- Auth: none declared

Execute Stripe Connect transfers for all eligible publishers in a period.

Reads prepared PayoutBatch rows for publishers whose:
  - payout_preference is 'usd' (or unset/null — default rail)
  - stripe_account_id is set
  - stripe_payouts_enabled is True
  - net_payout_micros ≥ min_payout_usd * 1_000_000

``dry_run=True`` (DEFAULT) returns a preview without calling Stripe.
``dry_run=False`` calls ``stripe.Transfer.create`` with a deterministic
idempotency key ``payout:{period}:{publisher_id}`` so re-runs are safe.
On success flips the batch row status to ``signed`` and stores the
Stripe transfer id in ``tx_hash``.

Auth: admin token (X-Storyflo-Email-Token).

## Path parameters

- `period` string, required

## Query parameters

- `dry_run` boolean
- `min_payout_usd` number

## Headers

- `x-storyflo-email-token` string, nullable

## Response `200`

Successful Response

- object

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/storyflo/apis/storyflo-inference-router.md) · [All operations](https://skmtc.dev/storyflo/apis/storyflo-inference-router/llms.txt) · [OpenAPI document](https://skmtc.dev/storyflo/apis/storyflo-inference-router/revisions/c3a1a735ac7a?raw)
